godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.12k stars 69 forks source link

Add option for Dichoptic Contrast Enhancement (DiCE) #437

Open RMKD opened 4 years ago

RMKD commented 4 years ago

Describe the project you are working on:

VR development tools

Describe the problem or limitation you are having in your project:

Enhancing realism by leveraging nuances of human perception.

Describe how this feature / enhancement will help you overcome this problem or limitation:

A recent paper examines a technique adjusting contrast differently for each eye to enhance image perceptions (DiCE) https://www.cl.cam.ac.uk/research/rainbow/projects/dice/

They include detailed tests and descriptions of how to balance the tradeoffs between 'contrast gain' and 'binocular rivalry' to maximum effect and released a Unity plugin implementation.

It'd be great to see this incorporated as an option in the ARVRCamera.

Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:

The end result would be a checkbox in the ARVRCamera labeled "Use Dichoptic Contrast Enhancement" - potentially with options to tune parameters.

Describe implementation detail for your proposal (in code), if possible:

See https://assetstore.unity.com/packages/tools/particles-effects/dice-dichoptic-contrast-enhancement-for-vr-and-stereo-displays-155141#content for reference

If this enhancement will not be used often, can it be worked around with a few lines of script?:

Suggested implementation as a toggle.

Is there a reason why this should be core and not an add-on in the asset library?:

It could potentially be implemented as an add-on, but may involve some core pieces of the camera node or rendering process and would be much more convenient now that more ARVR features are being worked in to core.

BastiaanOlij commented 3 years ago

Only saw this a year too late :)

Seeing Godot in the GLES3 driver already does tone mapping it wouldn't be to hard to devise a system to provide slightly different values for each eye.

Not sure I know enough to get the values right though :)