[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)结果如下:可以看到深度了

 

 

posted @ 2023-08-31 17:21  LOFU  阅读(575)  评论(0编辑  收藏  举报