You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity VR中Raymarching Compute Shader _DepthTexture未设置错误求助

解决Unity VR中SPH流体Raymarching Compute Shader的_DepthTexture未设置错误

错误核心原因

报错明确指出:Compute Shader的_DepthTexture属性在kernel 0中未被赋值,导致OnRenderImage方法执行失败,进而中断VR场景的渲染流程,出现启动卡Logo、Game窗口黑屏的问题。

分步修复方案

1. 开启相机深度纹理支持

在FluidRayMarching.cs的Start或Awake方法中,添加代码开启主相机的深度纹理输出,确保能获取到场景深度数据:

void Start()
{
    // 开启相机深度纹理模式
    Camera.main.depthTextureMode |= DepthTextureMode.Depth;
}

2. 在OnRenderImage中正确传递_DepthTexture

找到FluidRayMarching.cs中第90行附近的OnRenderImage方法,在调度Compute Shader之前,添加代码将深度纹理传递给Compute Shader:

void OnRenderImage(RenderTexture source, RenderTexture destination)
{
    // 获取Compute Shader的kernel索引
    int kernelIndex = computeShader.FindKernel("CSMain");
    
    // 关键:传递深度纹理给Compute Shader
    computeShader.SetTexture(kernelIndex, "_DepthTexture", source);
    
    // 此处添加其他参数的设置(如流体粒子数据、相机矩阵等)
    
    // 调度Compute Shader(根据你的分辨率调整线程组数量)
    int threadGroupsX = Mathf.CeilToInt(Screen.width / 8f);
    int threadGroupsY = Mathf.CeilToInt(Screen.height / 8f);
    computeShader.Dispatch(kernelIndex, threadGroupsX, threadGroupsY, 1);
    
    // 将处理后的结果渲染到目标纹理
    Graphics.Blit(source, destination);
}

注意:确保computeShader变量已在Inspector面板中正确绑定你的Raymarching.compute文件。

3. 验证Compute Shader中的纹理声明

打开Raymarching.compute,确认_DepthTexture的声明正确,且与脚本中传递的名称完全一致:

// 在Compute Shader的Properties区域添加
Texture2D<float> _DepthTexture;
SamplerState sampler_DepthTexture;

// 在CSMain kernel中使用示例
[numthreads(8,8,1)]
void CSMain (uint3 id : SV_DispatchThreadID)
{
    float depth = _DepthTexture.Sample(sampler_DepthTexture, float2(id.x / _ScreenWidth, id.y / _ScreenHeight)).r;
    // 后续光线步进逻辑
}

额外排查点

  • 检查Compute Shader的kernel名称是否与脚本中FindKernel的参数一致(比如脚本里用CSMain,Compute Shader里的kernel也要叫这个)
  • 确认VR场景的相机设置正确:已启用VR支持,相机的Clear Flags未设置为错误值(如Nothing)
  • 若仍有问题,可暂时关闭VR模式测试Compute Shader是否正常运行,排除VR环境的额外干扰

内容的提问来源于stack exchange,提问作者pa87901

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:50:54