
Shader Projects
Overview
I’ve long been interested in shaders, tech art, and graphics programming. In the past, I dabbled in shader creation using Unity’s Shader Graph and some basic GLSL using pure OpenGL and Raylib, but I wanted to use my newfound knowledge in programming from my graduate studies to push my skills further. I’ve additionally spent the last year studying mathematics for fun, and finally wanted to start applying that knowledge in practice. This page is a collection of studies and experiments I’ve done while working through various resources, both in GLSL and Unreal Engine 5’s Material Editor with custom HLSL functions.
I plan to continue adding to this page! It’s a work in progress over 2026, and I’ll probably end up breaking things out into their own pages/blog posts. These are long-form projects, and I’ve picked three primary areas I’m interested in researching and building around for fun and to hopefully make something out of someday!
Shader Fundamentals
I recently started working through Patricio Gonzalez Vivo and Jen Lowe’s The Book of Shaders to shake off some of my rust and re-familiarize myself with the fundamentals of shader programming using GLSL.
The first task was learning how to write some GLSL! I’d started working through OpenGL in the past, and I’d of course made Shader Museum in the past, so some of the basic concepts were familiar to me. However it’d been a long time since I had to think about the actual task of designing graphics, so starting from scratch helped formalize some of the basics that I’d struggled to fully grasp back then.
This will probably be the shortest section, but I felt like it was still important to document these steps!
UV Mapping, Distance Fields
Step one was re-familiarizing myself with UV coordinates, and getting a real handle on how manipulating them works. Thanks to the past several months of studying Fletcher Dunn and Ian Parbery’s 3D Math Primer, the basic mathematics of shaping functions and coordinate space manipulation was actually fairly familiar to me.
This stage was mostly covered by close-reading the “Shaping functions”, “Colors”, “Shapes”, and “Matrices” sections from The Book of Shader. I rigorously followed each listed exercise in each chapter, studying the example shader code to parse out as much information as I could. The specifics of what I accomplished are as follows:
- I built out dense notes to reinforce and create a personal database of the effects of shaping functions on input signals:
- I paid specific attention to documenting use cases for Smoothstep/Step, Frac, Floor/Min, Ceil/Max, Clamp, and Exp/Pow/Mod. I hadn’t really realized before this just how much of shader programming is driven by creative usages of these functions. I had to learn to ask myself, “What kind of shape, movement, or gradient am I looking to make? Which of these tools would help me achieve that in an efficient manner? How does combining them effect the resulting output?” I’m still working on really making these functions glued down in my memory, but it’s been eye-opening to really start to understand them!
- I learned about Distance Fields!
- I, as mentioned, followed the recommended exercises and toyed around with some extra combinations of functions. Here are some of the results, mostly made from just playing with various functions to see what would happen.






I had a lot of fun with this process! Though I wasn’t making my freeform designs with specific end goals, it was informative to see how sticking different elements together produced a variety of results. By the end of this process, I felt like I’d really begun to grasp some of the concepts that had eluded me way back in the day on Shader Museum.
I found the process of working in GLSL really enjoyable. Most of this was to de-rust and prepare for moving into Unreal’s Material Nodes. But I plan on continuing with working with GLSL to make shaders for fun and education, probably in Godot, due to Godot’s Shader Language being fairly close to base GLSL.
Noise
Noise is a massive topic, and its useful for a wide variety of applications in graphics. So this section documents my process for learning some aspects of noise generation, focusing specifically on value, gradient, and fractional brownian motion. This section will most likely be expanded in the future as I continue to work with noise in all of my major projects.
Major Projects: Water
This project is currently being worked on in UE5. My end goal is:
- Stylization, in some way
- Depth effects
- Edge foam and water foam
- Believable wave motion
- Having it be performant, with clear documentation for others to use!
- Whatever else I decide on adding as this is built and I learn more about the process :)
First Steps: Starter water in UE
Project-specific resources
Articles and videos I found informative and drove this project forward.
Major Projects: Volumetric Clouds
This project is currently being worked on in UE5. My end goal is:
- Building a stronger understanding of raymarching
- Making some nice looking fluffy clouds
- As before, will add to this list as the project develops!
Project-specific resources
Articles and videos I found informative and drove this specific project forward.
Major Projects: Procedural Shaders
This project is currently being worked on in UE5. My end goal is:
- Understanding how procedural design works within shader programming
- Figuring out how real-time procgen functions, and building something using it in combination with procedural shader texturing
- Understanding compute shaders
- Using a compute shader to do terrain generation with noise-based heightmaps
- As above, this will be expanded as I learn!
Project-specific resources
Articles and videos I found informative and drove this specific project forward.
General Resources
Here’s a list of resources that I’ve found useful in this journey.
Websites
- The Book of Shaders
- LearnOpenGL
- Guerrilla Games Publications
- ShaderAcademy
- 3D Math Primer
- ShaderToy
- GPUGems