Removing Incorrect Voxel-Voxel Reflections
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
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 and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

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:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
0:51Demo the current state of our grid-based ray cast lighting, noting the occasional feedback
🏃
0:51Demo the current state of our grid-based ray cast lighting, noting the occasional feedback
🏃
0:51Demo the current state of our grid-based ray cast lighting, noting the occasional feedback
🏃
3:30Determine to: 1) visualise lighting energy levels, and 2) interpolate the lighting more diffusely, to avoid the squared artifacting
🏃
3:30Determine to: 1) visualise lighting energy levels, and 2) interpolate the lighting more diffusely, to avoid the squared artifacting
🏃
3:30Determine to: 1) visualise lighting energy levels, and 2) interpolate the lighting more diffusely, to avoid the squared artifacting
🏃
6:41Prevent DebugDrawColorDir() from factoring the Intensity in to the line length
6:41Prevent DebugDrawColorDir() from factoring the Intensity in to the line length
6:41Prevent DebugDrawColorDir() from factoring the Intensity in to the line length
7:22Check out our balled octahedral map DiffuseMap lighting directions
🏃
7:22Check out our balled octahedral map DiffuseMap lighting directions
🏃
7:22Check out our balled octahedral map DiffuseMap lighting directions
🏃
7:37Let DebugDrawColorDir() factor the 0–1 clamped Intensity in to the line length
7:37Let DebugDrawColorDir() factor the 0–1 clamped Intensity in to the line length
7:37Let DebugDrawColorDir() factor the 0–1 clamped Intensity in to the line length
8:15Check out our more tractable octahedral map DiffuseMap lighting directions
🏃
8:15Check out our more tractable octahedral map DiffuseMap lighting directions
🏃
8:15Check out our more tractable octahedral map DiffuseMap lighting directions
🏃
9:31Consider our bounce-lighting to be plausible
🏃
9:31Consider our bounce-lighting to be plausible
🏃
9:31Consider our bounce-lighting to be plausible
🏃
10:39Leave our lighting flicker for later
🏃
10:39Leave our lighting flicker for later
🏃
10:39Leave our lighting flicker for later
🏃
11:38Determine to establish the notion of lighting energy levels
🏃
11:38Determine to establish the notion of lighting energy levels
🏃
11:38Determine to establish the notion of lighting energy levels
🏃
12:55Maintaining Constant Energy
🖌
12:55Maintaining Constant Energy
🖌
12:55Maintaining Constant Energy
🖌
16:13Explain that BuildDiffuseLightMaps() pre-creates incoming lighting energy values
📖
16:13Explain that BuildDiffuseLightMaps() pre-creates incoming lighting energy values
📖
16:13Explain that BuildDiffuseLightMaps() pre-creates incoming lighting energy values
📖
17:18Specular to Diffuse Blend
🖌
17:18Specular to Diffuse Blend
🖌
17:18Specular to Diffuse Blend
🖌
19:39Cosine-falloff Scattering of Photons
🖌
19:39Cosine-falloff Scattering of Photons
🖌
19:39Cosine-falloff Scattering of Photons
🖌
22:21Make BuildDiffuseLightMaps() scatter out only as much light as comes in
22:21Make BuildDiffuseLightMaps() scatter out only as much light as comes in
22:21Make BuildDiffuseLightMaps() scatter out only as much light as comes in
29:54Our world contains a lot less light
🏃
29:54Our world contains a lot less light
🏃
29:54Our world contains a lot less light
🏃
30:15Let GenerateRoom() add lamps
30:15Let GenerateRoom() add lamps
30:15Let GenerateRoom() add lamps
30:44Our lamps don't bounce much light
🏃
30:44Our lamps don't bounce much light
🏃
30:44Our lamps don't bounce much light
🏃
31:13Increase the lamps' light intensity from 2 to 10 in GenerateRoom()
31:13Increase the lamps' light intensity from 2 to 10 in GenerateRoom()
31:13Increase the lamps' light intensity from 2 to 10 in GenerateRoom()
31:26Our lamps bounce more light
🏃
31:26Our lamps bounce more light
🏃
31:26Our lamps bounce more light
🏃
31:38Increase the lamps' light intensity from 10 to 100 in GenerateRoom()
31:38Increase the lamps' light intensity from 10 to 100 in GenerateRoom()
31:38Increase the lamps' light intensity from 10 to 100 in GenerateRoom()
31:57Our world ends up turning red
🏃
31:57Our world ends up turning red
🏃
31:57Our world ends up turning red
🏃
32:09Decrease the lamps' light intensity from 100 to 50 in GenerateRoom()
32:09Decrease the lamps' light intensity from 100 to 50 in GenerateRoom()
32:09Decrease the lamps' light intensity from 100 to 50 in GenerateRoom()
32:23Our light is not propagating stably
🏃
32:23Our light is not propagating stably
🏃
32:23Our light is not propagating stably
🏃
34:16Scrutinise BuildDiffuseLightMaps() for bugs
📖
34:16Scrutinise BuildDiffuseLightMaps() for bugs
📖
34:16Scrutinise BuildDiffuseLightMaps() for bugs
📖
35:21Prevent GridRayCast() from applying the cosine-falloff to ReflectColorFoo
35:21Prevent GridRayCast() from applying the cosine-falloff to ReflectColorFoo
35:21Prevent GridRayCast() from applying the cosine-falloff to ReflectColorFoo
36:02Our light is still not propagating stably
🏃
36:02Our light is still not propagating stably
🏃
36:02Our light is still not propagating stably
🏃
37:11Let GridRayCast() sample the light when our ray also does not hit
37:11Let GridRayCast() sample the light when our ray also does not hit
37:11Let GridRayCast() sample the light when our ray also does not hit
37:49Our light now propagates
🏃
37:49Our light now propagates
🏃
37:49Our light now propagates
🏃
37:59Decrease the lamps' light intensity from 50 to 10 in GenerateRoom()
37:59Decrease the lamps' light intensity from 50 to 10 in GenerateRoom()
37:59Decrease the lamps' light intensity from 50 to 10 in GenerateRoom()
38:15Our light still propagates
🏃
38:15Our light still propagates
🏃
38:15Our light still propagates
🏃
38:23Increase the lamps' light intensity from 10 to 15 in GenerateRoom()
38:23Increase the lamps' light intensity from 10 to 15 in GenerateRoom()
38:23Increase the lamps' light intensity from 10 to 15 in GenerateRoom()
38:26Our light looks great
🏃
38:26Our light looks great
🏃
38:26Our light looks great
🏃
38:49Increase the lamps' light intensity from 15 to 20 in GenerateRoom()
38:49Increase the lamps' light intensity from 15 to 20 in GenerateRoom()
38:49Increase the lamps' light intensity from 15 to 20 in GenerateRoom()
39:04Our light does seem to leak again great
🏃
39:04Our light does seem to leak again great
🏃
39:04Our light does seem to leak again great
🏃
40:11Prevent GenerateRoom() from adding lamps, and increase the intensity of the debug light by 10× in UpdateAndRenderWorld()
40:11Prevent GenerateRoom() from adding lamps, and increase the intensity of the debug light by 10× in UpdateAndRenderWorld()
40:11Prevent GenerateRoom() from adding lamps, and increase the intensity of the debug light by 10× in UpdateAndRenderWorld()
40:43Our light is powerful enough to bounce
🏃
40:43Our light is powerful enough to bounce
🏃
40:43Our light is powerful enough to bounce
🏃
41:03Increase the intensity of the debug light from 10 to 20 in UpdateAndRenderWorld()
41:03Increase the intensity of the debug light from 10 to 20 in UpdateAndRenderWorld()
41:03Increase the intensity of the debug light from 10 to 20 in UpdateAndRenderWorld()
41:20Our debug light bounces and leaks
🏃
41:20Our debug light bounces and leaks
🏃
41:20Our debug light bounces and leaks
🏃
41:47Scrutinise the termination sampling in GridRayCast() for bugs
📖
41:47Scrutinise the termination sampling in GridRayCast() for bugs
📖
41:47Scrutinise the termination sampling in GridRayCast() for bugs
📖
43:24Test preventing terminator hits from transferring the light in GridRayCast()
43:24Test preventing terminator hits from transferring the light in GridRayCast()
43:24Test preventing terminator hits from transferring the light in GridRayCast()
44:29Our light still leaks
🏃
44:29Our light still leaks
🏃
44:29Our light still leaks
🏃
44:59Test preventing early-outs from transferring the light in GridRayCast()
44:59Test preventing early-outs from transferring the light in GridRayCast()
44:59Test preventing early-outs from transferring the light in GridRayCast()
45:19Our light no longer leaks
🏃
45:19Our light no longer leaks
🏃
45:19Our light no longer leaks
🏃
45:57Scrutinise the terminator sampling code in GridRayCast()
📖
45:57Scrutinise the terminator sampling code in GridRayCast()
📖
45:57Scrutinise the terminator sampling code in GridRayCast()
📖
48:01Make ComputeWalkTable() terminate within the current cell, not sample from the next one
48:01Make ComputeWalkTable() terminate within the current cell, not sample from the next one
48:01Make ComputeWalkTable() terminate within the current cell, not sample from the next one
48:42Our light still leaks
🏃
48:42Our light still leaks
🏃
48:42Our light still leaks
🏃
49:34Add a PieceType_Occluder to entity_visible_piece_flag for UpdateAndRenderEntities() to use
49:34Add a PieceType_Occluder to entity_visible_piece_flag for UpdateAndRenderEntities() to use
49:34Add a PieceType_Occluder to entity_visible_piece_flag for UpdateAndRenderEntities() to use
52:22Our light spreads, not occluded
🏃
52:22Our light spreads, not occluded
🏃
52:22Our light spreads, not occluded
🏃
52:37Make GenerateRoom() add occluders, introducing AddPieceOccluder()
52:37Make GenerateRoom() add occluders, introducing AddPieceOccluder()
52:37Make GenerateRoom() add occluders, introducing AddPieceOccluder()
55:43Check out our occluders
🏃
55:43Check out our occluders
🏃
55:43Check out our occluders
🏃
56:04Make GenerateRoom() extend the wall occluders to the top of the tile
56:04Make GenerateRoom() extend the wall occluders to the top of the tile
56:04Make GenerateRoom() extend the wall occluders to the top of the tile
58:35Our occluders are not aligned properly
🏃
58:35Our occluders are not aligned properly
🏃
58:35Our occluders are not aligned properly
🏃
58:47Make GenerateRoom() size the occluders relative to their position
58:47Make GenerateRoom() size the occluders relative to their position
58:47Make GenerateRoom() size the occluders relative to their position
59:22Our light leaks less
🏃
59:22Our light leaks less
🏃
59:22Our light leaks less
🏃
1:01:20Our light does leak below from the start
🏃
1:01:20Our light does leak below from the start
🏃
1:01:20Our light does leak below from the start
🏃
1:01:30Test preventing apron hits from transferring the light in GridRayCast()
1:01:30Test preventing apron hits from transferring the light in GridRayCast()
1:01:30Test preventing apron hits from transferring the light in GridRayCast()
1:02:45Our light still leaks
🏃
1:02:45Our light still leaks
🏃
1:02:45Our light still leaks
🏃
1:03:01Test preventing terminator hits from transferring the light in GridRayCast()
1:03:01Test preventing terminator hits from transferring the light in GridRayCast()
1:03:01Test preventing terminator hits from transferring the light in GridRayCast()
1:03:15Our light no longer leaks
🏃
1:03:15Our light no longer leaks
🏃
1:03:15Our light no longer leaks
🏃
1:03:25Scrutinise the terminator related code in GridRayCast() and ComputeWalkTable()
📖
1:03:25Scrutinise the terminator related code in GridRayCast() and ComputeWalkTable()
📖
1:03:25Scrutinise the terminator related code in GridRayCast() and ComputeWalkTable()
📖
1:07:44See our non-leaky light
🏃
1:07:44See our non-leaky light
🏃
1:07:44See our non-leaky light
🏃
1:08:02Let terminator hits transfer the light in GridRayCast()
1:08:02Let terminator hits transfer the light in GridRayCast()
1:08:02Let terminator hits transfer the light in GridRayCast()
1:08:10Our light leaks
🏃
1:08:10Our light leaks
🏃
1:08:10Our light leaks
🏃
1:08:59Scrutinise the termination code ComputeWalkTable()
📖
1:08:59Scrutinise the termination code ComputeWalkTable()
📖
1:08:59Scrutinise the termination code ComputeWalkTable()
📖
1:10:27Remove the DEBUG_ZERO code from GridRayCast()
1:10:27Remove the DEBUG_ZERO code from GridRayCast()
1:10:27Remove the DEBUG_ZERO code from GridRayCast()
1:10:50Edit our DebugGridIndex towards a grid index below our orphanage
🏃
1:10:50Edit our DebugGridIndex towards a grid index below our orphanage
🏃
1:10:50Edit our DebugGridIndex towards a grid index below our orphanage
🏃
1:11:46Try setting DebugGridIndex to 10788 in UpdateLighting()
1:11:46Try setting DebugGridIndex to 10788 in UpdateLighting()
1:11:46Try setting DebugGridIndex to 10788 in UpdateLighting()
1:12:14Edit our DebugGridIndex towards a grid index below our orphanage
🏃
1:12:14Edit our DebugGridIndex towards a grid index below our orphanage
🏃
1:12:14Edit our DebugGridIndex towards a grid index below our orphanage
🏃
1:12:35Try setting DebugGridIndex to 11788 in UpdateLighting()
1:12:35Try setting DebugGridIndex to 11788 in UpdateLighting()
1:12:35Try setting DebugGridIndex to 11788 in UpdateLighting()
1:12:47Edit our DebugGridIndex towards a grid index below our orphanage
🏃
1:12:47Edit our DebugGridIndex towards a grid index below our orphanage
🏃
1:12:47Edit our DebugGridIndex towards a grid index below our orphanage
🏃
1:13:04Try setting DebugGridIndex to 13788 in UpdateLighting()
1:13:04Try setting DebugGridIndex to 13788 in UpdateLighting()
1:13:04Try setting DebugGridIndex to 13788 in UpdateLighting()
1:13:23Edit our DebugGridIndex and DebugRayIndex to 13586 and 335
🏃
1:13:23Edit our DebugGridIndex and DebugRayIndex to 13586 and 335
🏃
1:13:23Edit our DebugGridIndex and DebugRayIndex to 13586 and 335
🏃
1:14:40Make UpdateLighting() set DebugGridIndex and DebugRayIndex to 13586 and 335, and increase the height of our octahedron drawing region in DebugDrawOctahedralValues()
1:14:40Make UpdateLighting() set DebugGridIndex and DebugRayIndex to 13586 and 335, and increase the height of our octahedron drawing region in DebugDrawOctahedralValues()
1:14:40Make UpdateLighting() set DebugGridIndex and DebugRayIndex to 13586 and 335, and increase the height of our octahedron drawing region in DebugDrawOctahedralValues()
1:15:45Hit a LIGHT_ATLAS_ASSERT in GetTileUnclamped()
🏃
1:15:45Hit a LIGHT_ATLAS_ASSERT in GetTileUnclamped()
🏃
1:15:45Hit a LIGHT_ATLAS_ASSERT in GetTileUnclamped()
🏃
1:15:57Fix the VoxStart centering computation in DebugDrawOctahedralValues()
1:15:57Fix the VoxStart centering computation in DebugDrawOctahedralValues()
1:15:57Fix the VoxStart centering computation in DebugDrawOctahedralValues()
1:16:35See our taller octahedron drawing stack
🏃
1:16:35See our taller octahedron drawing stack
🏃
1:16:35See our taller octahedron drawing stack
🏃
1:16:49Try making DebugDrawOctahedralValues() draw the entire height's worth of octahedral values
1:16:49Try making DebugDrawOctahedralValues() draw the entire height's worth of octahedral values
1:16:49Try making DebugDrawOctahedralValues() draw the entire height's worth of octahedral values
1:17:06Hit an assertion in PushQuad()
🏃
1:17:06Hit an assertion in PushQuad()
🏃
1:17:06Hit an assertion in PushQuad()
🏃
1:17:09Make DebugDrawOctahedralValues() originate the octahedral drawing region at 0 in z
1:17:09Make DebugDrawOctahedralValues() originate the octahedral drawing region at 0 in z
1:17:09Make DebugDrawOctahedralValues() originate the octahedral drawing region at 0 in z
1:17:42Check out our nonsensical octahedral values down below the orphanage
🏃
1:17:42Check out our nonsensical octahedral values down below the orphanage
🏃
1:17:42Check out our nonsensical octahedral values down below the orphanage
🏃
1:18:06Note that, while we can only sample from cells inside our lighting voxel, we may cast outside it
📖
1:18:06Note that, while we can only sample from cells inside our lighting voxel, we may cast outside it
📖
1:18:06Note that, while we can only sample from cells inside our lighting voxel, we may cast outside it
📖
1:18:31Pick a grid cell to closely observe
🏃
1:18:31Pick a grid cell to closely observe
🏃
1:18:31Pick a grid cell to closely observe
🏃
1:20:12Make UpdateLighting() set DebugGridIndex to 0, and remove the AtlasToSpatialGrid expansion (beyond the apron)
1:20:12Make UpdateLighting() set DebugGridIndex to 0, and remove the AtlasToSpatialGrid expansion (beyond the apron)
1:20:12Make UpdateLighting() set DebugGridIndex to 0, and remove the AtlasToSpatialGrid expansion (beyond the apron)
1:21:04Find the DebugGridIndex (717) and DebugRayIndex (531) for our close observation grid cell and ray
🏃
1:21:04Find the DebugGridIndex (717) and DebugRayIndex (531) for our close observation grid cell and ray
🏃
1:21:04Find the DebugGridIndex (717) and DebugRayIndex (531) for our close observation grid cell and ray
🏃
1:25:08Make UpdateLighting() set DebugGridIndex and DebugRayIndex to 717 and 531
1:25:08Make UpdateLighting() set DebugGridIndex and DebugRayIndex to 717 and 531
1:25:08Make UpdateLighting() set DebugGridIndex and DebugRayIndex to 717 and 531
1:25:19Take a look at our debug ray
🏃
1:25:19Take a look at our debug ray
🏃
1:25:19Take a look at our debug ray
🏃
1:25:35Make DebugDrawOctahedralValues() position the lighting voxel to encompass our ray's target hit
1:25:35Make DebugDrawOctahedralValues() position the lighting voxel to encompass our ray's target hit
1:25:35Make DebugDrawOctahedralValues() position the lighting voxel to encompass our ray's target hit
1:26:28Our target is indeed receiving light was somewhere
🏃
1:26:28Our target is indeed receiving light was somewhere
🏃
1:26:28Our target is indeed receiving light was somewhere
🏃
1:28:48Make ComputeVoxelIrradianceAt() take an OcclusionN which opposes our sampling direction, until we hit
1:28:48Make ComputeVoxelIrradianceAt() take an OcclusionN which opposes our sampling direction, until we hit
1:28:48Make ComputeVoxelIrradianceAt() take an OcclusionN which opposes our sampling direction, until we hit
1:31:22Our light no longer leaks
🏃
1:31:22Our light no longer leaks
🏃
1:31:22Our light no longer leaks
🏃
1:32:13Increase the intensity of the debug light from 20 to 50 in UpdateAndRenderWorld()
1:32:13Increase the intensity of the debug light from 20 to 50 in UpdateAndRenderWorld()
1:32:13Increase the intensity of the debug light from 20 to 50 in UpdateAndRenderWorld()
1:32:57Our light leaks a little bit
🏃
1:32:57Our light leaks a little bit
🏃
1:32:57Our light leaks a little bit
🏃
1:33:10Decrease the intensity of the debug light from 50 to 30 in UpdateAndRenderWorld()
1:33:10Decrease the intensity of the debug light from 50 to 30 in UpdateAndRenderWorld()
1:33:10Decrease the intensity of the debug light from 50 to 30 in UpdateAndRenderWorld()
1:33:18Our light seems to leak
🏃
1:33:18Our light seems to leak
🏃
1:33:18Our light seems to leak
🏃
1:33:53Decrease the intensity of the debug light from 30 to 10 in UpdateAndRenderWorld(), let UpdateAndRenderEntities() colour occluders like normal and GenerateRoom() add lamps
1:33:53Decrease the intensity of the debug light from 30 to 10 in UpdateAndRenderWorld(), let UpdateAndRenderEntities() colour occluders like normal and GenerateRoom() add lamps
1:33:53Decrease the intensity of the debug light from 30 to 10 in UpdateAndRenderWorld(), let UpdateAndRenderEntities() colour occluders like normal and GenerateRoom() add lamps
1:34:29Check out our lighting
🏃
1:34:29Check out our lighting
🏃
1:34:29Check out our lighting
🏃
1:35:21Make GenerateRoom() add occluders for trees
1:35:21Make GenerateRoom() add occluders for trees
1:35:21Make GenerateRoom() add occluders for trees
1:36:49Check out our occluding trees
🏃
1:36:49Check out our occluding trees
🏃
1:36:49Check out our occluding trees
🏃
1:37:10Make GenerateRoom() add shrunken occluders for trees
1:37:10Make GenerateRoom() add shrunken occluders for trees
1:37:10Make GenerateRoom() add shrunken occluders for trees
1:39:10Hop towards the outside area
🏃
1:39:10Hop towards the outside area
🏃
1:39:10Hop towards the outside area
🏃
1:39:21Make UpdateAndRenderEntities() draw occluder outlines
1:39:21Make UpdateAndRenderEntities() draw occluder outlines
1:39:21Make UpdateAndRenderEntities() draw occluder outlines
1:39:35Our trees lack occluders
🏃
1:39:35Our trees lack occluders
🏃
1:39:35Our trees lack occluders
🏃
1:39:51Fix GenerateRoom() to use the expanded TreeVol for the occluder
1:39:51Fix GenerateRoom() to use the expanded TreeVol for the occluder
1:39:51Fix GenerateRoom() to use the expanded TreeVol for the occluder
1:40:02Check out our thinned tree occluders
🏃
1:40:02Check out our thinned tree occluders
🏃
1:40:02Check out our thinned tree occluders
🏃
1:40:09Make GenerateRoom() further thin the tree occluder, and shrink its height
1:40:09Make GenerateRoom() further thin the tree occluder, and shrink its height
1:40:09Make GenerateRoom() further thin the tree occluder, and shrink its height
1:42:43Check out our thinned and shrunken tree occluders
🏃
1:42:43Check out our thinned and shrunken tree occluders
🏃
1:42:43Check out our thinned and shrunken tree occluders
🏃
1:43:37Decrease the LIGHT_FLOOR_VALUE from 0.2 to 0.0
1:43:37Decrease the LIGHT_FLOOR_VALUE from 0.2 to 0.0
1:43:37Decrease the LIGHT_FLOOR_VALUE from 0.2 to 0.0
1:44:40Admire our more lit world
🏃
1:44:40Admire our more lit world
🏃
1:44:40Admire our more lit world
🏃
1:45:37Prevent UpdateAndRenderEntities() from drawing occluder outlines, and UpdateLighting() calling DebugDrawOctahedralValues()
1:45:37Prevent UpdateAndRenderEntities() from drawing occluder outlines, and UpdateLighting() calling DebugDrawOctahedralValues()
1:45:37Prevent UpdateAndRenderEntities() from drawing occluder outlines, and UpdateLighting() calling DebugDrawOctahedralValues()
1:46:01Admire our lighting
🏃
1:46:01Admire our lighting
🏃
1:46:01Admire our lighting
🏃
1:46:49Prevent PushLight() from drawing light outlines, and make AddSnake() increase the intensity of the lamps
1:46:49Prevent PushLight() from drawing light outlines, and make AddSnake() increase the intensity of the lamps
1:46:49Prevent PushLight() from drawing light outlines, and make AddSnake() increase the intensity of the lamps
1:47:40Admire our lighting, and plan for: 1) adapting the power curve; 2) better spreading; and 3) reducing the noise
🏃
1:47:40Admire our lighting, and plan for: 1) adapting the power curve; 2) better spreading; and 3) reducing the noise
🏃
1:47:40Admire our lighting, and plan for: 1) adapting the power curve; 2) better spreading; and 3) reducing the noise
🏃
1:49:20Q&A
🗩
1:49:20Q&A
🗩
1:49:20Q&A
🗩
1:49:45mindmark42 Q: In the diffuse map weighting divide, could you get divide by zero?
🗪
1:49:45mindmark42 Q: In the diffuse map weighting divide, could you get divide by zero?
🗪
1:49:45mindmark42 Q: In the diffuse map weighting divide, could you get divide by zero?
🗪
1:51:05vaualbus Q: With this system, how could we give a more physically-based rendering look to the light?
🗪
1:51:05vaualbus Q: With this system, how could we give a more physically-based rendering look to the light?
🗪
1:51:05vaualbus Q: With this system, how could we give a more physically-based rendering look to the light?
🗪
1:52:36pragmascrypt Q: Does the diffuse bounce use the albedo of the materials yet to color the bounce light?
🗪
1:52:36pragmascrypt Q: Does the diffuse bounce use the albedo of the materials yet to color the bounce light?
🗪
1:52:36pragmascrypt Q: Does the diffuse bounce use the albedo of the materials yet to color the bounce light?
🗪
1:53:15Make trees bounce green light, and everything else bounce blue
1:53:15Make trees bounce green light, and everything else bounce blue
1:53:15Make trees bounce green light, and everything else bounce blue
1:54:00See our tinted light
🏃
1:54:00See our tinted light
🏃
1:54:00See our tinted light
🏃
1:54:34Make trees bounce yellow light
1:54:34Make trees bounce yellow light
1:54:34Make trees bounce yellow light
1:54:48See our tinted light
🏃
1:54:48See our tinted light
🏃
1:54:48See our tinted light
🏃
1:55:35Make trees bounce red light
1:55:35Make trees bounce red light
1:55:35Make trees bounce red light
1:55:46See our red-tinted trees
🏃
1:55:46See our red-tinted trees
🏃
1:55:46See our red-tinted trees
🏃
1:56:06Revert the light tinting
1:56:06Revert the light tinting
1:56:06Revert the light tinting
1:56:40uplinkcoder Q: Can you compare with the older raycast?
🗪
1:56:40uplinkcoder Q: Can you compare with the older raycast?
🗪
1:56:40uplinkcoder Q: Can you compare with the older raycast?
🗪
1:56:57Disable LIGHTING_USE_GRID
1:56:57Disable LIGHTING_USE_GRID
1:56:57Disable LIGHTING_USE_GRID
1:57:03Check the old AABB ray cast lighting
🏃
1:57:03Check the old AABB ray cast lighting
🏃
1:57:03Check the old AABB ray cast lighting
🏃
1:58:35miltondts Q: After the shader modification, it appears the light is still leaking. Why is that?
🗪
1:58:35miltondts Q: After the shader modification, it appears the light is still leaking. Why is that?
🗪
1:58:35miltondts Q: After the shader modification, it appears the light is still leaking. Why is that?
🗪
1:59:08Enable LIGHTING_USE_GRID
1:59:08Enable LIGHTING_USE_GRID
1:59:08Enable LIGHTING_USE_GRID
1:59:18Our light doesn't seem to leak
🏃
1:59:18Our light doesn't seem to leak
🏃
1:59:18Our light doesn't seem to leak
🏃
2:01:12Increase the intensity of the debug light from 10 to 50 in UpdateAndRenderWorld()
2:01:12Increase the intensity of the debug light from 10 to 50 in UpdateAndRenderWorld()
2:01:12Increase the intensity of the debug light from 10 to 50 in UpdateAndRenderWorld()
2:01:39Our light does leak
🏃
2:01:39Our light does leak
🏃
2:01:39Our light does leak
🏃
2:01:50Decrease the intensity of the debug light from 50 to 10 in UpdateAndRenderWorld()
2:01:50Decrease the intensity of the debug light from 50 to 10 in UpdateAndRenderWorld()
2:01:50Decrease the intensity of the debug light from 50 to 10 in UpdateAndRenderWorld()
2:02:15Make GenerateRoom() add ceiling occluders
2:02:15Make GenerateRoom() add ceiling occluders
2:02:15Make GenerateRoom() add ceiling occluders
2:04:29Check out our ceiling
🏃
2:04:29Check out our ceiling
🏃
2:04:29Check out our ceiling
🏃
2:04:52Increase the intensity of the debug light from 10 to 50 in UpdateAndRenderWorld()
2:04:52Increase the intensity of the debug light from 10 to 50 in UpdateAndRenderWorld()
2:04:52Increase the intensity of the debug light from 10 to 50 in UpdateAndRenderWorld()
2:05:10Our light does leak
🏃
2:05:10Our light does leak
🏃
2:05:10Our light does leak
🏃
2:05:25Decrease the intensity of the debug light from 50 to 10 in UpdateAndRenderWorld()
2:05:25Decrease the intensity of the debug light from 50 to 10 in UpdateAndRenderWorld()
2:05:25Decrease the intensity of the debug light from 50 to 10 in UpdateAndRenderWorld()
2:05:56Check our regularly non-leaking light
🏃
2:05:56Check our regularly non-leaking light
🏃
2:05:56Check our regularly non-leaking light
🏃
2:06:36i_am_seabass Q: Is it possible to smooth out the lighting so it's not flickering as much?
🗪
2:06:36i_am_seabass Q: Is it possible to smooth out the lighting so it's not flickering as much?
🗪
2:06:36i_am_seabass Q: Is it possible to smooth out the lighting so it's not flickering as much?
🗪
2:07:14sharlock93 Q: From what I have "perceived" watching Handmade Hero is that lighting has taken up a pretty sizeable chunk of the episodes. Is lighting this inherently complex or am I missing something?
🗪
2:07:14sharlock93 Q: From what I have "perceived" watching Handmade Hero is that lighting has taken up a pretty sizeable chunk of the episodes. Is lighting this inherently complex or am I missing something?
🗪
2:07:14sharlock93 Q: From what I have "perceived" watching Handmade Hero is that lighting has taken up a pretty sizeable chunk of the episodes. Is lighting this inherently complex or am I missing something?
🗪
2:07:57toocanzs Q: What are your plans to fix the square looking interpolation?
🗪
2:07:57toocanzs Q: What are your plans to fix the square looking interpolation?
🗪
2:07:57toocanzs Q: What are your plans to fix the square looking interpolation?
🗪
2:08:24internationalizationist Q: Do you think, will there be such topics with which we (you) will spend as much time as with light?
🗪
2:08:24internationalizationist Q: Do you think, will there be such topics with which we (you) will spend as much time as with light?
🗪
2:08:24internationalizationist Q: Do you think, will there be such topics with which we (you) will spend as much time as with light?
🗪
2:08:47billdstrong Q: Even fluid simulation, such as plasma?
🗪
2:08:47billdstrong Q: Even fluid simulation, such as plasma?
🗪
2:08:47billdstrong Q: Even fluid simulation, such as plasma?
🗪
2:11:27ravarix handmade_hero I'd argue networking which has the same issue. Trying to simulate two things which are apart as temporally the same
🗪
2:11:27ravarix handmade_hero I'd argue networking which has the same issue. Trying to simulate two things which are apart as temporally the same
🗪
2:11:27ravarix handmade_hero I'd argue networking which has the same issue. Trying to simulate two things which are apart as temporally the same
🗪
2:12:24andrevon Q: Yet it seems like when you walk you drag the light behind you with inertia, more like a liquid. Is that on purpose or an effect of computation per frame?
🗪
2:12:24andrevon Q: Yet it seems like when you walk you drag the light behind you with inertia, more like a liquid. Is that on purpose or an effect of computation per frame?
🗪
2:12:24andrevon Q: Yet it seems like when you walk you drag the light behind you with inertia, more like a liquid. Is that on purpose or an effect of computation per frame?
🗪
2:13:53ravarix I'm sorry, but that just sounds ignorant to the complexities of game networking
🗪
2:13:53ravarix I'm sorry, but that just sounds ignorant to the complexities of game networking
🗪
2:13:53ravarix I'm sorry, but that just sounds ignorant to the complexities of game networking
🗪
2:16:14internationalizationist Q: What is so special in RTX?
🗪
2:16:14internationalizationist Q: What is so special in RTX?
🗪
2:16:14internationalizationist Q: What is so special in RTX?
🗪
2:17:04equivocatorrr Q: Is the difficulty of global illumination part of the reason why you're doing it?
🗪
2:17:04equivocatorrr Q: Is the difficulty of global illumination part of the reason why you're doing it?
🗪
2:17:04equivocatorrr Q: Is the difficulty of global illumination part of the reason why you're doing it?
🗪
2:18:03ttbjm Q: Even the RTX version of Minecraft has noticeable light lag
🗪
2:18:03ttbjm Q: Even the RTX version of Minecraft has noticeable light lag
🗪
2:18:03ttbjm Q: Even the RTX version of Minecraft has noticeable light lag
🗪
2:19:06philliptrudeau Q: If someone were making a different game with much sparser scenes containing more complex geometry, would you have any alternative prescriptions? Could the probes be arranged in a sparse grid? Or in camera-frustum-space rather than world-space?
🗪
2:19:06philliptrudeau Q: If someone were making a different game with much sparser scenes containing more complex geometry, would you have any alternative prescriptions? Could the probes be arranged in a sparse grid? Or in camera-frustum-space rather than world-space?
🗪
2:19:06philliptrudeau Q: If someone were making a different game with much sparser scenes containing more complex geometry, would you have any alternative prescriptions? Could the probes be arranged in a sparse grid? Or in camera-frustum-space rather than world-space?
🗪
2:21:36andrevon Q: When you tested the secondary bounces with the red light, it seemed like it only worked in left and down directions. Do you have an explanation for that?
🗪
2:21:36andrevon Q: When you tested the secondary bounces with the red light, it seemed like it only worked in left and down directions. Do you have an explanation for that?
🗪
2:21:36andrevon Q: When you tested the secondary bounces with the red light, it seemed like it only worked in left and down directions. Do you have an explanation for that?
🗪
2:23:13Scrutinise the obstruction Coefficient array computation code in ComputeVoxelIrradianceAt()
📖
2:23:13Scrutinise the obstruction Coefficient array computation code in ComputeVoxelIrradianceAt()
📖
2:23:13Scrutinise the obstruction Coefficient array computation code in ComputeVoxelIrradianceAt()
📖
2:24:08Masking out obstructed light cells
🖌
2:24:08Masking out obstructed light cells
🖌
2:24:08Masking out obstructed light cells
🖌
2:25:28brimonk Q: How does an RTX card actually perform ray tracing? Is it similar to what the PS5 can provide, which is hardware to work on a BVH structure to perform ray tracing, or is that different?
🗪
2:25:28brimonk Q: How does an RTX card actually perform ray tracing? Is it similar to what the PS5 can provide, which is hardware to work on a BVH structure to perform ray tracing, or is that different?
🗪
2:25:28brimonk Q: How does an RTX card actually perform ray tracing? Is it similar to what the PS5 can provide, which is hardware to work on a BVH structure to perform ray tracing, or is that different?
🗪
2:30:18mindmark42 Q: Are the probes in the wall still getting cleared to zero?
🗪
2:30:18mindmark42 Q: Are the probes in the wall still getting cleared to zero?
🗪
2:30:18mindmark42 Q: Are the probes in the wall still getting cleared to zero?
🗪
2:30:48mystran The "ray incoherence" is really why a regular GPU has trouble with it as well since thread divergence wreaks havoc with traditional SIMT
🗪
2:30:48mystran The "ray incoherence" is really why a regular GPU has trouble with it as well since thread divergence wreaks havoc with traditional SIMT
🗪
2:30:48mystran The "ray incoherence" is really why a regular GPU has trouble with it as well since thread divergence wreaks havoc with traditional SIMT
🗪
2:34:46Thank you, everyone
🗩
2:34:46Thank you, everyone
🗩
2:34:46Thank you, everyone
🗩