Material
Code: Select all
vertex_program test5_vs cg
{
source test5.cg
entry_point main_vs
profiles vs_1_1 arbvp1
}
fragment_program test5_ps cg
{
source test5.cg
entry_point main_ps
profiles ps_2_0 arbfp1
}
material test5
{
technique
{
pass
{
scene_blend alpha_blend
depth_write off
vertex_program_ref test5_vs
{
param_named_auto worldViewProj worldviewproj_matrix
param_named_auto eyePosition camera_position_object_space
}
fragment_program_ref test5_ps
{
}
texture_unit
{
cubic_texture reflection.dds combinedUVW
tex_address_mode clamp
}
}
}
}
Code: Select all
void main_vs(
float4 inPosition : POSITION,
float3 inNormal : NORMAL,
out float4 outPosition : POSITION,
out float3 outNormal : TEXCOORD0,
out float3 outViewVec : TEXCOORD1,
uniform float4x4 worldViewProj,
uniform float3 eyePosition
)
{
outPosition = mul(worldViewProj, inPosition);
outNormal = normalize(inNormal);
outViewVec = eyePosition - inPosition;
}
void main_ps(
float3 inNormal: TEXCOORD0,
float3 inViewVec: TEXCOORD1,
out float4 outColor : COLOR,
uniform samplerCUBE ReflectTex
)
{
float v = dot(normalize(inViewVec), inNormal);
float3 reflectionVec = reflect(-inViewVec, inNormal);
float3 reflection = texCUBE(ReflectTex, reflectionVec);
outColor = float4(reflection, 1 - v);
}