branchrust_reboot/main/indirect_instancingcancel
330 Commits over 335 Days - 0.04cph!
Enable 222 new materials for GPU instancing (If you conflict with this changeset, simply override these changes and manualle re-enable GPU instancing on the affected materials afterwards) [Part 7 of 7, because Plastic is a broken mess]
Enable 222 new materials for GPU instancing (If you conflict with this changeset, simply override these changes and manualle re-enable GPU instancing on the affected materials afterwards) [Part 6 of X, because Plastic is a broken mess]
Enable 222 new materials for GPU instancing (If you conflict with this changeset, simply override these changes and manualle re-enable GPU instancing on the affected materials afterwards) [Part 4 of X, because Plastic is a broken mess]
Enable 222 new materials for GPU instancing (If you conflict with this changeset, simply override these changes and manualle re-enable GPU instancing on the affected materials afterwards) [Part 5 of X, because Plastic is a broken mess]
Enable 222 new materials for GPU instancing (If you conflict with this changeset, simply override these changes and manualle re-enable GPU instancing on the affected materials afterwards) [Part 3 of X, because Plastic is a broken mess]
Enable 222 new materials for GPU instancing (If you conflict with this changeset, simply override these changes and manualle re-enable GPU instancing on the affected materials afterwards) [Part 2 of X, because Plastic is a broken mess]
Enable 222 new materials for GPU instancing (If you conflict with this changeset, simply override these changes and manualle re-enable GPU instancing on the affected materials afterwards) [Part 1 of X, because Plastic is a broken mess]
Fix wrong lighting in underground scenarios by issuing instanced draw calls earlier in frames where reflection are rendered.
Actually apply and respect render layers when instancing
Fix NRE when Indirect Instancing is disabled
Fix Indirect Instancing accidentally being enabled by default
Replace range_terrain_mound_a (negative scale) with range_terrain_mound_b and adjust position.
* Fix lights at monuments always visually on
* Fix levers not animating properly
Fix workshop skins not loading when Indirect Instancing is enabled
Allow indirect_instancing.debug to be toggled at runtime
Fix chandelier chain stretching (it actually never did) by properly instancing the _MainTex_ST property
Check for valid material before submitting a draw call
Fix objects in motion failing to move properly after disconnecting/reconnecting (it was a pooling issue)
Fix chandelier chain not scaling (stretching) correctly with Indirect Instancing
Prevent unit cube bounds by always requiring at least one valid mesh for all LODComponents
Check textures for null in ApplyMipLevels()
* Store local bounds so that new world bounds can be derived when an instance moves
* Emit a warning when a unit cube is assumed for bounds
* Don't actually try calculating worldBounds for Unity, it gets really messy when things move around
* Use the new local bounds for the debug overlay as well
* Add some null checks in MotionList
* Add BroadcastTransformUpdate() to force-update the instance transform regardless of motion state
Add the ability to mark ConVars as "DeveloperOnly" (for graphics debugging stuff)
Set minimum mip level instead of requested mip level to avoid overwriting results of Unity's streaming system.
Remove leftover debug message from ElectricWindmill
Gate some Indirect Instancing ConVars behind ClientAdmin rather than DEBUG.
Ensure once again that Indirect Instancing is disabled by default and advanced debug ConVars are only available in debug builds.
Fixed initial door states after load by finalising the transform on StopMotion()
Remove IBatchingToggle from InstancedLODComponent
Fix electric windmill animation
Fix wind turbine animation by assuming perpetual motion when there is an active animator.
Don't use `cachedTransform` for instancing. Fixes misplaced condional models, wind turbine nacelles and probably many other "slightly offset" bugs.
Use a better way to toggle objects in motion. This fixes "stuck" objects and the initial state of doors but currently breaks everything else that is not a door.
Set default execution order of InvokeHandler to (hopefully) work with Indirect Instancing
Disable terrain culling by default
Add `indirect_instancing.use_instance_mask` for in-build debugging purposes
- Fix inaccuracies in terrain culling raycast
- Fix terrain culling issues around terrain holes
- Add generic SIMD vector types `float8x3` and `int8x3` for terrain culling and future use
- Make the first culling layer (LOD/Distance) respect the instance occupation mask
- Add `terrain.debug` command to visualise how the culling system sees the terrain height map
- Fine tune `tc_max_iterations` to 512
- Fix random low res mip levels by using NativeParallelMultiHashMap instead of FixedList to avoid running out of space.
- Fix dropping off-screen instances to low res mip levels by considering all instances for mip level calculations instead of just culling surviors. The old off-screen behavior can be examined by setting `indirect_instancing.streaming_use_all_instances 0`.
- Mitigate dropping Unity renderers to low res mip levels when Unity's and Indirect Instancing streaming systems disagree by calling ClearRequestedMipmapLevel() when we have determined mip 7.
Fix floating point overlow in mip level calculation
- Clean up texture streaming jobs
- Fix wrong camera position in Streaming_FallbackSquaredDistanceJob
- Add various debugging ConVars
- Add "Indirect Instancing" UI Indicator
Experimental frame synchronisation ConVars