Modifying Lighting to Use a Spatial Hierarchy
?
?
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
z Toggle filter mode V Revert filter to original state
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus
Keyboard Navigation
Global Keys
[, < / ], > Jump to previous / next episodeW, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
z Toggle filter mode V Revert filter to original state
Menu toggling
q Quotes r References f Filter c CreditsIn-Menu Movement
a
w
s
s
d
h
j
k
l
←
↑
↓
↓
→
Quotes and References Menus
Enter Jump to timecodeQuotes, References and Credits Menus
o Open URL (in new tab)Filter Menu
x, Space Toggle category and focus nextX, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus
Credits Menu
Enter Open URL (in new tab)⏫
Previous: 'Modifying Lighting to Use a Spatial Hierarchy'
⏫
0:00Recap and set the stage for the day, creating a hierarchy of lighting nodes
🗩
0:00Recap and set the stage for the day, creating a hierarchy of lighting nodes
🗩
0:00Recap and set the stage for the day, creating a hierarchy of lighting nodes
🗩
0:45Run the game to see our current lighting solution running at ~30 fps
🏃
0:45Run the game to see our current lighting solution running at ~30 fps
🏃
0:45Run the game to see our current lighting solution running at ~30 fps
🏃
4:28Determine to make SplitBox() do something intelligent
🗩
4:28Determine to make SplitBox() do something intelligent
🗩
4:28Determine to make SplitBox() do something intelligent
🗩
5:07Introduce AddBoxStorage() and AddBoxReference()
5:07Introduce AddBoxStorage() and AddBoxReference()
5:07Introduce AddBoxStorage() and AddBoxReference()
9:04A few words on box storage vs box referencing
🗩
9:04A few words on box storage vs box referencing
🗩
9:04A few words on box storage vs box referencing
🗩
9:27Implement AddBoxReference() and AddBoxStorage()
9:27Implement AddBoxReference() and AddBoxStorage()
9:27Implement AddBoxReference() and AddBoxStorage()
12:36Consider how to store our partitioned boxes
🗩
12:36Consider how to store our partitioned boxes
🗩
12:36Consider how to store our partitioned boxes
🗩
15:03Begin to enable BuildSpatialPartitionForLighting() to build the spatial hierarchy
15:03Begin to enable BuildSpatialPartitionForLighting() to build the spatial hierarchy
15:03Begin to enable BuildSpatialPartitionForLighting() to build the spatial hierarchy
22:08Introduce a rectangle3 version of Union()
22:08Introduce a rectangle3 version of Union()
22:08Introduce a rectangle3 version of Union()
22:56Continue to enable BuildSpatialPartitionForLighting() to build the spatial hierarchy
22:56Continue to enable BuildSpatialPartitionForLighting() to build the spatial hierarchy
22:56Continue to enable BuildSpatialPartitionForLighting() to build the spatial hierarchy
24:54Introduce InvertedInfinityRectangle3() and GetRadius()
24:54Introduce InvertedInfinityRectangle3() and GetRadius()
24:54Introduce InvertedInfinityRectangle3() and GetRadius()
27:20Finish setting up BuildSpatialPartitionForLighting() to call SplitBox()
27:20Finish setting up BuildSpatialPartitionForLighting() to call SplitBox()
27:20Finish setting up BuildSpatialPartitionForLighting() to call SplitBox()
33:08Spatial Partition "In Place"
🖌
33:08Spatial Partition "In Place"
🖌
33:08Spatial Partition "In Place"
🖌
36:18Add ScratchA and ScratchB arrays to lighting_solution and enable BuildSpatialPartitionForLighting() to use them
36:18Add ScratchA and ScratchB arrays to lighting_solution and enable BuildSpatialPartitionForLighting() to use them
36:18Add ScratchA and ScratchB arrays to lighting_solution and enable BuildSpatialPartitionForLighting() to use them
38:26Begin to enable SplitBox() to split a box along each axis
38:26Begin to enable SplitBox() to split a box along each axis
38:26Begin to enable SplitBox() to split a box along each axis
44:56Consult our MergeSort() to see how it stores the data
📖
44:56Consult our MergeSort() to see how it stores the data
📖
44:56Consult our MergeSort() to see how it stores the data
📖
46:08Try to enable SplitBox() to ping-pong between the buffers
46:08Try to enable SplitBox() to ping-pong between the buffers
46:08Try to enable SplitBox() to ping-pong between the buffers
1:04:28Introduce AddBoxReferences()
1:04:28Introduce AddBoxReferences()
1:04:28Introduce AddBoxReferences()
1:07:54Step through BuildSpatialPartitionForLighting() and SplitBox() to inspect their values
🏃
1:07:54Step through BuildSpatialPartitionForLighting() and SplitBox() to inspect their values
🏃
1:07:54Step through BuildSpatialPartitionForLighting() and SplitBox() to inspect their values
🏃
1:13:35Make SplitBox() break after splitting
1:13:35Make SplitBox() break after splitting
1:13:35Make SplitBox() break after splitting
1:13:54Continue to step through SplitBox()
🏃
1:13:54Continue to step through SplitBox()
🏃
1:13:54Continue to step through SplitBox()
🏃
1:14:36Run the game to see our resulting lighting
🏃
1:14:36Run the game to see our resulting lighting
🏃
1:14:36Run the game to see our resulting lighting
🏃
1:16:35Determine to debug the splitting
🗩
1:16:35Determine to debug the splitting
🗩
1:16:35Determine to debug the splitting
🗩
1:17:38Delete AddOverlappingBoxes() and read closely through RayCastRecurse()
📖
1:17:38Delete AddOverlappingBoxes() and read closely through RayCastRecurse()
📖
1:17:38Delete AddOverlappingBoxes() and read closely through RayCastRecurse()
📖
1:19:27Note that RayCastRecurse() is not checking to see if we are inside a bounding box
🗩
1:19:27Note that RayCastRecurse() is not checking to see if we are inside a bounding box
🗩
1:19:27Note that RayCastRecurse() is not checking to see if we are inside a bounding box
🗩
1:20:47Introduce IsInRectangleCenterHalfDim() to enable RayCastRecurse() to check if we are inside a box
1:20:47Introduce IsInRectangleCenterHalfDim() to enable RayCastRecurse() to check if we are inside a box
1:20:47Introduce IsInRectangleCenterHalfDim() to enable RayCastRecurse() to check if we are inside a box
1:26:06Run the game to see that that sort of fixed us
🏃
1:26:06Run the game to see that that sort of fixed us
🏃
1:26:06Run the game to see that that sort of fixed us
🏃
1:26:53Make PlayWorld() create 32 rooms
1:26:53Make PlayWorld() create 32 rooms
1:26:53Make PlayWorld() create 32 rooms
1:27:12Run the game to see our more realistic lighting situation
🏃
1:27:12Run the game to see our more realistic lighting situation
🏃
1:27:12Run the game to see our more realistic lighting situation
🏃
1:28:50Q&A
🗩
1:28:50Q&A
🗩
1:28:50Q&A
🗩
1:33:03Add a TIMED_FUNCTION() in BuildSpatialPartitionForLighting()
1:33:03Add a TIMED_FUNCTION() in BuildSpatialPartitionForLighting()
1:33:03Add a TIMED_FUNCTION() in BuildSpatialPartitionForLighting()
1:33:32Run the game to see the performance of BuildSpatialPartitionForLighting()
🏃
1:33:32Run the game to see the performance of BuildSpatialPartitionForLighting()
🏃
1:33:32Run the game to see the performance of BuildSpatialPartitionForLighting()
🏃
1:41:06Show off the profiler
🏃
1:41:06Show off the profiler
🏃
1:41:06Show off the profiler
🏃
1:43:42Wrap up
🗩
1:43:42Wrap up
🗩
1:43:42Wrap up
🗩
⏬
Next: 'Entity-based Lighting Storage'
⏬