diff --git a/src/3d/renderer.c b/src/3d/renderer.c index 4195b06..f4c6018 100644 --- a/src/3d/renderer.c +++ b/src/3d/renderer.c @@ -551,6 +551,26 @@ static void render_skinned_model(struct RE_instance *inst, struct RE_renderer *r render_static_model(inst->shadow_volume_instance, r, phase); } +static void reset_draw_uniforms(struct RE_renderer *r) +{ + glUniform1f(r->alpha_mod, 1.0f); + glUniform3f(r->diffuse_mod, 1.0f, 1.0f, 1.0f); + glUniform3f(r->color_add, 0.0f, 0.0f, 0.0f); + glUniform2f(r->uv_scroll, 0.0f, 0.0f); + glUniform1i(r->has_bones, GL_FALSE); + glUniform1f(r->specular_strength, 0.0f); + glUniform1f(r->specular_shininess, 0.0f); + glUniform1i(r->use_specular_map, GL_FALSE); + glUniform1f(r->rim_exponent, 0.0f); + glUniform3f(r->rim_color, 0.0f, 0.0f, 0.0f); + glUniform1i(r->use_normal_map, GL_FALSE); + glUniform1i(r->use_blend_texture, GL_FALSE); + glUniform1f(r->shadow_darkness, 0.0f); + glUniform1i(r->alpha_mode, ALPHA_BLEND); + glUniform1i(r->fog_type, 0); + glUniform1i(r->diffuse_type, DIFFUSE_NORMAL); +} + static void render_billboard(struct RE_instance *inst, struct RE_renderer *r, mat4 view_mat, enum draw_phase phase) { if (!inst->draw) @@ -576,20 +596,11 @@ static void render_billboard(struct RE_instance *inst, struct RE_renderer *r, ma glm_mat4_pick3(local_transform, normal_transform); glUniform3fv(r->instance_ambient, 1, inst->ambient); - glUniform3f(r->diffuse_mod, 1.f, 1.f, 1.f); - glUniformMatrix4fv(r->local_transform, 1, GL_FALSE, local_transform[0]); glUniformMatrix3fv(r->normal_transform, 1, GL_FALSE, normal_transform[0]); - glUniform1i(r->has_bones, GL_FALSE); + + reset_draw_uniforms(r); glUniform1f(r->alpha_mod, inst->alpha); - glUniform1f(r->specular_strength, 0.0); - glUniform1f(r->specular_shininess, 0.0); - glUniform1i(r->use_specular_map, GL_FALSE); - glUniform1f(r->rim_exponent, 0.0); - glUniform1i(r->diffuse_type, DIFFUSE_NORMAL); - glUniform1i(r->use_normal_map, GL_FALSE); - glUniform1f(r->shadow_darkness, 0.0f); - glUniform1i(r->alpha_mode, ALPHA_BLEND); glUniform1i(r->fog_type, inst->plugin->fog_mode ? inst->plugin->fog_type : 0); switch (inst->draw_type) { case RE_DRAW_TYPE_NORMAL: @@ -825,17 +836,7 @@ static void render_s3de_effect(struct RE_instance *inst, struct RE_renderer *r, RE_instance_update_local_transform(inst); glUniform3fv(r->instance_ambient, 1, inst->ambient); - glUniform3f(r->diffuse_mod, 1.f, 1.f, 1.f); - - glUniform1i(r->has_bones, GL_FALSE); - glUniform1f(r->specular_strength, 0.0); - glUniform1f(r->specular_shininess, 0.0); - glUniform1i(r->use_specular_map, GL_FALSE); - glUniform1f(r->rim_exponent, 0.0); - glUniform1i(r->use_normal_map, GL_FALSE); - glUniform1f(r->shadow_darkness, 0.0f); - glUniform1i(r->alpha_mode, ALPHA_BLEND); - glUniform1i(r->fog_type, 0); + reset_draw_uniforms(r); if (phase == DRAW_TRANSPARENT) glDepthMask(GL_FALSE); @@ -905,16 +906,7 @@ static void render_particle_effect(struct RE_instance *inst, struct RE_renderer return; glUniform3fv(r->instance_ambient, 1, inst->ambient); - glUniform3f(r->diffuse_mod, 1.f, 1.f, 1.f); - - glUniform1i(r->has_bones, GL_FALSE); - glUniform1f(r->specular_strength, 0.0); - glUniform1f(r->specular_shininess, 0.0); - glUniform1i(r->use_specular_map, GL_FALSE); - glUniform1f(r->rim_exponent, 0.0); - glUniform1i(r->use_normal_map, GL_FALSE); - glUniform1f(r->shadow_darkness, 0.0f); - glUniform1i(r->alpha_mode, ALPHA_BLEND); + reset_draw_uniforms(r); glDepthMask(GL_FALSE);