SceneKit - 在着色器修改器中访问目标颜色以进行混合

9
有没有一种方法可以在Metal着色器修改器中访问最后一个片段颜色(目标颜色),类似于中的?我的目标是使用着色器修改器执行自定义混合(在我的情况下,SceneKit的不足够)。目前,我正在使用3个传递的来实现这一点(渲染目标,渲染源,合并),这对我来说似乎是一个重大的过度杀伤+很难有几个混合组而不引入新的传递。由于多种原因,似乎不是一个选择(我正在使用PBR,细分/曲面细分;我想现在还是坚持使用技术)。我已经尝试使用<#extension GL_EXT_shader_framebuffer_fetch:require>,如this answer所建议的那样,但即使对于GLSL着色器修改器也无法正常工作(我正在使用和)。
我也偶然发现了这个精美的Gist,其中包含了SceneKit的默认Metal着色器实现,但似乎没有进行混合。这让我想知道是否这就是我找不到任何目标颜色参考的原因:混合发生在其他地方。
除了SCNTechnique丑陋的方法之外,SCNProgram是唯一的选择吗?
P.S: 我在Metal Shading Language Specification的第4.8章“可编程混合”中找到了关于Metalgl_LastFragData的唯一提及,如果我能在着色器修改器中以某种方式访问[[color(0)]]或类似的东西,那将非常有帮助(即使可能性很小)。

我也很好奇。 你有解决这个问题吗? - zakdances
一样啊。这个有什么消息吗? - Roi Mulia
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接