[Unity URP] 深度图获取
在做原神渲染还原的时候一直想复刻等宽屏幕空间边缘光,但是获取的深度图一直是全黑的orz
其他可能的问题:
《Unity的URP项目中使用自定义shader导致材质消失的解决办法》-CSDN博客 注意也是要use Normal那个pass
后来发现是受到unity版本的影响 用的是unity 2021版
1)勾选depth texture
2)shader代码中
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl"
3)查看Packages/Universal RP/shader/Lit.shader
官方案例中获取深度的部分:(注意要复制depthnormal,depthonly不管用)
Pass { Name "DepthNormals" Tags{"LightMode" = "DepthNormals"} ZWrite On Cull[_Cull] HLSLPROGRAM #pragma exclude_renderers gles gles3 glcore #pragma target 4.5 #pragma vertex DepthNormalsVertex #pragma fragment DepthNormalsFragment // ------------------------------------- // Material Keywords #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local _PARALLAXMAP #pragma shader_feature_local _ _DETAIL_MULX2 _DETAIL_SCALED #pragma shader_feature_local_fragment _ALPHATEST_ON #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A //-------------------------------------- // GPU Instancing #pragma multi_compile_instancing #pragma multi_compile _ DOTS_INSTANCING_ON #include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl" #include "Packages/com.unity.render-pipelines.universal/Shaders/LitDepthNormalsPass.hlsl" ENDHLSL }
4)结果如下:可以看到深度了