Below lies all documentation for my CC: Shaders Independent Project, in which I explored creating fully-featured post-processing effects in Unity's HDRP. The original pitch can be found here.

The shader files can be downloaded here.

The Big Preface: Why Is This Cool?

Unity comes with about 20+ post-processing effects built into its HDRP render pipeline. I've built 5 that aren't included among the built-ins, with particularly fun combination potential among themselves and endless implementation possibilities alongside the existing post-processing effects.

My effects are as fun as they are practical, and are fully-featured to work within Unity's volumetric post-processing system. As such, they are seamlessly integrated into Unity's existing hierarchies and, because of my implementation of custom parameters, can be edited via scripting for even more control.

The self-contained nature of my project means these shaders can be shared with a minimal amount of setup, able to be up-and-running within 30 seconds. As planned, the shaders are able to be shared as a single folder, mimicking the Unity Asset Store's approach to easy installing. In the next few months, I'll likely be pitching the Asset store to include my shaders to make installation as easy as possible.

Preface 2: Getting the Shaders to Work

Installing the shaders requires a bit of menu digging, but nothing that should take more than a few seconds. Once you have the folder containing all shaders (the folder will contain both ****C# scripts and .shader files), hit the edit tab at the top of the window, and click on "Project Settings..." A new window should pop up, laden with all sorts of intimidating-looking info. On the left-hand side, click on "HDRP Default Settings," then scroll down in the main window until you reach the bottom. You should be in an area labelled "Custom Post Process Orders." The bottom tab is the one you're interested in, labelled "After Post Process." Click on the little plus button towards the bottom right of the mini-window, and add all effects that come up.

UnityPostLocationSMALL.gif

Done!

The Beginning: Research and Finding My Way

I had absolutely no idea ****how much of a pain implementing post-processing effects in HDRP would be.

My initial research started with a few hours diving into Shader Graph, trying to get a foothold on how exactly to implement Shader Graph projects into the post-processing pipeline (I would learn later that you don't). This was initially a joint expedition into figuring out Shader Graph as a whole in an attempt to build out a few shaders for my thesis project (another thing that evolved to entirely disregard Shader Graph, a running theme in the first few weeks of research).

With a rather generous amount of guidance from shader all-star Jason Li, I found the initial documents that guided me through my shader journey and continued to prove valuable even through the finishing touches. Unity's documentation, unsurprisingly, was extraordinarily dense and required a massive amount of unpacking and re-reading to fully grasp. I learned after watching several tutorial-length YouTube walkthroughs that the process of setting up shaders within HDRP was massively different from the normal render-texture shaders I'd previously used in Unity's standard pipeline.

The Process: Implementing and Iterating

Using shaders in Unity ranges from a bit tedious to outright impossible; creating post-processing effects in HDRP sits comfortably between those two extremes. The first step to writing any post effects in HDRP is to be absolutely, 100% sure that the pipeline you're using is HDRP. From experience, the best way to do that is to start a new HDRP project from Unity Hub, as it handles all the minutiae of instantiating an HDRP render asset for you.

Screen Shot 2021-11-23 at 2.40.09 PM.png

Creating a new HDRP post-processing effect consists of two distinct steps: creating both a C# post-process volume and a post-processing shader. Create a C# file by right-clicking, mousing over the create tab, again mousing over the rendering tab, and selecting C# Post Process Volume.

Screen Shot 2021-11-23 at 3.33.04 PM.png

Create the accompanying shader file by similarly right-clicking, hovering over create, further hovering over shader, mousing over HD Render Pipeline, and selecting Post Process. For the sake of ease, be sure to give both your C# and shader files the same name.