diff --git a/shaders/reign_shadow.v.glsl b/shaders/reign_shadow.v.glsl index 6af53c5..9a2729d 100644 --- a/shaders/reign_shadow.v.glsl +++ b/shaders/reign_shadow.v.glsl @@ -14,7 +14,7 @@ * along with this program; if not, see . */ -uniform mat4 world_transform; +uniform mat4 local_transform; uniform mat4 view_transform; const int MAX_BONES = 308; // see 3d_internal.h @@ -29,7 +29,7 @@ in ivec4 vertex_bone_index; in vec4 vertex_bone_weight; void main() { - mat4 world_bone_transform = world_transform; + mat4 local_bone_transform = local_transform; if (has_bones) { mat4 bone_transform = mat4(0.f); for (int i = 0; i < NR_WEIGHTS; i++) { @@ -37,8 +37,8 @@ void main() { bone_transform += bone_matrices[vertex_bone_index[i]] * vertex_bone_weight[i]; } } - world_bone_transform *= bone_transform; + local_bone_transform *= bone_transform; } - gl_Position = view_transform * world_bone_transform * vec4(vertex_pos, 1.0); + gl_Position = view_transform * local_bone_transform * vec4(vertex_pos, 1.0); } diff --git a/src/3d/3d_internal.h b/src/3d/3d_internal.h index 4d13df1..cf8037e 100644 --- a/src/3d/3d_internal.h +++ b/src/3d/3d_internal.h @@ -108,7 +108,7 @@ struct shadow_renderer { GLuint texture; // Uniform variable locations - GLint world_transform; + GLint local_transform; GLint view_transform; GLint has_bones; }; @@ -119,7 +119,6 @@ struct RE_renderer { struct shadow_renderer shadow; // Uniform variable locations - GLint world_transform; GLint view_transform; GLint texture; GLint local_transform; diff --git a/src/3d/renderer.c b/src/3d/renderer.c index e80d42d..d6a9b50 100644 --- a/src/3d/renderer.c +++ b/src/3d/renderer.c @@ -99,7 +99,7 @@ static void init_shadow_renderer(struct shadow_renderer *sr) glGetIntegerv(GL_FRAMEBUFFER_BINDING, &orig_fbo); sr->program = load_shader("shaders/reign_shadow.v.glsl", "shaders/reign_shadow.f.glsl"); - sr->world_transform = glGetUniformLocation(sr->program, "world_transform"); + sr->local_transform = glGetUniformLocation(sr->program, "local_transform"); sr->view_transform = glGetUniformLocation(sr->program, "view_transform"); sr->has_bones = glGetUniformLocation(sr->program, "has_bones"); GLuint bone_transforms = glGetUniformBlockIndex(sr->program, "BoneTransforms"); @@ -176,7 +176,6 @@ struct RE_renderer *RE_renderer_new(void) struct RE_renderer *r = xcalloc(1, sizeof(struct RE_renderer)); r->program = load_shader("shaders/reign.v.glsl", "shaders/reign.f.glsl"); - r->world_transform = glGetUniformLocation(r->program, "world_transform"); r->view_transform = glGetUniformLocation(r->program, "view_transform"); r->texture = glGetUniformLocation(r->program, "tex"); r->local_transform = glGetUniformLocation(r->program, "local_transform"); @@ -729,7 +728,7 @@ static void render_shadow_map(struct RE_plugin *plugin, mat4 light_space_transfo } else { glUniform1i(r->shadow.has_bones, GL_FALSE); } - glUniformMatrix4fv(r->shadow.world_transform, 1, GL_FALSE, inst->local_transform[0]); + glUniformMatrix4fv(r->shadow.local_transform, 1, GL_FALSE, inst->local_transform[0]); for (int j = 0; j < model->nr_meshes; j++) { struct mesh *mesh = &model->meshes[j]; if (mesh->flags & MESH_NOMAKESHADOW) @@ -975,7 +974,7 @@ struct height_detector *RE_renderer_create_height_detector(struct RE_renderer *r glViewport(0, 0, SHADOW_WIDTH, SHADOW_HEIGHT); glClear(GL_DEPTH_BUFFER_BIT); glUseProgram(r->shadow.program); - glUniformMatrix4fv(r->shadow.world_transform, 1, GL_FALSE, view_matrix[0]); + glUniformMatrix4fv(r->shadow.local_transform, 1, GL_FALSE, view_matrix[0]); glUniformMatrix4fv(r->shadow.view_transform, 1, GL_FALSE, proj_matrix[0]); glUniform1i(r->shadow.has_bones, GL_FALSE);