Monday, 24 September 2012

Thanks to Pixelante!

Cyan fog demo

So here we go:

/* Some constants for us */
private const FARPLANE:Number = 10000;
private const INVFARPLANE:Number = 1/FARPLANE;
 
/* Set up the fragment constant for a cyan fog color (fc0) */
context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT,
0, Vector.<Number>([0, INVFARPLANE, INVFARPLANE, 1]));
 
/* Set up vertex shader which will pass colour and depth to the fragment shader */
var vertexShaderAssembler:AGALMiniAssembler = new AGALMiniAssembler();
vertexShaderAssembler.assemble(Context3DProgramType.VERTEX,
"m44 vt0, va0, vc0 \n"+ //transform vertex x,y,z
"mov op, vt0 \n"+       //output vertex x,y,z
"mov v0, vt0.z \n"+     //move vertex z (depth) to fragment shader
"mov v1, va1"           //move vertex r,g,b to fragment shader
);
 
/* Set up a fragment shader */
var fragmentShaderAssembler:AGALMiniAssembler= new AGALMiniAssembler();
fragmentShaderAssembler.assemble(Context3DProgramType.FRAGMENT,
"mul ft0, fc0, v0 \n"+      //multiply fog r,g,b by vertex z (depth)
"add ft1, ft0, v1 \n"+      //add final fog r,g,b to vertex r,g,b
"mov oc, ft1"           //output color
);

That wasn't so bad!

No comments:

Post a Comment