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);
}