Eevee-Next: World Reflective Light #108149

Merged
Jeroen Bakker merged 33 commits from Jeroen-Bakker/blender:eevee-next-world-shader into main 2023-06-29 15:25:04 +02:00

33 Commits

Author SHA1 Message Date
Jeroen Bakker a9f1372ddd Merge branch 'main' into eevee-next-world-shader 2023-06-29 15:14:26 +02:00
Jeroen Bakker 8835017422 Solved review comments. 2023-06-29 15:10:26 +02:00
Jeroen Bakker e2ca67fe67 Remove obsolete code 2023-06-29 13:54:22 +02:00
Jeroen Bakker 3e099329c3 Remove inaccurate comments 2023-06-29 13:53:04 +02:00
Jeroen Bakker 7bd30acde7 Remove obsolete code 2023-06-29 13:50:22 +02:00
Jeroen Bakker f8dd84911f Remove obsolete code 2023-06-29 13:43:32 +02:00
Jeroen Bakker 1845470a72 Introduce capture view and render world probe 2023-06-29 13:31:30 +02:00
Jeroen Bakker 00fda3ecda Introducing capture view 2023-06-29 12:59:11 +02:00
Jeroen Bakker c7e6778f23 Change casing of enum types and const attributes 2023-06-29 11:55:47 +02:00
Jeroen Bakker ca0e3110ad Merge branch 'main' into eevee-next-world-shader 2023-06-29 11:44:07 +02:00
Jeroen Bakker 92a71de0cb Add comments about dummy textures 2023-06-29 11:21:25 +02:00
Jeroen Bakker b89e6ccd5b Remove usage of GPU_TEXTURE_USAGE_MEMORYLESS 2023-06-29 11:18:17 +02:00
Jeroen Bakker 72d81fe6a8 Use 2d randomizer and clamp upto 4x4 lod texture. 2023-06-29 10:05:15 +02:00
Jeroen Bakker ebb079197a Updated comments 2023-06-29 08:55:40 +02:00
Jeroen Bakker 8236179f57 LOD selection 2023-06-29 08:50:02 +02:00
Jeroen Bakker da74608a1b Merge branch 'main' into eevee-next-world-shader 2023-06-29 07:34:10 +02:00
Jeroen Bakker 71096a7e62 Sampling reflective light. 2023-06-27 16:12:04 +02:00
Jeroen Bakker 38e9938fac Add ggx sampling to reflection probe evaluation. 2023-06-27 14:39:59 +02:00
Jeroen Bakker 8d046bcee2 Merge branch 'main' into eevee-next-world-shader 2023-06-27 12:27:55 +02:00
Jeroen Bakker dc41553162 Merge branch 'main' into eevee-next-world-shader 2023-06-27 07:46:23 +02:00
Jeroen Bakker a72e1430b2 Merge branch 'main' into eevee-next-world-shader 2023-06-26 07:33:42 +02:00
Jeroen Bakker d1f87e783c Merge branch 'main' into eevee-next-world-shader 2023-06-23 14:48:45 +02:00
Jeroen Bakker 9fc915ee67 Add all missing texture/image bindings. 2023-06-19 09:38:01 +02:00
Jeroen Bakker 9463720cff Merge branch 'main' into eevee-next-world-shader 2023-06-19 09:28:00 +02:00
Jeroen Bakker dd7948de9d Attach missing render buffers 2023-06-19 09:27:15 +02:00
Jeroen Bakker 845406721f Make format 2023-06-16 07:59:44 +02:00
Jeroen Bakker 1657c577f9 Merge branch 'main' into eevee-next-world-shader 2023-06-16 07:59:05 +02:00
Jeroen Bakker 2a2401dc0a Merge branch 'main' into eevee-next-world-shader 2023-06-01 08:53:56 +02:00
Jeroen Bakker a58620c766 Some small cleanups and code comments. 2023-06-01 08:45:44 +02:00
Jeroen Bakker 48dacdabb8 Skip mipmap generation when world isn't changed. 2023-06-01 08:25:24 +02:00
Jeroen Bakker 95771741ae Use dummy textures when drawing world reflection probe. 2023-06-01 08:06:11 +02:00
Jeroen Bakker d58847b798 Don't apply film transparecy to world probe. 2023-05-30 08:13:15 +02:00
Jeroen Bakker e3608d689d Squashed commit of the following:
commit f6b871b57a45710b550314b29b9efe75454bddde
Merge: f8e24de1764 ad6fa96041
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Fri May 26 08:41:34 2023 +0200

    Merge branch 'main' into eevee-next-world-shader

commit f8e24de1764691d9776ed9e6df9378e81aaaaee9
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Fri May 26 08:30:28 2023 +0200

    Fix cubemap array.

commit 27e98ea4d0b96ec6e3bf98943d0ca961fb7278c5
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Thu May 25 18:03:39 2023 +0200

    Mark initial world dirty.

commit fb7c5cadf25c58185ab0c29d25792f5d74509028
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Thu May 25 17:56:58 2023 +0200

    Use same reflection as eevee-legacy

commit 773c58ba3caf38b90f6235dfafefb9ddffc378d5
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Thu May 25 15:24:33 2023 +0200

    Incorrect merge.

commit 6e6281a8456970134f2ab2b55dc06baf40029334
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Thu May 25 15:23:52 2023 +0200

    Revert "Merge branch 'eevee-next-irradiance-cache' into eevee-next-world-shader"

    This reverts commit 272eb1da8243ca5030a69b9a034f6879e56f2017, reversing
    changes made to d09a8d09e1028fa9d96da4956715368f4a102be4.

commit 7dc261508a6cb76e49b7f3d201b6bd52879f6c8c
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Thu May 25 15:16:22 2023 +0200

    Fixed many small issues.

commit 9ad112740dddaa1848fffa66b3255d35fc8d7c54
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Thu May 25 11:08:03 2023 +0200

    Remove flags structure.

commit e243f56f207a253a4a21a03e50769e573cb10ac1
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Thu May 25 10:12:16 2023 +0200

    Fix compilation issue

commit 272eb1da8243ca5030a69b9a034f6879e56f2017
Merge: d09a8d09e10 4ad77fcc74
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Thu May 25 10:12:06 2023 +0200

    Merge branch 'eevee-next-irradiance-cache' into eevee-next-world-shader

commit 4ad77fcc74
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Wed May 24 22:51:44 2023 +0200

    EEVEE-Next: Add progress to irradiance bake

commit d09a8d09e1028fa9d96da4956715368f4a102be4
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Tue May 23 14:28:39 2023 +0200

    Removed comments.

commit 94d4d77936347c4c97282c3cbef65585f2cd9cb7
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Tue May 23 14:19:23 2023 +0200

    Rendering of cubemap.

commit fc91ed10a9
Merge: 487ab2073b a9beb62449
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Tue May 23 12:31:50 2023 +0200

    Merge branch 'main' into eevee-next-irradiance-cache

commit cb2dd516503afbb9eacdfc3f3005c335374c518d
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Tue May 23 11:49:20 2023 +0200

    Initial world probe pipeline.

commit 2167d5c32eb23b29bb0132c5da96478fc3eec9d9
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Tue May 23 11:32:29 2023 +0200

    Renames and reorganizing code according to code review.

commit 7d1ec9cfd49a2beb1a54d33d023b700fce811414
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Tue May 23 11:18:24 2023 +0200

    Rename module to eevee_reflection_probes

commit 01382ca4eb60742ebabe56f40143ffbd1242215e
Merge: 3e2cd9ab68a 4997748e5e
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Tue May 23 11:15:07 2023 +0200

    Merge branch 'main' into eevee-next-world-shader

commit 3e2cd9ab68a5a316d07628a2801941f0523fc2ff
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Tue May 23 09:28:35 2023 +0200

    Research how to use GPUMaterials

commit 1381e4c4171cdf776dbf74b56aee4d08a5261170
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Mon May 22 16:00:59 2023 +0200

    Add initial CubemapsModule.

commit 45d5339f3ac711ebf7f7eaeed1168a0561e082a3
Merge: 1ab265f535 2164515fab
Author: Jeroen Bakker <jeroen@blender.org>
Date:   Mon May 22 13:00:02 2023 +0200

    Merge branch 'main' into eevee-next-world-shader

commit 487ab2073b
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun May 7 16:06:04 2023 +0200

    EEVEE-Next: Irradiance Bake: Avoid asserts on Metal

    This avoid triggering the asserts in place in the Metal
    backend. However it does not work yet.

commit 63a2736e5e
Merge: 12fc600d7f c796cbebef
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Fri May 5 16:18:36 2023 +0200

    Merge branch 'main' into eevee-next-irradiance-cache

commit 12fc600d7f
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Fri May 5 16:14:11 2023 +0200

    EEVEE-Next: Fix compilation error with Metal

commit 76777bb874
Merge: dcf3392cec 29053c5c02
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Fri May 5 14:54:31 2023 +0200

    Merge branch 'main' into eevee-next-irradiance-cache

commit dcf3392cec
Merge: e6d1a42d12 358ce4f52b
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Apr 30 22:14:57 2023 +0200

    Merge branch 'main' into eevee-next-irradiance-cache

commit e6d1a42d12
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Apr 30 22:06:59 2023 +0200

    EEVEE-Next: Irradiance Cache: Add version control for new parameter

commit 502d9db82c
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Apr 30 22:02:56 2023 +0200

    EEVEE-Next: Irradiance Cache: Add support for cancelling operator

commit 95b8b71908
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Apr 30 21:35:42 2023 +0200

    EEVEE-Next: Irradiance Cache: Reserve slot for world irradiance

    This doesn't implement the world irradiance extraction process,
    but only reserve the storage for it.

commit 12095b8e16
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Apr 30 21:10:55 2023 +0200

    EEVEE-Next: Irradiance Cache: Use scene bounds for surfel cache

    This remove the per irradiance grid approach. The idea is to do the light
    transport only once for each visibility collection and store the
    irradiance for all irradiance grid using this visibility mask.

    This removes the need for the lightprobe near/far clip parameters.

commit 0388f93e79
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Thu Apr 27 19:59:11 2023 +0200

    EEVEE-Next: Irradiance Cache: Store final format

commit f14c7e804c
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sat Apr 22 18:08:27 2023 +0200

    EEVEE-Next: Irradiance Cache: Load irradiance in atlas

    This approach allow streaming of visible grids and
    has a controlled memory budget.

commit 3452d3998c
Merge: d3e761cda3 99f5e60b86
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sat Apr 22 17:37:49 2023 +0200

    Merge branch 'main' into eevee-next-irradiance-cache

commit d3e761cda3
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Apr 16 22:00:56 2023 +0200

    EEVEE-Next: Make Spherical harmonic follow object transform

    This make the baking step output local space spherical harmonics which
    need to be rotated back to world before being evaluated.
    In practice we rotate the evaluated direction.

commit a5310b7720
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Thu Apr 13 20:12:32 2023 +0200

    EEVEE-Next: Adapt code to new irradiance cache

commit b1af33d52a
Merge: 892f7077bc 7e764ec692
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Thu Apr 13 14:12:40 2023 +0200

    Merge branch 'main' into eevee-next-irradiance-cache

commit 892f7077bc
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Thu Apr 13 11:51:59 2023 +0200

    Add new lightprobe cache

    Waiting for the commit to be in master.

commit 2018d6c8c1
Merge: d30ad0e381 c26083b6be
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Thu Apr 13 11:40:30 2023 +0200

    Merge branch 'main' into eevee-next-irradiance-cache

commit d30ad0e381
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Wed Apr 5 12:47:24 2023 +0200

    Cleanup: EEVEE-Next: Avoid implicit type cast

commit a0610ef654
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Apr 2 20:09:20 2023 +0200

    EEVEE-Next: IrradianceBake: Fix shadow tagging & rendering

commit ff5db3a72e
Merge: 74d89d0b24 70970299ef
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Apr 2 16:23:52 2023 +0200

    Merge branch 'eevee-next-irradiance-cache' of projects.blender.org:pragma37/blender into eevee-next-irradiance-cache

commit 74d89d0b24
Merge: 9461d7fc9a 7592ec35d3
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sat Apr 1 17:17:19 2023 +0200

    Merge branch 'main' into eevee-next-irradiance-cache

commit 9461d7fc9a
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sat Apr 1 17:10:23 2023 +0200

    EEVEE-Next: IrradianceBake: Add spherical harmonic encoding

    This adds a separate pass to project the neighbor surfels to the final
    irradiance sample points.

commit 6a6ff3310a
Merge: 85bbf53f84 e652d0002b
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sat Apr 1 13:31:18 2023 +0200

    Merge branch 'main' into eevee-next-irradiance-cache

commit 85bbf53f84
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sat Apr 1 12:02:46 2023 +0200

    EEVEE-Next: Fix wrong irradiance surfel spawning area

commit 14973fabe6
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sat Apr 1 12:00:33 2023 +0200

    BLI: Rotation: Add CartesianBasis `transform_point` and `invert`

commit 34adebcf43
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sat Apr 1 11:54:02 2023 +0200

    GPU: FrameBuffer: Fix empty framebuffer update

    The framebuffer default size was only set during the first bind. This
    is because the `dirty_attachments_ tag` wasn't set and thus the
    framebuffer size was never passed down to the GL.

    Split to `default_size_set()` to not affect other code paths that use
    `size_set()`.

commit 70970299ef
Author: Miguel Pozo <pragma37@gmail.com>
Date:   Wed Mar 29 18:48:24 2023 +0200

    Shadow tag usage for surfels

commit bfeb1a1a8d
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Wed Mar 29 21:01:09 2023 +0200

    EEVEE-Next: IrradianceBake: Fix light bounce

    Light bouncing needs a feedback mechanism. We cannot reuse the same
    radiance for scattering light and accumulating it.

    This splits the final accumulation to `radiance` and bouncing light into
    `incomming_light` and `outgoing_light`.

commit 5dc6535591
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Wed Mar 29 14:52:44 2023 +0200

    EEVEE-Next: IrradianceBake: Fix integration power and inconsistencies

    Now it follows proper conventional notation.

commit a484f43a17
Author: Miguel Pozo <pragma37@gmail.com>
Date:   Tue Mar 28 20:05:15 2023 +0200

    Irradiance Cache: Display Grid

commit 114713c354
Author: Miguel Pozo <pragma37@gmail.com>
Date:   Tue Mar 28 20:00:19 2023 +0200

    Workaround compilation error on Win Nvidia drivers

commit a4c571dc8e
Author: Miguel Pozo <pragma37@gmail.com>
Date:   Tue Mar 28 19:59:35 2023 +0200

    Fix irradiance_grid.world_to_grid

commit 22ccf83700
Author: Miguel Pozo <pragma37@gmail.com>
Date:   Tue Mar 28 17:51:27 2023 +0200

    Cleanup: Fix typo

commit 73f96fe216
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Tue Mar 28 18:12:28 2023 +0200

    EEVEE-Next: IrradianceBake: Implement multi bounce support

    This is still broken as the light seems to never converge.

commit db3028a624
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Tue Mar 28 13:21:04 2023 +0200

    EEVEE-Next: IrradianceBake: Implement light propagation

commit 4e3eb2f7a5
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Tue Mar 28 13:18:22 2023 +0200

    EEVEE-Next: IrradianceBake: Fix crash caused by motion blur

commit 5de76bbbff
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Tue Mar 28 13:17:25 2023 +0200

    EEVEE-Next: IrradianceBake: Fix light-leak

    This fixes the light leaking issue caused by the surfel lists.
    The fix consists in clumping more surfel together when creating the lists
    then rewire the coplanar surfels to more valid surfels up and down the
    same list.

commit da91a2ccb0
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Mar 26 15:39:17 2023 +0200

    EEVEE-Next: IrradianceBake: Fix memleak

commit 75b62a9cfb
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Fri Mar 24 20:46:02 2023 +0100

    EEVEE-Next: IrradianceBake: Add surfel list & sorting

commit 6f6c3afe91
Merge: 0297bde629 9c8cb823a0
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Fri Mar 24 17:45:20 2023 +0100

    Merge branch 'main' into eevee-next-irradiance-cache

commit 0297bde629
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Fri Mar 24 17:34:39 2023 +0100

    EEVEE-Next: Debug: Fix surfel debugging showing background

commit caa0e7edcf
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Fri Mar 24 17:34:20 2023 +0100

    EEVEE-Next: IrradianceBake: Correct surfel placement from grid objects

commit 6669771215
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Thu Mar 23 18:16:22 2023 +0100

    EEVEE-Next: LightBake: Fix few mistakes preventing correct baking & debug

    Was missing manager sync, a buffer read and copy-on-write tagging.

commit e696507aa5
Merge: 38f6de30cf b57b22388c
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Thu Mar 23 16:44:05 2023 +0100

    Merge branch 'main' into eevee-next-irradiance-cache

commit 38f6de30cf
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Thu Mar 23 16:41:48 2023 +0100

    EEVEE-Next: LightCache: Solidify the baking pipeline

commit e6de2fc4f7
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Thu Mar 23 16:39:02 2023 +0100

    EEVEE-Next: GI: Add irradiance sample count option

commit 7b3d4c9e49
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Tue Mar 21 20:15:59 2023 +0100

    EEVEE-Next: LightCache: Add basis of new lightcache version

    This should allow to keep both version working during the period where
    both eevee versions are available.

commit 795bc96cfe
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Tue Mar 21 12:25:17 2023 +0100

    EEVEE-Next: LightCache: Add GL & GPU context functions

commit dddfcd6f7a
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Mon Mar 20 22:07:21 2023 +0100

    EEVEE-Next: LightProbe: Add auto update detection

    This allow probe update and deletion to trigger an auto bake.

commit 52a7125ce3
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Mon Mar 20 19:45:25 2023 +0100

    EEVEE-Next: LightCache: Port basic lightcache structure to C++

    This removes the complexity of resource sharing as it isn't even leveraged
    yet. So keep the code as simple as possible for now.

commit 408c5d7281
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sun Mar 19 21:33:55 2023 +0100

    EEVEE-Next: Irradiance-Cache: Add surfel placement

    Spawning surfels uses a new shader pipeline (called `capture`) to avoid
    the complexity of modifying the deferred or forward pipeline.
    The shaders are light to compile and should only be compiled on bake.

    This is very WIP: the surfel projection box is hardcoded and the 3
    projections are done every frame. The surfels are placed in a regular
    grid because of the raster pipeline used to spawn them.

    Note: While this is really fast, I am not sure this will scale well for
    highly detailed lighting conditions. In the case where the surfel density
    is too low, the aliasing might create really poor result.
2023-05-26 09:22:15 +02:00