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