[video output=day604 member=cmuratori stream_platform=twitch stream_username=handmade_hero  project=code title="Adding a Voxel Utility Struct" vod_platform=youtube id=6rEaX9UmEcc annotator=Miblo]
[0:02][Recap and set the stage for the day][:speech]
[2:52][:Lighting walkthrough: Voxelisation recording the octahedral map][:research]
[4:21][:Lighting walkthrough: Grid ray tracing, for writing to the octahedral map][:research :threading]
[7:21][:Lighting walkthrough: Traversing the aproned voxel][:research]
[9:25][:Lighting walkthrough: Computing and writing to the octahedral map][:research]
[12:36][:Lighting walkthrough: Grid ray casting, propagating light through the system][:research]
[16:07][:Lighting walkthrough: Grid ray casting, for :sampling from the spatial grid][:research]
[23:26][Consider the correctness of our partial-floating-point MinTest computation in GridRayCast()][:lighting :mathematics :research]
[26:44][Make a note in GridRayCast() to consider computing MinTest using the full 32-bit compare][:lighting :mathematics]
[29:29][:Lighting walkthrough: Grid ray casting, for :sampling from the spatial grid, continued][:research]
[35:35][:Lighting walkthrough: Pre-pass spatial grid construction][:research]
[36:45][Antibiotics, COVID-19, throat culture tests and medical practice][:health :speech]
[38:39][:Lighting walkthrough: Pre-pass spatial grid construction, continued][:research]
[41:59][Document the Intersect() call in BuildSpatialPartitionForLighting()][:lighting]
[42:44][Determine to step through the :lighting code][:speech]
[43:19][Try to break into InteralLightingCore()][:lighting :run]
[44:25][Step through InternalLightingCore()][:lighting :run]
[47:43][Make BuildSpatialPartitionForLighting() subtract the apron from the MaxGridIndex][:lighting]
[48:04][Step back in to BuildSpatialPartitionForLighting()][:lighting :run]
[48:29][Respecify MaxGridIndex as GridCount in BuildSpatialPartitionForLighting()][:lighting]
[49:40][Continue to step through BuildSpatialPartitionForLighting()][:lighting :run]
[51:15][Assert in GridIndexFrom() that our P is inside the Voxel][:"data structure" :lighting]
[54:51][Extend the voxel by an ExtraOcclusionRadius, augmenting lighting_solution with a SpatialGridCorner and SpatialGridIndexOffset][:"data structure" :lighting]
[1:02:24][Create handmade_voxel.h and handmade_voxel.cpp, introducing voxel_grid and related utility functions][:"data structure" :lighting]
[1:15:13][Clean up and augment lighting_solution with new voxel_grid AtlasGrid and SpatialGrid][:"data structure" :lighting]
[1:20:10][Include handmade_voxel.h and handmade_voxel.cpp, fix errors and introduce voxel_relative_p][:"data structure" :lighting]
[1:25:39][Update the :lighting system to use our new voxel utility functions]
[2:22:41][Consider collapsing BeginLightingComputation() and InternalLightingCore()][:lighting :research]
[2:26:43][Introduce SetLightingValues() to do all the render_group initialisation work from BeginLightingComputation()][:lighting]
[2:28:42][Respecify BeginLightingComputation() as SetUpLightingRegion(), EndLightingComputation() as UpdateLighting(), and introduce PushLightingDebugValues()][:lighting]
[2:38:04][Q&A][:speech]
[2:38:26][@somebody_took_my_name][Q: When assigning SpatialMinCorner in SetUpLightingRegion(), the AtlasGrid's MinCorner is probably not yet initialized. So I think it should use the AtlasMinCorner variable][:lighting]
[2:39:05][Fix the SpatialMinCorner assignment in SetUpLightingRegion()][:lighting]
[2:39:31][@insobot][Q: Whisky?]
[2:39:48][@thebanjomatic][Q: ETA for 603, 604 hitting YouTube? I missed last Sunday's stream. Miss anything good?]
[2:40:39][@sagian2005][Q: Maybe it got fixed already. MaxNodeIndex = GetVoxelIndexForP (... Solution->SpatialGridMinCorner ...) should be SpatialGridMaxCorner]
[2:41:42][@somebody_took_my_name][It's missing the Grid pointer]
[2:41:55][Enable HANDMADE_INTERNAL and HANDMADE_SLOW, and fix the Assert in FlatIndexFrom()][:lighting]
[2:42:59][Delete the :lighting .dump and .txt files][:admin]
[2:43:40][We'll pick this up tomorrow][:speech]
[/video]
