float4x4 World; float4x4 View; float4x4 Projection; //- modelTexture1 -- texture modelTexture1; sampler modelTextureSampler1 = sampler_state { texture = ; AddressU = MIRROR; AddressV = MIRROR; AddressW = MIRROR; MIPFILTER = ANISOTROPIC; MINFILTER = ANISOTROPIC; MAGFILTER = ANISOTROPIC; }; struct VertexInput { float4 position : POSITION0; float4 color : COLOR0; float4 texCoord : TEXCOORD0; float3 normal : NORMAL0; }; struct VertexOutput { float4 position : POSITION0; float4 color : COLOR0; float4 texCoord : TEXCOORD0; float3 normal : TEXCOORD1; float3 worldPos : TEXCOORD2; }; struct FragmentInput { float4 position : POSITION0; float4 color : COLOR0; float4 texCoord : TEXCOORD0; float3 normal : TEXCOORD1; float3 worldPos : TEXCOORD2; }; struct FragmentOutput { float4 color : COLOR0; }; // ========================================================= // Colored Object // ========================================================= VertexOutput _VS(VertexInput VS_IN) { VertexOutput VS_OUT = (VertexOutput)0; float4 worldPosition = mul(VS_IN.position, World); float4 viewPosition = mul(worldPosition, View); VS_OUT.position = mul(viewPosition, Projection); VS_OUT.color = VS_IN.color; return VS_OUT; } FragmentOutput _PS(FragmentInput FS_IN) { FragmentOutput FS_OUT = (FragmentOutput)0; FS_OUT.color = FS_IN.color; return FS_OUT; } technique Colored { pass Pass1 { VertexShader = compile vs_3_0 _VS(); PixelShader = compile ps_3_0 _PS(); // Alpha blending AlphaBlendEnable = true; SrcBlend = SrcAlpha; DestBlend = InvSrcAlpha; FillMode = Solid; } } // ========================================================= // Textured Object // ========================================================= VertexOutput Textured_VS(VertexInput VS_IN) { VertexOutput VS_OUT = (VertexOutput)0; float4 worldPosition = mul(VS_IN.position, World); float4 viewPosition = mul(worldPosition, View); VS_OUT.position = mul(viewPosition, Projection); VS_OUT.texCoord = VS_IN.texCoord; return VS_OUT; } FragmentOutput Textured_PS(FragmentInput FS_IN) { FragmentOutput FS_OUT = (FragmentOutput)0; FS_OUT.color = tex2D(modelTextureSampler1, FS_IN.texCoord); return FS_OUT; } technique Textured { pass Pass1 { VertexShader = compile vs_3_0 Textured_VS(); PixelShader = compile ps_3_0 Textured_PS(); // Alpha blending AlphaBlendEnable = true; SrcBlend = SrcAlpha; DestBlend = InvSrcAlpha; FillMode = Solid; } } // ========================================================= // PixelGrid // ========================================================= VertexOutput PixelGrid_VS(VertexInput VS_IN) { VertexOutput VS_OUT = (VertexOutput)0; float4 worldPosition = mul(VS_IN.position, World); float4 viewPosition = mul(worldPosition, View); VS_OUT.position = mul(viewPosition, Projection); VS_OUT.texCoord = VS_IN.texCoord; return VS_OUT; } FragmentOutput PixelGrid_PS(FragmentInput FS_IN) { FragmentOutput FS_OUT = (FragmentOutput)0; FS_OUT.color = tex2D(modelTextureSampler1, FS_IN.texCoord); if((FS_IN.texCoord.x * 128.0f %2.0f) == 0.0f) { FS_OUT.color.r = 1.0f; } else if((FS_IN.texCoord.x * 128.0f %2.0f) == 1.0f) { FS_OUT.color.g = 1.0f; } else { FS_OUT.color.r = 1.0f; FS_OUT.color.b = 1.0f; FS_OUT.color.g = 1.0f; } if((FS_IN.texCoord.y * 128.0f %2.0f) == 0.0f) { FS_OUT.color.r = 1.0f; FS_OUT.color.b = 1.0f; } else if((FS_IN.texCoord.y * 128.0f %2.0f) == 1.0f) { FS_OUT.color.g = 1.0f; FS_OUT.color.b = 1.0f; } else { FS_OUT.color.r = 1.0f; FS_OUT.color.g = 1.0f; FS_OUT.color.b = 1.0f; } return FS_OUT; } technique PixelGrid { pass Pass1 { VertexShader = compile vs_3_0 PixelGrid_VS(); PixelShader = compile ps_3_0 PixelGrid_PS(); // Alpha blending AlphaBlendEnable = true; SrcBlend = SrcAlpha; DestBlend = InvSrcAlpha; FillMode = Solid; } } // ========================================================= // VisibilityTest // ========================================================= VertexOutput VisibilityTest_VS(VertexInput VS_IN) { VertexOutput VS_OUT = (VertexOutput)0; float4 worldPosition = mul(VS_IN.position, World); float4 viewPosition = mul(worldPosition, View); VS_OUT.position = mul(viewPosition, Projection); VS_OUT.texCoord = VS_IN.texCoord; return VS_OUT; } FragmentOutput VisibilityTest_PS(FragmentInput FS_IN) { FragmentOutput FS_OUT = (FragmentOutput)0; FS_OUT.color = tex2D(modelTextureSampler1, FS_IN.texCoord); return FS_OUT; } technique VisibilityTest { pass Pass1 { VertexShader = compile vs_3_0 VisibilityTest_VS(); PixelShader = compile ps_3_0 VisibilityTest_PS(); // Alpha blending AlphaBlendEnable = true; SrcBlend = SrcAlpha; DestBlend = InvSrcAlpha; FillMode = Solid; } } // ========================================================= // FrustumTest // ========================================================= // ========================================================= // OcclusionTest // ========================================================= // ========================================================= // PlayerTrace // ========================================================= VertexOutput PlayerTrace_VS(VertexInput VS_IN) { VertexOutput VS_OUT = (VertexOutput)0; float4 worldPosition = mul(VS_IN.position, World); float4 viewPosition = mul(worldPosition, View); VS_OUT.position = mul(viewPosition, Projection); VS_OUT.texCoord = VS_IN.texCoord; return VS_OUT; } FragmentOutput PlayerTrace_PS(FragmentInput FS_IN) { FragmentOutput FS_OUT = (FragmentOutput)0; FS_OUT.color = tex2D(modelTextureSampler1, FS_IN.texCoord); return FS_OUT; } technique PlayerTrace { pass Pass1 { VertexShader = compile vs_3_0 PlayerTrace_VS(); PixelShader = compile ps_3_0 PlayerTrace_PS(); // Alpha blending AlphaBlendEnable = true; SrcBlend = SrcAlpha; DestBlend = InvSrcAlpha; FillMode = Solid; } }