EEVEE: Add tests for untested EEVEE-specific features

Part of #148449

This also adds a way to skip certain parts of the EEVEE_render_test
setup by storing (optional) boolean properties in the scene.

Pull Request: https://projects.blender.org/blender/blender/pulls/149471
This commit is contained in:
Miguel Pozo 2025-11-17 18:07:13 +01:00
parent 72190fcc85
commit d14e71d9b9
79 changed files with 255 additions and 9 deletions

View file

@ -713,6 +713,7 @@ if((WITH_CYCLES OR WITH_GPU_RENDER_TESTS) AND TEST_SRC_DIR_EXISTS)
pointcloud
principled_bsdf
shader
shadow
shadow_catcher
sss
texture

View file

@ -22,6 +22,11 @@ BLOCKLIST_ALL = [
"visibility_particles.blend",
# Temporarily blocked for 4.4 lib upgrade, due to PNG alpha minor difference.
"image_log_osl.blend",
# Tests for EEVEE-only setting (duplicates from the Cycles perspective)
"camera_depth_of_field_jittered.blend",
"shadow_resolution.blend",
"shadow_min_pool_size.blend",
"shadow_resolution_scale.blend"
]
# Blocklist for device + build configuration that does not support OSL at all.

View file

@ -62,6 +62,14 @@ BLOCKLIST_VULKAN = [
"image.blend"
]
BLOCKLIST_INTEL = [
# Blocked due to large differences in dithered surfaces and shadows.
"transparency_blended.blend",
"transparency_dithered.blend",
# Blocked due to differences in shadow edges (to be investigated).
"shadow_resolution_scale.blend"
]
def setup():
import bpy
@ -69,6 +77,9 @@ def setup():
for scene in bpy.data.scenes:
scene.render.engine = 'BLENDER_EEVEE'
skip_hair_setup = scene.get("EEVEE_skip_hair_setup", False)
skip_shadow_setup = scene.get("EEVEE_skip_shadow_setup", False)
# Enable Eevee features
eevee = scene.eevee
@ -84,10 +95,13 @@ def setup():
eevee.light_threshold = 0.001
# Hair
scene.render.hair_type = 'STRIP'
if not skip_hair_setup:
scene.render.hair_type = 'STRIP'
# Shadow
eevee.shadow_step_count = 16
if not skip_shadow_setup:
eevee.shadow_step_count = 16
eevee.shadow_pool_size = '1024'
# Volumetric
eevee.volumetric_tile_size = '2'
@ -114,7 +128,7 @@ def setup():
# Only include the plane in probes
for ob in scene.objects:
if ob.type == 'LIGHT':
if ob.type == 'LIGHT' and not skip_shadow_setup:
# Set maximum resolution
ob.data.shadow_maximum_resolution = 0.0
@ -216,6 +230,10 @@ def main():
elif args.gpu_backend == "vulkan":
blocklist += BLOCKLIST_VULKAN
gpu_vendor = render_report.get_gpu_device_vendor(args.blender)
if gpu_vendor == "INTEL":
blocklist += BLOCKLIST_INTEL
report = EEVEEReport("EEVEE", args.outdir, args.oiiotool, variation=args.gpu_backend, blocklist=blocklist)
if args.gpu_backend == "vulkan":
report.set_compare_engine('eevee', 'opengl')
@ -235,8 +253,8 @@ def main():
# metal shadow and wireframe difference. To be fixed.
report.set_fail_threshold(0.07)
elif test_dir_name.startswith('bsdf'):
# metallic thinfilm tests
report.set_fail_threshold(0.03)
# metallic thinfilm tests and dithered transparency
report.set_fail_threshold(0.045)
elif test_dir_name.startswith('principled_bsdf'):
# principled bsdf transmission test
report.set_fail_threshold(0.02)