537 Commits over 396 Days - 0.06cph!
▅▋▉█▄: ▋▇█ ▌▄▉ ▅▆▌▅ ▊▌▍▇▊▆▆█ ██▉▋▇▄▋▇▉█ ▊▊ ▊▅▍▋▄▊▆█
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
Naval + Indirect Instancing smoke test
▅▉▌▄▊ █▆▇▊▆█▉▆ ▆▋▄▇▆▅█▍▇▌ ▊▊▇▄▍
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()
Check textures for null in ApplyMipLevels()
Merge Indirect Instancing Fixes
* 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
Remove leftover debug message from ElectricWindmill
Gate some Indirect Instancing ConVars behind ClientAdmin rather than DEBUG.
Gate some Indirect Instancing ConVars behind ClientAdmin rather than DEBUG.
Merge latest Indirect Instancing changes. This is a big one, but it's still disabled by default.
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.