Debugging Simplified Lighting
?
?

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
🗩
0:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
3:14Demo the lighting performance
🏃
3:14Demo the lighting performance
🏃
3:14Demo the lighting performance
🏃
4:19Describe the old eight-ray octahedral lighting
📖
4:19Describe the old eight-ray octahedral lighting
📖
4:19Describe the old eight-ray octahedral lighting
📖
7:06Increase the SampleBatch loop from 16 to 64 in FullCast()
7:06Increase the SampleBatch loop from 16 to 64 in FullCast()
7:06Increase the SampleBatch loop from 16 to 64 in FullCast()
7:22Our performance has degraded
🏃
7:22Our performance has degraded
🏃
7:22Our performance has degraded
🏃
7:28Decrease the SampleBatch loop from 64 to 8 in FullCast()
7:28Decrease the SampleBatch loop from 64 to 8 in FullCast()
7:28Decrease the SampleBatch loop from 64 to 8 in FullCast()
7:36We could easily hit 60 FPS
🏃
7:36We could easily hit 60 FPS
🏃
7:36We could easily hit 60 FPS
🏃
8:05Consider moving the SampleBatch loop down to GridRayCast()
📖
8:05Consider moving the SampleBatch loop down to GridRayCast()
📖
8:05Consider moving the SampleBatch loop down to GridRayCast()
📖
10:27Consider analysing the sampling distribution of FullCast()
📖
10:27Consider analysing the sampling distribution of FullCast()
📖
10:27Consider analysing the sampling distribution of FullCast()
📖
12:17Move the SampleBatch loop from FullCast() down to GridRayCast()
12:17Move the SampleBatch loop from FullCast() down to GridRayCast()
12:17Move the SampleBatch loop from FullCast() down to GridRayCast()
14:17Check the call stack of GridRayCast() for EntropyIndex
📖
14:17Check the call stack of GridRayCast() for EntropyIndex
📖
14:17Check the call stack of GridRayCast() for EntropyIndex
📖
15:16Change FullCast() to take Entropy not as a pointer, and setup ComputeLightPropagationWork() increment the Entropy
15:16Change FullCast() to take Entropy not as a pointer, and setup ComputeLightPropagationWork() increment the Entropy
15:16Change FullCast() to take Entropy not as a pointer, and setup ComputeLightPropagationWork() increment the Entropy
16:20Reacquaint ourselves with our random number generation
📖
16:20Reacquaint ourselves with our random number generation
📖
16:20Reacquaint ourselves with our random number generation
📖
20:39Make ComputeLightPropagationWork() get Entropy from RandomSeedOffset()
20:39Make ComputeLightPropagationWork() get Entropy from RandomSeedOffset()
20:39Make ComputeLightPropagationWork() get Entropy from RandomSeedOffset()
21:57Consider usage of our random number code, and then just casting all 16 octahedrons
📖
21:57Consider usage of our random number code, and then just casting all 16 octahedrons
📖
21:57Consider usage of our random number code, and then just casting all 16 octahedrons
📖
24:49Remove entropy from FullCast() and make GridRayCast() just sample all the octahedrons
24:49Remove entropy from FullCast() and make GridRayCast() just sample all the octahedrons
24:49Remove entropy from FullCast() and make GridRayCast() just sample all the octahedrons
31:41Reacquaint ourselves with the sample direction picking code in GridRayCast()
📖
31:41Reacquaint ourselves with the sample direction picking code in GridRayCast()
📖
31:41Reacquaint ourselves with the sample direction picking code in GridRayCast()
📖
36:09Fix GridRayCast() to correctly step through the lighting table
36:09Fix GridRayCast() to correctly step through the lighting table
36:09Fix GridRayCast() to correctly step through the lighting table
37:56Consider structuring the lighting table with Rows being prime, and Octahedrons being interior
📖
37:56Consider structuring the lighting table with Rows being prime, and Octahedrons being interior
📖
37:56Consider structuring the lighting table with Rows being prime, and Octahedrons being interior
📖
39:12Make GridRayCast() take an Sy value from FullCast(), for stepping through the sample table
39:12Make GridRayCast() take an Sy value from FullCast(), for stepping through the sample table
39:12Make GridRayCast() take an Sy value from FullCast(), for stepping through the sample table
41:36Remove Entropy from the call to FullCast() in ComputeLightPropagationWork()
41:36Remove Entropy from the call to FullCast() in ComputeLightPropagationWork()
41:36Remove Entropy from the call to FullCast() in ComputeLightPropagationWork()
42:09Our lighting is now stable
🏃
42:09Our lighting is now stable
🏃
42:09Our lighting is now stable
🏃
42:27Increase tUpdateBlend from 1/60 to 15/60 in UpdateLighting()
42:27Increase tUpdateBlend from 1/60 to 15/60 in UpdateLighting()
42:27Increase tUpdateBlend from 1/60 to 15/60 in UpdateLighting()
42:56The lighting doesn't seem to line up correctly when shifting around
🏃
42:56The lighting doesn't seem to line up correctly when shifting around
🏃
42:56The lighting doesn't seem to line up correctly when shifting around
🏃
44:16~28ms per frame, and ~82% frame time on ComputeLightPropagationWork
🏃
44:16~28ms per frame, and ~82% frame time on ComputeLightPropagationWork
🏃
44:16~28ms per frame, and ~82% frame time on ComputeLightPropagationWork
🏃
45:45Determine to debug the lighting computation
📖
45:45Determine to debug the lighting computation
📖
45:45Determine to debug the lighting computation
📖
46:54Walk through GridRayCast() and ComputeWalkTable() to refresh our memories
📖
46:54Walk through GridRayCast() and ComputeWalkTable() to refresh our memories
📖
46:54Walk through GridRayCast() and ComputeWalkTable() to refresh our memories
📖
52:52Toggle on DebugDrawOctahedralValues() in UpdateLighting()
52:52Toggle on DebugDrawOctahedralValues() in UpdateLighting()
52:52Toggle on DebugDrawOctahedralValues() in UpdateLighting()
53:01Check out the light probes
🏃
53:01Check out the light probes
🏃
53:01Check out the light probes
🏃
54:11Toggle on DebugDrawSpatialGrid() in UpdateLighting()
54:11Toggle on DebugDrawSpatialGrid() in UpdateLighting()
54:11Toggle on DebugDrawSpatialGrid() in UpdateLighting()
54:21Flood the debug system with vertices
🏃
54:21Flood the debug system with vertices
🏃
54:21Flood the debug system with vertices
🏃
54:49Make UpdateLighting() double the MaxDebugLineCount
54:49Make UpdateLighting() double the MaxDebugLineCount
54:49Make UpdateLighting() double the MaxDebugLineCount
54:56Still flood the debug system with vertices
🏃
54:56Still flood the debug system with vertices
🏃
54:56Still flood the debug system with vertices
🏃
55:03Make PushLightingRenderValues() batch up the debug lines into 16-bit capable chunks
55:03Make PushLightingRenderValues() batch up the debug lines into 16-bit capable chunks
55:03Make PushLightingRenderValues() batch up the debug lines into 16-bit capable chunks
58:42Still flood the debug system with vertices
🏃
58:42Still flood the debug system with vertices
🏃
58:42Still flood the debug system with vertices
🏃
58:58Investigate the bug in our lighting debug line batching
58:58Investigate the bug in our lighting debug line batching
58:58Investigate the bug in our lighting debug line batching
1:00:24Decrease the batch size from U16Max to 4096 in PushLightingRenderValues()
1:00:24Decrease the batch size from U16Max to 4096 in PushLightingRenderValues()
1:00:24Decrease the batch size from U16Max to 4096 in PushLightingRenderValues()
1:00:45Check out our spatial grid
🏃
1:00:45Check out our spatial grid
🏃
1:00:45Check out our spatial grid
🏃
1:03:05Consider restoring our lighting alignment
🏃
1:03:05Consider restoring our lighting alignment
🏃
1:03:05Consider restoring our lighting alignment
🏃
1:04:57Make UpdateLighting() offset the AtlasMinCorner by half a voxel
1:04:57Make UpdateLighting() offset the AtlasMinCorner by half a voxel
1:04:57Make UpdateLighting() offset the AtlasMinCorner by half a voxel
1:07:34Admire our light poisoning
🏃
1:07:34Admire our light poisoning
🏃
1:07:34Admire our light poisoning
🏃
1:09:30Comment out the AtlasMinCorner offset in UpdateLighting()
1:09:30Comment out the AtlasMinCorner offset in UpdateLighting()
1:09:30Comment out the AtlasMinCorner offset in UpdateLighting()
1:09:43Traverse the orphanage, pondering the offset-induced lighting poisoning
🏃
1:09:43Traverse the orphanage, pondering the offset-induced lighting poisoning
🏃
1:09:43Traverse the orphanage, pondering the offset-induced lighting poisoning
🏃
1:10:23Consider why the lighting alignment affects its feedback behaviour
📖
1:10:23Consider why the lighting alignment affects its feedback behaviour
📖
1:10:23Consider why the lighting alignment affects its feedback behaviour
📖
1:11:28Let UpdateLighting() offset the AtlasMinCorner by half a voxel
1:11:28Let UpdateLighting() offset the AtlasMinCorner by half a voxel
1:11:28Let UpdateLighting() offset the AtlasMinCorner by half a voxel
1:11:31Take one last look at the light poisoning
🏃
1:11:31Take one last look at the light poisoning
🏃
1:11:31Take one last look at the light poisoning
🏃
1:11:58Toggle off DebugDrawOctahedralValues() and DebugDrawSpatialGrid() in UpdateLighting()
1:11:58Toggle off DebugDrawOctahedralValues() and DebugDrawSpatialGrid() in UpdateLighting()
1:11:58Toggle off DebugDrawOctahedralValues() and DebugDrawSpatialGrid() in UpdateLighting()
1:12:14Consider it to be a sampling direction bug
🏃
1:12:14Consider it to be a sampling direction bug
🏃
1:12:14Consider it to be a sampling direction bug
🏃
1:13:16Toggle on DebugDrawOctahedralValues() in UpdateLighting(), and the octahedral map drawing
1:13:16Toggle on DebugDrawOctahedralValues() in UpdateLighting(), and the octahedral map drawing
1:13:16Toggle on DebugDrawOctahedralValues() in UpdateLighting(), and the octahedral map drawing
1:13:40Check out our octahedral map koosh balls
🏃
1:13:40Check out our octahedral map koosh balls
🏃
1:13:40Check out our octahedral map koosh balls
🏃
1:15:06Toggle on and make DebugDrawSpatialGrid() draw just the cell boundaries
1:15:06Toggle on and make DebugDrawSpatialGrid() draw just the cell boundaries
1:15:06Toggle on and make DebugDrawSpatialGrid() draw just the cell boundaries
1:15:35Check out the cell boundaries in relation to the octahedral map koosh balls
🏃
1:15:35Check out the cell boundaries in relation to the octahedral map koosh balls
🏃
1:15:35Check out the cell boundaries in relation to the octahedral map koosh balls
🏃
1:16:10Toggle on the occluder drawing in DebugDrawSpatialGrid()
1:16:10Toggle on the occluder drawing in DebugDrawSpatialGrid()
1:16:10Toggle on the occluder drawing in DebugDrawSpatialGrid()
1:16:22Light probes inside light sources inconsistently see light and no light
🏃
1:16:22Light probes inside light sources inconsistently see light and no light
🏃
1:16:22Light probes inside light sources inconsistently see light and no light
🏃
1:18:27lfcdi The hero's light box is sometimes red and sometimes green
🗪
1:18:27lfcdi The hero's light box is sometimes red and sometimes green
🗪
1:18:27lfcdi The hero's light box is sometimes red and sometimes green
🗪
1:18:33Demo the spatial grid checkerboard colouring
🏃
1:18:33Demo the spatial grid checkerboard colouring
🏃
1:18:33Demo the spatial grid checkerboard colouring
🏃
1:18:54Toggle off the non-occluder drawing in DebugDrawSpatialGrid()
1:18:54Toggle off the non-occluder drawing in DebugDrawSpatialGrid()
1:18:54Toggle off the non-occluder drawing in DebugDrawSpatialGrid()
1:19:04Demo the spatial grid checkerboard colouring
🏃
1:19:04Demo the spatial grid checkerboard colouring
🏃
1:19:04Demo the spatial grid checkerboard colouring
🏃
1:21:11Determine to investigate the ray caster
🏃
1:21:11Determine to investigate the ray caster
🏃
1:21:11Determine to investigate the ray caster
🏃
1:21:30horrowind In handmade_lighting.cpp: line 152 SampleDir = ... Should the first factor be Sy*16*8?
🗪
1:21:30horrowind In handmade_lighting.cpp: line 152 SampleDir = ... Should the first factor be Sy*16*8?
🗪
1:21:30horrowind In handmade_lighting.cpp: line 152 SampleDir = ... Should the first factor be Sy*16*8?
🗪
1:22:14Explain the SampleDirectionTable indexing line in GridRayCast()
📖
1:22:14Explain the SampleDirectionTable indexing line in GridRayCast()
📖
1:22:14Explain the SampleDirectionTable indexing line in GridRayCast()
📖
1:24:13horrowind I was just wondering because the outer index did not seem to incorporate two factors
🗪
1:24:13horrowind I was just wondering because the outer index did not seem to incorporate two factors
🗪
1:24:13horrowind I was just wondering because the outer index did not seem to incorporate two factors
🗪
1:27:48Set up to investigate the ray caster for bugs
📖
1:27:48Set up to investigate the ray caster for bugs
📖
1:27:48Set up to investigate the ray caster for bugs
📖
1:29:42Scour FullCast() for bugs
📖
1:29:42Scour FullCast() for bugs
📖
1:29:42Scour FullCast() for bugs
📖
1:31:00Make FullCast() write magenta into each SpecTexel inside geometry
1:31:00Make FullCast() write magenta into each SpecTexel inside geometry
1:31:00Make FullCast() write magenta into each SpecTexel inside geometry
1:33:35Admire our magenta light probes
🏃
1:33:35Admire our magenta light probes
🏃
1:33:35Admire our magenta light probes
🏃
1:34:30Lights incorrectly fail to pick up light
🏃
1:34:30Lights incorrectly fail to pick up light
🏃
1:34:30Lights incorrectly fail to pick up light
🏃
1:35:27ciansweeney Debugging lighting is the biggest pain in the ass
🗪
1:35:27ciansweeney Debugging lighting is the biggest pain in the ass
🗪
1:35:27ciansweeney Debugging lighting is the biggest pain in the ass
🗪
1:35:34Optionally make FullCast() write black into each SpecTexel inside geometry
1:35:34Optionally make FullCast() write black into each SpecTexel inside geometry
1:35:34Optionally make FullCast() write black into each SpecTexel inside geometry
1:36:12Our "inside" light probes are now black
🏃
1:36:12Our "inside" light probes are now black
🏃
1:36:12Our "inside" light probes are now black
🏃
1:36:28Toggle off DebugDrawSpatialGrid() in UpdateLighting()
1:36:28Toggle off DebugDrawSpatialGrid() in UpdateLighting()
1:36:28Toggle off DebugDrawSpatialGrid() in UpdateLighting()
1:37:01Our light probes are picking up illogical light
🏃
1:37:01Our light probes are picking up illogical light
🏃
1:37:01Our light probes are picking up illogical light
🏃
1:38:26Consult the SampleDirectionTable for clues regarding our illogical light probes
📖
1:38:26Consult the SampleDirectionTable for clues regarding our illogical light probes
📖
1:38:26Consult the SampleDirectionTable for clues regarding our illogical light probes
📖
1:40:23gregg_ink So we got issues but that's not a problem for us because the worse they are, the faster we will fix them. Love that logic
🗪
1:40:23gregg_ink So we got issues but that's not a problem for us because the worse they are, the faster we will fix them. Love that logic
🗪
1:40:23gregg_ink So we got issues but that's not a problem for us because the worse they are, the faster we will fix them. Love that logic
🗪
1:43:45Check the Remainder code in FullCast()
📖
1:43:45Check the Remainder code in FullCast()
📖
1:43:45Check the Remainder code in FullCast()
📖
1:47:00The light probes inside geometry are correct, but our shifting block-copy is wrong
🏃
1:47:00The light probes inside geometry are correct, but our shifting block-copy is wrong
🏃
1:47:00The light probes inside geometry are correct, but our shifting block-copy is wrong
🏃
1:48:11Check that GridRayCast() and ComputeWalkTable() work in consort
📖
1:48:11Check that GridRayCast() and ComputeWalkTable() work in consort
📖
1:48:11Check that GridRayCast() and ComputeWalkTable() work in consort
📖
1:50:15Consider replacing the walk table with on-the-fly computation
📖
1:50:15Consider replacing the walk table with on-the-fly computation
📖
1:50:15Consider replacing the walk table with on-the-fly computation
📖
1:52:21Check that GridRayCast() and ComputeWalkTable() work in consort (cont.)
📖
1:52:21Check that GridRayCast() and ComputeWalkTable() work in consort (cont.)
📖
1:52:21Check that GridRayCast() and ComputeWalkTable() work in consort (cont.)
📖
1:57:14Determine to draw a particular ray cast
🏃
1:57:14Determine to draw a particular ray cast
🏃
1:57:14Determine to draw a particular ray cast
🏃
1:58:37Reduce the LightSamplingWalkTable pointer array from 8 to 4 in lighting_solution
1:58:37Reduce the LightSamplingWalkTable pointer array from 8 to 4 in lighting_solution
1:58:37Reduce the LightSamplingWalkTable pointer array from 8 to 4 in lighting_solution
1:59:15The lighting looks the same
🏃
1:59:15The lighting looks the same
🏃
1:59:15The lighting looks the same
🏃
1:59:32Scour GridRayCast() for bugs
📖
1:59:32Scour GridRayCast() for bugs
📖
1:59:32Scour GridRayCast() for bugs
📖
2:03:00Increase MaxCostPerRay from 8 to 16 in UpdateLighting()
2:03:00Increase MaxCostPerRay from 8 to 16 in UpdateLighting()
2:03:00Increase MaxCostPerRay from 8 to 16 in UpdateLighting()
2:03:52~38ms per frame, and ~69% frame time on ComputeLightPropagationWork
🏃
2:03:52~38ms per frame, and ~69% frame time on ComputeLightPropagationWork
🏃
2:03:52~38ms per frame, and ~69% frame time on ComputeLightPropagationWork
🏃
2:04:21Toggle off DebugDrawOctahedralValues() in UpdateLighting()
2:04:21Toggle off DebugDrawOctahedralValues() in UpdateLighting()
2:04:21Toggle off DebugDrawOctahedralValues() in UpdateLighting()
2:04:27~27ms per frame, and ~81% frame time on ComputeLightPropagationWork
🏃
2:04:27~27ms per frame, and ~81% frame time on ComputeLightPropagationWork
🏃
2:04:27~27ms per frame, and ~81% frame time on ComputeLightPropagationWork
🏃
2:04:51Toggle on DebugDrawOctahedralValues() and decrease MaxCostPerRay back from 16 to 8 in UpdateLighting()
2:04:51Toggle on DebugDrawOctahedralValues() and decrease MaxCostPerRay back from 16 to 8 in UpdateLighting()
2:04:51Toggle on DebugDrawOctahedralValues() and decrease MaxCostPerRay back from 16 to 8 in UpdateLighting()
2:06:41Re-enable ray drawing in GridRayCast()
2:06:41Re-enable ray drawing in GridRayCast()
2:06:41Re-enable ray drawing in GridRayCast()
2:09:04Reacquaint ourselves with RectCenterDim() and the ProbeSamplePSingle value in GridRayCast()
📖
2:09:04Reacquaint ourselves with RectCenterDim() and the ProbeSamplePSingle value in GridRayCast()
📖
2:09:04Reacquaint ourselves with RectCenterDim() and the ProbeSamplePSingle value in GridRayCast()
📖
2:12:17Enable GridRayCast() to use ProbeSamplePSingle and ProbeSampleNSingle for drawing
2:12:17Enable GridRayCast() to use ProbeSamplePSingle and ProbeSampleNSingle for drawing
2:12:17Enable GridRayCast() to use ProbeSamplePSingle and ProbeSampleNSingle for drawing
2:14:05Consider supporting picking of a particular ray
📖
2:14:05Consider supporting picking of a particular ray
📖
2:14:05Consider supporting picking of a particular ray
📖
2:15:51Re-enable ray cast drawing in FullCast()
2:15:51Re-enable ray cast drawing in FullCast()
2:15:51Re-enable ray cast drawing in FullCast()
2:19:12Hunt in vain for our drawn ray cast
🏃
2:19:12Hunt in vain for our drawn ray cast
🏃
2:19:12Hunt in vain for our drawn ray cast
🏃
2:19:36Toggle off DebugDrawOctahedralValues() in UpdateLighting()
2:19:36Toggle off DebugDrawOctahedralValues() in UpdateLighting()
2:19:36Toggle off DebugDrawOctahedralValues() in UpdateLighting()
2:19:57Hunt in vain for our drawn ray cast
🏃
2:19:57Hunt in vain for our drawn ray cast
🏃
2:19:57Hunt in vain for our drawn ray cast
🏃
2:20:12Decrease DebugGridIndex from 717 to 200 and DebugRayIndex from 531 to 0 in UpdateLighting()
2:20:12Decrease DebugGridIndex from 717 to 200 and DebugRayIndex from 531 to 0 in UpdateLighting()
2:20:12Decrease DebugGridIndex from 717 to 200 and DebugRayIndex from 531 to 0 in UpdateLighting()
2:21:27Hunt in vain for our drawn ray cast
🏃
2:21:27Hunt in vain for our drawn ray cast
🏃
2:21:27Hunt in vain for our drawn ray cast
🏃
2:21:42Elevate GRID_RAY_CAST_DEBUGGING to the top of handmade_lighting.h
2:21:42Elevate GRID_RAY_CAST_DEBUGGING to the top of handmade_lighting.h
2:21:42Elevate GRID_RAY_CAST_DEBUGGING to the top of handmade_lighting.h
2:22:46Break in to FullCast() to find that we never get to our DebugGridIndex of 200
🏃
2:22:46Break in to FullCast() to find that we never get to our DebugGridIndex of 200
🏃
2:22:46Break in to FullCast() to find that we never get to our DebugGridIndex of 200
🏃
2:24:41The spatial partition is half the voxel dimensions, a mere 96
📖
2:24:41The spatial partition is half the voxel dimensions, a mere 96
📖
2:24:41The spatial partition is half the voxel dimensions, a mere 96
📖
2:25:43Decrease DebugGridIndex from 200 to 30 in UpdateLighting()
2:25:43Decrease DebugGridIndex from 200 to 30 in UpdateLighting()
2:25:43Decrease DebugGridIndex from 200 to 30 in UpdateLighting()
2:26:04Break in to FullCast() and see our drawn ray cast
🏃
2:26:04Break in to FullCast() and see our drawn ray cast
🏃
2:26:04Break in to FullCast() and see our drawn ray cast
🏃
2:28:03Re-enable support for debug ray picking in FullCast(), introducing debug_ray_pick
2:28:03Re-enable support for debug ray picking in FullCast(), introducing debug_ray_pick
2:28:03Re-enable support for debug ray picking in FullCast(), introducing debug_ray_pick
2:34:05Quick break for water and snacks
🗹
2:34:05Quick break for water and snacks
🗹
2:34:05Quick break for water and snacks
🗹
2:34:34insobot Allocates 256 megs, keeps playing. Employees are encouraged to kill yourself
🗪
2:34:34insobot Allocates 256 megs, keeps playing. Employees are encouraged to kill yourself
🗪
2:34:34insobot Allocates 256 megs, keeps playing. Employees are encouraged to kill yourself
🗪
2:34:52bluemelon555 Are you providing the snacks?
🗪
2:34:52bluemelon555 Are you providing the snacks?
🗪
2:34:52bluemelon555 Are you providing the snacks?
🗪
2:47:31Return with water and snacks
🗹
2:47:31Return with water and snacks
🗹
2:47:31Return with water and snacks
🗹
2:48:41choosetheforce I used to inhale that stuff as a kid
🗪
2:48:41choosetheforce I used to inhale that stuff as a kid
🗪
2:48:41choosetheforce I used to inhale that stuff as a kid
🗪
2:48:51Resume re-enabling support for debug ray picking in FullCast()
2:48:51Resume re-enabling support for debug ray picking in FullCast()
2:48:51Resume re-enabling support for debug ray picking in FullCast()
2:53:28The magenta "expected direction" line does not go in the direction we ray cast
🏃
2:53:28The magenta "expected direction" line does not go in the direction we ray cast
🏃
2:53:28The magenta "expected direction" line does not go in the direction we ray cast
🏃
2:55:12Investigate the "expected" and "ray" direction misalignment in FullCast()
📖
2:55:12Investigate the "expected" and "ray" direction misalignment in FullCast()
📖
2:55:12Investigate the "expected" and "ray" direction misalignment in FullCast()
📖
2:56:27Try making FullCast() add 1 to the ExpectedDirection axes to account for the apron
2:56:27Try making FullCast() add 1 to the ExpectedDirection axes to account for the apron
2:56:27Try making FullCast() add 1 to the ExpectedDirection axes to account for the apron
2:56:47The "expected" and "ray" directions remain misaligned
🏃
2:56:47The "expected" and "ray" directions remain misaligned
🏃
2:56:47The "expected" and "ray" directions remain misaligned
🏃
2:56:59Investigate the "expected" and "ray" direction misalignment in FullCast() and GridRayCast()
📖
2:56:59Investigate the "expected" and "ray" direction misalignment in FullCast() and GridRayCast()
📖
2:56:59Investigate the "expected" and "ray" direction misalignment in FullCast() and GridRayCast()
📖
2:58:29The "expected" and "ray" lines only need to come out of the same face of the octahedron
🏃
2:58:29The "expected" and "ray" lines only need to come out of the same face of the octahedron
🏃
2:58:29The "expected" and "ray" lines only need to come out of the same face of the octahedron
🏃
2:58:56Re-enable editing of the ray picking values in DEBUGInteract() and DEBUGBeginInteract()
2:58:56Re-enable editing of the ray picking values in DEBUGInteract() and DEBUGBeginInteract()
2:58:56Re-enable editing of the ray picking values in DEBUGInteract() and DEBUGBeginInteract()
3:03:05Try editing GridIndex in-game
🏃
3:03:05Try editing GridIndex in-game
🏃
3:03:05Try editing GridIndex in-game
🏃
3:04:06Clamp the DebugTick values in FullCast()
3:04:06Clamp the DebugTick values in FullCast()
3:04:06Clamp the DebugTick values in FullCast()
3:06:53GridIndex 48 yields two sets of ray casting
🏃
3:06:53GridIndex 48 yields two sets of ray casting
🏃
3:06:53GridIndex 48 yields two sets of ray casting
🏃
3:07:48Replace GridIndex with a v3s AtlasIndex in debug_ray_pick, for more specific ray picking
3:07:48Replace GridIndex with a v3s AtlasIndex in debug_ray_pick, for more specific ray picking
3:07:48Replace GridIndex with a v3s AtlasIndex in debug_ray_pick, for more specific ray picking
3:11:09Introduce a v3s version of Clamp()
3:11:09Introduce a v3s version of Clamp()
3:11:09Introduce a v3s version of Clamp()
3:12:11Make FullCast() keep the AtlasIndex in range
3:12:11Make FullCast() keep the AtlasIndex in range
3:12:11Make FullCast() keep the AtlasIndex in range
3:12:25Try unsuccessfully to edit AtlasIndex
🏃
3:12:25Try unsuccessfully to edit AtlasIndex
🏃
3:12:25Try unsuccessfully to edit AtlasIndex
🏃
3:13:10Add s32 editing support to DEBUGInteract() and DEBUGBeginInteract()
3:13:10Add s32 editing support to DEBUGInteract() and DEBUGBeginInteract()
3:13:10Add s32 editing support to DEBUGInteract() and DEBUGBeginInteract()
3:13:48Try editing our AtlasIndex values
🏃
3:13:48Try editing our AtlasIndex values
🏃
3:13:48Try editing our AtlasIndex values
🏃
3:14:52Add DevUI_Interaction_TickValue to edit integer values by clicking (rather than dragging)
3:14:52Add DevUI_Interaction_TickValue to edit integer values by clicking (rather than dragging)
3:14:52Add DevUI_Interaction_TickValue to edit integer values by clicking (rather than dragging)
3:17:48Decrementing by clicking works, but incrementing does not
🏃
3:17:48Decrementing by clicking works, but incrementing does not
🏃
3:17:48Decrementing by clicking works, but incrementing does not
🏃
3:18:07Fix DEBUGInteract() to increment integer values by clicking
3:18:07Fix DEBUGInteract() to increment integer values by clicking
3:18:07Fix DEBUGInteract() to increment integer values by clicking
3:18:21Click-and-hold increments integer values
🏃
3:18:21Click-and-hold increments integer values
🏃
3:18:21Click-and-hold increments integer values
🏃
3:18:34Make DEBUGEndInteract() rather than DEBUGInteract() handle integer editing by clicking
3:18:34Make DEBUGEndInteract() rather than DEBUGInteract() handle integer editing by clicking
3:18:34Make DEBUGEndInteract() rather than DEBUGInteract() handle integer editing by clicking
3:19:21Our integer editing is more sane, but still doesn't clamp
🏃
3:19:21Our integer editing is more sane, but still doesn't clamp
🏃
3:19:21Our integer editing is more sane, but still doesn't clamp
🏃
3:20:47Atlas (10, 4, 1) on our octahedral map has a straight-down expected direction
🏃
3:20:47Atlas (10, 4, 1) on our octahedral map has a straight-down expected direction
🏃
3:20:47Atlas (10, 4, 1) on our octahedral map has a straight-down expected direction
🏃
3:21:39Investigate our straight-down expected direction
📖
3:21:39Investigate our straight-down expected direction
📖
3:21:39Investigate our straight-down expected direction
📖
3:23:50gregg_ink Are light bleed and light poisoning the same thing?
🗪
3:23:50gregg_ink Are light bleed and light poisoning the same thing?
🗪
3:23:50gregg_ink Are light bleed and light poisoning the same thing?
🗪
3:26:34Inspect atlas (10, 4, 1)
🏃
3:26:34Inspect atlas (10, 4, 1)
🏃
3:26:34Inspect atlas (10, 4, 1)
🏃
3:27:04Initialise AtlasIndex to 10, 4, 1 UpdateLighting()
3:27:04Initialise AtlasIndex to 10, 4, 1 UpdateLighting()
3:27:04Initialise AtlasIndex to 10, 4, 1 UpdateLighting()
3:27:14Ray casting on AtlasIndex (10, 4, 1) fails from Octahedron 4 onwards
🏃
3:27:14Ray casting on AtlasIndex (10, 4, 1) fails from Octahedron 4 onwards
🏃
3:27:14Ray casting on AtlasIndex (10, 4, 1) fails from Octahedron 4 onwards
🏃
3:27:42Investigate SampleDirectionTable and GridRayCast() for the source of our ray casting failure
📖
3:27:42Investigate SampleDirectionTable and GridRayCast() for the source of our ray casting failure
📖
3:27:42Investigate SampleDirectionTable and GridRayCast() for the source of our ray casting failure
📖
3:31:20Octahedron 4 to 15 remain incorrect
🏃
3:31:20Octahedron 4 to 15 remain incorrect
🏃
3:31:20Octahedron 4 to 15 remain incorrect
🏃
3:32:22Check again that GridRayCast() and ComputeWalkTable() work in consort
📖
3:32:22Check again that GridRayCast() and ComputeWalkTable() work in consort
📖
3:32:22Check again that GridRayCast() and ComputeWalkTable() work in consort
📖
3:35:05Initialise DirOffset in GridRayCast() for easy inspection
3:35:05Initialise DirOffset in GridRayCast() for easy inspection
3:35:05Initialise DirOffset in GridRayCast() for easy inspection
3:35:52Step in to GridRayCast() and inspect DirOffset and RayDSingle, to find values we didn't think existed in handmade_sampling_spheres.inl
🏃
3:35:52Step in to GridRayCast() and inspect DirOffset and RayDSingle, to find values we didn't think existed in handmade_sampling_spheres.inl
🏃
3:35:52Step in to GridRayCast() and inspect DirOffset and RayDSingle, to find values we didn't think existed in handmade_sampling_spheres.inl
🏃
3:40:23ono_sendai_ Is this 2D or 3D global illumination?
🗪
3:40:23ono_sendai_ Is this 2D or 3D global illumination?
🗪
3:40:23ono_sendai_ Is this 2D or 3D global illumination?
🗪
3:41:55Determine to fix GenerateOctahedralLightingPattern() next time
📖
3:41:55Determine to fix GenerateOctahedralLightingPattern() next time
📖
3:41:55Determine to fix GenerateOctahedralLightingPattern() next time
📖
3:46:16poissonprocess Poisson distributions!
🗪
3:46:16poissonprocess Poisson distributions!
🗪
3:46:16poissonprocess Poisson distributions!
🗪
3:46:25Consider keeping Poisson distribution sampling
📖
3:46:25Consider keeping Poisson distribution sampling
📖
3:46:25Consider keeping Poisson distribution sampling
📖
3:48:20spacenaming Will it still be mapped to the octahedral map? Because if so, couldn't we just generate the noise on there? That is a square surface, right?
🗪
3:48:20spacenaming Will it still be mapped to the octahedral map? Because if so, couldn't we just generate the noise on there? That is a square surface, right?
🗪
3:48:20spacenaming Will it still be mapped to the octahedral map? Because if so, couldn't we just generate the noise on there? That is a square surface, right?
🗪
3:49:44Determine to rebuild SampleDirectionTable next time
📖
3:49:44Determine to rebuild SampleDirectionTable next time
📖
3:49:44Determine to rebuild SampleDirectionTable next time
📖
3:50:19Set up GridRayCast() to traverse the SampleDirectionTable in a single loop
3:50:19Set up GridRayCast() to traverse the SampleDirectionTable in a single loop
3:50:19Set up GridRayCast() to traverse the SampleDirectionTable in a single loop
3:52:37Call it here, with the determination to rebuild SampleDirectionTable next time
🗩
3:52:37Call it here, with the determination to rebuild SampleDirectionTable next time
🗩
3:52:37Call it here, with the determination to rebuild SampleDirectionTable next time
🗩
3:53:21Consider the possibility of smarter ways to batch up ray processing
📖
3:53:21Consider the possibility of smarter ways to batch up ray processing
📖
3:53:21Consider the possibility of smarter ways to batch up ray processing
📖
3:54:32Thank you, everyone
🗩
3:54:32Thank you, everyone
🗩
3:54:32Thank you, everyone
🗩