Testing Voxel Light Sampling
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
0:35Demo the current test state of our lighting sampling, planning to stuff predictable values into our light probes
🏃
0:35Demo the current test state of our lighting sampling, planning to stuff predictable values into our light probes
🏃
0:35Demo the current test state of our lighting sampling, planning to stuff predictable values into our light probes
🏃
5:05Split out and explain our lighting equation in CompileZBiasProgram()
5:05Split out and explain our lighting equation in CompileZBiasProgram()
5:05Split out and explain our lighting equation in CompileZBiasProgram()
10:40Does anyone know if Milton has been fixed
🗩
10:40Does anyone know if Milton has been fixed
🗩
10:40Does anyone know if Milton has been fixed
🗩
10:51Light Occlusion via Normal
🖌
10:51Light Occlusion via Normal
🖌
10:51Light Occlusion via Normal
🖌
12:31Bug with light being transmitted through surfaces
🖌
12:31Bug with light being transmitted through surfaces
🖌
12:31Bug with light being transmitted through surfaces
🖌
16:45Split out the light direction coefficient of our lighting equation, used to prevent light transmission through the backs of surfaces
16:45Split out the light direction coefficient of our lighting equation, used to prevent light transmission through the backs of surfaces
16:45Split out the light direction coefficient of our lighting equation, used to prevent light transmission through the backs of surfaces
19:34Cosine falloff light collection at angles
🖌
19:34Cosine falloff light collection at angles
🖌
19:34Cosine falloff light collection at angles
🖌
22:33Radiating light at angles
🖌
22:33Radiating light at angles
🖌
22:33Radiating light at angles
🖌
25:01Research "Phong Lighting and Specular Highlights"1
📖
25:01Research "Phong Lighting and Specular Highlights"1
📖
25:01Research "Phong Lighting and Specular Highlights"1
📖
28:34Determine to look into light emittance at angles
🗩
28:34Determine to look into light emittance at angles
🗩
28:34Determine to look into light emittance at angles
🗩
29:46Make our lighting equation ignore light obscured by surfaces
29:46Make our lighting equation ignore light obscured by surfaces
29:46Make our lighting equation ignore light obscured by surfaces
31:38See our possibly more correct lighting
🏃
31:38See our possibly more correct lighting
🏃
31:38See our possibly more correct lighting
🏃
33:13The problem sampling from a light probe perpendicular to the surface
🖌
33:13The problem sampling from a light probe perpendicular to the surface
🖌
33:13The problem sampling from a light probe perpendicular to the surface
🖌
34:50Light Probe Spreads
🖌
34:50Light Probe Spreads
🖌
34:50Light Probe Spreads
🖌
36:06Let our lighting equation in gather some light from perpendicular sources
36:06Let our lighting equation in gather some light from perpendicular sources
36:06Let our lighting equation in gather some light from perpendicular sources
36:38See our more lit world
🏃
36:38See our more lit world
🏃
36:38See our more lit world
🏃
37:21Spread our light sampling by 45°
37:21Spread our light sampling by 45°
37:21Spread our light sampling by 45°
38:47Light Direction Coefficient Spread
🖌
38:47Light Direction Coefficient Spread
🖌
38:47Light Direction Coefficient Spread
🖌
42:11Scale our spread light to the range 0 to 1
42:11Scale our spread light to the range 0 to 1
42:11Scale our spread light to the range 0 to 1
42:33Consider our spread light sampling to be sane enough for now
🏃
42:33Consider our spread light sampling to be sane enough for now
🏃
42:33Consider our spread light sampling to be sane enough for now
🏃
43:03Factor diffuse light into our lighting equation
43:03Factor diffuse light into our lighting equation
43:03Factor diffuse light into our lighting equation
46:13Check out our diffuse and reflective lighting
🏃
46:13Check out our diffuse and reflective lighting
🏃
46:13Check out our diffuse and reflective lighting
🏃
46:49Blank out the Down light in EndLightingComputation()
46:49Blank out the Down light in EndLightingComputation()
46:49Blank out the Down light in EndLightingComputation()
47:27Check out our diffuse and reflective lighting
🏃
47:27Check out our diffuse and reflective lighting
🏃
47:27Check out our diffuse and reflective lighting
🏃
48:13Material reflectance
🗩
48:13Material reflectance
🗩
48:13Material reflectance
🗩
50:44Introduce a specular–diffuse coefficient in our lighting equation
50:44Introduce a specular–diffuse coefficient in our lighting equation
50:44Introduce a specular–diffuse coefficient in our lighting equation
52:03Check out our 50/50 reflectance
🏃
52:03Check out our 50/50 reflectance
🏃
52:03Check out our 50/50 reflectance
🏃
52:15Make our materials perfectly specular
52:15Make our materials perfectly specular
52:15Make our materials perfectly specular
52:27Check out our specular reflectance
🏃
52:27Check out our specular reflectance
🏃
52:27Check out our specular reflectance
🏃
52:41Make our materials pure diffuse
52:41Make our materials pure diffuse
52:41Make our materials pure diffuse
52:53Check out our diffuse reflectance
🏃
52:53Check out our diffuse reflectance
🏃
52:53Check out our diffuse reflectance
🏃
53:01Leave our surface materials as 50/50 specular–diffuse
53:01Leave our surface materials as 50/50 specular–diffuse
53:01Leave our surface materials as 50/50 specular–diffuse
53:48Determine to stuff predictable values into our light probes
🗩
53:48Determine to stuff predictable values into our light probes
🗩
53:48Determine to stuff predictable values into our light probes
🗩
54:15Make our Up light white in EndLightingComputation()
54:15Make our Up light white in EndLightingComputation()
54:15Make our Up light white in EndLightingComputation()
54:29Check out our plain lit scene
🏃
54:29Check out our plain lit scene
🏃
54:29Check out our plain lit scene
🏃
55:40Let OpenGLEndFrame() continue to send lighting to the GPU
55:40Let OpenGLEndFrame() continue to send lighting to the GPU
55:40Let OpenGLEndFrame() continue to send lighting to the GPU
56:21Briefly traverse our lit world
🏃
56:21Briefly traverse our lit world
🏃
56:21Briefly traverse our lit world
🏃
56:41Prepare EndLightingComputation() to handle distant light sources, of varying intensities
56:41Prepare EndLightingComputation() to handle distant light sources, of varying intensities
56:41Prepare EndLightingComputation() to handle distant light sources, of varying intensities
1:05:45See our brightly lit world
🏃
1:05:45See our brightly lit world
🏃
1:05:45See our brightly lit world
🏃
1:05:57Factor in the light intensity in EndLightingComputation()
1:05:57Factor in the light intensity in EndLightingComputation()
1:05:57Factor in the light intensity in EndLightingComputation()
1:07:25See our still brightly lit world
🏃
1:07:25See our still brightly lit world
🏃
1:07:25See our still brightly lit world
🏃
1:07:36Scrutinise our light falloff, and increase our light ratio coefficient from 0.5 to 3
1:07:36Scrutinise our light falloff, and increase our light ratio coefficient from 0.5 to 3
1:07:36Scrutinise our light falloff, and increase our light ratio coefficient from 0.5 to 3
1:08:24Check out our distance-based lighting, light a spotlight
🏃
1:08:24Check out our distance-based lighting, light a spotlight
🏃
1:08:24Check out our distance-based lighting, light a spotlight
🏃
1:09:27Enable OpenGLInit() to apply linear blending
1:09:27Enable OpenGLInit() to apply linear blending
1:09:27Enable OpenGLInit() to apply linear blending
1:09:52Check out our more smooth-faded lighting
🏃
1:09:52Check out our more smooth-faded lighting
🏃
1:09:52Check out our more smooth-faded lighting
🏃
1:11:48Prepare EndLightingComputation() to handle moving light sources
1:11:48Prepare EndLightingComputation() to handle moving light sources
1:11:48Prepare EndLightingComputation() to handle moving light sources
1:13:48See our spotlight jump between camera positions
🏃
1:13:48See our spotlight jump between camera positions
🏃
1:13:48See our spotlight jump between camera positions
🏃
1:14:27Make EndLightingComputation() lock the light source to player's position, augmenting lighting_solution with a DebugLightP
1:14:27Make EndLightingComputation() lock the light source to player's position, augmenting lighting_solution with a DebugLightP
1:14:27Make EndLightingComputation() lock the light source to player's position, augmenting lighting_solution with a DebugLightP
1:16:03Check out our moving spotlight, lamenting the hard-line artifacts where the light falls to black
🏃
1:16:03Check out our moving spotlight, lamenting the hard-line artifacts where the light falls to black
🏃
1:16:03Check out our moving spotlight, lamenting the hard-line artifacts where the light falls to black
🏃
1:18:54Calculating a smoother falloff function2
📖
1:18:54Calculating a smoother falloff function2
📖
1:18:54Calculating a smoother falloff function2
📖
1:21:21Produce a smoother falloff in EndLightingComputation()
1:21:21Produce a smoother falloff in EndLightingComputation()
1:21:21Produce a smoother falloff in EndLightingComputation()
1:22:01Check out our spotlight's smoother falloff
🏃
1:22:01Check out our spotlight's smoother falloff
🏃
1:22:01Check out our spotlight's smoother falloff
🏃
1:22:15Try to further smooth our falloff in EndLightingComputation()
1:22:15Try to further smooth our falloff in EndLightingComputation()
1:22:15Try to further smooth our falloff in EndLightingComputation()
1:22:28Find that our falloff is less smooth
🏃
1:22:28Find that our falloff is less smooth
🏃
1:22:28Find that our falloff is less smooth
🏃
1:22:48Try producing a harsher falloff in EndLightingComputation()
1:22:48Try producing a harsher falloff in EndLightingComputation()
1:22:48Try producing a harsher falloff in EndLightingComputation()
1:23:26Check out our blocky falloff
🏃
1:23:26Check out our blocky falloff
🏃
1:23:26Check out our blocky falloff
🏃
1:23:38Reduce the light intensity from 0.1 to 0.025 of the max in EndLightingComputation()
1:23:38Reduce the light intensity from 0.1 to 0.025 of the max in EndLightingComputation()
1:23:38Reduce the light intensity from 0.1 to 0.025 of the max in EndLightingComputation()
1:23:45Check out our less intense light
🏃
1:23:45Check out our less intense light
🏃
1:23:45Check out our less intense light
🏃
1:23:57Revert to linear falloff, with the lower intensity in EndLightingComputation()
1:23:57Revert to linear falloff, with the lower intensity in EndLightingComputation()
1:23:57Revert to linear falloff, with the lower intensity in EndLightingComputation()
1:24:04Check out our linear falloff, and lower intensity spotlight
🏃
1:24:04Check out our linear falloff, and lower intensity spotlight
🏃
1:24:04Check out our linear falloff, and lower intensity spotlight
🏃
1:24:51Consider how to proceed with our lighting
🗩
1:24:51Consider how to proceed with our lighting
🗩
1:24:51Consider how to proceed with our lighting
🗩
1:27:01Consider our falloff edge artifact to not need solving
🏃
1:27:01Consider our falloff edge artifact to not need solving
🏃
1:27:01Consider our falloff edge artifact to not need solving
🏃
1:29:09Make EndLightingComputation() collect appropriate amounts of light from the six directions
1:29:09Make EndLightingComputation() collect appropriate amounts of light from the six directions
1:29:09Make EndLightingComputation() collect appropriate amounts of light from the six directions
1:34:56See our unlit world
🏃
1:34:56See our unlit world
🏃
1:34:56See our unlit world
🏃
1:35:02Temporarily hard set the UpA to 1.0 in EndLightingComputation()
1:35:02Temporarily hard set the UpA to 1.0 in EndLightingComputation()
1:35:02Temporarily hard set the UpA to 1.0 in EndLightingComputation()
1:35:50See our still until world
🏃
1:35:50See our still until world
🏃
1:35:50See our still until world
🏃
1:35:53Fix EndLightingComputation() to multiply our light colours by 255
1:35:53Fix EndLightingComputation() to multiply our light colours by 255
1:35:53Fix EndLightingComputation() to multiply our light colours by 255
1:36:16Check out our brightly lit world
🏃
1:36:16Check out our brightly lit world
🏃
1:36:16Check out our brightly lit world
🏃
1:36:19Make EndLightingComputation() correctly normalise the inverse total light
1:36:19Make EndLightingComputation() correctly normalise the inverse total light
1:36:19Make EndLightingComputation() correctly normalise the inverse total light
1:36:55Check out our directionally lit world, with the sprites incorrectly lit
🏃
1:36:55Check out our directionally lit world, with the sprites incorrectly lit
🏃
1:36:55Check out our directionally lit world, with the sprites incorrectly lit
🏃
1:39:27Adjust the ground cover's normal in FillUnpackedEntity()
1:39:27Adjust the ground cover's normal in FillUnpackedEntity()
1:39:27Adjust the ground cover's normal in FillUnpackedEntity()
1:40:51Check out our directionally lit ground cover
🏃
1:40:51Check out our directionally lit ground cover
🏃
1:40:51Check out our directionally lit ground cover
🏃
1:41:17Further adjust the ground cover's normal in FillUnpackedEntity()
1:41:17Further adjust the ground cover's normal in FillUnpackedEntity()
1:41:17Further adjust the ground cover's normal in FillUnpackedEntity()
1:41:35Check out our directionally lit ground cover and monstar sprite
🏃
1:41:35Check out our directionally lit ground cover and monstar sprite
🏃
1:41:35Check out our directionally lit ground cover and monstar sprite
🏃
1:42:20Q&A
🗩
1:42:20Q&A
🗩
1:42:20Q&A
🗩
1:44:18devsigner Q: Could you give sort of a brief high-level explanation of how the lighting works?
🗪
1:44:18devsigner Q: Could you give sort of a brief high-level explanation of how the lighting works?
🗪
1:44:18devsigner Q: Could you give sort of a brief high-level explanation of how the lighting works?
🗪
1:44:40somebody_took_my_name Q: Are the cube artifacts a result of the view vector reflection instead of the light vector reflections?
🗪
1:44:40somebody_took_my_name Q: Are the cube artifacts a result of the view vector reflection instead of the light vector reflections?
🗪
1:44:40somebody_took_my_name Q: Are the cube artifacts a result of the view vector reflection instead of the light vector reflections?
🗪
1:45:03Make our materials pure diffuse in CompileZBiasProgram()
1:45:03Make our materials pure diffuse in CompileZBiasProgram()
1:45:03Make our materials pure diffuse in CompileZBiasProgram()
1:45:27Continue to see our spotlight falloff edge artifact
🏃
1:45:27Continue to see our spotlight falloff edge artifact
🏃
1:45:27Continue to see our spotlight falloff edge artifact
🏃
1:45:40Consider our voxel trilinear interpolation to be the problem
🗩
1:45:40Consider our voxel trilinear interpolation to be the problem
🗩
1:45:40Consider our voxel trilinear interpolation to be the problem
🗩
1:47:58Lighting
🖌
1:47:58Lighting
🖌
1:47:58Lighting
🖌
1:48:57Lighting at Startup: 1) Light Probe Distribution
🖌
1:48:57Lighting at Startup: 1) Light Probe Distribution
🖌
1:48:57Lighting at Startup: 1) Light Probe Distribution
🖌
1:49:55Lighting during Run-time: 2) Light Probe Table Index Assignment
🖌
1:49:55Lighting during Run-time: 2) Light Probe Table Index Assignment
🖌
1:49:55Lighting during Run-time: 2) Light Probe Table Index Assignment
🖌
1:53:41Lighting during Run-time: 3) Light Injection
🖌
1:53:41Lighting during Run-time: 3) Light Injection
🖌
1:53:41Lighting during Run-time: 3) Light Injection
🖌
1:54:45Lighting during Run-time: 4) Light Transmission
🖌
1:54:45Lighting during Run-time: 4) Light Transmission
🖌
1:54:45Lighting during Run-time: 4) Light Transmission
🖌
1:55:21Lighting during Run-time: 5) Smoothing (Hysteresis)
🖌
1:55:21Lighting during Run-time: 5) Smoothing (Hysteresis)
🖌
1:55:21Lighting during Run-time: 5) Smoothing (Hysteresis)
🖌
1:57:00Lighting on the GPU: 6) Voxelisation of Light Probes
🖌
1:57:00Lighting on the GPU: 6) Voxelisation of Light Probes
🖌
1:57:00Lighting on the GPU: 6) Voxelisation of Light Probes
🖌
1:58:59culdevu Q: (Responding to why there's not two cosine terms) Two things: The BRDF is defined to be the derivative of the outgoing radiance with respect the irradiance, so whatever extra terms you think you need are already folded into the BRDF. Also, remember that the next bounce of light will have another cosine, so the other cosine is accounted for. Does that clear it up, or am I misunderstanding?
🗪
1:58:59culdevu Q: (Responding to why there's not two cosine terms) Two things: The BRDF is defined to be the derivative of the outgoing radiance with respect the irradiance, so whatever extra terms you think you need are already folded into the BRDF. Also, remember that the next bounce of light will have another cosine, so the other cosine is accounted for. Does that clear it up, or am I misunderstanding?
🗪
1:58:59culdevu Q: (Responding to why there's not two cosine terms) Two things: The BRDF is defined to be the derivative of the outgoing radiance with respect the irradiance, so whatever extra terms you think you need are already folded into the BRDF. Also, remember that the next bounce of light will have another cosine, so the other cosine is accounted for. Does that clear it up, or am I misunderstanding?
🗪
1:59:540lpbm Q: Regarding Milton, aren't you using an "unofficial" version that has the grid tool patched in? If so, maybe switch back to the official version
🗪
1:59:540lpbm Q: Regarding Milton, aren't you using an "unofficial" version that has the grid tool patched in? If so, maybe switch back to the official version
🗪
1:59:540lpbm Q: Regarding Milton, aren't you using an "unofficial" version that has the grid tool patched in? If so, maybe switch back to the official version
🗪
2:01:24Wrap it up, with homework to figure out better, non-trilinear light probe sampling
🗩
2:01:24Wrap it up, with homework to figure out better, non-trilinear light probe sampling
🗩
2:01:24Wrap it up, with homework to figure out better, non-trilinear light probe sampling
🗩