DepthNormal G-Buffer Rendering Mode (#1766)
* DepthNormalPrepassLayer stub, DepthNormal shader class consumes from S_MODE_DEPTH
* DepthNormals mode, uses values directly instead of Material, attach it to ShadingModels
* Ignore and don't compile combo if it's not referenced by a mode or feature instead of erroring out, e.g. We want to reference DepthNormal.hlsl everywhere in Class.hlsl, but we want to only have combos for it if we're using a DepthNormal mode without complicating the codebase, this way when adding a new mode that references that combo, it's added to the shader without convoluting the source, argue with me if you think this is shit behavior
* Temp bind FindOrCreateRenderTarget and use managed rendertarget for depthnormalprepasslayer
* Should be continue rather than break, fix undefined identifier if S_MODE_DEPTH_NORMAL is not set
* Pass MSAA value from pipeline, make DepthNormals a dynamic combo instead of a mode, conditional
* Add Normals.hlsl, with fallback if no depthnormals are available, add Bindless::GetTexture2DMS
* Adjustments, Depth Prepass Depth Only under a convar, do depthnormals without size cull threshold
* GTAO uses Normals::Sample() instead of recalculating normals from depth
https://files.facepunch.com/sampavlovic/1b1711b1/sbox-dev_e5dHGELNmU.mp4
* Bind ClearFlags, this should probably be implicit
* Just use DepthNormalPrepassLayer, use depthnormal mode again
* Remove old no-normals depth prepass, keeps things simple, effects that we use will need to rely on depthnormals, doesn't add too much cost
* Fix typo on gtao
* Reconstruct Normals::Sample from depth if underlying texel doesn't use DepthNormal mode
https://files.facepunch.com/sampavlovic/1b2711b1/DdYOdR9WrI.png
* DepthNormals mode fallback if shader doesn't have it
* Pass screen size to managed texture we create for depthnormal gbuffer, dimensions must match the swapchain, which resized viewports don't match
* Apply offset when sampling Prepass Normals
https://files.facepunch.com/sampavlovic/1b0411b1/dfC5VELlYw.png
* Use Depth MODE instead of DepthNormals for DepthNormals
* Enable shadow fast pass properly, make it use depth_only shader
* update shaders with depthnormal
* Shader template uses S_MODE_DEPTH combo