Hi everyone,
GPU Instancer Pro version 0.12.0 and Crowd Animations version 0.9.0 is now available on the Asset Store!
This update introduces major performance improvements along with new features and fixes.
/------------------------------
• SetPass calls optimization
This version includes significant changes in how GPUI Pro issues draw calls and handles material properties.
When multiple renderers in a prefab use the same material (commonly with LODs), reused materials will no longer generate additional SetPass calls.
For example, if you have a tree with 4 LODs that reuse the same materials, you will now have 4 times fewer SetPass calls compared to the previous version.
Old version rendering a tree with 4 LODs using the same materials, creating 72 additional SetPass calls:
New version rendering the same LODs with only 18 additional SetPass calls:
/------------------------------
• Instancing bounds calculation
Profile settings now include a new option under Culling Settings called “Calculate Instancing Bounds.”
When enabled, GPUI Pro calculates bounding boxes per prototype in a custom compute shader and asynchronously reads this data back from the GPU. It uses these bounds when issuing draw calls to perform CPU culling, reducing the number of batches.
This affects all draw calls and can reduce Batches, SetPass calls, and shadow casters when culling occurs.
Previously, draw calls were issued regardless of instance positions. With this option enabled, instances outside the frustum are culled early on the CPU, preventing unnecessary draw calls.
In addition to frustum culling, this can reduce shadow passes when instances are far away—either lowering the number of shadow casters or skipping shadow rendering entirely.
Rendering close-up:
Rendering far:
Out of frustum:
Please note:
- This option is currently not available for the Detail Manager.
- Because of the asynchronous readback, there will be a delay of a few frames after updates before the system can use instancing bounds. If you modify instances every frame, no culling will occur. If updates are less frequent, culling will pause briefly after each update and then resume once the readback completes.
- Existing custom profiles will have this setting disabled by default. You need to enable it manually.
To view the calculated bounds in the Scene view:
- Open the Statistics tab.
- Click the “…” button in the top-right corner.
- If Calculate Instancing Bounds is enabled in the profile, you will see a Show Instancing Bounds option.
When selected, a wireframe cube will be drawn in the Scene view to visualize the bounding box (when available).
You will see a wire cube around the instances:
/------------------------------
• Shadow Layer options
Profiles now include an Override Shadow Layer option, allowing you to change the Layer or Rendering Layer Mask used for shadow draw calls.
This can be useful for optimizing lighting in scenes without duplicating renderers (as mentioned in a previous post).
/------------------------------
• Unity 6.2 Mesh LOD
After investigating Unity 6.2’s Mesh LOD system, I found that it does not support RenderMeshIndirect. This means you cannot switch LODs on a per-instance basis using a single Mesh Renderer.
However, support for LOD Override has been added, allowing you to manually select a specific LOD on a Mesh Renderer.
Alternatively, you can use the Force Mesh LOD option in the Profile to select an LOD when no override is specified. If neither is set, LOD0 will be rendered by default.
Although a single Mesh Renderer cannot handle multiple LODs, you can still use an LOD Group component with multiple Mesh Renderers that use the same mesh but different LOD Overrides. This allows you to use the Mesh LOD system as a more memory-efficient LOD generator for the LOD Group.
Mesh Renderer - LOD Override
Profile - Force Mesh LOD
/------------------------------
• Optional Renderers and Crowd Animations demo
This version also includes fixes and improvements for the Optional Renderers setting in the Prefab Manager.
This feature allows you to select specific child renderers and enable or disable them per instance at runtime.
It is especially useful when working with characters that have optional Skinned Mesh Renderers (e.g., hair, clothing, body parts, etc.).
The updated Crowd Animations package now includes a new demo scene located at:
Demos/CrowdAnimations/TutorialScenes/OptionalRenderers
This scene demonstrates how to use the Optional Renderers feature.
/------------------------------
Since this is a major update with many changes to the core system, I recommend making a backup before updating.
If you encounter any issues, please contact support via email by following the provided guideline.
Thank you for your continued support, and I hope you enjoy the update!











