Working on complex models and texture loading

This commit is contained in:
Harrison Corlett 2026-06-04 15:29:59 +01:00
parent 6d6d9f42be
commit c2aa4ec895
27 changed files with 780 additions and 59 deletions

View file

@ -1,9 +1,33 @@
#version 450
const int MAX_TEXTURES = 100;
layout(location = 0) in vec2 inTextCoords;
layout(location = 0) out vec4 outFragColor;
struct Material{
vec4 diffuseColor;
uint hasTexture;
uint textureIdx;
uint padding[2];
};
layout(set = 1, binding = 0) readonly buffer MaterialUniform{
Material materials[];
} matUniform;
layout(set = 2, binding = 0) uniform sampler2D textSampler[MAX_TEXTURES];
layout(push_constant) uniform pc{
layout(offset = 64) uint materialIdx;
} push_constants;
void main()
{
outFragColor = vec4(inTextCoords.x, inTextCoords.y, 0, 1);
Material material = matUniform.materials[push_constants.materialIdx];
if(material.hasTexture == 1){
outFragColor = texture(textSampler[material.textureIdx],inTextCoords);
} else{
outFragColor = material.diffuseColor;
}
}

View file

@ -4,13 +4,17 @@ layout(location = 0) in vec3 inPos;
layout(location = 1) in vec2 intTextCoords;
layout(location = 0) out vec2 outTextCoords;
layout(push_constant) uniform matrices{
mat4 projectionMatrix;
layout(set = 0, binding = 0) uniform ProjUniform{
mat4 matrix;
} projUniform;
layout(push_constant) uniform pc{
mat4 modelMatrix;
} push_constants;
void main()
{
gl_Position = push_constants.projectionMatrix * push_constants.modelMatrix * vec4(inPos,1);
gl_Position = projUniform.matrix * push_constants.modelMatrix * vec4(inPos,1);
outTextCoords = intTextCoords;
}