着色器修改器以扩展SceneKit

时间:2017-09-09 13:32:53

标签: glsl shader scenekit

是不是可以在我的surface.shader.fragment文件中使用这样的函数:

float time = u_time;

float multiply(float n) {
    return n*2.0;
}; 
vec3 color = vec3(1.0,0.0,0.0);
_surface.diffuse = vec4( color, 1.0 );

如果我删除该函数,则所有内容都按预期工作。 SCNShadable doc。

的代码片段中有一个自定义全局函数

1 个答案:

答案 0 :(得分:1)

以下内容应该有效:

float multiply(float n) {
    return n*2.0;
}

#pragma body
float time = u_time;
vec3 color = vec3(1.0,0.0,0.0);
_surface.diffuse = vec4( color, 1.0 );

#pragma body指令在此非常重要,并在documentation for SCNShadableSCNShadable.h标题文件中进行了说明。

如果要更改漫反射颜色,还需要使用.surface入口点。