branchrust_reboot/main/global_networked_basescancel
398 Commits over 153 Days - 0.11cph!
Add `use_command_buffers` command to toggle between Graphics.DrawMeshInstancedIndirect() and CommandBuffers
Can use convar at runtime to switch back and forfth
Added manually submitting draw calls back as CommandBuffers broke lighting & were slower after first iteration
Finally fixed the rendering so opaque geometry & shadows are kept in separate command buffers... although I would need to add the shadow commandbuffer to each light now
Give name to the the instanced CommandBuffer & CommandBuffers created by `CommandBufferSystem`
It now renders with the command buffer, just gotta figure out incorrect lighting, multiple meshes overlapping & lighting turning off every 1s
Submit DrawCalls via `CommandBuffer` instead of `Graphics.DrawMeshInstancedIndirect()`
Hook `MainCamera.OnPreCull()` via a `InstancedCameraComponent` instead of static Action
Change shaders to use a commandBuffer to get the start index of each drawcall instead of passing an index into each MaterialPropertyBlock
(not completely done, more of a stash)
Remove instanced rendering from furnace & planters as they require an extra color to be passed in
Some materials missed
Merge from main -> global_networked_bases
See if small tweak fixes "virtual mesh not found"
Enabling material instancing on a few electrical materials (not custom instancing)
Missed the other CS files for `print_prefabs` changes
Print number of prefabs added, removed & sort `print_prefabs` by number of prefabs missed
Fix initializing & destroying instanced rendering system not working (at least in editor)
Use default skinId for ShadowOnly renderers
After much debugging, turns out trees weren't showing outside of network range due to the foliage-billboard shader missing one bit of instancing setup code
Merge from main -> global_networked_bases
Add debug to figure out why trees are not showing as billboards
Only scale preculling data by 50% over 32MB and fix it overwriting data (plan to put in a new allocation system later, for now it's maybe 100MB wasted ram)
Fix ConstructionPlaceholder not being removed from building blocks
Expand the render computebuffer in 2MB increments separately from the culling array expanding
Implement compacting array of meshes when expanding but it still sucks
Add "remove instancing" menu option to remove instanced rendering from prefabs
Remove instanced rendering from TC (DeferredMeshDecal)
Fix instanced entities (wooden boxes) that only show inside network range not showing after server restart
Enable instancing for locker & TC
Network++ up to 2500 to avoid conflicts on aux2
Garage door uses normal rendering in network range
Implement disposing / cleanup of instanced rendering when leaving server
ConVar.Mesh.quality will scale instanced rendering LODs too
Cleanup GlobalNetworkHandler
Fix blue deploy guide not showing for instanced prefabs
Assign the runtime created MeshRenderConfig to InstancedMeshFilter so we can grab it from the PrefabAttribute
Manually set "globalBuildingBlock" for all building block prefabs
Remove magic "is BuildingBlock"
Convert sleeping bag and bed
Change `global_rendering` convar into a command line argument `--use-normal-rendering`
Block planter box material changing behind `-use-normal-rendering` instead of the runtime toggle of instanced rendering
Fix minimum distance for first LOD in RendererLOD being 1m allowing you to see through walls when close up (set to 0m for instanced rendering)
Converted conditional model prefabs
Fix prefab converter missing conditional models for building blocks (mainly foundation walls)
Fix ConstructionPlaceholder renderers not being removed
Remove EmissionToggle component on instanced prefabs
Prevent PlanterBox from trying to update material when instanced
Re-convert cliffs as InstancedMeshFilter was missing from RendererLOD for some reason
Fix formatting of debug of renderers
Fix PrefabPreProcess using Cast<> instead of OfType<>
Add debug command to print all renderers and number of meshes they are rendering
Client & Server compile fixes
Fixed so doors (and other placeholder entities) will always show default skin outside of network range
Massively simplify render component stripping for instanced prefabs
Revert MaterialReplacement so it still adds to prefabs & strips them out right after for instanced prefabs
Prefabs updated after removing field
Remove "HideInsideNetworkRange" field
Move "HideInsideNetworkRange" from individual `InstancedMeshFilter` to `InstancedEntityComponent`
Move code to only show instanced rendering outside network range from `PrefabScheduler` to `EntityScheduler`
Workshop skins work (but a hacky way)
Prevent MaterialReplacement from being added in PrefabPreProcess if InstancedMeshFilter is attached
Start with to handle workshop skins
Convert rug, landmind & floor spikes
Right click option will handle multiple selected prefabs
Convert garage door manually with an instanced placeholder mesh (since it's a SkinnedMeshRenderer)