如何解决从深度缓冲区读取的 SCN 程序
我正在研究 Scenekit 中的一些高级渲染,以及 SCNTechnique
和 SCNProgram
的用途。
我想像这样实现多通道渲染:
- 第一;使用内置的 PBR 着色器渲染整个场景,
- 第二;使用
SCNProgram
渲染单个节点,该节点访问第一遍的颜色和深度输出。
我知道我可以使用 SCNTechnique
执行以下操作:
...
<key>passes</key>
<dict>
<key>pass_scene</key>
<dict>
<key>draw</key>
<string>DRAW_SCENE</string>
<key>excludeCategoryMask</key>
<string>The bit mask of the node to exclude</string>
<key>outputs</key>
<dict>
<key>color</key>
<string>COLOR</string>
<key>depth</key>
<string>DEPTH</string>
</dict>
</dict>
<key>pass_object</key>
<dict>
<key>draw</key>
<string>DRAW_SCENE</string>
<key>includeCategoryMask</key>
<string>The bit mask of the node to exclude</string>
<key>inputs</key>
<dict>
<key>color</key>
<string>COLOR</string>
<key>depth</key>
<string>DEPTH</string>
</dict>
<key>outputs</key>
<dict>
<key>color</key>
<string>COLOR</string>
</dict>
<key>MetalVertexShader</key>
<string>myCustomVertShader</string>
<key>MetalFragmentShader</key>
<string> myCustomFragShader </string>
</dict>
</dict>
<key>sequence</key>
<array>
<string>pass_scene</string>
<string>pass_object</string>
</array>
...
但我想对对象渲染使用 SCNProgram
,而不是在 MetalVertexShader
中指定 MetalFragmentShader
和 SCNTechnique
。
我不知道如何将颜色和深度缓冲区从 SCNTechnique
的第一遍传递到 SCNProgram
以进行第二遍。
有谁知道怎么解决这个问题?文档很难拼凑,也很难调试问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。