Files
game-physics/Simulations/effect.fx
2017-10-11 15:01:05 +02:00

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);
}
}