akoreman / Forward-Render-Pipeline

Custom forward rendering Unity SRP in order gain a better intuition for Unity's render pipelines. Shaders written in HLSL.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Custom shader pipeline using Unity3D SRP and HLSL

In order to gain more intuition for scripting render pipelines this project implements a custom forward render pipeline in Unity3D by using its scriptable render pipeline (SRP) and HLSL for the shaders. For some parts following the tutorial by CatLikeCoding.

Currently supports:

  • Unlit and Lit shaders
    • Opaque and transparant.
    • Texture sampling.
  • Illumination by multiple colored directional lights
    • BRDF controlled by metallic and smoothness parameters.
    • Casted shadows using light maps.
      • Support for cascaded light maps.
      • Support for varying light map resolution.
      • Clipped shadows for transparent objects.
    • Support for soft shadows using PCF.
    • Support for normal maps.
  • Global illumination
    • Support for sampling from the lightmaps generated by Unity for static objects.
    • Support for using light probes and LPPVs to approximate GI for dynamic objects.
    • Meta pass for colored GI.
  • Specular reflections
    • Support for reflections from the skybox.
    • Support for reflections from unity reflection probes.
    • Reflection sharpness affected by surface rougness.
  • Support for emmisive surfaces.
  • Support for point lights + shadows.
  • Support for spot lights (without shadows).

Screenshots:

Cascaded shadow maps

Cascaded shadow maps culling spheres visualisation

Effect of varying shadow map sizes on shadow details

Colored global illumination

Reflections from skybox and reflection probes

Illumination by point lights

Illumination by spot lights

Shadow from spot lights

About

Custom forward rendering Unity SRP in order gain a better intuition for Unity's render pipelines. Shaders written in HLSL.


Languages

Language:HLSL 49.1%Language:C# 44.0%Language:ShaderLab 6.9%