#version 450 #pragma shader_stage(fragment) #extension GL_EXT_nonuniform_qualifier : enable //layout (location = 0) in vec2 inUV; layout (location = 0) out vec4 outColor; struct VertexData { float position[4]; // float uv[2]; }; struct MaterialData { float m_AlbedoFactor[4]; float m_EmissionFactor[4]; float m_MetalFactor; float m_RoughFactor; uint m_AlbedoTex; uint m_NormalTex; uint m_MetalRoughTex; uint m_OcclusionTex; uint m_EmissionTex; }; layout(set = 0, binding = 1) uniform sampler2D textures[]; layout(std430, set = 0, binding = 0) readonly buffer Vertices { VertexData data[]; } vertexBuffer[]; layout(std430, set = 0, binding = 0) readonly buffer Materials { MaterialData data[]; } materialsBuffer[]; layout(push_constant) uniform Block { uint vertexBufferHandle; uint materialBufferHandle; uint materialIdx; }; vec4 ToVec4(float array[4]) { return vec4(array[0],array[1],array[2],array[3]); } void main() { outColor = ToVec4(materialsBuffer[materialBufferHandle].data[materialIdx].m_AlbedoFactor); // vec4(texture(textures[textureHandle], inUV).rgb, 1.0f); }