Glowing Edges Shader

From GameStudio Wiki

Jump to: navigation, search

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.


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.

Personal tools