Glow Shader With Alpha Support
From GameStudio Wiki
the shader with alpha support and full model glow:
/////////////////////////////////////////////////
//multipass shader for volumetric glow for models
/////////////////////////////////////////////////
texture entSkin1; //model skin
texture entSkin2;//entskin2 is the glow map.. make it a very dark solid color
matrix matWorldViewProj;
matrix matWorld;
matrix matWorldView;
vector vecSkill1;
vector vecSkill41;
vector vecFog;
vector vecSunDir;
technique glow
{
pass p0
{
texture[0]=<entSkin1>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>; // shell_distance, 0, fur_u_scale, fur_v_scale
vertexShaderConstant[17]={0.0,0.0,0.0,0.0}; // shell_number
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>; // first_shell_brightness, brightness_increment, 0, 0
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x // shell distance * shell number
mul r1,r1,v3 // scale normal
add r0.xyz,r0.xyz,r1.xyz // shell offset (vertex position + scaled normal}
m4x4 oPos,r0,c0 // transform position to clip space
mov oT0,v7 // output uvs
mov r1.w,c20.w // r1.w=1
dp4 r0,v0,c10 // distance to camera position
add r0,r0,-c20.x // distance-fog_start
mad r0.x,-r0.x,c20.z,r1.w // 1-(distance-fog_start}*(1/(fog_end-fog_start}}
max oFog,r0.x,c95.w // clamp with custom max value
};
pixelShader=
asm
{
ps.1.1
tex t0 // sample colormap
mov r0,t0
};
}
//-----------------------------------------------------------------------------
pass p1
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
srcblend=srccolor;
destblend=one;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={1.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p2
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={2.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p3
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={3.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p4
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={4.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p5
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={5.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p6
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={6.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p7
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={7.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p8
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={8.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p9
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={9.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p10
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={10.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p11
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={11.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p12
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={12.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p13
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={13.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p14
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={14.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p15
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={15.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p16
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={16.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p17
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={17.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p18
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={18.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p19
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={19.0,0.0,0.0,0.0};
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
pass p20
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=true;
vertexShaderConstant[0]=<matWorldViewProj>;
vertexShaderConstant[4]=<matWorld>;
vertexShaderConstant[8]=<matWorldView>;
vertexShaderConstant[16]=<vecSkill41>;
vertexShaderConstant[17]={1.0,0.0,0.0,0.0}; // Changed this to 1
vertexShaderConstant[19]=<vecSunDir>;
vertexShaderConstant[20]=<vecFog>;
vertexShaderConstant[94]=<vecSkill1>;
vertexShaderConstant[95]={0.5,1.0,2.0,0.0};
vertexShader =
asm
{
vs.1.1
dcl_position v0
dcl_normal v3
dcl_texcoord1 v7 //color uv
mov r0,v0
mov r1,c16
mul r1,r1.x,c17.x
mul r1,r1,v3
add r0.xyz,r0.xyz,r1.xyz
m4x4 oPos,r0,c0
mov oT0,v7
mov r1.w,c20.w
dp4 r0,v0,c10
add r0,r0,-c20.x
mad r0.x,-r0.x,c20.z,r1.w
max oFog,r0.x,c95.w
};
pixelShader=
asm
{
ps.1.1
tex t0
mov r0,t0
};
}
}
the code for your main script:
material glowmodel
{
effect="glow.fx";
}
action anymodel{
my.material=glowmodel;
my.skill41 = float(0.3); // adjust the stength of the glow
my.bright=on; // improves a lot
my.nofog=on; // try "off", cool as well
}
you need to know: the glow model needs to have two tga skins of the same size, with an alpha channel. the first is the diffuse, the second is the glow map. make your glow map really dark and the alpha channel as well, otherwise, the glow will be much too hard and prominent.
