[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不管用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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 @   LOFU  阅读(641)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示