Difference between revisions of "TEST-STRCMP4CODES"

From SimsWiki
Jump to: navigation, search
m (pool4)
(nei4)
Line 1: Line 1:
OutputVertex VertexMain( InputVertex inputVertex)
+
OutputVertex VertexMain( InputVertex inputVertex)
{
+
{
// Do Y-direction waves
+
// Do Y-direction waves
// r0 = (x, y, z, t)
+
// r0 = (x, y, z, t)
+
OutputVertex outputVertex;
OutputVertex outputVertex;
+
float4 posAndTime;
+
posAndTime.xyz = inputVertex.position;
float4 posAndTime;
+
posAndTime.w = frameInfo.w;
posAndTime.xyz = inputVertex.position;
+
float temp = dot(posAndTime, waveDataX);
posAndTime.w = frameInfo.w;
+
float z = sin(temp) * waveDataX.z + inputVertex.position.z;
+
temp = dot(posAndTime, waveDataY);
float temp = dot(posAndTime, waveDataX);
+
posAndTime.z =  z + sin(temp) * waveDataY.z ;//-0.1f; //The -.01 is a fudge factor to remove some of the edge creep associated with moving the height of the wave. -tom
float z = sin(temp) * waveDataX.z + inputVertex.position.z;
+
posAndTime.w = 1.0f;  
temp = dot(posAndTime, waveDataY);
+
outputVertex.clipPosition = mul( posAndTime, clipSpaceMatrix);
posAndTime.z =  z + sin(temp) * waveDataY.z;
+
outputVertex.sPos = float4(0.5f*(outputVertex.clipPosition.ww - outputVertex.clipPosition.xy), outputVertex.clipPosition.ww);
posAndTime.w = 1.0f;  
+
float3 waveNormal = normalize(inputVertex.normal + float3(cos(temp)*waveDataHelper.xy, 0));
+
float3 cameraSpaceNormal = normalize(mul(waveNormal, cameraSpaceMatrix));
outputVertex.clipPosition = mul( posAndTime, clipSpaceMatrix);
+
float3 cameraSpacePosition = mul( posAndTime, cameraSpaceMatrix);
outputVertex.sPos = float4(0.5f*(outputVertex.clipPosition.ww - outputVertex.clipPosition.xy), outputVertex.clipPosition.ww);
+
float3 viewVector = normalize(-cameraSpacePosition);
+
float3 halfVector = normalize(viewVector + lightDirection);
float3 waveNormal = normalize(inputVertex.normal + float3(cos(temp)*waveDataHelper.xy, 0));
+
outputVertex.specular = lightSpecular*pow(dot(cameraSpaceNormal, halfVector), 50)*nightColor*lightColor*0.5;
        float3 cameraSpaceNormal = normalize(mul(waveNormal, cameraSpaceMatrix));
+
float2 fTranslation=float2(fmod(frameInfo.w, 100)*0.005, fmod(frameInfo.w, 100)*0.005);
float3 cameraSpacePosition = mul( posAndTime, cameraSpaceMatrix);
+
float2 vTexCoords = posAndTime.xy*0.05;
float3 viewVector = normalize(-cameraSpacePosition);
+
// Output bump layers texture coordinates     
+
float fSinTranslation=sin(fTranslation*100)*0.005;
float3 halfVector = normalize(viewVector + lightDirection);
+
float2 vTranslation0=fTranslation+fSinTranslation;
outputVertex.specular = lightSpecular*pow(dot(cameraSpaceNormal, halfVector), 50)*nightColor*lightColor*0.5;
+
float2 vTranslation1=fTranslation-fSinTranslation;
+
float2 vTranslation2=fTranslation;
+
// Scale texture coordinates to get mix of low/high frequency details
float2 fTranslation=float2(fmod(frameInfo.w, 100)*0.005, fmod(frameInfo.w, 100)*0.005);
+
outputVertex.Wave0.xy = vTexCoords.xy*0.01+fTranslation*2.0;
              float2 vTexCoords = posAndTime.xy*0.05;
+
outputVertex.Wave1.xy = vTexCoords.xy+fTranslation*2.5;
               
+
outputVertex.Wave2.xy = vTexCoords.xy+fTranslation*-2.3;
              // Output bump layers texture coordinates     
+
outputVertex.Wave3.xy = vTexCoords.xy*0.1+fTranslation*1.5;              
              float fSinTranslation=sin(fTranslation*100)*0.005;
+
                                   
              float2 vTranslation0=fTranslation+fSinTranslation;
+
// compute binormal
              float2 vTranslation1=fTranslation-fSinTranslation;
+
float3 binormal = normalize(cross(waveNormal, float3(1.0f, 0.0f, 0.0f)));              
              float2 vTranslation2=fTranslation;
+
float3 tangent = normalize(cross(binormal, waveNormal));
               
+
// tangent space matrix
              // Scale texture coordinates to get mix of low/high frequency details
+
float3x3 objToTangentSpace = float3x3(tangent, binormal, waveNormal);
              outputVertex.Wave0.xy = vTexCoords.xy+fTranslation*2.0;
+
float3 viewVectorInObjSpace = mul(viewVector, (float3x3)cameraToGeomMatrix);
              outputVertex.Wave1.xy = vTexCoords.xy*2.0+fTranslation*4.0;
+
outputVertex.Eye.xyz = mul(objToTangentSpace, viewVectorInObjSpace);
              outputVertex.Wave2.xy = vTexCoords.xy*7.0+fTranslation*2.0;
+
outputVertex.colorTint = waterTint;
              outputVertex.Wave3.xy = vTexCoords.xy*12.0+fTranslation;              
+
outputVertex.colorTint.a = inputVertex.alpha.xxxx;
                                   
+
// outputVertex.color = waterTint.xxxx;
            // compute binormal
+
return(outputVertex);
            float3 binormal = normalize(cross(waveNormal, float3(1.0f, 0.0f, 0.0f)));              
+
}
            float3 tangent = normalize(cross(binormal, waveNormal));
+
endShaderSource   
           
+
end # shaderProgram
            // tangent space matrix
+
            float3x3 objToTangentSpace = float3x3(tangent, binormal, waveNormal);
+
           
+
            float3 viewVectorInObjSpace = mul(viewVector, (float3x3)cameraToGeomMatrix);
+
           
+
            outputVertex.Eye.xyz = mul(objToTangentSpace, viewVectorInObjSpace);
+
+
+
return(outputVertex);
+
}
+
 
+
 
+
endShaderSource   
+
end # shaderProgram
+

Revision as of 01:25, 16 June 2009

OutputVertex VertexMain( InputVertex inputVertex) { // Do Y-direction waves // r0 = (x, y, z, t) OutputVertex outputVertex; float4 posAndTime; posAndTime.xyz = inputVertex.position; posAndTime.w = frameInfo.w; float temp = dot(posAndTime, waveDataX); float z = sin(temp) * waveDataX.z + inputVertex.position.z; temp = dot(posAndTime, waveDataY); posAndTime.z = z + sin(temp) * waveDataY.z ;//-0.1f; //The -.01 is a fudge factor to remove some of the edge creep associated with moving the height of the wave. -tom posAndTime.w = 1.0f; outputVertex.clipPosition = mul( posAndTime, clipSpaceMatrix); outputVertex.sPos = float4(0.5f*(outputVertex.clipPosition.ww - outputVertex.clipPosition.xy), outputVertex.clipPosition.ww); float3 waveNormal = normalize(inputVertex.normal + float3(cos(temp)*waveDataHelper.xy, 0)); float3 cameraSpaceNormal = normalize(mul(waveNormal, cameraSpaceMatrix)); float3 cameraSpacePosition = mul( posAndTime, cameraSpaceMatrix); float3 viewVector = normalize(-cameraSpacePosition); float3 halfVector = normalize(viewVector + lightDirection); outputVertex.specular = lightSpecular*pow(dot(cameraSpaceNormal, halfVector), 50)*nightColor*lightColor*0.5; float2 fTranslation=float2(fmod(frameInfo.w, 100)*0.005, fmod(frameInfo.w, 100)*0.005); float2 vTexCoords = posAndTime.xy*0.05; // Output bump layers texture coordinates float fSinTranslation=sin(fTranslation*100)*0.005; float2 vTranslation0=fTranslation+fSinTranslation; float2 vTranslation1=fTranslation-fSinTranslation; float2 vTranslation2=fTranslation; // Scale texture coordinates to get mix of low/high frequency details outputVertex.Wave0.xy = vTexCoords.xy*0.01+fTranslation*2.0; outputVertex.Wave1.xy = vTexCoords.xy+fTranslation*2.5; outputVertex.Wave2.xy = vTexCoords.xy+fTranslation*-2.3; outputVertex.Wave3.xy = vTexCoords.xy*0.1+fTranslation*1.5;

// compute binormal float3 binormal = normalize(cross(waveNormal, float3(1.0f, 0.0f, 0.0f))); float3 tangent = normalize(cross(binormal, waveNormal)); // tangent space matrix float3x3 objToTangentSpace = float3x3(tangent, binormal, waveNormal); float3 viewVectorInObjSpace = mul(viewVector, (float3x3)cameraToGeomMatrix); outputVertex.Eye.xyz = mul(objToTangentSpace, viewVectorInObjSpace); outputVertex.colorTint = waterTint; outputVertex.colorTint.a = inputVertex.alpha.xxxx; // outputVertex.color = waterTint.xxxx; return(outputVertex); } endShaderSource end # shaderProgram

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox