Unity · Editor tooling
Unity World Creation Tool
An environment-authoring toolkit that makes world building in Unity feel like one editor instead of a chain of separate utilities. Terrain generation, brush sculpting, layered materials, constrained scattering and metaball forms share the same data contract, so a landscape goes from empty scene to finished environment without leaving the Scene view.
Unity / C# / ShaderLab / HLSL / Compute Shaders
Making world building feel like one editor
Building a landscape in Unity normally means moving between separate utilities for heightmaps, texture painting, scattering and mesh work. This toolkit brings that work into a single Inspector and Scene-view environment: generate terrain, sculpt it with brushes, paint layered materials, scatter constrained prefabs and build organic forms from metaballs, each as a self-contained tab that can be used alone or alongside the others. A factory registers the tabs, serialized models hold their settings, and one scene-input path dispatches cursor raycasts to whichever controllers are active, so the tools stay coherent as the toolkit grows.
A 230-layer material contract
The terrain renderer is configured for up to 230 material layers, with aligned diffuse, normal and packed roughness/displacement/AO array data. RGBA mask slices store four blend weights, while the slice and channel determine identity: layer 137 is slice 34, channel G. That same explicit addressing lets terrain, grass and terrain-aware objects share the material library.
Where the channel-range idea came from
An earlier shader prototype explored packing two blend weights and normalised texture IDs into RG and BA channel pairs, decoding each ID with int(value * 100 + 0.5). That experiment is a useful example of compact indexed data and the filtering problems it introduces. The current renderer uses the more explicit slice/channel addressing scheme, and the two designs are documented separately.
Adaptive geometry for displaced terrain
The non-instanced terrain shader calculates tessellation per edge from edge length and camera-midpoint distance, then checks painted masks so geometry is concentrated where displacement detail is needed. Displacement sums weighted height deviations from packed RDA maps and moves vertices along their normals. Shared edge inputs are chosen to support visual continuity as the camera changes detail level; the remaining boundary cases are documented for Unity wireframe validation.
Blending objects into the ground
Placed objects can receive a terrain-aware blend material that compares object height with the terrain heightmap, shapes the transition with smoothstep, optional sharpness and multiplier controls, and breaks it up with noise. The object shader reuses the terrain's layered material evaluator for colour, normals, roughness and occlusion, helping rocks and props inherit the surrounding surface language while remaining ordinary meshes.
Procedural forms with artist-friendly controls
Terrain stamps query Box, Sphere and Mesh strategies; object brushes use slope, surface and width constraints with spline placement; and the CPU metaball extractor builds an isosurface from a 256-case cube table, interpolated edge crossings and field-gradient normals. The result is a coordinated authoring pipeline from brush interaction to reusable geometry.
A reusable foundation for world building
The project brings editor architecture, shader programming, compute-assisted painting and procedural geometry into one authoring workflow. Its modular material and geometry systems make complex terrain work accessible from the Scene view while leaving room to extend the toolkit with new brushes, surface types and world-building tools.