ElijahThePaver Devlog

Crystal Cavern Environment Demo | Unity URP

Over the past couple of weeks I've been working on a small environment project: a fantasy crystal cavern inspired by the atmosphere of games like Elden Ring and Skyrim.

The original goal was fairly simple. I wanted to create a believable cave environment and improve my workflow for sculpting, baking, texturing, and shader development. What started as a straightforward environment art exercise quickly turned into one of the most educational projects I've worked on.

Sculpting and Asset Creation

Workflow Most of the environment was created from scratch in Blender. I sculpted cave walls, ceilings, rock formations, stalagmites, stalactites, and various cave structures before baking them down to game-ready assets.

This project helped me become much more comfortable with the high-poly to low-poly workflow. Along the way I ran into some issues involving UVs, baking, normals, and asset organization, as I had to maintain a consistent texel density in the scene while utilizing triplanar mapping and baked normals and AO maps, but solving these problems gave me a much better understanding of the entire asset pipeline.

Materials and Shaders

Rock Shader Graph One of my main goals was to spend more time learning shader development.

The cave uses a custom master material built in Unity Shader Graph featuring:

Object Height based Material Blending

Height Based Material Blending

Vertex Color based Material Blending

Vertex Color Based Material Blending Vertex Color based material blending was especially useful in painting damage and blending between clay/plaster and brick materials for the Cave's entrance area. I painted the vertices in damaged areas red, and set up the graph such that wherever the vertices dont have anything in the red channel, the material used will be bricks, and wherever the vertices contain data in the red channel, the material used will be clay.

The linear interpolation between the two materials was smooth and looked quite convincing. Cave Entrance

I also experimented with several other custom shaders throughout the project:

Crystal Shader

The crystals went through many iterations. My first versions looked overly stylized and relied heavily on emissive Fresnel effects.

Over time I refined the shader to make the crystals feel more grounded within the scene while still serving as an important source of color and lighting. While I am still not 100% sold on how they look, I am relatively satisfied compared with the final product. I will probably come back one day and redo them to improve them.

Water Shader

Water Shader The water shader started as a simple scrolling noise setup and gradually evolved into something more believable with animated surface movement and depth-based coloration.

Fog Wall Shader

Fog Wall Shader The fog wall turned out to be one of the most interesting technical challenges of the project.

My initial attempts relied on Shader Graph noise nodes, but the results felt too blobby and low-resolution. Eventually I switched to a custom HLSL solution based on a procedural flow field, which produced a much more convincing magical fog effect reminiscent of Souls-like boss arenas.

That experience taught me an important lesson: sometimes the built-in nodes are enough, and sometimes writing a bit of shader code is simply the right tool for the job.

What I Learned

Final Result While I'm happy with the final result, the biggest takeaway wasn't the environment itself.

This project helped me identify the areas where I've improved the most and the areas where I still have a lot to learn.

The biggest improvements were:

The area I want to focus on next is material authoring. Looking back at the project, I think the materials still have the most room for improvement. Better roughness variation, more subtle surface detail, and stronger material definition would push the environment much further.

Final Thoughts

The goal of this project wasn't to create the perfect cave. It was to learn.

Every project reveals new weaknesses, and every finished project leaves you with a better understanding of what to improve next. This cave taught me a tremendous amount about environment production and real-time shaders, and I'm excited to apply those lessons to future work.

On to the next project.

My ArtStation: link