Page MenuHome

EEVEE: Add support for GGX Multi-scatter
ClosedPublic

Authored by Clément Foucault (fclem) on Wed, Sep 16, 6:55 PM.

Details

Summary

Based on http://jcgt.org/published/0008/01/03/

This is a simple trick that does *not* have a huge performance impact but
does work pretty well. It just modifies the Fresnel term to account for
the multibounce energy loss (coloration).

However this makes the shader variations count double. To avoid this we
use a uniform and pass the multiscatter use flag inside the sign of f90.
This is a bit hacky but avoids many code duplication.

This uses the simplification proposed by McAuley in
A Journey Through Implementing Multiscattering BRDFs and Area Lights

This does not handle area light differently than the IBL case but that's
already an issue in current implementation.

This is related to T68460.

Diff Detail

Repository
rB Blender

Event Timeline

Clément Foucault (fclem) requested review of this revision.Wed, Sep 16, 6:55 PM
Clément Foucault (fclem) created this revision.

This is low priority but would be a nice addition to have at least one new feature for 2.91 for EEVEE.

Brecht Van Lommel (brecht) added inline comments.
source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl
111–113

The comment should explain what this is doing.

This revision is now accepted and ready to land.Fri, Sep 18, 12:49 PM