godot: High frame delay causes rendering issues with auto exposure enabled [GLES3]

Godot version: 3.1.alpha 5a03d50

OS/device including version: Windows 10 GPU: NVIDIA GeForce GTX 1070 MQ, driver: 411.63 GPU: Interl UHD Graphics 630

Issue description: When game starts, just as first scene renders, it appears for a brief second frozen, with distorted colors: Flash of color

Steps to reproduce: Unable to reproduce in minimal project. Issue can be observed with demo version of ΔV: Rings of Saturn 0.20.0, available on itch.io - observed with windows builds.

It might be related to loading resources and auto-exposure of WorldEnvironment. Going to work around it by providing blank/black initial scene.

About this issue

  • Original URL
  • State: open
  • Created 6 years ago
  • Comments: 17 (17 by maintainers)

Most upvoted comments

Isolated to this minial project. Took a while since I was stripping down my production code.

It is triggered in my case by:

func _ready():
	OS.window_per_pixel_transparency_enabled = false

It seems to only happen with the GLES3 driver, not GLES2. CC @clayjohn.

@lekoder just installed mentioned update manually, this hasn’t fixed the issue for me, maybe it was due to graphics driver update?

Btw, this auto-exposure issue can be easily reproduced with:

Project Settings > Application > Run > Frame Delay Msec > set to 1000 (one second)

Some things, like changing per pixel transparency, cause rendering engine to freeze for ~0.5-1 second. If it happens on the first frame, it exposes the problem.

This simulates high CPU load and introduces enough delay.

I gave the issue some thought and I have a hypothesis. There are two separate things happening:

  1. The WorldEnvironment Auto Expose starts up with maximum exposition in the first frame and adjusts to actual exposition in subsequent frames. This usually goes unnoticed, however…
  2. Some things, like changing per pixel transparency, cause rendering engine to freeze for ~0.5-1 second. If it happens on the first frame, it exposes the problem.