typedef float4 PositionData; typedef float2 UVData; typedef float4 NormalData; typedef float4 ColorData; struct TransformData { float4x4 transform; }; 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; uint nodeBufferHandle; int m_MaterialIdx; uint m_NodeIdx; }; struct Camera { float4x4 model; float4x4 view; 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(0, 0)]] StructuredBuffer nodeBuffer[]; [[vk::binding(1, 0)]] Texture2D textures[]; [[vk::binding(1, 0)]] SamplerState immutableSamplers[]; [[vk::binding(0, 1)]] ConstantBuffer camera; [[vk::push_constant]] Block pcb;