branchrust_reboot/main/global_networked_bases/2021/multidrawcancel
26 Commits over 0 Days - ∞cph!
Subtract
86589 (mark every building mesh as read/write enabled)
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!)
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
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