Modifying Lighting to Use a Spatial Hierarchy
?
?

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, 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:29:21jacksonbanan Q: Do you even like sushi?
🗪
🎲
1:29:21jacksonbanan Q: Do you even like sushi?
🗪
🎲
1:29:21jacksonbanan Q: Do you even like sushi?
🗪
🎲
1:30:00insobot 89 minutes into the main stream. 31 until Q&A. (based on NOTE)
🗪
1:30:00insobot 89 minutes into the main stream. 31 until Q&A. (based on NOTE)
🗪
1:30:00insobot 89 minutes into the main stream. 31 until Q&A. (based on NOTE)
🗪
1:31:02Brian Q: This is a generic question, but for an example AddBoxStorage demonstrates this. I see Asserts are used to find exceptions in debug mode. What would be the way to handle a failed Assert in release mode, assuming in release Assert is just stubbed. Is it a case where most if not all problems would be found during testing and not needed to make changes for release?
🗪
1:31:02Brian Q: This is a generic question, but for an example AddBoxStorage demonstrates this. I see Asserts are used to find exceptions in debug mode. What would be the way to handle a failed Assert in release mode, assuming in release Assert is just stubbed. Is it a case where most if not all problems would be found during testing and not needed to make changes for release?
🗪
1:31:02Brian Q: This is a generic question, but for an example AddBoxStorage demonstrates this. I see Asserts are used to find exceptions in debug mode. What would be the way to handle a failed Assert in release mode, assuming in release Assert is just stubbed. Is it a case where most if not all problems would be found during testing and not needed to make changes for release?
🗪
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:34:120b0000000000000 Q: Couldn't you have just used a stack or a queue to do a depth first search or breadth first search? You init the stack with the root box, and then splitting just adds to it, if the stack is empty you're done?
🗪
1:34:120b0000000000000 Q: Couldn't you have just used a stack or a queue to do a depth first search or breadth first search? You init the stack with the root box, and then splitting just adds to it, if the stack is empty you're done?
🗪
1:34:120b0000000000000 Q: Couldn't you have just used a stack or a queue to do a depth first search or breadth first search? You init the stack with the root box, and then splitting just adds to it, if the stack is empty you're done?
🗪
1:34:49Brian Q: Will we need to go through each Assert call and eventually add ways to handle failure cases? Or only when we run into an issue down the line and fix those specific failures? I ask because I add Asserts to my code but then wonder what is the proper way to handle failures when I am not building release
🗪
1:34:49Brian Q: Will we need to go through each Assert call and eventually add ways to handle failure cases? Or only when we run into an issue down the line and fix those specific failures? I ask because I add Asserts to my code but then wonder what is the proper way to handle failures when I am not building release
🗪
1:34:49Brian Q: Will we need to go through each Assert call and eventually add ways to handle failure cases? Or only when we run into an issue down the line and fix those specific failures? I ask because I add Asserts to my code but then wonder what is the proper way to handle failures when I am not building release
🗪
1:36:06dragoonx6 Q: I noticed how you barely have any code / keyword highlighting in your editor. Do you not like that?
🗪
1:36:06dragoonx6 Q: I noticed how you barely have any code / keyword highlighting in your editor. Do you not like that?
🗪
1:36:06dragoonx6 Q: I noticed how you barely have any code / keyword highlighting in your editor. Do you not like that?
🗪
1:36:32jacksonbanan Q: Do you wish you never started the Sushi game thing to begin with or do you feel like you didn't waste your time and you actually got something out of it?
🗪
1:36:32jacksonbanan Q: Do you wish you never started the Sushi game thing to begin with or do you feel like you didn't waste your time and you actually got something out of it?
🗪
1:36:32jacksonbanan Q: Do you wish you never started the Sushi game thing to begin with or do you feel like you didn't waste your time and you actually got something out of it?
🗪
1:37:45dragoonx6 Q: Like I have here for example1
🗪
1:37:45dragoonx6 Q: Like I have here for example1
🗪
1:37:45dragoonx6 Q: Like I have here for example1
🗪
1:38:20jim0_o Q: Have you thought of making a stream be a recap of your code, kind of looking over it and explaining it to catch people up who can't watch it all?
🗪
1:38:20jim0_o Q: Have you thought of making a stream be a recap of your code, kind of looking over it and explaining it to catch people up who can't watch it all?
🗪
1:38:20jim0_o Q: Have you thought of making a stream be a recap of your code, kind of looking over it and explaining it to catch people up who can't watch it all?
🗪
1:39:04zennmystic Q: Started slightly late and the pre-stream went on for longer than usual
🗪
1:39:04zennmystic Q: Started slightly late and the pre-stream went on for longer than usual
🗪
1:39:04zennmystic Q: Started slightly late and the pre-stream went on for longer than usual
🗪
1:39:40bigmofo1 Q: Can you add partition box visualization? Or is that not valuable?
🗪
1:39:40bigmofo1 Q: Can you add partition box visualization? Or is that not valuable?
🗪
1:39:40bigmofo1 Q: Can you add partition box visualization? Or is that not valuable?
🗪
1:40:28deadlines_over How close are you to finishing?
🗪
1:40:28deadlines_over How close are you to finishing?
🗪
1:40:28deadlines_over How close are you to finishing?
🗪
1:40:58menelaus35 Q: That frame profiler UI, is that custom made on stream? Looks good
🗪
1:40:58menelaus35 Q: That frame profiler UI, is that custom made on stream? Looks good
🗪
1:40:58menelaus35 Q: That frame profiler UI, is that custom made on stream? Looks good
🗪
1:41:06Show off the profiler
🏃
1:41:06Show off the profiler
🏃
1:41:06Show off the profiler
🏃
1:43:13deadlines_over Q: What do you think of functional programming2
🗪
1:43:13deadlines_over Q: What do you think of functional programming2
🗪
1:43:13deadlines_over Q: What do you think of functional programming2
🗪
1:43:42Wrap up
🗩
1:43:42Wrap up
🗩
1:43:42Wrap up
🗩