Мне удалось получить альфа-работу, но я хочу изменить альфа только на одной текстуре. В настоящее время он работает только с обоими. Я установил тест глубины и смешайте факторы:AGAL/Stage3D: перекрытие 2 текстур внутри одного шейдера
context3D.setDepthTest(false, Context3DCompareMode.LESS);
context3D.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA);
Я все еще не выяснили, что именно источник и destionation, любое уточнение было бы хорошо. вершинных данных содержит
[x, y, z, u, v, 0|1]
Набор регистров вершин фрагмент
context3D.setVertexBufferAt(0, m_vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3);
context3D.setVertexBufferAt(1, m_vertexBuffer, 3, Context3DVertexBufferFormat.FLOAT_2);
context3D.setVertexBufferAt(2, m_vertexBuffer, 5, Context3DVertexBufferFormat.FLOAT_1);
Установить постоянную
context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, Vector.<Number>([textureMul, 0, 0, 0]));
вершинный шейдер
m44 op, va0, vc0
mov v0, va1
mov v1, va2
Fragm лор шейдер
tex ft0, v0, fs0 <2d,clamp,linear>
sub ft0.w, ft0.w, fc0.x
add ft0.w, ft0.w, v1
mov oc, ft0
Где fc0.x это число между 0 и 1. И v1 либо 0, либо 1.