godot - Godot 中的 HUD 后处理

标签 godot post-processing hud godot-shader-language

我在 Godot 中有一个项目可以在敌人上方渲染广告牌四边形。四边形(网格实例)是敌人节点的子节点。我只想将四边形渲染到视口(viewport)以进行后处理,但四边形需要在屏幕上具有与敌人相同的位置(如目标十字线)。 如何将着色器效果仅应用于广告牌而不应用于场景的其余部分?

最佳答案

Camera 有一个 cull_mask 属性,可以让您过滤它将看到的图层。而 VisualInstance(例如 MeshInstance)有一个 layers 属性,可以让你指定它们属于哪个层(默认情况下它们都属于第一层)。

您可以在项目设置 -> 常规 -> 图层名称 -> 3d 渲染中配置图层名称。 不要将它们与 3d 物理混淆。

因此,您可以为您想要的那些四边形 MeshInstance 提供不同的层,然后使用新的 Camera 设置一个新的 Viewport 作为子层(确保它是 current),带有一个 cull_mask,它只会渲染该层。这样只有那些 MeshInstance 才会在那个 Viewport 上呈现。

您可能希望保持 Camera 的属性与主 Viewport 上的 Camera 同步(不仅是它的global_transform,还有 fov 或您可能更改的任何其他属性)。您可以通过将其属性复制到附加到新 Viewport 内的 Camera 的脚本的 _process 上来存档。/p>

关于godot - Godot 中的 HUD 后处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72416570/

相关文章:

objective-c - 隐藏和显示 HUD 窗口 - cocoa ?

godot - 我如何检测运动学体 2d 和区域 2d 的碰撞

html - 如何对 HTML 进行后处理以将 "target blank"添加到 Ruby 中的所有链接?

java - 如何从 mac_widgets java api 添加一个小部件到 HudWindow

opengl - 这个纹理映射有什么问题?

godot - 如何设置退出 Godot 应用程序的 esc 键?

godot - 如何查看事件中鼠标是否按下或屏幕被触摸?

java - 发送响应后Servlet处理数据

c++ - 帧缓冲区在移动时切掉模型的一部分