typedef float4 PositionData; typedef float2 UVData; typedef float4 NormalData; typedef float4 ColorData; struct MaterialData { float m_AlbedoFactor[4]; float m_EmissionFactor[3]; float m_MetalFactor; float m_RoughFactor; uint m_AlbedoTex; uint m_NormalTex; uint m_MetalRoughTex; uint m_OcclusionTex; uint m_EmissionTex; }; struct Block { uint vertexBufferHandle; uint colorHandle; uint uvBufferHandle; uint materialBufferHandle; int m_MaterialIdx; }; struct Camera { row_major float4x4 model; row_major float4x4 view; row_major float4x4 proj; }; #define INVALID_HANDLE 0xFFFFFFFF [[vk::binding(0, 0)]] StructuredBuffer vertexBuffer[]; [[vk::binding(0, 0)]] StructuredBuffer uvBuffer[]; [[vk::binding(0, 0)]] StructuredBuffer normalBuffer[]; [[vk::binding(0, 0)]] StructuredBuffer colorBuffer[]; [[vk::binding(0, 0)]] StructuredBuffer materialsBuffer[]; [[vk::binding(1, 0)]] Texture2D textures[]; [[vk::binding(1, 0)]] SamplerState immutableSamplers[]; [[vk::binding(0, 1)]] ConstantBuffer camera; [[vk::push_constant]] Block pcb;