Glowing Edges Shader
From GameStudio Wiki
this is the glow.fx file (credits go to matt_aufderheide):
/////////////////////////////////////////////////
//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=false;
alphaBlendEnable=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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=false;
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
};
}
pass p21 //this pass renders the model without the glow, so only the edgdes will glow..
{
texture[0]=<entSkin2>;
zWriteEnable=true;
alphaBlendEnable=false;
zenable=true;
Texture[0]=<entSkin1>;
ColorArg1[0]=Texture;
ColorOp[0]=Modulate;
ColorArg2[0]=Diffuse;
}
}
btw, this shader does not work with transparency, try the other glow shader for this.
[edit]
main script additions
material glowmodel
{
effect="glow.fx";
}
action anymodel{
my.material=glowmodel;
my.skill41 = float(0.3); // adjust the stength of the glow
}
the glow model needs two skins, the first is the diffuse map, the second can be very small (e.g. 16x16) and must be very dark, almost black.
