2017-09-09 14 views
0

を拡張するために、このように私のsurface.shader.fragmentファイル内の関数を使用することはできません:私は機能を削除する場合、期待どおりにすべての作業を掛けシェーダ修飾子はSceneKit

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

次のように動作するはずです:

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 SCNShadableなどSCNShadable.hヘッダファイルに示されています。

拡散色を変更する場合は、.surfaceエントリポイントを使用することもできます。

+0

地獄うん、ありがとう!私は#pragma bodyで試してみましたが、私のせいで、float time = u_timeを離れました。宣言は常に#pragma bodyの上ではなく上にあります。 – Franhu