【发布时间】:2012-08-31 12:33:30
【问题描述】:
谁能告诉我这两个片段着色器有什么区别:
// 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"
只有第二行不同,我们将它与 alpha 相乘。 因此,第二个着色器(Node2D)允许您通过 setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, [1,1,1,1]); 调用传入主 alpha 值,该调用将导致使用该 alpha 绘制所有三角形。
1)谁能告诉我第二行发生了什么?
2) 上述内容在实践中的作用是覆盖每个三角形的单独 alpha 设置。我想要的是乘它自己的 alpha 与着色器的,这样最终的 alpha 值将是 = Triangle_alpha * Shader_alpha。
(因为现在我无法使用第二个着色器为特定三角形设置单独的 alpha 值。我想要的是能够分别为每个三角形设置一个 alpha 值,并为整个 drawTriangles 调用设置另一个)
【问题讨论】:
标签: actionscript-3 assembly fragment-shader stage3d