/* CgFX 1.4 file for bumpdemo effect. */ /* Includes verbatim shaders from The Cg Tutorial (ISBN: 0321194969). */ #include "C8E4f_specSurf.cg" /* page 209 */ #include "C8E6v_torus.cg" /* page 223 */ float4x4 ModelViewProj : ModelViewProjection; float OuterRadius = 6; float InnerRadius = 2; float3 LightPosition = { -8, 0, 15 }; float3 EyePosition = { 0, 0, 18 }; float Ambient< string type = "ambient"; float minValue = 0.0; float maxValue = 1.0; > = 0.3; float3 DiffuseMaterial< string type = "color"; float3 minValue = float3(0,0,0); float3 maxValue = float3(1,1,1); > = { 0.9, 0.6, 0.3 }; float3 SpecularMaterial< string type = "color"; float3 minValue = float3(0,0,0); float3 maxValue = float3(1,1,1); > = { 1, 1, 1 }; float3 LightColor< string type = "color"; float3 minValue = float3(0,0,0); float3 maxValue = float3(1,1,1); > = { 1.0, 0.9, 0.9 }; sampler2D normalMap = sampler_state { generateMipMap = true; minFilter = LinearMipMapLinear; magFilter = Linear; }; samplerCUBE normalizeCube = sampler_state { minFilter = Linear; magFilter = Linear; wrapS = ClampToEdge; wrapT = ClampToEdge; }; // Because bumpdemo.c picks the first valid technique, list techniques // in relative order of preference... vertexshader Torus[6] = { compile gp5vp C8E6v_torus( LightPosition, EyePosition, ModelViewProj, float2( OuterRadius, InnerRadius ) ), compile gp4vp C8E6v_torus( LightPosition, EyePosition, ModelViewProj, float2( OuterRadius, InnerRadius ) ), compile vp40 C8E6v_torus( LightPosition, EyePosition, ModelViewProj, float2( OuterRadius, InnerRadius ) ), compile vp30 C8E6v_torus( LightPosition, EyePosition, ModelViewProj, float2( OuterRadius, InnerRadius ) ), compile arbvp1 C8E6v_torus( LightPosition, EyePosition, ModelViewProj, float2( OuterRadius, InnerRadius ) ), compile vp20 C8E6v_torus( LightPosition, EyePosition, ModelViewProj, float2( OuterRadius, InnerRadius ) ) }; pixelshader SpecSurf[6] = { compile gp5fp C8E4f_specSurf( Ambient, float4(DiffuseMaterial * LightColor, 1), float4(SpecularMaterial * LightColor, 1), normalMap, normalizeCube, normalizeCube ), compile gp4fp C8E4f_specSurf( Ambient, float4(DiffuseMaterial * LightColor, 1), float4(SpecularMaterial * LightColor, 1), normalMap, normalizeCube, normalizeCube ), compile fp40 C8E4f_specSurf( Ambient, float4(DiffuseMaterial * LightColor, 1), float4(SpecularMaterial * LightColor, 1), normalMap, normalizeCube, normalizeCube ), compile fp30 C8E4f_specSurf( Ambient, float4(DiffuseMaterial * LightColor, 1), float4(SpecularMaterial * LightColor, 1), normalMap, normalizeCube, normalizeCube ), compile arbfp1 C8E4f_specSurf( Ambient, float4(DiffuseMaterial * LightColor, 1), float4(SpecularMaterial * LightColor, 1), normalMap, normalizeCube, normalizeCube ), compile fp20 C8E4f_specSurf( Ambient, float4(DiffuseMaterial * LightColor, 1), float4(SpecularMaterial * LightColor, 1), normalMap, normalizeCube, normalizeCube ) }; int select = 0; technique bumpdemo { pass { VertexProgram = (Torus[select]); FragmentProgram = (SpecSurf[select]); } }