#include "macros.hlsl" COMMON { cbuffer CameraInfo { float4x4 g_matViewProjection; float4 g_vViewPosition; }; struct PerModelData { float4x4 m_matTranslation; float4x4 m_matRotation; } StructuredBuffer g_modelData; struct PS_INPUT { float4 m_vScreenPosition: SV_POSITION; float4 m_vWorldPosition: POSITION; float4 m_vTexCoord: TEXCOORD0; float4 m_vNormal: NORMAL0; } } VS { struct VS_INPUT { float3 m_vPosition: POSITION; float2 m_vTexCoord: TEXCOORD0; float3 m_vNormal: NORMAL0; } PS_INPUT vsMain( VS_INPUT input ) { PS_INPUT output = {}; output.m_vScreenPosition = float4(input.m_vPosition, 1); output.m_vScreenPosition = mul( output.m_vScreenPosition, g_modelData[0].m_matTranslation ); output.m_vScreenPosition = mul( output.m_vScreenPosition, g_matViewProjection ); output.m_vWorldPosition = mul( float4(input.m_vPosition, 1), g_modelData[0].m_matTranslation ); output.m_vNormal = mul( float4(input.m_vNormal, 1), g_modelData[0].m_matRotation ); output.m_vTexCoord = float4(input.m_vTexCoord, 0, 0); return output; } } PS { #include "brdf.hlsl" struct PS_OUTPUT { float4 m_vAlbedo: SV_Target0; } PS_OUTPUT psMain( PS_INPUT input ) { PS_OUTPUT output = {}; output.m_vAlbedo = input.m_vNormal; return output; } }