Project · 2023
URP
Custom URP render features and post-processing, built during an 8-week software specialization.

Tags
- Unity
- Shaders
- HLSL
Project info
- Role
- Technical Artist
- Team
- Solo
- Duration
- 8 weeks
- Engine
- Unity 2022.3
- Languages
- C#, CG, HLSL
Overview
During the elective Verdieping Software, I focused on deepening my understanding of the Universal Render Pipeline and shader programming.
Developed during my time at NeoN Origins, it became a personal R&D project centered around post-processing and custom render features.
It began with a user story from Operation Starfall: I want the game to feel like watching an 80s NTSC TV.
That became my starting point for learning post-processing, experimenting with ShaderGraph, and studying shader fundamentals.
Two features came out of it and were delivered: a Tint renderer feature and a Chromatic Aberration effect.
Everything after that is exploration.
Custom Post-Processing
I implemented a Tint Renderer Feature with custom volume overrides.
This allowed designers to tint the entire screen with adjustable strength.
Two scripts work together to apply it: TintRendererFeature and CustomPostScreenTint.
Renderer feature
A new TintPass is created and assigned, and the assigned pass is then enqueued to the renderer in use.
This is the injection of the pass into the graphics pipeline.
Volume override
CustomPostScreenTint adds a float and a color to the inspector, with booleans to turn each on or off.
What went wrong
I was stuck for two weeks getting the screen tint to render at all. The shaders were fine, I had simply forgotten to add my renderer feature to the renderer.
Chromatic Aberration
The effect started as an experiment in UV space, eventually evolving into a full post-processing pass with tweakable intensity.
The UV-space version applies the effect within the bounds of a 3D object rather than screen-wide.
Each channel is manipulated based on altered UV input, simulating color fringing in a localized, object-contained way.
Both implementations separately manipulate and recombine the color channels to form new RGB vectors,
then blend them with a sampled source using a strength-controlled EffectMultiply parameter.
Exploration
After delivering the core features, I kept exploring shader techniques:
- Color bleeding via blurred offsets
- Depth testing using normalized values
- Multipass rendering
- Color spaces, manually converting between
RGBandYUV
Most of these resulted in glitchy, trippy visuals, but each experiment revealed something new about the rendering pipeline.
In Photoshop I illustrated additive RGB blending. Red and green combine as expected, but blue remains a mystery?
Shader curiosity
Outside of Unity, I explored shader languages and rendering pipelines.
I experimented with CG, HLSL and GLSL, and learned how ShaderLab structures SubShaders, Passes and HLSL includes.
I also collected notes on shader stages (vertex, fragment, geometry, etc.), realizing I was only scratching the surface.
This gave me the foundation to move from node-based workflows to structured shader code, a skill I now apply across graphics projects.
Takeaway
This project was a turning point where I delivered two production-ready URP features. It gave me hands-on experience with post-processing, custom renderer features, and shader architecture. It built a foundation that continues to shape my path.
It showed me how shader math, rendering theory and artistic direction come together, and confirmed I wanted to keep exploring the technical art side of game development.
Resources
- Unity URP 14.0.X documentation (official URP manual)
- Making a Chromatic Aberration Shader (YouTube Short)
- A Review of Shader Languages (blog article by Alain Galvan)
- My specialization pitch presentation (original kickoff presentation)