GPU Instancer Pro:FAQ

From GurBu Wiki
Jump to: navigation, search

About GPU Instance Pro | Getting Started | Terminology | Best Practices | API Documentation | F.A.Q. | Support


General Questions


What is new in GPU Instancer Pro?


The system has undergone a complete redesign with numerous performance and quality-of-life improvements, catering to a broader range of use cases. GPU Instancer Pro requires Unity 2022.3 or higher to take advantage of the latest Unity features. Here are some key highlights of the Pro version:


Core Module

Centralized Rendering System: The Pro version features a centralized rendering system, allowing for efficient rendering of objects with minimal draw calls and compute shader calculations. This leads to improved GPU memory usage and overall performance. With the centralized rendering system, the use of GPUI Managers is optional. Users have the option to render objects with few API calls directly from their scripts without the need for GPUI Managers in the scene.

Native Support for Multiple Cameras: The Pro version enables users to seamlessly use multiple cameras. By simply adding a component to the cameras, users can utilize multiple cameras without any additional adjustments.

Profile Scriptable Object: The settings related to rendering (culling, LOD, etc.) are stored in a Profile Scriptable Object, which is shared between prototypes (eliminating the need for Prototype Scriptable Objects). Profile Settings are written to persistent GPU buffers instead of sending the data to GPU every frame. This reduces the number of files, simplifies the addition/removal of prototypes, and optimizes GPU data transfer.

Distributed in Packages Folder: To enhance workflow efficiency, GPU Instancer Pro is structured into multiple modules, each shipped as individual packages.

Improved Editor Mode Rendering: Significant improvements have been made to the performance and user experience of rendering instances in edit mode.

Statistical Analysis: The Statistics Tab on the GPUI Managers offers detailed information on GPU Instancer rendering, including vertex counts and visible LOD counts. This data allows users to identify performance bottlenecks and optimize their projects effectively. Additionally, users can enable/disable rendering of individual prototypes with a single click to assess the performance impact of each prototype.


Terrain Module

Native Support for Multiple Terrains: The Detail and Tree Managers now natively support multiple terrains, minimizing draw calls and efficiently handling runtime changes with reduced allocations.

Distance-based Detail Density Reduction: The Detail Manager introduces new features to decrease the number of distant detail instances, enhancing performance while maintaining visual quality.

Coverage Mode Support: The Pro version supports both 'Instance Count' and 'Coverage' options for the Detail Scatter Mode terrain setting.

Terrain Holes Support: In the Pro version, the Detail Manager now accounts for terrain holes when generating detail instances.

Improved Add/Remove Functionality: Users can add and remove detail and tree instances at runtime with improved performance, enhancing the flexibility and usability of the terrain system.

[WIP] Custom Terrain Support: In addition to Unity's built-in terrains, the Tree and Detail Managers now support custom terrains. Users can utilize existing custom terrain components or develop their own by extending the GPUITerrain class.


Crowd Animations

[WIP] Read Bones Workflow: In the upcoming version of Crowd Animations, a new workflow will be introduced where the system reads bones instead of directly controlling animations. This workflow enables the use of features such as inverse kinematics (IK) or custom animators.

[WIP] Hybrid Usage: Furthermore, hybrid usage will be supported, allowing for seamless switching between different workflows for instances of the same prototype at runtime. For example, you can have a detailed animator with IK for close-up instances and a simpler, more performant one for distant ones, all while still benefiting from batched draw calls.


[WIP] Features marked with this annotation are 'Work in Progress' and describe the current planned implementation. The final result may differ from what is described here.


The primary objectives of these enhancements are to improve performance, flexibility, and ease of use. If you have any specific recommendations or features you'd like to see in the Pro version, please feel free to share them.


How can I upgrade my project from GPU Instancer to the Pro version?


GPU Instancer Pro have a new design and data structure and it is not possible to automatically upgrade from the GPU Instancer to the Pro version. Despite this, the Pro version maintains similar workflows and includes Prefab, Tree, and Detail managers, allowing you to set up these managers in the scene in a very similar manner. However, it's important to note that all API methods have changed, rendering any previous code for GPU Instancer incompatible with the Pro version.


What are the Known Limitations?


There are certain limitations that are introduced by the way Indirect GPU instancing works and/or how Unity handles it. Below you can find a list of the known limitations.


Lighting Limitations:

  • Baked Global Illumination is not supported for instanced prototypes (baked lighting data will be ignored for GPUI instances, but you can use it for the rest of the scene objects)
  • Light Probes are not supported (all the instances share the same probe value).
  • Ray Tracing is not supported.


Shader Limitations:

  • Geometry shaders are not supported.
  • Tesselation shaders are not supported


Miscellaneous Limitations:

  • Negative scaling on GameObjects is not supported.
  • Occlusion culling feature is not supported when using HDRP Dynamic Resolution.


What are the Minimum Requirements?


See Minimum Requirements.