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

Godot 4.x中如何正确访问SubViewport的深度缓冲区?

解决SubViewport深度缓冲区访问问题

核心配置步骤

  • 先修正SubViewport的渲染目标设置:
    1. 打开SubViewport的Render Target > Enable Render Target开关
    2. 在Render Target > Texture Format中勾选Depth选项——这是SubViewport生成自身深度纹理的前提
  • 修改Shader的采样器声明:
    把原声明里的source_color替换为source_depth,因为source_color会默认绑定主视口的缓冲区,而source_depth才会关联当前节点所在视口的深度数据:
    uniform sampler2D depth_texture : source_depth, hint_depth_texture;
    
  • 确认节点层级:
    应用该Shader的网格必须是SubViewport的直接或间接子节点,确保渲染上下文属于这个SubViewport而非主视口

额外验证项

  • 检查SubViewport的Clear Mode,确保每次渲染都会正确清除深度缓冲区,避免残留旧的深度数据
  • 若使用Godot 4.x,确认Shader的render_mode没有开启会干扰深度采样的特殊模式

官方文档提到的"仅能读取当前视口的深度纹理",这里的"当前视口"指的是渲染Shader所在节点的视口,所以必须让SubViewport成为该网格的渲染上下文,主视口只是最终显示SubViewport纹理的容器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:48:16