branchrust_reboot/main/indirect_instancingcancel
33 Commits over 31 Days - 0.04cph!
Made indirect instancing system toggleable via ConVar indirect_instancing.enable and disabled by default
Fixed a bug collecting wrong statistics about unsupported shaders
Indirect Instancing: Add initial support for sub meshes
Indirect Instancing: Restored original bounds calculation (because draw order doesn't seem to matter) and other minor cleanups
DANGER: Enable Read/Write on ALL models project-wide
DANGER: Enable GPU instancing on ALL materials project-wide
Indirect instancing:
Add support for potentially any shader derived from Unity Standard, currently enabled for all shaders in the Standard/ folder.
Add support for MeshCull, RendererLOD and MeshLOD.
Add editor scripts to enable GPU instancing and Read/Write on all assets.
Use a nullable value for Color to allow future optimisations for non-coloured objects (most of them).
Add the camera component from code, but only once.
Rename instanding_id to instancing_handle.
Rename IndirectInstancingManager and IndirectInstancing to IndirectInstancing and IndirectInstancingCamera respectively for clariy.
Load IndirectInstancing component in MainCamera.cs to avoid merge conflicts.
Disable certain features (layers, bounds, ...) in order to debug last week's performance regression.
Fixed unintended creation of material instances as well as unintended creation of command indexes when removing instances.
Fixed a bug in the graphics buffer damage tracking where damage regions could be shrunk if they were adjacent to another smaller region, causing corrupted building parts to be rendered.
Various fixes about the colour buffer not being resized or copied correctly
Add temporary debug error messages to diagnose the uninitialised component issue.
Fix Awake() and OnDestroy() not being called for IndirectInstancing in standalone builds
Add an additional null check when removing instances
Indirect instancing fixes:
- Fixed shader compilation error (again)
- Fixed infinite loop condition causing application freeze
- Fixed colour buffer not being applied due to wrong type causing black building parts
- Fixed non-optimized instance buffer updates
- Fixed off-by-one bug preventing the very first building part from being rendered
- Fixed NullReferenceException when attempting to remove a renderer without a material
Fixed missing namespace error in server build
/main/indirect_instancing:
Check if there is an instance of the indirect instancing component because apparently it's possible that we add/remove instances when there isn't an active camera.
Indirect instancing:
- Prevent NullReferenceException when attempting to remove instances without a MeshFilter component
- Fixed shader compilation error in the shadow pass
- Surround instancing code with `#ifdef CLIENT` for cleaner server builds
Added support for layers and per-instance colors to the indirect instanced renderer
Indirect Instancing:
- Remove delegate callbacks to avoid allocations at all costs
- Lots of clean-up / Removed some ugly hacks
- Use proper namespace namespaces
- Use a camera component for proper resource management
- Prefix all profiler regions with "Indirect." for an easy overview
Remove the massive lump of disabled code I forgot to delete
Implement indirect instanced rendering system