aboutsummaryrefslogtreecommitdiff
path: root/samples/DX_APIUsage/BasicHLSL.fx
diff options
context:
space:
mode:
authorDave Clark <[email protected]>2018-02-28 17:22:22 -0500
committerDave Clark <[email protected]>2018-02-28 17:22:22 -0500
commit25528fd230f5f4298c35123a833cdb112675808e (patch)
treef5aca3f5ee5a7734df41e7b974a04c37ddff528e /samples/DX_APIUsage/BasicHLSL.fx
parentPush GfeSDK #173 (diff)
downloadgfesdk-25528fd230f5f4298c35123a833cdb112675808e.tar.xz
gfesdk-25528fd230f5f4298c35123a833cdb112675808e.zip
Push SDK # 1.1.186
Documentation updates.
Diffstat (limited to 'samples/DX_APIUsage/BasicHLSL.fx')
-rw-r--r--samples/DX_APIUsage/BasicHLSL.fx157
1 files changed, 157 insertions, 0 deletions
diff --git a/samples/DX_APIUsage/BasicHLSL.fx b/samples/DX_APIUsage/BasicHLSL.fx
new file mode 100644
index 0000000..a13230e
--- /dev/null
+++ b/samples/DX_APIUsage/BasicHLSL.fx
@@ -0,0 +1,157 @@
+//--------------------------------------------------------------------------------------
+// File: BasicHLSL.fx
+//
+// The effect file for the BasicHLSL sample.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//--------------------------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------------------------
+// Global variables
+//--------------------------------------------------------------------------------------
+float4 g_MaterialAmbientColor; // Material's ambient color
+float4 g_MaterialDiffuseColor; // Material's diffuse color
+int g_nNumLights;
+
+float3 g_LightDir; // Light's direction in world space
+float4 g_LightDiffuse; // Light's diffuse color
+float4 g_LightAmbient; // Light's ambient color
+
+texture g_MeshTexture; // Color texture for mesh
+
+float g_fTime; // App's time in seconds
+float4x4 g_mWorld; // World matrix for object
+float4x4 g_mWorldViewProjection; // World * View * Projection matrix
+
+
+
+//--------------------------------------------------------------------------------------
+// Texture samplers
+//--------------------------------------------------------------------------------------
+sampler MeshTextureSampler =
+sampler_state
+{
+ Texture = <g_MeshTexture>;
+ MipFilter = LINEAR;
+ MinFilter = LINEAR;
+ MagFilter = LINEAR;
+};
+
+
+//--------------------------------------------------------------------------------------
+// Vertex shader output structure
+//--------------------------------------------------------------------------------------
+struct VS_OUTPUT
+{
+ float4 Position : POSITION; // vertex position
+ float4 Diffuse : COLOR0; // vertex diffuse color (note that COLOR0 is clamped from 0..1)
+ float2 TextureUV : TEXCOORD0; // vertex texture coords
+};
+
+
+//--------------------------------------------------------------------------------------
+// This shader computes standard transform and lighting
+//--------------------------------------------------------------------------------------
+VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
+ float3 vNormal : NORMAL,
+ float2 vTexCoord0 : TEXCOORD0,
+ uniform int nNumLights,
+ uniform bool bTexture,
+ uniform bool bAnimate )
+{
+
+ VS_OUTPUT Output;
+ float3 vNormalWorldSpace;
+
+ // Transform the position from object space to homogeneous projection space
+ Output.Position = mul(vPos, g_mWorldViewProjection);
+
+ // Transform the normal from object space to world space
+ vNormalWorldSpace = normalize(mul(vNormal, (float3x3)g_mWorld)); // normal (world space)
+
+ // Compute simple directional lighting equation
+ float3 vTotalLightDiffuse = float3(0,0,0);
+ for(int i=0; i<nNumLights; i++ )
+ vTotalLightDiffuse += g_LightDiffuse * max(0,dot(vNormalWorldSpace, g_LightDir));
+
+ Output.Diffuse.rgb = g_MaterialDiffuseColor * vTotalLightDiffuse +
+ g_MaterialAmbientColor * g_LightAmbient;
+ Output.Diffuse.a = 1.0f;
+
+ // Just copy the texture coordinate through
+ if( bTexture )
+ Output.TextureUV = vTexCoord0;
+ else
+ Output.TextureUV = 0;
+
+ return Output;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Pixel shader output structure
+//--------------------------------------------------------------------------------------
+struct PS_OUTPUT
+{
+ float4 RGBColor : COLOR0; // Pixel color
+};
+
+
+//--------------------------------------------------------------------------------------
+// This shader outputs the pixel's color by modulating the texture's
+// color with diffuse material color
+//--------------------------------------------------------------------------------------
+PS_OUTPUT RenderScenePS( VS_OUTPUT In,
+ uniform bool bTexture )
+{
+ PS_OUTPUT Output;
+
+ // Lookup mesh texture and modulate it with diffuse
+ if( bTexture )
+ Output.RGBColor = tex2D(MeshTextureSampler, In.TextureUV) * In.Diffuse;
+ else
+ Output.RGBColor = In.Diffuse;
+
+ return Output;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Renders scene to render target
+//--------------------------------------------------------------------------------------
+technique RenderSceneWithTexture1Light
+{
+ pass P0
+ {
+ VertexShader = compile vs_2_0 RenderSceneVS( 1, true, true );
+ PixelShader = compile ps_2_0 RenderScenePS( true ); // trivial pixel shader (could use FF instead if desired)
+ }
+}
+
+technique RenderSceneWithTexture2Light
+{
+ pass P0
+ {
+ VertexShader = compile vs_2_0 RenderSceneVS( 2, true, true );
+ PixelShader = compile ps_2_0 RenderScenePS( true ); // trivial pixel shader (could use FF instead if desired)
+ }
+}
+
+technique RenderSceneWithTexture3Light
+{
+ pass P0
+ {
+ VertexShader = compile vs_2_0 RenderSceneVS( 3, true, true );
+ PixelShader = compile ps_2_0 RenderScenePS( true ); // trivial pixel shader (could use FF instead if desired)
+ }
+}
+
+technique RenderSceneNoTexture
+{
+ pass P0
+ {
+ VertexShader = compile vs_2_0 RenderSceneVS( 1, false, false );
+ PixelShader = compile ps_2_0 RenderScenePS( false ); // trivial pixel shader (could use FF instead if desired)
+ }
+}