www.pudn.com > 13_184353_cubemap.rar > vertex_refraction.cg


// This binding semantic requires CG_PROFILE_ARBVP1 or higher. 
uniform float4x4 modelViewProj : state.matrix.mvp; 
 
void main( float4 position	:	POSITION, 
		  float2 texCoord	:	TEXCOORD0, 
		  float3 normal		:	NORMAL, 
		  float4 incolor    :   COLOR, 
 
		  out float4 oPosition	:	POSITION, 
		  out float2 oTexCoord	:	TEXCOORD0, 
		  out float3 T			:	TEXCOORD1, 
		  out float4 outcolor   :   COLOR, 
 
		  uniform float3 eyePositionW, 
		  uniform float4x4 modelToWorld) 
{ 
	oPosition = mul(modelViewProj, position); 
	oTexCoord = texCoord; 
	outcolor = incolor; 
	// Compute position and normal in world space 
	float3 positionW = mul(modelToWorld, position).xyz; 
	float3 N = mul((float3x3)modelToWorld, normal); 
	N = normalize(N); 
 
	//Compute the incident and refracted vectors 
	float3 I = positionW - eyePositionW; 
	T = refract(I, N, 2.417); 
}