[我正在尝试重写this着色器,但遇到了问题:
float backColor = dot (texture (iChannel0, direction).rgb, channel);
我会怎么做?在this教程之后,我应该能够在这里传递我的立方体纹理,但是我无法将头放在这个任务上。现在没有这条线,随着时间的推移,我会得到一些随机的颜色,所以我认为那是我所缺少的部分。我正在将SceneKit与SCNProgram一起使用。
假设您已经移植了着色器的相关部分,加载了一个立方体贴图,并将其绑定为着色器参数,则金属着色语言代码的等效行很简单:
float backColor = dot(texCube.sample(cubeSampler, direction).rgb, channel);
其中texCube
的类型为texturecube<float, access::sample>
,cubeSampler
的类型类似
constexpr sampler cubeSampler(coord::normalized, filter::linear, mip_filter::linear)