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