如何在 ARKit 中打印出着色器修改器输出?
Posted
技术标签:
【中文标题】如何在 ARKit 中打印出着色器修改器输出?【英文标题】:How can I print out shader modifier output in ARKit? 【发布时间】:2021-10-27 07:27:49 【问题描述】:我正在使用 SCNMaterial 并使用表面着色器修改器设置它的diffuse.contents。 我想记录一些正在输入着色器的颜色值,但我找不到这样做。 有没有办法在着色器修改器执行后读取和打印_surface.diffuse.rgba?
我们在 SCNPlane 上显示一个带有绿色背景的视频,我们希望它知道该绿色的确切渲染颜色。它被创建为 (0,220,0,1) 但不知何故它被着色器修改器读取为不同的绿色,我们无法将其屏蔽掉,因为我们可以屏蔽掉全绿色 (0,255,0,1) bg 视频。
【问题讨论】:
【参考方案1】:Xcode 有一个 GPU 调试器来调查特定帧在 GPU 上发生的情况,请参阅 https://developer.apple.com/documentation/metal/shader_authoring/developing_and_debugging_metal_shaders
至于为什么颜色看起来不一样,可能是色彩空间问题。当您向 SceneKit 着色器修改器提供颜色组件时,将它们置于正确的颜色空间中很重要。见https://***.com/a/44045637/2997825
【讨论】:
感谢您的建议。我无法打印出这些值,但我发现 SceneKit 对着色器使用了预乘 alpha。这有助于我过滤掉正确的颜色值。 ***.com/a/51709176/4156490以上是关于如何在 ARKit 中打印出着色器修改器输出?的主要内容,如果未能解决你的问题,请参考以下文章