Fixed NPR not applying properly

This commit is contained in:
korenkonder
2025-05-29 21:17:11 +03:00
parent 50217a9dab
commit dc49613f92
3 changed files with 12 additions and 1 deletions
+6
View File
@@ -612,6 +612,12 @@ void render_data_context::set_glitter_render_data_state() {
state.bind_uniform_buffer_base(1, data.buffer_scene);
}
void render_data_context::set_npr(rndr::RenderManager* render_manager) {
shader_flags.arr[U_NPR] = 0;
if (render_manager->npr_param == 1)
shader_flags.arr[U_NPR] = 1;
}
void render_data_context::set_render_data_state() {
data.set_state(state);
}
+1
View File
@@ -452,6 +452,7 @@ struct render_data_context {
void set_batch_texcoord_transforms(const mat4 mats[2]);
void set_batch_worlds(const mat4& mat);
void set_glitter_render_data_state();
void set_npr(rndr::RenderManager* render_manager);
void set_render_data_state();
void set_scene_fog_params(const render_data_context::fog_params& value);
void set_scene_framebuffer_size(const int32_t width, const int32_t height,
+5 -1
View File
@@ -583,6 +583,7 @@ namespace rndr {
}
draw_pass_sss_filter(rend_data_ctx, sss);
rend_data_ctx.set_npr(this);
reflect_draw = false;
rend_data_ctx.state.end_event();
}
@@ -669,6 +670,7 @@ namespace rndr {
}
draw_pass_sss_filter(rend_data_ctx, sss);
rend_data_ctx.set_npr(this);
rend_data_ctx.state.bind_framebuffer(0);
rend_data_ctx.state.end_event();
}
@@ -918,6 +920,8 @@ namespace rndr {
sss_data_get()->set_texture(rend_data_ctx.state, 1);
rend_data_ctx.set_npr(this);
rend_data_ctx.state.bind_sampler(14, rctx->render_samplers[0]);
rend_data_ctx.state.bind_sampler(15, rctx->render_samplers[0]);
rend_data_ctx.state.bind_sampler(16, rctx->render_samplers[0]);
@@ -2437,7 +2441,7 @@ static void lighting_set(render_data_context& rend_data_ctx, light_set_id set_id
float_t* (FASTCALL * face_data_get)() = (float_t * (FASTCALL*)())0x00000001403D8310;
float_t v27 = face_data_get()[0];
float_t v28 = (float_t)(1.0 - exp(v27 * -0.44999999)) * 2.0f;
float_t v28 = (1.0f - expf(v27 * -0.45f)) * 2.0f;
v27 = max_def(v27, 0.0f);
vec4 light_face_diff = { v28 * 0.1f, v27 * 0.06f, 1.0f, 1.0f };