//-------------------------------------------------------------------------------------- // File: effect.fx // // A basic effect file including a pass for rendering a simple triangle. // // Note: All fx-files in the project are automatically compiled by Visual Studio // to fxo-files in the output directories "x64\Debug\" and "x64\Release\" // (see "HLSL Compiler" in the project properties). //-------------------------------------------------------------------------------------- //Corresponds to D3D11_RASTERIZER_DESC RasterizerState CullNone { CullMode = None; }; //Corresponds to D3D11_DEPTH_STENCIL_DESC DepthStencilState DepthDefault { }; //Corresponds to D3D11_BLEND_DESC BlendState BlendDisable { }; cbuffer cb { float4x4 g_worldViewProj; } struct PSIn { float4 pos : SV_Position; float4 color : COLOR; }; //A simple vertex shader that has harcoded vertex positions //in world space for the first three vertices (IDs 0, 1 and 2). void vsTriangle(uint vertexID : SV_VertexID, out PSIn output) { switch(vertexID) { case 0: output.pos = float4(-0.5, -0.5, 0.0, 1.0); output.color = float4(1.0, 0.0, 0.0, 1.0); break; case 1: output.pos = float4(0.0, 0.5, 0.0, 1.0); output.color = float4(0.0, 1.0, 0.0, 1.0); break; default: output.pos = float4(0.5, -0.5, 0.0, 1.0); output.color = float4(0.0, 0.0, 1.0, 1.0); break; } // transform vertex position into clip space output.pos = mul(output.pos, g_worldViewProj); } //A simple pixel shader that returns the input vertex color (interpolated output of vertex shader) float4 psSimple(PSIn input) : SV_Target { return input.color; } // Effect technique named "Simple" (technique = collection of passes) technique11 Simple { // Pass named "P0" for rendering a simple triangle // (a pass corresponds to a rendering pipeline configuration, // i.e. a set of states and shaders) pass P0 { SetVertexShader(CompileShader(vs_5_0, vsTriangle())); SetGeometryShader(NULL); SetPixelShader(CompileShader(ps_5_0, psSimple())); SetRasterizerState(CullNone); SetDepthStencilState(DepthDefault, 0); SetBlendState(BlendDisable, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF); } }