godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.18k stars 21.21k forks source link

Visual script canvas flicker when panning . . #49472

Open charlesmlamb opened 3 years ago

charlesmlamb commented 3 years ago

Godot version

4.0 dev . .

System information

Windows 10, nVidia 1050 Ti laptop

Issue description

The visual script canvas flickers, when one pan the canvas . . It's a bit annoying, like looking at a strobe light, or so, not THAT bad . . But, over time it will mean, it'll be really annoying to work with visual script, might be same for visual shader graph . . . .

I'm not sure why it's happening, recently got a QLED tv, maybe it has to do with the way the ' pixels ' are weird, in my particular panel . . .

Steps to reproduce

Open a visual script, I set my default editor color to almost 100 %, ie. the color of the entire editor . . When panning in visual script, the canvas flickers when panning, but it looks super-good, when not moving . . .

I'm sort of hoping to save many hours of head-aches, also in the visual shader editor . . . Tried it, it also happens in visual shader graph set-ups . . .

Basically, when panning the ' canvas ' lines flicker, almost like a bad electrical light, it sort of makes it really difficult to 'read' the graphs, and even after 5 minutes, gives me head-aches, working in visual script . . .

Minimal reproduction project

Make a new Godot project, go into Editor settings >> interface >> theme and, set Base color to almost black ( I use 7,7,7 RBG ), and try to pan the script, for any visual script, also visual shaders . . .

Well, not sure it's a bug, just means I get massive head-aches, every time I pan or, so . .

ps. Godot 4 is looking so rad, totally excited . . <3

Calinou commented 3 years ago

This is expected when using an OLED display. When a pixel is fully black, the OLED display will "turn off" the pixel entirely, which makes it possible to reach an infinite contrast rate (as well as save power). However, turning on/off the pixel takes a much longer time than simply changing its color.

To avoid this, you have to make sure every pixel is at least #010101. You will lose the infinite contrast rate and power savings, but it's the price to pay to get good response times. To be fair, I don't think there's a clear winner here – if you're using an OLED-friendly theme, you are likely willing to compromise on response times to get an infinite contrast rate and power savings. Otherwise, you can just use a standard dark theme.

Can you reproduce this with a non-OLED display?

charlesmlamb commented 3 years ago

Ok, it's a QLED, I hear OLED have 'true' dark, or so . . But, it's weird, in QLED, each pixel is made of three dots, one for each R-G-B, it's not like LED, where each pixel is square, or close . .

That said, Godot 4 is looking amazing, was thinking it had to do with visual script being made of 'vector' lines, and not pixels, and the weird dot - configuration in QLED, sort of making it 'flicker' . . .

I wanted OLED, for true black pixels, QLED has some edge lighting, not much . . But OLED cost, 3 - 4 x a QLED, I hear in youtube review, of tv's . . . .

Wait, tested on my XP-PEN drawing screen, I think it's just LED, not QLED, it doesn't happen there . . .

The BUG is, in the t-v :OO <3 I work on tv . .

ps. Got an 8K tv, on sale . . And, in about 1 - 2 months, get new laptop with 3070 nVidia . . So, I'm really looking forward to Godot 4, Vulkan, all the new stuff . . Over-all, Godot 4 nightly builds are, looking A-A-mazing . . :OO

charlesmlamb commented 3 years ago

Ok, thanks for answering, XP-Pen drawing tablet, it's 100 % rock-solid . . Didn't think my NEW 8K (Samsung) t-v could be problem . . I was lucky, to get a dirt good deal, it being on sale, down 50 %, cost less than average 4K so, I GOT AN 8K . . ! <3

Thanks, for some reason my new state-of-art TV is ' buggy ' :(( . . lol

insomniacUNDERSCORElemon commented 3 years ago

@Calinou what about if there was an option to change the colors automatically in cases before panning, such as when holding the spacebar or middle-mouse-button? Allowing power-savings when still and hopefully eliminating flicker.

Assuming there is time to switch the colors over that is, although maybe if enabled you could even force it to happen before panning does, which I'd assume is do-able in a way that still has reasonable-enough response times in this context.

(note: I don't have the hardware to actually see this issue)

Calinou commented 3 years ago

@Calinou what about if there was an option to change the colors automatically in cases before panning, such as when holding the spacebar or middle-mouse-button? Allowing power-savings when still and hopefully eliminating flicker.

Assuming there is time to switch the colors over that is, although maybe if enabled you could even force it to happen before panning does, which I'd assume is do-able in a way that still has reasonable-enough response times in this context.

(note: I don't have the hardware to actually see this issue)

That sounds doable, but it's a lot of work just to cater to displays which are currently uncommon among Godot users. Most OLED displays you can buy right now are either smartphones/tablets or TVs rather than desktop monitors. Some laptops out there have OLED displays, but they're few and far between.