Difference between revisions of "TEST-STRCMP4CODES"

From SimsWiki
Jump to: navigation, search
Line 5: Line 5:
 
// Do Y-direction waves
 
// Do Y-direction waves
 
// r0 = (x, y, z, t)
 
// r0 = (x, y, z, t)
 
 
OutputVertex outputVertex;
 
OutputVertex outputVertex;
  
Line 11: Line 10:
 
posAndTime.xyz = inputVertex.position;
 
posAndTime.xyz = inputVertex.position;
 
posAndTime.w = frameInfo.w;
 
posAndTime.w = frameInfo.w;
 
+
float temp = dot(posAndTime, waveDataX);
float temp = dot(posAndTime, waveDataX);
+
float z = sin(temp) * waveDataX.z + inputVertex.position.z;
float z = sin(temp) * waveDataX.z + inputVertex.position.z;
+
temp = dot(posAndTime, waveDataY);
 
+
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.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;
+
posAndTime.w = 1.0f;
  
 
outputVertex.clipPosition = mul( posAndTime, clipSpaceMatrix);
 
outputVertex.clipPosition = mul( posAndTime, clipSpaceMatrix);
outputVertex.sPos = float4(0.5f*(outputVertex.clipPosition.ww - outputVertex.clipPosition.xy), outputVertex.clipPosition.ww);
+
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 waveNormal = normalize(inputVertex.normal + float3(cos(temp)*waveDataHelper.xy, 0));
  
float3 cameraSpaceNormal = normalize(mul(waveNormal, cameraSpaceMatrix));
+
float3 cameraSpaceNormal = normalize(mul(waveNormal, cameraSpaceMatrix));
float3 cameraSpacePosition = mul( posAndTime, cameraSpaceMatrix);
+
float3 cameraSpacePosition = mul( posAndTime, cameraSpaceMatrix);
 
float3 viewVector = normalize(-cameraSpacePosition);
 
float3 viewVector = normalize(-cameraSpacePosition);
  
 
float3 halfVector = normalize(viewVector + lightDirection);
 
float3 halfVector = normalize(viewVector + lightDirection);
outputVertex.specular = lightSpecular*pow(dot(cameraSpaceNormal, halfVector), 50)*nightColor*lightColor*0.5;
+
outputVertex.specular = lightSpecular*pow(dot(cameraSpaceNormal, halfVector), 50)*nightColor*lightColor*0.5;
  
  
Line 36: Line 33:
 
float2 vTexCoords = posAndTime.xy*0.05;
 
float2 vTexCoords = posAndTime.xy*0.05;
  
// Output bump layers texture coordinates  
+
// Output bump layers texture coordinates
 
float fSinTranslation=sin(fTranslation*100)*0.005;
 
float fSinTranslation=sin(fTranslation*100)*0.005;
 
float2 vTranslation0=fTranslation+fSinTranslation;
 
float2 vTranslation0=fTranslation+fSinTranslation;
Line 46: Line 43:
 
outputVertex.Wave1.xy = vTexCoords.xy+fTranslation*2.5;
 
outputVertex.Wave1.xy = vTexCoords.xy+fTranslation*2.5;
 
outputVertex.Wave2.xy = vTexCoords.xy+fTranslation*-2.3;
 
outputVertex.Wave2.xy = vTexCoords.xy+fTranslation*-2.3;
outputVertex.Wave3.xy = vTexCoords.xy*0.1+fTranslation*1.5;              
+
outputVertex.Wave3.xy = vTexCoords.xy*0.1+fTranslation*1.5;
  
  
 
// compute binormal
 
// compute binormal
float3 binormal = normalize(cross(waveNormal, float3(1.0f, 0.0f, 0.0f)));            
+
float3 binormal = normalize(cross(waveNormal, float3(1.0f, 0.0f, 0.0f)));
 
float3 tangent = normalize(cross(binormal, waveNormal));
 
float3 tangent = normalize(cross(binormal, waveNormal));
  
Line 63: Line 60:
 
// outputVertex.color = waterTint.xxxx;
 
// outputVertex.color = waterTint.xxxx;
  
return(outputVertex);
+
return(outputVertex);
 
}
 
}
  
endShaderSource
+
endShaderSource
 
end # shaderProgram
 
end # shaderProgram
  
 
</PRE>
 
</PRE>

Revision as of 06:00, 7 September 2007


					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