Cubic Enviroment Shading Shader

From GameStudio Wiki

Jump to: navigation, search

The alpha channel of the model texture specifies how reflective the texture is. entities using this effect should have my.flare=off; and my.transparent=off; so that the engine won't unnecessarily depth sort them because of the alpha channel!


bmap bcube=<cube+6.tga>;

function mtl_envmap_view()
{
	mat_set(mtl.matrix,matViewInv);
 	mtl.matrix41=0;
 	mtl.matrix42=0;
 	mtl.matrix43=0;
}

function mtl_envmap_init()
{
 	//...maybe you should copy the mat_model properties here...
 	bmap_to_cubemap(mtl.skin1);
 	mtl.event=mtl_envmap_view;
 	mtl.enable_view=on;
}

material mtl_envmap
{
 	skin1=bcube;
 	event=mtl_envmap_init;

 	effect=
	 "
 		 texture entSkin1;
 		texture mtlSkin1;
 		matrix matMtl;
 		technique envmap
 		{
 			pass p0
 			{
 				texture[0]=<entSkin1>;
 				texture[1]=<mtlSkin1>;  

 				zWriteEnable=true;
 				alphaBlendEnable=false; 

 				colorArg1[0]=Texture;
 				colorOp[0]=Modulate2x;
 				colorArg2[0]=Diffuse;

 				colorArg1[1]=Texture;
 				colorOp[1]=blendCurrentAlpha;
 				addressU[1]=Clamp;
 				addressV[1]=Clamp;
 				texCoordIndex[1]=cameraSpaceReflectionVector;
 				textureTransformFlags[1]=Count3;
 				textureTransform[1]=<matMtl>; // transform camera space back to world space
 			}
 		}
 	";
}

instead of using an alphachannel you could just use the texturefactor as blending value. you would have to replace:

colorOp[1]=blendCurrentAlpha;

with:

textureFactor=0x40FFFFFF; // -> C0=75%, 80=50%, 40=25%
colorOp[1]=blendFactorAlpha;
Personal tools