Difference between revisions of "TEST-STRCMP4CODES"
| Line 1: | Line 1: | ||
| − | + | shaderProgram -target pixelProgram -method compile -version 2_0 | |
| + | shaderSource | ||
| + | sampler reflect; | ||
| + | sampler bump; | ||
| + | struct cInputPixel | ||
| + | { | ||
| + | float4 sPos : TEXCOORD0; | ||
| + | float2 Wave0 : TEXCOORD1; | ||
| + | float2 Wave1 : TEXCOORD2; | ||
| + | float2 Wave2 : TEXCOORD3; | ||
| + | float2 Wave3 : TEXCOORD4; | ||
| + | float3 Eye : TEXCOORD5; | ||
| + | float4 specular : COLOR0; | ||
| + | float4 colorTint : COLOR1; | ||
| + | }; | ||
| + | float Fresnel(float NdotL, float fresnelBias, float fresnelPow, float facing) | ||
| + | { | ||
| + | return max(fresnelBias + (1.0f - fresnelBias)*pow(facing, fresnelPow), 0.0); | ||
| + | } | ||
| + | float4 PixelMain(cInputPixel pi) : COLOR | ||
| + | { | ||
| + | float3 vEye = normalize(pi.Eye); | ||
| + | // Get bump layers | ||
| + | float3 vBumpTexA = tex2D(bump, pi.Wave0.xy).xyz; | ||
| + | float3 vBumpTexB = tex2D(bump, pi.Wave1.xy).xyz; | ||
| + | float3 vBumpTexC = tex2D(bump, pi.Wave2.xy).xyz; | ||
| + | float3 vBumpTexD = tex2D(bump, pi.Wave3.xy).xyz; | ||
| + | // Average bump layers | ||
| + | float3 vBumpTex=normalize(2.0 * (vBumpTexA.xyz + vBumpTexB.xyz + vBumpTexC.xyz + vBumpTexD.xyz)-4.0); | ||
| + | // Apply individual bump scale for refraction and reflection | ||
| + | float3 vReflBump = vBumpTex.xyz ; | ||
| + | float4 vReflection = tex2Dproj(reflect, pi.sPos + float4(vReflBump.xy, 0.0f, 0.0f));//*0.001 + float4(2.0*vBumpTexD-1.0f.xxx, 1); | ||
| + | // Compute Fresnel term | ||
| + | float NdotL = max(dot(vEye, vReflBump), 0); | ||
| + | float facing = (1.0 - NdotL); | ||
| + | float fresnel = Fresnel(NdotL, 0.1, 0.5, facing); | ||
| + | vReflection.a = fresnel * 0.5; | ||
| + | return saturate(vReflection + pi.colorTint); | ||
| + | } | ||
| + | endShaderSource | ||
| + | end | ||
| − | + | sampler reflect | |
| − | + | texture "OceanReflection" | |
| − | + | textureAddressing clamp clamp | |
| − | + | end | |
| − | + | sampler bump | |
| − | + | texture "poolShape-body-bump" | |
| − | + | textureAddressing tile tile | |
| − | + | end | |
| − | + | end # end pass | |
| − | + | end | |
| − | + | enddef | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
Revision as of 11:10, 7 September 2007
shaderProgram -target pixelProgram -method compile -version 2_0 shaderSource sampler reflect; sampler bump; struct cInputPixel { float4 sPos : TEXCOORD0; float2 Wave0 : TEXCOORD1; float2 Wave1 : TEXCOORD2; float2 Wave2 : TEXCOORD3; float2 Wave3 : TEXCOORD4; float3 Eye : TEXCOORD5; float4 specular : COLOR0; float4 colorTint : COLOR1; }; float Fresnel(float NdotL, float fresnelBias, float fresnelPow, float facing) { return max(fresnelBias + (1.0f - fresnelBias)*pow(facing, fresnelPow), 0.0); } float4 PixelMain(cInputPixel pi) : COLOR { float3 vEye = normalize(pi.Eye); // Get bump layers float3 vBumpTexA = tex2D(bump, pi.Wave0.xy).xyz; float3 vBumpTexB = tex2D(bump, pi.Wave1.xy).xyz; float3 vBumpTexC = tex2D(bump, pi.Wave2.xy).xyz; float3 vBumpTexD = tex2D(bump, pi.Wave3.xy).xyz; // Average bump layers float3 vBumpTex=normalize(2.0 * (vBumpTexA.xyz + vBumpTexB.xyz + vBumpTexC.xyz + vBumpTexD.xyz)-4.0); // Apply individual bump scale for refraction and reflection float3 vReflBump = vBumpTex.xyz ; float4 vReflection = tex2Dproj(reflect, pi.sPos + float4(vReflBump.xy, 0.0f, 0.0f));//*0.001 + float4(2.0*vBumpTexD-1.0f.xxx, 1); // Compute Fresnel term float NdotL = max(dot(vEye, vReflBump), 0); float facing = (1.0 - NdotL); float fresnel = Fresnel(NdotL, 0.1, 0.5, facing); vReflection.a = fresnel * 0.5; return saturate(vReflection + pi.colorTint); } endShaderSource end
sampler reflect texture "OceanReflection" textureAddressing clamp clamp end sampler bump texture "poolShape-body-bump" textureAddressing tile tile end end # end pass end enddef