是否有访问最后一个片段的颜色(目标色)的金属着色修饰类似的方式gl_LastFragData在GLES?
我的目标是使用着色器修改器执行自定义混合(SCNBlendMode在我的情况下,SceneKit 不够用).目前我正在使用SCNTechnique3次传球(渲染目的地,渲染源,组合)来实现这一点,这对我来说似乎是一个重大的矫枉过正+在没有引入新传球的情况下很难有几个混合组.
SCNProgram似乎不是一个选项有几个原因(我正在使用PBR,曲面细分/细分;我宁愿坚持使用技术,我猜).
我已尝试#extension GL_EXT_shader_framebuffer_fetch : require按照此答案中的建议使用,但即使对于GLSL着色器修饰符(我正在使用Xcode 9.0和iOS 11)它也不起作用.
我也偶然发现了这个具有SceneKit默认金属着色器实现的精彩要点,但似乎没有在那里执行混合.这让我想知道这是否是我找不到目的地颜色参考的原因:混合发生在其他地方.
是SCNProgram被除的唯一途径SCNTechnique暴行?
PS:gl_LastFragData在Metal我发现的上下文中
唯一提到的是金属着色语言规范的章节4.8 Programmable Blending,如果我可以以某种方式访问着色器修饰符中的类似内容(如果可能的话),将会有所帮助.[[color(0)]]
我只是想检查一下您是否忽略了片段入口点?
在文档中它说:“在执行所有其他着色后,使用此入口点更改片段的颜色。”
我不确定这是否正是您访问“最后片段颜色”的意思,但认为这可能值得一提。
https://developer.apple.com/documentation/scenekit/scnshadermodifierentrypoint/1523342-fragment
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |