I’m trying to up my shader game, and I was inspired by this breakdown by Naughty Dog on their eye system: https://youtu.be/tvBIqPHaExQ?t=1700
They use a combination of forwards and deferred passes - for example, their solution to eye shadowing involves tracing rays in screenspace against the depth buffer, but tracing them from the sclera geometry, since the cornea is left to be rendered later in a deferred transparency pass.
Again here: https://youtu.be/tvBIqPHaExQ?t=1936 they smooth out the tearduct and the meniscus by blurring the base normal buffer with a secondary piece of geometry.
I’ve worked with the GLSL shader and ShaderFX, but I have no idea how to set up arbitrary passes like this using them, or if it’s even possible. Even ignoring effects like these they seem limited and closed-off, in terms of accessing mesh and lighting information from the larger scene, interacting with other passes etc.
If I’m looking for proper freedom in setting up a graph of passes like this, or reserving buffers for particles, dithering samples to the same buffer across frames etc - what is the best way to do it? Is it possible using a single HwShaderNode, or would it require actually reimplementing the entire viewport system, as Wisp or MNPRX do?
Bonus question: are there any other programs that come to mind which give this kind of freedom? I want to explore these techniques however I can, I just have no idea where to start.