首页 > 解决方案 > 我可以在一个着色器中使用 MainCamera Depth,它可以在 Unity3D 中的第二个摄像头上替换运行吗?

问题描述

我正在尝试使用 _CameraDepthTexture 在第二个摄像头的替换着色器中对主摄像头的深度进行采样。但这似乎不起作用,深度缓冲区始终为 1。替换着色器没有执行任何 zwrites。我的第二个相机渲染到渲染纹理。我为主摄像头启用了 depthTextureMode 并为辅助摄像头禁用了它。

在顶点着色器中,我使用 o.projPos = ComputeScreenPos(o.pos) 来计算屏幕空间纹理采样坐标。

片段着色器如下所示:

float depth = Linear01Depth (tex2Dproj(_CameraDepthTexture, 
UNITY_PROJ_COORD(i.projPos)).r);
half4 c;
c.r = depth;
c.g = depth;
c.b = depth;
c.a = 1;

return c;

我应该能够访问 MainCamera 的 DepthTexture 吗?

亲切的问候

弗洛里安

标签: c#unity3dshader

解决方案


推荐阅读