During the process of developing a brush system in Unity, I found that in-depth discussions about the “principles of brushes” are quite rare online. Many developers tend to use the engine’s built-in tools directly, rarely exploring the underlying mechanisms. In reality, only by truly understanding how brushes work can we break through the limitations of existing tools and create fully customized brushes tailored to our needs. This is also my motivation for writing this article — to share my technical explorations and practical insights, and to help more people understand and build their own brush systems.
SmallBurger
SmallBurger encapsulates passion, convenience, and efficiency within its delicately crafted burger. Dedicated to delivering user-friendly rendering plugins and related tools that are simple yet effective.
2025年9月1日 星期一
2025年8月12日 星期二
A Hidden Benefit of RenderGraph in Unity 6 URP: Public Access to Core Render Resources
While exploring Unity 6’s URP, I noticed an interesting change: In the 2022.3.x versions, many internal render textures (like m_DepthTexture) could only be accessed via reflection, which was neither convenient nor safe.
2025年7月30日 星期三
Tile3DInstancer: A Practical Solution for Large-Scale, Multi-Type GPU Instancing in Unity
Have you ever run into this when building a large-scale scene?
You used DrawMeshInstancedIndirect
to render millions of objects, and at first, it seemed like the perfect solution.
But then, as the number of instance types increased, things got messy. You had to break things up into multiple buffers, issue multiple draw calls—and worst of all, you had no way to know which instances were actually visible.
That means for every type of object, even if it’s not visible at all, the CPU still needs to issue a DrawMeshInstancedIndirect call to the GPU. That’s wasted draw overhead and CPU-GPU communication cost—for absolutely nothing rendered.
And on top of that? You’re manually managing transforms, rotations, scaling, and LODs for potentially millions of instances. Eventually, your scene becomes an unmaintainable blob of dense matrix data.
That’s exactly why we built Tile3DInstancer.
2025年7月22日 星期二
2025年7月4日 星期五
Tile3DInstancer
Tile3DInstancer is built on the core architecture of InstanceCollector (with instance culling and collection handled outside of the same job), and incorporates cell template processing for objects. It can load over 5 million instance transforms in just 2 seconds, while significantly reducing memory usage. I am currently developing an editor for it.
2025年6月16日 星期一
GodViewFakeDOF: Introducing Blur Rect Height Ratio for Better Performance
Although GodViewFakeDOF already supports Mask Filter, it still processes the entire screen’s pixels.
This can easily lead to performance bottlenecks when using a high Render Scale and setting Blur Quality to High.
2025年6月7日 星期六
Optimizing SSAO on Mobile: Introducing EdgeDownSample in MobileSSAO (SmallBurger Assets)
On mobile platforms, SSAO (Screen Space Ambient Occlusion) has always been a performance-intensive visual effect.
In MobileSSAO, we have already optimized the PreDepthNormalPass using MRT (Multiple Render Targets), but under high-quality settings with increased Sample Count, performance bottlenecks can still be noticeable.
This is especially true on mid-to-low-end devices such as the Galaxy S8, where achieving a balance between visual quality and smooth frame rates remains a key challenge.
To address this, we’ve introduced a new feature in this update: EdgeDownSample.
This is a flexible SSAO optimization technique that maintains high Sample Count in the center of the screen, while dynamically reducing SSAO sampling costs along the edges of the screen, resulting in significantly improved performance.