8 Days Ago
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