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: 487ab2073ba9beb62449
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: 1ab265f5352164515fab
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: 12fc600d7fc796cbebef
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: dcf3392cec29053c5c02
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: e6d1a42d12358ce4f52b
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: d3e761cda399f5e60b86
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: 892f7077bc7e764ec692
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: d30ad0e381c26083b6be
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: 74d89d0b2470970299ef
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: 9461d7fc9a7592ec35d3
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: 85bbf53f84e652d0002b
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: 0297bde6299c8cb823a0
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: 38f6de30cfb57b22388c
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.
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.
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.
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()`.
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`.
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.
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.