これら 2 つのフラグメント シェーダーの違いを教えてください。
// Adobe's GPUSprite Fragment Shader
"tex ft0, v0, fs0 <2d,clamp,linear,mipnearest> \n" +
"mul ft0, ft0, v0.zzzz\n" + // multiply with alpha??
"mov oc, ft0 \n"
// Node2D Fragment Shader
"tex ft0, v0, fs0 <2d,clamp,linear,mipnearest> \n" +
"mul ft0, ft0, fc0\n" + // this line is different
"mov oc, ft0 \n"
アルファを掛ける 2 行目だけが異なります。その結果、2 番目のシェーダー (Node2D) では、setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, [1,1,1,1]);を介してマスター アルファ値を渡すことができます。これにより、すべての三角形がそのアルファで描画されます。
1)誰かがその 2 行目で何が起こっているか教えてもらえますか?
2)上記が実際に行うことは、各三角形の個々のアルファ設定をオーバーライドすることです。代わりに、独自のアルファをシェーダーのアルファと 乗算して、最終的なアルファ値が= Triangle_alpha * Shader_alphaになるようにします。
(現在、2番目のシェーダーで特定の三角形に個別のアルファ値を設定することはできません。私が望むのは、各三角形に個別にアルファ値を設定し、 drawTriangles 呼び出し全体にも別のアルファ値を設定できるようにすることです)