Pushing Lighting Information Directly
?
?

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:05Recap and set the stage for the day streaming on YouTube1 for the first time
🗩
0:05Recap and set the stage for the day streaming on YouTube1 for the first time
🗩
0:05Recap and set the stage for the day streaming on YouTube1 for the first time
🗩
1:43Run the game to see our current, slow lighting solution
🏃
1:43Run the game to see our current, slow lighting solution
🏃
1:43Run the game to see our current, slow lighting solution
🏃
2:27Make PlayWorld() generate only one room
2:27Make PlayWorld() generate only one room
2:27Make PlayWorld() generate only one room
2:43Run the game to see the lighting at a more playable rate
🏃
2:43Run the game to see the lighting at a more playable rate
🏃
2:43Run the game to see the lighting at a more playable rate
🏃
3:06A few initial words on algorithmic optimisation
🗩
3:06A few initial words on algorithmic optimisation
🗩
3:06A few initial words on algorithmic optimisation
🗩
4:52ComputeLightPropagation() TODO(casey): Before moving on, be sure to index allocation management in the renderer
4:52ComputeLightPropagation() TODO(casey): Before moving on, be sure to index allocation management in the renderer
4:52ComputeLightPropagation() TODO(casey): Before moving on, be sure to index allocation management in the renderer
7:03Lighting Work
🖌
7:03Lighting Work
🖌
7:03Lighting Work
🖌
10:39Reducing emitters × surface O(n²)
🖌
10:39Reducing emitters × surface O(n²)
🖌
10:39Reducing emitters × surface O(n²)
🖌
16:10Spatial partitioning
🖌
16:10Spatial partitioning
🖌
16:10Spatial partitioning
🖌
19:09Multiresolution approach
🖌
19:09Multiresolution approach
🖌
19:09Multiresolution approach
🖌
21:04Multigrid approach
🖌
21:04Multigrid approach
🖌
21:04Multigrid approach
🖌
21:49Comparing and combining these approaches
🖌
21:49Comparing and combining these approaches
🖌
21:49Comparing and combining these approaches
🖌
25:53Cubes - or, rather, axis-aligned bounding boxes (AABB) - as lighting elements
🖌
25:53Cubes - or, rather, axis-aligned bounding boxes (AABB) - as lighting elements
🖌
25:53Cubes - or, rather, axis-aligned bounding boxes (AABB) - as lighting elements
🖌
28:06The steps to produce this AABB-based lighting solution
🖌
28:06The steps to produce this AABB-based lighting solution
🖌
28:06The steps to produce this AABB-based lighting solution
🖌
33:05The difficulty in handling the transfer of light between tightly bound ground cubes
🖌
33:05The difficulty in handling the transfer of light between tightly bound ground cubes
🖌
33:05The difficulty in handling the transfer of light between tightly bound ground cubes
🖌
38:11Check the time
🗹
38:11Check the time
🗹
38:11Check the time
🗹
38:27insobot 38 minutes into the main stream. 82 until Q&A. (based on NOTE)
🗪
38:27insobot 38 minutes into the main stream. 82 until Q&A. (based on NOTE)
🗪
38:27insobot 38 minutes into the main stream. 82 until Q&A. (based on NOTE)
🗪
38:34Consider our proposed approach
🖌
38:34Consider our proposed approach
🖌
38:34Consider our proposed approach
🖌
41:39Run the game to inspect the lighting
🏃
41:39Run the game to inspect the lighting
🏃
41:39Run the game to inspect the lighting
🏃
42:08Determine to modify our lighting to use AABBs
🗩
42:08Determine to modify our lighting to use AABBs
🗩
42:08Determine to modify our lighting to use AABBs
🗩
43:24Introduce (a commented out) lighting_box, and add SurfaceCount and Surfaces to game_render_commands
43:24Introduce (a commented out) lighting_box, and add SurfaceCount and Surfaces to game_render_commands
43:24Introduce (a commented out) lighting_box, and add SurfaceCount and Surfaces to game_render_commands
49:41Add LightPointCount and Lights to game_render_commands
49:41Add LightPointCount and Lights to game_render_commands
49:41Add LightPointCount and Lights to game_render_commands
52:31Determine to pare down ExtractReflectorsFromQuads() and consider how to enable lighting points and surfaces to correspond
🗩
52:31Determine to pare down ExtractReflectorsFromQuads() and consider how to enable lighting points and surfaces to correspond
🗩
52:31Determine to pare down ExtractReflectorsFromQuads() and consider how to enable lighting points and surfaces to correspond
🗩
56:15Run the game to illustrate the notion of sharing lighting information across boundaries
🏃
56:15Run the game to illustrate the notion of sharing lighting information across boundaries
🏃
56:15Run the game to illustrate the notion of sharing lighting information across boundaries
🏃
57:40Enable PushCube() to push onto a lighting_surface array
57:40Enable PushCube() to push onto a lighting_surface array
57:40Enable PushCube() to push onto a lighting_surface array
1:01:20Positioning the surface at the most negative corner of an axis-aligned cube
🖌
1:01:20Positioning the surface at the most negative corner of an axis-aligned cube
🖌
1:01:20Positioning the surface at the most negative corner of an axis-aligned cube
🖌
1:02:03Continue to enable PushCube() to push onto a lighting_surface array
1:02:03Continue to enable PushCube() to push onto a lighting_surface array
1:02:03Continue to enable PushCube() to push onto a lighting_surface array
1:03:17Generating the surface normals
🖌
1:03:17Generating the surface normals
🖌
1:03:17Generating the surface normals
🖌
1:03:41Make PushCube() push all six surfaces
1:03:41Make PushCube() push all six surfaces
1:03:41Make PushCube() push all six surfaces
1:05:43Understanding XAxis and YAxis in a right-handed coordinate system
🖌
1:05:43Understanding XAxis and YAxis in a right-handed coordinate system
🖌
1:05:43Understanding XAxis and YAxis in a right-handed coordinate system
🖌
1:06:02Make PushCube() set the XAxis and YAxis
1:06:02Make PushCube() set the XAxis and YAxis
1:06:02Make PushCube() set the XAxis and YAxis
1:09:04Make PushCube() set the LightIndex and LightCount
1:09:04Make PushCube() set the LightIndex and LightCount
1:09:04Make PushCube() set the LightIndex and LightCount
1:10:19Understanding Width and Height
🖌
1:10:19Understanding Width and Height
🖌
1:10:19Understanding Width and Height
🖌
1:10:56Make PushCube() set the Width and Height
1:10:56Make PushCube() set the Width and Height
1:10:56Make PushCube() set the Width and Height
1:13:17Make PushCube() generate the lighting points on the surfaces
1:13:17Make PushCube() generate the lighting points on the surfaces
1:13:17Make PushCube() generate the lighting points on the surfaces
1:15:39Discover a potential bug with PushCube() erroneously resetting the AverageDirectionToLight
1:15:39Discover a potential bug with PushCube() erroneously resetting the AverageDirectionToLight
1:15:39Discover a potential bug with PushCube() erroneously resetting the AverageDirectionToLight
1:16:54Temporarily comment out our recent changes to try
1:16:54Temporarily comment out our recent changes to try
1:16:54Temporarily comment out our recent changes to try
1:17:41Run the game to see the old lighting
🏃
1:17:41Run the game to see the old lighting
🏃
1:17:41Run the game to see the old lighting
🏃
1:17:52Try to prevent PushCube() from clearing the AverageDirectionToLight
1:17:52Try to prevent PushCube() from clearing the AverageDirectionToLight
1:17:52Try to prevent PushCube() from clearing the AverageDirectionToLight
1:19:10Continue with our new PushCube() solution, adding EmitC0 to the lighting_point
1:19:10Continue with our new PushCube() solution, adding EmitC0 to the lighting_point
1:19:10Continue with our new PushCube() solution, adding EmitC0 to the lighting_point
1:27:00Allocate these lighting points per surface
1:27:00Allocate these lighting points per surface
1:27:00Allocate these lighting points per surface
1:34:28Run the game to see our lighting solution
🏃
1:34:28Run the game to see our lighting solution
🏃
1:34:28Run the game to see our lighting solution
🏃
1:35:13Toggle off most of ExtractReflectorsFromQuads() to start to use the lighting surfaces and points instead
1:35:13Toggle off most of ExtractReflectorsFromQuads() to start to use the lighting surfaces and points instead
1:35:13Toggle off most of ExtractReflectorsFromQuads() to start to use the lighting surfaces and points instead
1:39:03Run the game to see that we are slower, but working
🏃
1:39:03Run the game to see that we are slower, but working
🏃
1:39:03Run the game to see that we are slower, but working
🏃
1:39:56Replace ExtractReflectorsFromQuads() with inline operations in LightingTest()
1:39:56Replace ExtractReflectorsFromQuads() with inline operations in LightingTest()
1:39:56Replace ExtractReflectorsFromQuads() with inline operations in LightingTest()
1:43:00Replace static arrays in lighting_solution with pointers
1:43:00Replace static arrays in lighting_solution with pointers
1:43:00Replace static arrays in lighting_solution with pointers
1:43:35Run the game to see that it works
🏃
1:43:35Run the game to see that it works
🏃
1:43:35Run the game to see that it works
🏃
1:44:05Add a TIMED_FUNCTION in OutputLightingTextures(), OutputLightingPoints(), LightingTest() and ComputeLightPropagation()
1:44:05Add a TIMED_FUNCTION in OutputLightingTextures(), OutputLightingPoints(), LightingTest() and ComputeLightPropagation()
1:44:05Add a TIMED_FUNCTION in OutputLightingTextures(), OutputLightingPoints(), LightingTest() and ComputeLightPropagation()
1:44:41Run the game and inspect the profiler
🏃
1:44:41Run the game and inspect the profiler
🏃
1:44:41Run the game and inspect the profiler
🏃
1:45:30Add a DEBUG_VALUE to LightingTest()
1:45:30Add a DEBUG_VALUE to LightingTest()
1:45:30Add a DEBUG_VALUE to LightingTest()
1:46:22Run the game and inspect the SurfaceCount and PointCount in the profiler
🏃
1:46:22Run the game and inspect the SurfaceCount and PointCount in the profiler
🏃
1:46:22Run the game and inspect the SurfaceCount and PointCount in the profiler
🏃
1:48:05Note that we could propagate light across frames
🗩
1:48:05Note that we could propagate light across frames
🗩
1:48:05Note that we could propagate light across frames
🗩
1:48:54Glimpse into the future of passing AABBs down directly
🗩
1:48:54Glimpse into the future of passing AABBs down directly
🗩
1:48:54Glimpse into the future of passing AABBs down directly
🗩
1:49:23Q&A
🗩
1:49:23Q&A
🗩
1:49:23Q&A
🗩
1:50:11Kknewkles Q: How come Bink2 isn't used, prevalently at that, in video playback across all of the video-playbacking use cases? Why is it the incumbent sovereign only in video games?
🗪
1:50:11Kknewkles Q: How come Bink2 isn't used, prevalently at that, in video playback across all of the video-playbacking use cases? Why is it the incumbent sovereign only in video games?
🗪
1:50:11Kknewkles Q: How come Bink2 isn't used, prevalently at that, in video playback across all of the video-playbacking use cases? Why is it the incumbent sovereign only in video games?
🗪
1:52:46derpzerker Q: Was there a bug with light leaking behind the walls that was newly added?
🗪
1:52:46derpzerker Q: Was there a bug with light leaking behind the walls that was newly added?
🗪
1:52:46derpzerker Q: Was there a bug with light leaking behind the walls that was newly added?
🗪
1:52:56Run the game to look for light leaking
🏃
1:52:56Run the game to look for light leaking
🏃
1:52:56Run the game to look for light leaking
🏃
1:54:30derpzerker Q: Maybe not, I thought I saw the light leak through the bottom wall
🗪
1:54:30derpzerker Q: Maybe not, I thought I saw the light leak through the bottom wall
🗪
1:54:30derpzerker Q: Maybe not, I thought I saw the light leak through the bottom wall
🗪
1:55:24AsafGartner Q: I'm getting pretty frequent audio popping. Other people noticed it as well. I recorded a sample
🗪
1:55:24AsafGartner Q: I'm getting pretty frequent audio popping. Other people noticed it as well. I recorded a sample
🗪
1:55:24AsafGartner Q: I'm getting pretty frequent audio popping. Other people noticed it as well. I recorded a sample
🗪
1:56:03qq Q: When you write code in an exploratory fashion, and you end up with something that works well but is too large and complex to fit in your head at once, how do you simplify it back into something manageable?
🗪
1:56:03qq Q: When you write code in an exploratory fashion, and you end up with something that works well but is too large and complex to fit in your head at once, how do you simplify it back into something manageable?
🗪
1:56:03qq Q: When you write code in an exploratory fashion, and you end up with something that works well but is too large and complex to fit in your head at once, how do you simplify it back into something manageable?
🗪
1:57:21Jim0_o Q: Will you continue (dual) streaming to YouTube?
🗪
1:57:21Jim0_o Q: Will you continue (dual) streaming to YouTube?
🗪
1:57:21Jim0_o Q: Will you continue (dual) streaming to YouTube?
🗪
1:58:05qq Q: Are you concerned with compile times at all so far? I saw CTIME reporting 2.7 seconds. Time to pop in a threadripper?
🗪
1:58:05qq Q: Are you concerned with compile times at all so far? I saw CTIME reporting 2.7 seconds. Time to pop in a threadripper?
🗪
1:58:05qq Q: Are you concerned with compile times at all so far? I saw CTIME reporting 2.7 seconds. Time to pop in a threadripper?
🗪
1:59:22End the stream for today
🗩
1:59:22End the stream for today
🗩
1:59:22End the stream for today
🗩