//------------------------------------ float alpha; texture sceneRendering; texture objTexture; texture Bump; //NormalMap float4x4 g_mWorldViewProjection; // World View Projection Matrix float4x4 g_mWorldViewIT; float4x4 g_mRot; float4 lightDir; //LightDirection //float4 eyeDir; //EyeDirection float halfVector; //float4 sceneAmbient; float4 ambient; float4 diffuse; float4 specular; float power; //------------------------------------ struct vertexInput { float3 position : POSITION; float4 texCoord : TEXCOORD0; }; struct vertexOutput { float4 HPosition : POSITION; float4 ColorTextureCoord : TEXCOORD0; }; struct vertexObjInput { float3 position : POSITION; float4 texCoord : TEXCOORD0; float3 normal : NORMAL; }; struct vertexObjInputNM { float3 position : POSITION; float4 texCoord : TEXCOORD0; }; struct vertexObjOutput { float4 HPosition : POSITION; float4 ColorTextureCoord : TEXCOORD0; float3 normal : NORMAL; }; struct vertexObjOutputNM { float4 HPosition : POSITION; float4 ColorTextureCoord : TEXCOORD0; }; struct pixelOutput { float4 color : COLOR; }; //------------------------------------ #define SAMPLER_LINEAR(g_samplerMap, g_txMap); \ sampler2D g_samplerMap = sampler_state { \ Texture = ; \ MinFilter = Linear; \ MagFilter = Linear; \ MipFilter = Linear; \ AddressU = BORDER; \ AddressV = BORDER; \ }; #define SAMPLER_POINT(g_samplerMap, g_txMap); \ sampler2D g_samplerMap = sampler_state { \ Texture = ; \ MinFilter = Point; \ MagFilter = Point; \ MipFilter = Point; \ AddressU = BORDER; \ AddressV = BORDER; \ }; SAMPLER_POINT(samplerSceneRendering, sceneRendering); SAMPLER_LINEAR(samplerTexture, objTexture); SAMPLER_LINEAR(samplerBump, Bump); //------------------------------------ vertexOutput fadeVS(vertexInput IN) { vertexOutput OUT; OUT.HPosition = float4(IN.position,1); OUT.ColorTextureCoord = IN.texCoord; return OUT; } //------------------------------------ pixelOutput fadePS(vertexOutput IN) { pixelOutput OUT; float4 retColor = tex2D(samplerSceneRendering, IN.ColorTextureCoord.xy); retColor.a = alpha; OUT.color = retColor; return OUT; } //------------------------------------ vertexObjOutput fadeObjectVS(vertexObjInput IN) { vertexObjOutput OUT; OUT.HPosition = mul(float4(IN.position,1), g_mWorldViewProjection); OUT.ColorTextureCoord = IN.texCoord; OUT.normal = IN.normal;//normalize OUT.normal = mul(g_mWorldViewIT, float4(IN.normal,1)).xyz; //OUT.LightDir.xyz = mul(g_mWorldViewIT,lightDir); //OUT.LightDir.w = 1; return OUT; } //------------------------------------ vertexObjOutputNM fadeObjectNMVS(vertexObjInputNM IN) { vertexObjOutputNM OUT; OUT.HPosition = mul(float4(IN.position,1), g_mWorldViewProjection); OUT.ColorTextureCoord = IN.texCoord; // Transform to tangent space and output // half vector and light direction //float3x3 TangentSpace; //TangentSpace[0] = IN.inTangent; //TangentSpace[1] = IN.inBinormal; //TangentSpace[2] = IN.normal; //OUT.HalfVect = 0;//mul(TangentSpace,normalize(lightDir.xyz+eyeDir)); //Out.LightDir = float4(mul(TangentSpace,LightDir.xyz),LightDir.w); return OUT; } //------------------------------------ pixelOutput fadeObjectPS(vertexObjOutput IN) { pixelOutput OUT; float3 normal = normalize(IN.normal); float4 retColor = tex2D(samplerTexture, IN.ColorTextureCoord.xy); //Specular float3 specI = specular*pow( clamp(0, 1, dot(normal, halfVector)), power); //Diffuse float3 diffI = diffuse*clamp(0,1,dot(normal, lightDir)); //Ambient = ambient retColor.rgb = retColor.rgb*(diffI + specI + ambient.xyz); retColor.a *= alpha; //Do Lightning Stuff OUT.color = retColor; //OUT.color = retColor; return OUT; } pixelOutput fadeObjectNMPS(vertexObjOutputNM IN) { pixelOutput OUT; float3 normal = tex2D(samplerBump,IN.ColorTextureCoord) * 2 - 1; float4 retColor = tex2D(samplerTexture, IN.ColorTextureCoord.xy); //Specular float3 specI = specular*pow( clamp(0, 1, dot(normal, halfVector)), power); //Diffuse float3 diffI = diffuse*clamp(0,1,dot(normal, lightDir)); //Ambient = ambient retColor.rgb = retColor.rgb*(diffI + specI + ambient.xyz); retColor.a *= alpha; //Do Lightning Stuff OUT.color = retColor; //OUT.color = retColor; return OUT; } // // Effect // #define Technique(name); \ technique name \ { \ pass p0 \ { \ VertexShader = compile vs_3_0 name##VS(); \ PixelShader = compile ps_3_0 name##PS(); \ } \ } Technique( fade ); Technique( fadeObject ); Technique( fadeObjectNM );