InstanceCollector View on Asset Store (opens in new tab)

Package details

Latest version
1.1.2
Last updated
First released
Unity version
2022.3.33 or later
Package size
50.0 MB
Files
64
Favorites
12
Views in the past week
4

Price tracking

Last checked
Tracked since
Lowest recorded
$40.00 on

Keywords

InstanceCollector

by SmallBurger (opens in new tab)

No ratings yet

InstanceCollector is an asset specifically developed for Unity, designed to dynamically and efficiently collect instance rendering arrays while maintaining main thread performance.

Price $40.00

Buy on Asset Store (opens in new tab)

Affiliate link · Purchases support this site

Price history

Last 6 months

USD
Price history for InstanceCollector, 6 months Current $40.00; lowest $40.00; highest $40.00 in this period. $0 $25 $50 Jun Jul Aug Sep Oct Nov

Asset preview

1 / 1

InstanceCollector video 1

About this asset

As SRP Batch technology has advanced, Unity's automatic instancing feature is often disabled, leading to performance degradation when rendering a large number of objects. While manual instancing (such as using Graphics.DrawMeshInstanced) offers better performance, it is typically limited to rendering large amounts of single-type objects and lacks support for full-scene optimization.

The unique advantage of InstanceCollector is its ability to optimize GPU instancing across the entire scene. It not only effectively collects instance objects but also leverages Unity's Job System for precise culling calculations, ensuring optimal rendering performance. If the culling is not accurate enough, the performance might even be worse than SRP Batch, highlighting the core strength of InstanceCollector's technology.

Additionally, through the InstanceDataExporter, you can export matrix data for the scene, significantly speeding up scene loading while maintaining the flexibility of dynamic instance collection and rendering.

Why Not Use DrawMeshInstancedIndirect?

Generally speaking, compared to DrawMeshInstanced, DrawMeshInstancedIndirect offers better performance because it gathers matrix data in the compute shader. However, the biggest issue arises when the object count is zero. Since the CPU cannot determine the number of objects, it still calls the rendering API, and it seems like additional data is being sent to the GPU. When there are many different types of objects, this may lead to a performance drop. Therefore, to handle instance collections for multiple object types, we choose to use DrawMeshInstanced along with culling via the job system.

From the publisher's Asset Store listing.

Technical details

  1. Precise per-instance culling.
  2. Dynamic instance collection using the Job System, without occupying the main thread’s resources.
  3. Supports multiple types of instance objects, and even full-scene GPU instancing.
  4. Provides a matrix array output tool to speed up scene loading and reduce memory usage.
  5. Without using SSBO, it has better cross-platform compatibility.
  6. For hardware that doesn't support GPU instancing, the rendering process will fall back to using.
  7. Simple instance object setup process (just add the Instancer script and enable "Enable GPU Instancing" in the material).
  8. Compatible with SRP Batcher.
  9. Customizable maximum visible object count for each type, adjustable based on project memory and performance requirements.
  10. Support URP and Built-in render pipeline.

Compatibility

Render pipelines supported in each Unity version
Unity version Built-in URP HDRP
2022.3.62f3 Not listed Compatible Not listed
2022.3.33f1 Compatible Compatible Not listed

As listed on the Asset Store.