From ab4c245a7ebde68cbdd3f4d72a7985e2960e486b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 8 Oct 2025 14:55:14 +0200 Subject: [PATCH] Fix: EEVEE: Lightprobe Volume backfacing toggle is inverted The UI property was changed 7b97bc48d82f5a5bd5370be6db39e79dc9266aae to a negative boolean but the boolean conversion inside EEVEE was not inverted. This mean that since 4.2, the default behavior for Lightprobe volume has been broken / inverted. To make an existing scene bake the same as before, all material needs to have their `BackFace Culling > Light Probe Volume` options inverted. This is done automatically through the versioning code. The only test cases broken are the ones using default materials which do not have their property turned off. Release Notes should contains the compatibility breakage. Pull Request: https://projects.blender.org/blender/blender/pulls/147218 --- source/blender/blenkernel/BKE_blender_version.h | 2 +- source/blender/blenloader/intern/versioning_500.cc | 7 +++++++ source/blender/draw/engines/eevee/eevee_pipeline.cc | 2 +- .../render/light/eevee_renders/ellipse_light_spread.png | 4 ++-- tests/files/render/light/eevee_renders/light_spread.png | 4 ++-- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h index 60c59632517..e1aaa20d465 100644 --- a/source/blender/blenkernel/BKE_blender_version.h +++ b/source/blender/blenkernel/BKE_blender_version.h @@ -27,7 +27,7 @@ /* Blender file format version. */ #define BLENDER_FILE_VERSION BLENDER_VERSION -#define BLENDER_FILE_SUBVERSION 106 +#define BLENDER_FILE_SUBVERSION 107 /* Minimum Blender version that supports reading file written with the current * version. Older Blender versions will test this and cancel loading the file, showing a warning to diff --git a/source/blender/blenloader/intern/versioning_500.cc b/source/blender/blenloader/intern/versioning_500.cc index 3566e7ef21e..6464f59d292 100644 --- a/source/blender/blenloader/intern/versioning_500.cc +++ b/source/blender/blenloader/intern/versioning_500.cc @@ -3958,6 +3958,13 @@ void blo_do_versions_500(FileData *fd, Library * /*lib*/, Main *bmain) FOREACH_NODETREE_END; } + if (!MAIN_VERSION_FILE_ATLEAST(bmain, 500, 107)) { + LISTBASE_FOREACH (Material *, material, &bmain->materials) { + /* The flag was actually interpreted as reversed. */ + material->blend_flag ^= MA_BL_LIGHTPROBE_VOLUME_DOUBLE_SIDED; + } + } + /** * Always bump subversion in BKE_blender_version.h when adding versioning * code here, and wrap it inside a MAIN_VERSION_FILE_ATLEAST check. diff --git a/source/blender/draw/engines/eevee/eevee_pipeline.cc b/source/blender/draw/engines/eevee/eevee_pipeline.cc index f5958f189ad..e547e559f00 100644 --- a/source/blender/draw/engines/eevee/eevee_pipeline.cc +++ b/source/blender/draw/engines/eevee/eevee_pipeline.cc @@ -1540,7 +1540,7 @@ PassMain::Sub *CapturePipeline::surface_material_add(::Material *blender_mat, GP GPUPass *gpupass = GPU_material_get_pass(gpumat); sub_pass.shader_set(GPU_pass_shader_get(gpupass)); sub_pass.push_constant("is_double_sided", - !(blender_mat->blend_flag & MA_BL_LIGHTPROBE_VOLUME_DOUBLE_SIDED)); + bool(blender_mat->blend_flag & MA_BL_LIGHTPROBE_VOLUME_DOUBLE_SIDED)); return &sub_pass; } diff --git a/tests/files/render/light/eevee_renders/ellipse_light_spread.png b/tests/files/render/light/eevee_renders/ellipse_light_spread.png index 9755c3f993f..a2bff8fa0ae 100644 --- a/tests/files/render/light/eevee_renders/ellipse_light_spread.png +++ b/tests/files/render/light/eevee_renders/ellipse_light_spread.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4e0fc933f596ac579544c0fb68a7811e7e0b9be2d71796cfa847307c4954de5 -size 15909 +oid sha256:d05f6b0307cb313dbca41f48034975731fcea8b484533ef968b081da52bb1753 +size 15518 diff --git a/tests/files/render/light/eevee_renders/light_spread.png b/tests/files/render/light/eevee_renders/light_spread.png index 8e777ac9637..f6c7750fa24 100644 --- a/tests/files/render/light/eevee_renders/light_spread.png +++ b/tests/files/render/light/eevee_renders/light_spread.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75c7de958e23853e45d023385acd81bcfdfc4c5e35d791634c283e46200aac64 -size 15798 +oid sha256:ae377e1250477fb67ba61c723db1ee3c057f0d80286f6bdaf7bb8b90d3ef4dc5 +size 15186