3,110 Commits over 915 Days - 0.14cph!
Subtract
86589 (mark every building mesh as read/write enabled)
Fix demos not deleting instanced entities when changing keyframes
Cherrypick demo fix from global_networked_bases/2021/multidraw so they work in editor (and client?)
Merge from main -> global_networked_bases
Initialize & Dipose GeometryBuffer properly
Initialize instancing system when opening a demo (because you don't connect to server)
Add demo with fair amount of building blocks to test
Can specify normal rendering via GameSetup prefab in editor
Ensure ConstructionPlanner doesn't throw errors when instanced rendering is distanced via startup parameter
Fix material blocks still rebuilding every frame
Add some profiler samples
Enable shader keywords once per frame instead of once per draw call
Remove code that assigns material blocks every frame (good for testing, not for performance)
Only update material blocks when buffers have changed
Move from a ComputeBuffer for each type of vertex attribute to a single ComputeBuffer for all vertex data in a single struct
Move code that copies mesh to ComputeBuffer into GeometryBuffer.cs
Additional methods in GPUBuffer wrapper
Enable procedural instancing on blend shader
Log error when mesh used for instancing doesn't have read/write enabled
Ensure every prefab for instancing is warmed up in the editor
Mark every single building block mesh as read/write enable (NOTE: this cannot be merged to 2019!)
Add shader to InstancedScheduler (2021 prefabs not compatible with 2019)
Copy meshes into the single geometry buffer via a shader to deal with meshes with Read/Write disabled
Fix start vertex of multidraw being incorrect
Some cleanup
Show draw call count with multidraw in perf 7 properly
Move the temp manually assigning of computebuffers every frame above the loop that skips values
Fix mutlidraw count not being reset when new meshes are added
Ensure that non-multidraw instanced rendering still works to compare & see what is broken
Add all other mesh data to buffers & ensure they are assigned inside the shader: all uvs, normals, tangents, colors
Ensure all buffers are diposed
Fix draw calls so uvs at least work
Add MaterialCache so we can enable `RUST_PROCEDURAL_INSTANCING` on materials without modifying the source materials in the editor
Various fixes
Log when players mount & dismount vehicles
Log when burst mode is enabled & if the gunshot had burst mode on
Log scrap cost of blueprints when learning them & using tech tree (instead of only when using the research table)
Add analytics when diving tanks & jackhammers are refilled at workbench
Include skin when upgrading to a skinned building block
▄▄█ ▄▍▍▇▍▋▋▆▄▍ ▍▄▄▌▌ ▌▉▆▍▉▄▉▄█▉ ▉▍▊▍ ▍▋▉▉▇▍▊▋ ▍▆▅▆ ▌▅▍█▄▌
Add empty UVs for meshes without UVs (shadows) so vertexID always references the correct UVs
Try to setup shadows with procedural rendering but it has shader error
Rearrange some classes around
Store UVs in compute buffer (but they don't exactly work)
Make a `ProceduralSetup( VertexInput )` method that gets put before `InstancedSetup()` in the shader
Only enable procedural instancing keyword on materials used with instancing
Fix multi compile in the wrong place in the shader
Fix instancing keywords not being present in the instanced rendering method
"Clean" up the shader a bit
Fix shader for procedural rendering, verticies and indicies seem right now
Change Vertex & Index buffer to StructuredBuffer type
Use global shader keyword `RUST_PROCEDURAL_INSTANCING` to enable procedural rendering
Apply procedural rendering to UnityStandardCore deferred shader
Change Submesh info from List to Array
Fix two separate GeometryBuffers created
Keep geometrybuffers in separate class
Fixes
Add `UnityIndirect.cginc`
Start getting code to support "multidraw" to reduce drawcalls
Store verticies and indicies in GraphicsBuffer and use `Graphics.RenderPrimitiveIndexedIndirect()`
Group & batch draw calls that have the same material + shadow mode via `DrawCallKey` struct
Update global_networked_bases/2021
Enable instanced placeholder on static sam sites
Fix normal sam site missing base platform in placeholder mesh
Fix rotated building blocks not updating visual
15s cooldown when sending rotated building block globally
Update global_networked_bases/2021
Rename `InstancedEntityScheduler` to `VirtualEntityScheduler`
Clear up performance text
Remove instanced triangles from performance text as we don't know on CPU how many meshes will be rendered post GPU culling
Change slider range of instanced rendering from 500-1500
Default instanced rendering distance 1000m
Convar still can go from 500-2500
Categorize mesh renderers based on prefab the mesh came from
Add commands to toggle rendering of certain meshes: `instanced_toggle_buildings`, `instanced_toggle_cliffs`, `instanced_toggle_other`
Rename `instanced_rendering` to `instanced_toggle_all`
Ensure all instancing classes have instancing namespace
Expose ability to get every virtual mesh that is visible for an entity
Added Float4x4Ex to get position and rotation from a matrix easily
Fix highlighting building blocks when looking at them with a hammer
Merge from global_networked_bases -> main
Fix recycled cells not rewriting their header causing them to become creater than 32 elements, overwriting other cells and breaking stuff
Log error if the cell ever goes above 32 elements again