project-aster/samples/03_model_render/shader/model.frag.glsl

46 lines
1.1 KiB
GLSL

#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[3];
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);
}