シェーダモディファイアをMetalで使用しようとしています。私はちょうど_output.color.rgb = (u_color_transformation * _output.color).rgb
を持っている場合は、物事はOKです。..SCN shaderモディファイアをシェーダに一貫して渡します。
// color changes
#pragma arguments
float4x4 u_color_transformation;
#pragma body
_output.color.rgb = vec3(1.0) - (u_color_transformation * _output.color).rgb;
これはノーログで、紫色のテクスチャを出力します。私はこれまでのところ、私のフラグメント修飾子がある...制服を宣言するために把握することはできません。私はdocに従っていると思いますが、おそらくそうではありません!
均一にして設定されている:どうやら
、SceneKitシェーダ修飾子は、GLSLコードを使用し、それを変換するの世話をする:
material.shaderModifiers =
[ SCNShaderModifierEntryPoint.fragment: theShaderAbove ]
material.setValue(NSValue(mat4: GLKMatrix4Identity), forKey: "u_color_transformation")
このすべては、OpenGL
アップデートと罰金働いていました金属。だから私はにシェーダを変更:出力はu_color_transformation
がシェーダに渡されていないことを示唆している、(少なくともそれがコンパイルされていることを示唆している)今白で、シェーダでヌル行列に解決され
// color changes
#pragma arguments
uniform mat4 u_color_transformation;
#pragma body
_output.color.rgb = vec3(1.0) - (u_color_transformation * _output.color).rgb;
ました一度反転すると、白くなる黒を与える。