Skip to content

Image Based Lighting and HDRI Support #4581

@NHodgesVFX

Description

@NHodgesVFX

What problem does this solve or what need does it fill?

Currently, the only way to add a sky would be to add a sphere with a texture applied or add use a plugin of some kind. However at least from what I have found no plugins support proper based image based lighting with HDRI support. This feature should be in bevy and not a plugin because PBR, which is already supported by Bevy, goes hand in hand with IBL. Without IBL PBR still looks fake, IBL dramatically increases the realism of the scene.

What solution would you like?

Proper PBR style IBL with support for a "Sky Light" where you can add 360 degree 32bit .hdr or .exr textures or be dynamically set with a shader. The implementation should be able to work in real-time so its possible to update the texture either from disk or from a shader to simulate things like a day / night cycle or clouds. The HDRI should also be rendered as the background of the scene.

Godot has a implementation that is fast and looks good, I have also included links to the LearnOpenGl article on the subject although i'm not sure that implementation works in real-time.

godotengine/godot#36588
https://www.ppsloan.org/publications/ggx_filtering.pdf
https://learnopengl.com/PBR/IBL/Diffuse-irradiance
https://learnopengl.com/PBR/IBL/Specular-IBL

What alternative(s) have you considered?

Using a sphere with a texture applied but this has the issue that the light will not be cast onto objects and will not be shown in reflections.

Additional context

Bevy's PBR without IBL
image

PBR with IBL From LearnOpenGL
image

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-RenderingDrawing game state to the screenC-FeatureA new feature, making something new possible

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions