mirror of
https://github.com/blender/blender.git
synced 2025-08-11 23:29:46 +00:00
Tests: Add minimum number of frames tested in EEVEE performance tests
This commit adds a minimum number of frames tested in the EEVEE performance tests (`tests/performance/tests/eevee.py`). This way, test results are more reliable for .blend files with a low number of animation frames. Pull Request: https://projects.blender.org/blender/blender/pulls/141290
This commit is contained in:

committed by
Jeroen Bakker

parent
dc3356a86a
commit
6cf0adc06a
@ -18,6 +18,7 @@ WARMUP_SECONDS = 3
|
|||||||
WARMUP_FRAMES = 10
|
WARMUP_FRAMES = 10
|
||||||
SHADER_FALLBACK_SECONDS = 60
|
SHADER_FALLBACK_SECONDS = 60
|
||||||
RECORD_PLAYBACK_ITER = 3
|
RECORD_PLAYBACK_ITER = 3
|
||||||
|
MIN_NUM_FRAMES_TOTAL = 250
|
||||||
LOG_KEY = "ANIMATION_PERFORMANCE: "
|
LOG_KEY = "ANIMATION_PERFORMANCE: "
|
||||||
|
|
||||||
|
|
||||||
@ -41,6 +42,7 @@ def frame_change_handler(scene):
|
|||||||
global warmup_frame
|
global warmup_frame
|
||||||
global stop_record_time
|
global stop_record_time
|
||||||
global playback_iteration
|
global playback_iteration
|
||||||
|
global num_frames
|
||||||
|
|
||||||
if record_stage == RecordStage.INIT:
|
if record_stage == RecordStage.INIT:
|
||||||
screen = bpy.context.window_manager.windows[0].screen
|
screen = bpy.context.window_manager.windows[0].screen
|
||||||
@ -73,6 +75,7 @@ def frame_change_handler(scene):
|
|||||||
if time.perf_counter() - start_warmup_time > WARMUP_SECONDS and warmup_frame > WARMUP_FRAMES:
|
if time.perf_counter() - start_warmup_time > WARMUP_SECONDS and warmup_frame > WARMUP_FRAMES:
|
||||||
start_record_time = time.perf_counter()
|
start_record_time = time.perf_counter()
|
||||||
playback_iteration = 0
|
playback_iteration = 0
|
||||||
|
num_frames = 0
|
||||||
scene = bpy.context.scene
|
scene = bpy.context.scene
|
||||||
scene.frame_set(scene.frame_start)
|
scene.frame_set(scene.frame_start)
|
||||||
record_stage = RecordStage.RECORD
|
record_stage = RecordStage.RECORD
|
||||||
@ -80,18 +83,18 @@ def frame_change_handler(scene):
|
|||||||
elif record_stage == RecordStage.RECORD:
|
elif record_stage == RecordStage.RECORD:
|
||||||
current_time = time.perf_counter()
|
current_time = time.perf_counter()
|
||||||
scene = bpy.context.scene
|
scene = bpy.context.scene
|
||||||
|
num_frames += 1
|
||||||
if scene.frame_current == scene.frame_end:
|
if scene.frame_current == scene.frame_end:
|
||||||
playback_iteration += 1
|
playback_iteration += 1
|
||||||
|
|
||||||
if playback_iteration >= RECORD_PLAYBACK_ITER:
|
if playback_iteration >= RECORD_PLAYBACK_ITER and num_frames >= MIN_NUM_FRAMES_TOTAL:
|
||||||
stop_record_time = current_time
|
stop_record_time = current_time
|
||||||
record_stage = RecordStage.FINISHED
|
record_stage = RecordStage.FINISHED
|
||||||
|
|
||||||
elif record_stage == RecordStage.FINISHED:
|
elif record_stage == RecordStage.FINISHED:
|
||||||
bpy.ops.screen.animation_cancel()
|
bpy.ops.screen.animation_cancel()
|
||||||
num_frames = RECORD_PLAYBACK_ITER * ((scene.frame_end - scene.frame_start) + 1)
|
elapsed_seconds = stop_record_time - start_record_time
|
||||||
elapse_seconds = stop_record_time - start_record_time
|
avg_frame_time = elapsed_seconds / num_frames
|
||||||
avg_frame_time = elapse_seconds / num_frames
|
|
||||||
fps = 1.0 / avg_frame_time
|
fps = 1.0 / avg_frame_time
|
||||||
print(f"{LOG_KEY}{{'time': {avg_frame_time}, 'fps': {fps} }}")
|
print(f"{LOG_KEY}{{'time': {avg_frame_time}, 'fps': {fps} }}")
|
||||||
bpy.app.handlers.frame_change_post.remove(frame_change_handler)
|
bpy.app.handlers.frame_change_post.remove(frame_change_handler)
|
||||||
|
Reference in New Issue
Block a user