This commit is contained in:
tavo 2025-10-30 23:34:08 -06:00
parent 2472372886
commit 021e127aa4

View file

@ -222,61 +222,49 @@ typedef struct SkrShaderProgram {
typedef struct SkrVertex { typedef struct SkrVertex {
/** /**
* @brief Vertex position in object space. * @brief Vertex position in object space.
*
* Three-component vector (x, y, z). * Three-component vector (x, y, z).
*/ */
vec3 Position; vec3 Position; // layout (location = 0)
vec3 Color;
/** /**
* @brief Vertex normal vector. * @brief Vertex normal vector.
*
* Used for lighting calculations. Three components (x, y, z). * Used for lighting calculations. Three components (x, y, z).
*/ */
vec3 Normal; vec3 Normal; // layout (location = 1)
/** /**
* @brief Texture coordinates (UV). * @brief Texture coordinates (UV).
*
* Two-component vector (u, v), typically in the range [0, 1]. * Two-component vector (u, v), typically in the range [0, 1].
*/ */
vec2 UV; vec2 UV; // layout (location = 2)
/**
* @brief Vertex color.
* Optional per-vertex color.
*/
vec3 Color; // layout (location = 3)
/** /**
* @brief Tangent vector. * @brief Tangent vector.
* * Defines the direction of increasing U in tangent space.
* Defines the direction of increasing U in the tangent space.
* Used for normal mapping. Three components (x, y, z).
*/ */
vec3 Tangent; vec3 Tangent; // layout (location = 4)
/** /**
* @brief Bitangent vector. * @brief Bitangent vector.
* * Defines the direction of increasing V in tangent space.
* Defines the direction of increasing V in the tangent space.
* Orthogonal to both the normal and tangent. Three components (x, y,
* z).
*/ */
vec3 Bitangent; vec3 Bitangent; // layout (location = 5)
/** /**
* @brief Indices of influencing bones. * @brief Indices of influencing bones.
*
* Array of up to @ref MAX_BONE_INFLUENCE integers that reference bones
* in the skeleton.
* Used for skeletal animation.
*/ */
int BoneIDs[MAX_BONE_INFLUENCE]; int BoneIDs[MAX_BONE_INFLUENCE]; // layout (location = 6, optional)
/** /**
* @brief Weights of influencing bones. * @brief Weights of influencing bones.
*
* Parallel array to @ref BoneIDs, with the corresponding influence
* weights.
* Values typically normalized so they sum to 1.0.
*/ */
int BoneWeights[MAX_BONE_INFLUENCE]; int BoneWeights[MAX_BONE_INFLUENCE]; // layout (location = 7, optional)
} SkrVertex; } SkrVertex;
/** /**
@ -1246,24 +1234,35 @@ static inline void m_skr_gl_mesh_init(SkrMesh* m) {
GL_STATIC_DRAW); GL_STATIC_DRAW);
// position // position
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(SkrVertex), glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(SkrVertex),
(void*)0); (void*)offsetof(SkrVertex, Position));
// color
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(SkrVertex),
(void*)offsetof(SkrVertex, Color));
// normal // normal
glEnableVertexAttribArray(2); glEnableVertexAttribArray(1);
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(SkrVertex), glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(SkrVertex),
(void*)offsetof(SkrVertex, Normal)); (void*)offsetof(SkrVertex, Normal));
// uv // uv
glEnableVertexAttribArray(3); glEnableVertexAttribArray(2);
glVertexAttribPointer(3, 2, GL_FLOAT, GL_FALSE, sizeof(SkrVertex), glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(SkrVertex),
(void*)offsetof(SkrVertex, UV)); (void*)offsetof(SkrVertex, UV));
// color
glEnableVertexAttribArray(3);
glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, sizeof(SkrVertex),
(void*)offsetof(SkrVertex, Color));
// tangent
glEnableVertexAttribArray(4);
glVertexAttribPointer(4, 3, GL_FLOAT, GL_FALSE, sizeof(SkrVertex),
(void*)offsetof(SkrVertex, Tangent));
// bitangent
glEnableVertexAttribArray(5);
glVertexAttribPointer(5, 3, GL_FLOAT, GL_FALSE, sizeof(SkrVertex),
(void*)offsetof(SkrVertex, Bitangent));
// glBindVertexArray(0); // glBindVertexArray(0);
// glUseProgram(m->Program->Backend.GL.ID); // glUseProgram(m->Program->Backend.GL.ID);