From 448898a63466a64f988fc6954f7861ffdfa33e58 Mon Sep 17 00:00:00 2001 From: LeenkxTeam Date: Fri, 14 Mar 2025 17:33:00 +0000 Subject: [PATCH] Update leenkx/blender/lnx/write_data.py --- leenkx/blender/lnx/write_data.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/leenkx/blender/lnx/write_data.py b/leenkx/blender/lnx/write_data.py index 773dbee..77148b8 100644 --- a/leenkx/blender/lnx/write_data.py +++ b/leenkx/blender/lnx/write_data.py @@ -616,13 +616,28 @@ def write_compiledglsl(defs, make_variants): f.write('#define GBUF_IDX_2 2\n') idx_emission += 1 idx_refraction += 1 + + # Special case for WebGL with both TAA and SSRefraction + webgl_with_taa_refr = ('_kha_webgl' in wrd.world_defs and + ('_SSRefraction' in wrd.world_defs or '_VoxelRefract' in wrd.world_defs) and + ('_TAA' in wrd.world_defs or '_SMAA' in wrd.world_defs)) + + if webgl_with_taa_refr: + # WebGL needs refraction to come before emission for correct rendering + if '_SSRefraction' in wrd.world_defs or '_VoxelRefract' in wrd.world_defs: + f.write(f'#define GBUF_IDX_REFRACTION {idx_emission}\n') + idx_emission += 1 + + if '_EmissionShaded' in wrd.world_defs: + f.write(f'#define GBUF_IDX_EMISSION {idx_emission}\n') + else: + # Standard order for all other platforms + if '_EmissionShaded' in wrd.world_defs: + f.write(f'#define GBUF_IDX_EMISSION {idx_emission}\n') + idx_refraction += 1 - if '_EmissionShaded' in wrd.world_defs: - f.write(f'#define GBUF_IDX_EMISSION {idx_emission}\n') - idx_refraction += 1 - - if '_SSRefraction' in wrd.world_defs or '_VoxelRefract' in wrd.world_defs: - f.write(f'#define GBUF_IDX_REFRACTION {idx_refraction}\n') + if '_SSRefraction' in wrd.world_defs or '_VoxelRefract' in wrd.world_defs: + f.write(f'#define GBUF_IDX_REFRACTION {idx_refraction}\n') f.write("""#if defined(HLSL) || defined(METAL) #define _InvY