Difference between revisions of "TEST-STRCMP4CODES"
From SimsWiki
(nei4) |
(pool5) |
||
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; | |
− | + | }; | |
− | + | ||
− | + | 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 * float3(0.1, 0.1, 1.0); | |
− | + | ||
− | + | 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.2, 5.0, facing); | |
− | + | ||
− | + | vReflection.a = fresnel; | |
− | + | return saturate(vReflection + float4(0.0, 0.25, 0.5, 0.0) + pi.specular); | |
− | + | } | |
− | + | endShaderSource | |
− | + | end | |
+ | |||
+ | sampler reflect | ||
+ | texture "PoolReflection" | ||
+ | textureAddressing clamp clamp | ||
+ | end | ||
+ | |||
+ | sampler bump | ||
+ | texture "poolShape-body-bump" | ||
+ | textureAddressing tile tile | ||
+ | end | ||
+ | |||
+ | end # end pass | ||
+ | |||
+ | enddef |
Revision as of 06:28, 16 June 2009
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; }; 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 * float3(0.1, 0.1, 1.0); 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.2, 5.0, facing); vReflection.a = fresnel; return saturate(vReflection + float4(0.0, 0.25, 0.5, 0.0) + pi.specular); } endShaderSource end sampler reflect texture "PoolReflection" textureAddressing clamp clamp end sampler bump texture "poolShape-body-bump" textureAddressing tile tile end
end # end pass
enddef