Devlog #1.2: Exploring Rendering Methods

In the previous log, I used the simplest way to create chunk meshes: adding vertices and triangles directly into a mesh, then rendering them with a MeshFilter. Unity, however, provides more advanced rendering approaches worth exploring:
- Renders multiple instances using a list of TRS matrices (Transform–Rotation–Scale).
- Limitation: only 1023 instances per draw call, so larger meshes require more draw calls.
✦ Graphics.DrawMeshInstancedIndirect
- Similar to
DrawMeshInstanced
, but can render an unlimited number of instances in a single call. - Supports compute shader culling (frustum, backface, occlusion).
🔶 Why render by chunk?
I experimented with different batching strategies and found that processing TRS matrices per chunk is far more efficient than handling them all in a single thread. Plus, splitting the work across multiple threads gave a noticeable performance boost.
🔶 Challenges with Instanced Rendering
Switching to instance rendering came with some issues:
-
Shader Graph incompatibility – Shader Graph doesn’t support per-instance textures, so I had to move to custom HLSL shaders.
-
Data transfer bottleneck – Sending a large amount of TRS data from CPU → GPU every frame caused a severe bottleneck. This can’t be multithreaded, can’t be asynchronous and must happen on the main thread. Because of this, performance actually dropped in large scenes.
🔶 Current solution
I rolled back from Graphics.DrawMeshInstancedIndirect
to a more stable approach: Graphics.DrawMesh
per frame (instead of using MeshFilter). Surprisingly, this performed much better than expected, giving me a solid baseline to continue building on. And also, I can totally use Shader Graph to visualize my shader.
YNL - Vozel (Devlog)
Minecraft-inspired project with optimized voxels, procedural biomes, and advanced shaders in a fantastical world.
Status | In development |
Author | Yunasawa |
Tags | application, Unity, Voxel |
More posts
- Devlog #2.3: Burst-compatible biome proceducer1 day ago
- Devlog #2.2: Minecraft-like biome generation1 day ago
- Devlog #2.1: Procedural Noise in Action2 days ago
- Devlog #1.4: Voxel-style Ambient Occlusion6 days ago
- Devlog #1.3: Hidden-face Culling11 days ago
- Devlog #0.1: Control UIs, ToolTab & ToolViewDec 29, 2024
- Devlog #1.1: Base renderer & Multi-threadingNov 07, 2024
Leave a comment
Log in with itch.io to leave a comment.