From ff121e6d94290d0fd72c7013a8fa815845ff3a5a Mon Sep 17 00:00:00 2001 From: korenkonder Date: Mon, 13 Feb 2023 00:21:09 +0300 Subject: [PATCH] Fix SSS --- src/CRE/draw_object.cpp | 2 +- src/CRE/render_manager.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/CRE/draw_object.cpp b/src/CRE/draw_object.cpp index 4723e5a5..bdccf780 100644 --- a/src/CRE/draw_object.cpp +++ b/src/CRE/draw_object.cpp @@ -224,7 +224,7 @@ namespace mdl { uniform_value[U37] = 1; } else { - vec4& sss_param = rctx->render_manager.sss_data.param; + const vec4& sss_param = rctx->render_manager.sss_data.param; rctx->obj_batch.g_sss_param = { sss_param.x, sss_param.y, sss_param.z, 0.5f }; uniform_value[U37] = 0; } diff --git a/src/CRE/render_manager.cpp b/src/CRE/render_manager.cpp index a47f0566..04b31212 100644 --- a/src/CRE/render_manager.cpp +++ b/src/CRE/render_manager.cpp @@ -1214,7 +1214,15 @@ static void draw_pass_sss_filter(render_context* rctx, sss_data* a1) { if (v31 < 0.25f) v31 = 0.25f; float_t v32 = v31 * v29; + float_t v33 = 0.6f; float_t v34 = 1.0f / clamp_def(v32, 0.25f, 100.0f); + if (v34 < 0.145) { + float_t v36 = v34 - 0.02f; + if (v34 < 0.0f) + v36 = 0.0f; + v33 = (v36 * 8.0f) * 0.6f; + } + rctx->obj_batch.g_sss_param = { v33, 0.0f, 0.0f, 0.0f }; gl_state_active_texture(0); if (a1->npr_contour) {