gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:05:18 25 4
gpt4 key购买 nike

有没有办法在Metal shader修改器中访问最后一个片段颜色(目标颜色),类似于gl_LastFragData中的GLES

我的目标是使用着色器修改器执行自定义混合(在我的情况下,SceneKit的SCNBlendMode不足)。目前,我正在使用SCNTechnique进行3次传递(渲染目标,呈现源,合并),以实现这一目标,这对我来说似乎是一个主要的矫kill过正+在不引入新传递的情况下,很难有多个混合组。

出于多种原因,SCNProgram似乎不是一个选项(我使用的是PBR,分割/分割;我想现在我宁愿坚持使用技术)。

我已经尝试按照this answer中的建议使用#extension GL_EXT_shader_framebuffer_fetch : require,但是即使对于GLSL着色器修改器也不起作用(我正在使用Xcode 9.0iOS 11)。

我还偶然发现了具有SceneKit的默认 Metal 着色器实现的this wonderful gist,但似乎没有在其中执行混合。这让我想知道这是否就是为什么我找不到任何目标颜色引用的原因:混合发生在其他地方。

除了SCNProgram暴行之外,SCNTechnique是唯一的方法吗?

附言:
我在gl_LastFragData上下文中唯一提到的Metal是在Metal Shading Language Specification4.8 Programmable Blending一章中,如果我可以某种方式访问​​[[color(0)]]或着色器修改器中的类似内容(如果可能),这将很有帮助。

最佳答案

我只是想检查一下您是否没有忽略片段入口点?

在文档中它说:“在执行所有其他着色之后,使用此入口点来更改片段的颜色。”

我不确定访问“最后一个片段颜色”是否正是您的意思,但认为可能值得一提。

https://developer.apple.com/documentation/scenekit/scnshadermodifierentrypoint/1523342-fragment

关于SceneKit –在着色器修改器中访问目标颜色以进行混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46795574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com