90 lines
2.2 KiB
HLSL
90 lines
2.2 KiB
HLSL
//--------------------------------------------------------------------------------------
|
|
// 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);
|
|
}
|
|
}
|