Custom Rendering Pipeline


Engine: Unity 2017.1

My Role: Graphics Programmer

Team Size: None

Source Code: Click Here

Description

In the Unity Engine I created a completely custom rendering pipeline that I originally used for the Prototype of Orune. The custom pipeline dealt with all the basic and complex steps into rendering a material. The purpose of it was to render a vibrant and eye catching art style for the project Orune.

Using Shader Lab along CG I had to make the shader managing the pipeline from scratch using the Vertex, Geometry and Pixel Shaders. It dealt with various tasks such as basic texture sampling, Translucent materials, correct blending, shadow calculations and normal mapping calculations. I did this project before Unity released their customizable pipeline tools which would have made it easier, I instead had to code it from scratch. The final result had some missing rendering features including shadows on translucent objects and correct lighting on two sided materials. I created this pipeline to make our game look unique since Unity games can look dull but the game I was using it for sadly needed more graphics requirements so we switched the system to a more physically based version. The new system we used is the Custom Shading Model Project.

The source code above is the shader files I used for my pipeline, feel free to take a look.

Project Technical Aspects

Full Shader from Scratch
Coding a complete shader that deals with all the technical tasks and calculations for rendering and blending materials together. The shader needs further improvements because it has problems and some missing features but it taught me graphics programming at a very low level and is the project that started my interest in this field of programming.
Complex Rendering Calculations
Used multiple calculations for the complex aspects of rendering such as the calculations for shadows, normal mapping and point light attenuation. I am aware that many functions in Shader Lab can make this easier but because I needed a very customizable pipeline, I had to code most of it myself.