cbuffer ConstantBuffer : register( b0 )
{
matrix World;
matrix View;
matrix Projection;
float4 vLightDir;
float4 vLightColor;
float4 ambient;
//float4 vOutputColor;
}
//--------------------------------------------------------------------------------------
struct VS_INPUT
{
float4 Pos : POSITION;
float3 Norm : NORMAL;
float4 Color : COLOR;
};
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float3 Norm : TEXCOORD0;
float4 Color : COLOR;
};
//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
PS_INPUT VS( VS_INPUT input )
{
float4 normal;
float4 diffuseColor = 0;
PS_INPUT output = (PS_INPUT)0;
output.Pos = mul( input.Pos, World );
output.Pos = mul( output.Pos, View );
output.Pos = mul( output.Pos, Projection );
normal = mul(input.Norm, World);
diffuseColor += dot((float3)vLightDir, normal);
diffuseColor += 1;
diffuseColor /= 2;
diffuseColor * (1 - ambient);
diffuseColor *= input.Color;
diffuseColor += ambient;
output.Color = diffuseColor * vLightColor;
return output;
}
//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 PS( PS_INPUT input) : SV_Target
{
return input.Color;
}
DIM SimpleVertex{Pos{}=XMFLOAT3{},Normal{}=XMFLOAT3{},Color{}=XMFLOAT4{}}
DIM layout{(2)} = D3D11_INPUT_ELEMENT_DESC{}
sn0$ = "POSITION" + CHR$(0)
layout{(0)}.SemanticName% = !^sn0$
layout{(0)}.Format% = DXGI_FORMAT_R32G32B32_FLOAT
layout{(0)}.AlignedByteOffset% = 0
layout{(0)}.InputSlotClass% = D3D11_INPUT_PER_VERTEX_DATA
sn1$ = "NORMAL" + CHR$(0)
layout{(1)}.SemanticName% = !^sn1$
layout{(1)}.Format% = DXGI_FORMAT_R32G32B32_FLOAT
layout{(1)}.AlignedByteOffset% = 12
layout{(1)}.InputSlotClass% = D3D11_INPUT_PER_VERTEX_DATA
sn2$ = "COLOR" + CHR$(0)
layout{(2)}.SemanticName% = !^sn2$
layout{(2)}.Format% = DXGI_FORMAT_R32G32B32A32_FLOAT
layout{(2)}.AlignedByteOffset% = 24
layout{(2)}.InputSlotClass% = D3D11_INPUT_PER_VERTEX_DATA
numElements% = DIM(layout{()},1) + 1