{ parms { stageSort sortTrans } state { blend GL_ONE GL_ONE depthFunc GL_LEQUAL depthmask polygonOffset twosided } hlsl_vp { result.position.x = dot4( vertex.position, $mvpMatrixX ); result.position.y = dot4( vertex.position, $mvpMatrixY ); result.position.z = dot4( vertex.position, $mvpMatrixZ ); result.position.w = dot4( vertex.position, $mvpMatrixW ); result.texcoord0.x = dot4( vertex.texcoord0, $sMatrix ); result.texcoord0.y = dot4( vertex.texcoord0, $tMatrix ); result.texcoord0.zw = _float2( 0.0 ); result.color.xyz = saturate( swizzleColor( vertex.color ).xyz + _float3( 0.75 ) ); result.color.xyz *= $exposure.xyz; result.color.w = $color.w; } hlsl_fp { half2 tc = ComputeTransAtlasCoord( fragment.texcoord0.xy, $transAtlasScaleBias ); // Blend in edge fading and shadow contribution from vertex color result.color = tex2D( $transMap, tc ) * fragment.color; // FIXME: smoke system additive fading not currently set up properly //result.color *= fragment.color.w; } }