Rebuilding Light Tables
?
?

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:01Recap and set the stage for the day building light tables
🗩
0:01Recap and set the stage for the day building light tables
🗩
0:01Recap and set the stage for the day building light tables
🗩
1:16Demo our lighting colour bleed
🏃
1:16Demo our lighting colour bleed
🏃
1:16Demo our lighting colour bleed
🏃
2:07Our SampleDirectionTable in handmade_sampling_spheres.inl samples direction [0, 0, 1] multiple times
📖
2:07Our SampleDirectionTable in handmade_sampling_spheres.inl samples direction [0, 0, 1] multiple times
📖
2:07Our SampleDirectionTable in handmade_sampling_spheres.inl samples direction [0, 0, 1] multiple times
📖
3:35Plan to rebuild our light table in an evenly distributed blue noise pattern
📖
3:35Plan to rebuild our light table in an evenly distributed blue noise pattern
📖
3:35Plan to rebuild our light table in an evenly distributed blue noise pattern
📖
5:59Consider sampling the light at 16 samples per texel
📖
5:59Consider sampling the light at 16 samples per texel
📖
5:59Consider sampling the light at 16 samples per texel
📖
7:25bashtardis You also need it to be blue-noise temporally as well as spatially for best result
🗪
7:25bashtardis You also need it to be blue-noise temporally as well as spatially for best result
🗪
7:25bashtardis You also need it to be blue-noise temporally as well as spatially for best result
🗪
7:53Consider using a pseudo-blue noise sampling pattern, or tuning the distance parameter manually
📖
7:53Consider using a pseudo-blue noise sampling pattern, or tuning the distance parameter manually
📖
7:53Consider using a pseudo-blue noise sampling pattern, or tuning the distance parameter manually
📖
9:13Toggle on the sphere drawing in PushLightingRenderValues()
9:13Toggle on the sphere drawing in PushLightingRenderValues()
9:13Toggle on the sphere drawing in PushLightingRenderValues()
9:46Check out our sampling sphere
🏃
9:46Check out our sampling sphere
🏃
9:46Check out our sampling sphere
🏃
10:22Plan to rebuild the table then view our drawing
📖
10:22Plan to rebuild the table then view our drawing
📖
10:22Plan to rebuild the table then view our drawing
📖
10:46Reacquaint ourselves with hhsphere.cpp
📖
10:46Reacquaint ourselves with hhsphere.cpp
📖
10:46Reacquaint ourselves with hhsphere.cpp
📖
14:08Remove SamplingSpheres from lighting_solution, the LightSamplingSphereFloatTable from handmade_sampling_spheres.inl with its generator in OutputSphereINL(), InterleaveDirections(), cube_store and sphere_store
14:08Remove SamplingSpheres from lighting_solution, the LightSamplingSphereFloatTable from handmade_sampling_spheres.inl with its generator in OutputSphereINL(), InterleaveDirections(), cube_store and sphere_store
14:08Remove SamplingSpheres from lighting_solution, the LightSamplingSphereFloatTable from handmade_sampling_spheres.inl with its generator in OutputSphereINL(), InterleaveDirections(), cube_store and sphere_store
18:17Plan to make OutputSphereINL() output the SampleDirectionTable with all the octahedral rays for a given texel, then all those for the next texel, etc.
📖
18:17Plan to make OutputSphereINL() output the SampleDirectionTable with all the octahedral rays for a given texel, then all those for the next texel, etc.
📖
18:17Plan to make OutputSphereINL() output the SampleDirectionTable with all the octahedral rays for a given texel, then all those for the next texel, etc.
📖
20:20Make OutputSphereINL() output the SampleDirectionTable with all the octahedral rays for a given texel, then all those for the next texel, etc.
20:20Make OutputSphereINL() output the SampleDirectionTable with all the octahedral rays for a given texel, then all those for the next texel, etc.
20:20Make OutputSphereINL() output the SampleDirectionTable with all the octahedral rays for a given texel, then all those for the next texel, etc.
24:40Reacquaint ourselves with the light sample sieving in GeneratePoissonDistribution()
📖
24:40Reacquaint ourselves with the light sample sieving in GeneratePoissonDistribution()
📖
24:40Reacquaint ourselves with the light sample sieving in GeneratePoissonDistribution()
📖
26:41Propose to draw the sampling sphere coloured by texel, then fix hhsphere.cpp
📖
26:41Propose to draw the sampling sphere coloured by texel, then fix hhsphere.cpp
📖
26:41Propose to draw the sampling sphere coloured by texel, then fix hhsphere.cpp
📖
27:32Make PushLightingRenderValues() draw the sampling sphere coloured by texel
27:32Make PushLightingRenderValues() draw the sampling sphere coloured by texel
27:32Make PushLightingRenderValues() draw the sampling sphere coloured by texel
33:18Rework GenerateOctahedralLightingPattern() to structure the sampling directions with all the octahedral rays for a given texel, then all those for the next texel, etc.
33:18Rework GenerateOctahedralLightingPattern() to structure the sampling directions with all the octahedral rays for a given texel, then all those for the next texel, etc.
33:18Rework GenerateOctahedralLightingPattern() to structure the sampling directions with all the octahedral rays for a given texel, then all those for the next texel, etc.
35:58The bug: Our call to GeneratePoissonDistribution(), with its randomness, using TotalDirectionCount, may yield fewer samples on a texel than we need
📖
35:58The bug: Our call to GeneratePoissonDistribution(), with its randomness, using TotalDirectionCount, may yield fewer samples on a texel than we need
📖
35:58The bug: Our call to GeneratePoissonDistribution(), with its randomness, using TotalDirectionCount, may yield fewer samples on a texel than we need
📖
37:38Consider asking GeneratePoissonDistribution() for more sampling points
📖
37:38Consider asking GeneratePoissonDistribution() for more sampling points
📖
37:38Consider asking GeneratePoissonDistribution() for more sampling points
📖
38:40Introduce direction_gen for GeneratePoissonDistribution() to return, and remove GeneratePoissonSamples(), TestFunc() and GeneratePoissonLightingPattern()
38:40Introduce direction_gen for GeneratePoissonDistribution() to return, and remove GeneratePoissonSamples(), TestFunc() and GeneratePoissonLightingPattern()
38:40Introduce direction_gen for GeneratePoissonDistribution() to return, and remove GeneratePoissonSamples(), TestFunc() and GeneratePoissonLightingPattern()
42:48Hunt for a v2u + operator overload
📖
42:48Hunt for a v2u + operator overload
📖
42:48Hunt for a v2u + operator overload
📖
44:08Introduce a v2u + operator overload
44:08Introduce a v2u + operator overload
44:08Introduce a v2u + operator overload
44:37Update GenerateOctahedralLightingPattern() to use our direction_gen, and ask GeneratePoissonDistribution() for 20% more samples than we'll use, introducing AllocDirArray()
44:37Update GenerateOctahedralLightingPattern() to use our direction_gen, and ask GeneratePoissonDistribution() for 20% more samples than we'll use, introducing AllocDirArray()
44:37Update GenerateOctahedralLightingPattern() to use our direction_gen, and ask GeneratePoissonDistribution() for 20% more samples than we'll use, introducing AllocDirArray()
51:34Make GenerateOctahedralLightingPattern() print an error on "Direction count underflow for texel"
51:34Make GenerateOctahedralLightingPattern() print an error on "Direction count underflow for texel"
51:34Make GenerateOctahedralLightingPattern() print an error on "Direction count underflow for texel"
52:47Finish up the usage code of hhsphere.cpp
52:47Finish up the usage code of hhsphere.cpp
52:47Finish up the usage code of hhsphere.cpp
57:38Run hhsphere, and hit a number of "Direction count underflow for texel" errors
🗹
57:38Run hhsphere, and hit a number of "Direction count underflow for texel" errors
🗹
57:38Run hhsphere, and hit a number of "Direction count underflow for texel" errors
🗹
59:21Inspect handmade_sampling_spheres.inl, try to compile with it and hit a syntax error
📖
59:21Inspect handmade_sampling_spheres.inl, try to compile with it and hit a syntax error
📖
59:21Inspect handmade_sampling_spheres.inl, try to compile with it and hit a syntax error
📖
1:00:25Manually append a ")" to TOTAL_LIGHT_SAMPLE_DIRECTION_COUNT in handmade_sampling_spheres.inl
1:00:25Manually append a ")" to TOTAL_LIGHT_SAMPLE_DIRECTION_COUNT in handmade_sampling_spheres.inl
1:00:25Manually append a ")" to TOTAL_LIGHT_SAMPLE_DIRECTION_COUNT in handmade_sampling_spheres.inl
1:01:29Remove stale #if 0 from GridRayCast()
1:01:29Remove stale #if 0 from GridRayCast()
1:01:29Remove stale #if 0 from GridRayCast()
1:01:42Append the missing ")" to TOTAL_LIGHT_SAMPLE_DIRECTION_COUNT OutputSphereINL()
1:01:42Append the missing ")" to TOTAL_LIGHT_SAMPLE_DIRECTION_COUNT OutputSphereINL()
1:01:42Append the missing ")" to TOTAL_LIGHT_SAMPLE_DIRECTION_COUNT OutputSphereINL()
1:01:52Update GridRayCast() to use our newly structured SampleDirectionTable
1:01:52Update GridRayCast() to use our newly structured SampleDirectionTable
1:01:52Update GridRayCast() to use our newly structured SampleDirectionTable
1:18:09Hit a read access violation in GridRayCast()
🏃
1:18:09Hit a read access violation in GridRayCast()
🏃
1:18:09Hit a read access violation in GridRayCast()
🏃
1:18:43Investigate our read access violation in GridRayCast()
🏃
1:18:43Investigate our read access violation in GridRayCast()
🏃
1:18:43Investigate our read access violation in GridRayCast()
🏃
1:21:02Reacquaint ourselves with tTerminate in ComputeWalkTable()
📖
1:21:02Reacquaint ourselves with tTerminate in ComputeWalkTable()
📖
1:21:02Reacquaint ourselves with tTerminate in ComputeWalkTable()
📖
1:25:24Make ComputeWalkTable() set tTerminate to 0 if greater than or equal to 1000000
1:25:24Make ComputeWalkTable() set tTerminate to 0 if greater than or equal to 1000000
1:25:24Make ComputeWalkTable() set tTerminate to 0 if greater than or equal to 1000000
1:27:20Plan to update remedybg from 0.3.5.0 to 0.3.6.3
🗹
1:27:20Plan to update remedybg from 0.3.5.0 to 0.3.6.3
🗹
1:27:20Plan to update remedybg from 0.3.5.0 to 0.3.6.3
🗹
1:28:05Again hit a read access violation in GridRayCast()
🏃
1:28:05Again hit a read access violation in GridRayCast()
🏃
1:28:05Again hit a read access violation in GridRayCast()
🏃
1:29:39Let ComputeWalkTable() use tTerminate as is, and instead make GenerateOctahedralLightingPattern() output a valid [0, 0, 1] ray direction on underflow
1:29:39Let ComputeWalkTable() use tTerminate as is, and instead make GenerateOctahedralLightingPattern() output a valid [0, 0, 1] ray direction on underflow
1:29:39Let ComputeWalkTable() use tTerminate as is, and instead make GenerateOctahedralLightingPattern() output a valid [0, 0, 1] ray direction on underflow
1:30:58Run hhsphere, and hit a number of "Direction count underflow for texel" errors
🗹
1:30:58Run hhsphere, and hit a number of "Direction count underflow for texel" errors
🗹
1:30:58Run hhsphere, and hit a number of "Direction count underflow for texel" errors
🗹
1:31:49Inspect handmade_sampling_spheres.inl and compile just fine
📖
1:31:49Inspect handmade_sampling_spheres.inl and compile just fine
📖
1:31:49Inspect handmade_sampling_spheres.inl and compile just fine
📖
1:32:29Run the game without crashing, but with the sampling sphere possibly being drawn wrong
🏃
1:32:29Run the game without crashing, but with the sampling sphere possibly being drawn wrong
🏃
1:32:29Run the game without crashing, but with the sampling sphere possibly being drawn wrong
🏃
1:33:12Check RenderDiagrams() for participation in lighting
📖
1:33:12Check RenderDiagrams() for participation in lighting
📖
1:33:12Check RenderDiagrams() for participation in lighting
📖
1:34:12Make PushLightingRenderValues() draw the sampling sphere lower down
1:34:12Make PushLightingRenderValues() draw the sampling sphere lower down
1:34:12Make PushLightingRenderValues() draw the sampling sphere lower down
1:34:31Our sampling sphere is lit, and contains gaps
🏃
1:34:31Our sampling sphere is lit, and contains gaps
🏃
1:34:31Our sampling sphere is lit, and contains gaps
🏃
1:35:55Fix GridRayCast() to set TransferPPS[Tx] to the already accumulated TransferPPSAccum
1:35:55Fix GridRayCast() to set TransferPPS[Tx] to the already accumulated TransferPPSAccum
1:35:55Fix GridRayCast() to set TransferPPS[Tx] to the already accumulated TransferPPSAccum
1:37:11Our lighting is no longer overblown, but still bleeds, and dims while moving
🏃
1:37:11Our lighting is no longer overblown, but still bleeds, and dims while moving
🏃
1:37:11Our lighting is no longer overblown, but still bleeds, and dims while moving
🏃
1:39:19Try making GenerateOctahedralLightingPattern() ask GeneratePoissonDistribution() for 100% more samples than we'll use, and tighten the convergence criteria from 0.025 to 0.0125
1:39:19Try making GenerateOctahedralLightingPattern() ask GeneratePoissonDistribution() for 100% more samples than we'll use, and tighten the convergence criteria from 0.025 to 0.0125
1:39:19Try making GenerateOctahedralLightingPattern() ask GeneratePoissonDistribution() for 100% more samples than we'll use, and tighten the convergence criteria from 0.025 to 0.0125
1:41:39Run hhsphere without completing
🗹
1:41:39Run hhsphere without completing
🗹
1:41:39Run hhsphere without completing
🗹
1:42:41Revert the convergence criteria to 0.025 in GenerateOctahedralLightingPattern()
1:42:41Revert the convergence criteria to 0.025 in GenerateOctahedralLightingPattern()
1:42:41Revert the convergence criteria to 0.025 in GenerateOctahedralLightingPattern()
1:43:13Run hhsphere, and still hit a number of "Direction count underflow for texel" errors
🗹
1:43:13Run hhsphere, and still hit a number of "Direction count underflow for texel" errors
🗹
1:43:13Run hhsphere, and still hit a number of "Direction count underflow for texel" errors
🗹
1:43:46Investigate why GenerateOctahedralLightingPattern() is not receiving enough sample directions
📖
1:43:46Investigate why GenerateOctahedralLightingPattern() is not receiving enough sample directions
📖
1:43:46Investigate why GenerateOctahedralLightingPattern() is not receiving enough sample directions
📖
1:47:03Our lighting sphere looks the same
🏃
1:47:03Our lighting sphere looks the same
🏃
1:47:03Our lighting sphere looks the same
🏃
1:47:17We're missing something
📖
1:47:17We're missing something
📖
1:47:17We're missing something
📖
1:48:11Break for snacks
🗹
1:48:11Break for snacks
🗹
1:48:11Break for snacks
🗹
1:51:56Return with snacks
🗹
1:51:56Return with snacks
🗹
1:51:56Return with snacks
🗹
1:52:12Consider abandoning vs debugging the sampling point picking scheme
📖
1:52:12Consider abandoning vs debugging the sampling point picking scheme
📖
1:52:12Consider abandoning vs debugging the sampling point picking scheme
📖
1:56:40tomisqi What snacks?
🗪
1:56:40tomisqi What snacks?
🗪
1:56:40tomisqi What snacks?
🗪
1:57:21Need more chicharrones
🗩
1:57:21Need more chicharrones
🗩
1:57:21Need more chicharrones
🗩
1:57:48Consider evenly distributing sampling points in texel space
📖
1:57:48Consider evenly distributing sampling points in texel space
📖
1:57:48Consider evenly distributing sampling points in texel space
📖
1:59:01Propose seeding 16 rays per texel, using a white noise distribution, repulsed to increase evenness, and prevented from leaving their containing texel
📖
1:59:01Propose seeding 16 rays per texel, using a white noise distribution, repulsed to increase evenness, and prevented from leaving their containing texel
📖
1:59:01Propose seeding 16 rays per texel, using a white noise distribution, repulsed to increase evenness, and prevented from leaving their containing texel
📖
2:01:02spacenaming Won't you get clamping on the edges?
🗪
2:01:02spacenaming Won't you get clamping on the edges?
🗪
2:01:02spacenaming Won't you get clamping on the edges?
🗪
2:01:37Consider starting with the 16 rays per texel white noise distribution, without repulsion
📖
2:01:37Consider starting with the 16 rays per texel white noise distribution, without repulsion
📖
2:01:37Consider starting with the 16 rays per texel white noise distribution, without repulsion
📖
2:02:09Make GeneratePoissonDistribution() seed the requested rays per texel in a white noise distribution, and remove GenerateOctahedralLightingPattern()
2:02:09Make GeneratePoissonDistribution() seed the requested rays per texel in a white noise distribution, and remove GenerateOctahedralLightingPattern()
2:02:09Make GeneratePoissonDistribution() seed the requested rays per texel in a white noise distribution, and remove GenerateOctahedralLightingPattern()
2:09:23Run hhsphere, and find a more coherent SampleDirectionTable
🗹
2:09:23Run hhsphere, and find a more coherent SampleDirectionTable
🗹
2:09:23Run hhsphere, and find a more coherent SampleDirectionTable
🗹
2:09:55Our lighting sphere is only half filled in
🏃
2:09:55Our lighting sphere is only half filled in
🏃
2:09:55Our lighting sphere is only half filled in
🏃
2:10:32Fix GeneratePoissonDistribution() to produce a -1 to 1 distribution
2:10:32Fix GeneratePoissonDistribution() to produce a -1 to 1 distribution
2:10:32Fix GeneratePoissonDistribution() to produce a -1 to 1 distribution
2:11:58Run hhsphere
🗹
2:11:58Run hhsphere
🗹
2:11:58Run hhsphere
🗹
2:12:09Our lighting sphere is complete, if clumpy
🏃
2:12:09Our lighting sphere is complete, if clumpy
🏃
2:12:09Our lighting sphere is complete, if clumpy
🏃
2:13:05Make GeneratePoissonDistribution() repulse the rays, keeping them in the same quadrant
2:13:05Make GeneratePoissonDistribution() repulse the rays, keeping them in the same quadrant
2:13:05Make GeneratePoissonDistribution() repulse the rays, keeping them in the same quadrant
2:18:16Run hhsphere and quickly lock up
🗹
2:18:16Run hhsphere and quickly lock up
🗹
2:18:16Run hhsphere and quickly lock up
🗹
2:19:08Loosen the convergence criteria from 0.025 to 0.14 in GeneratePoissonDistribution()
2:19:08Loosen the convergence criteria from 0.025 to 0.14 in GeneratePoissonDistribution()
2:19:08Loosen the convergence criteria from 0.025 to 0.14 in GeneratePoissonDistribution()
2:19:35Run hhsphere to completion
🗹
2:19:35Run hhsphere to completion
🗹
2:19:35Run hhsphere to completion
🗹
2:19:52Our lighting sphere is not horrible, but good enough for now
🏃
2:19:52Our lighting sphere is not horrible, but good enough for now
🏃
2:19:52Our lighting sphere is not horrible, but good enough for now
🏃
2:21:19Our rays now look more sane
🏃
2:21:19Our rays now look more sane
🏃
2:21:19Our rays now look more sane
🏃
2:22:26Make FullCast() clamp the RayIndex to the total count minus 1
2:22:26Make FullCast() clamp the RayIndex to the total count minus 1
2:22:26Make FullCast() clamp the RayIndex to the total count minus 1
2:22:34Determine to investigate our green light leakage
🏃
2:22:34Determine to investigate our green light leakage
🏃
2:22:34Determine to investigate our green light leakage
🏃
2:23:19Investigate our green light leakage
📖
2:23:19Investigate our green light leakage
📖
2:23:19Investigate our green light leakage
📖
2:24:47Toggle on the light atlas drawing in OpenGLEndFrame()
2:24:47Toggle on the light atlas drawing in OpenGLEndFrame()
2:24:47Toggle on the light atlas drawing in OpenGLEndFrame()
2:24:56Our light atlases clearly contain energy bleed
🏃
2:24:56Our light atlases clearly contain energy bleed
🏃
2:24:56Our light atlases clearly contain energy bleed
🏃
2:25:08Make OpenGLChangeToSettings() draw our light atlases in their entirety
2:25:08Make OpenGLChangeToSettings() draw our light atlases in their entirety
2:25:08Make OpenGLChangeToSettings() draw our light atlases in their entirety
2:26:35Check out our full light atlases
🏃
2:26:35Check out our full light atlases
🏃
2:26:35Check out our full light atlases
🏃
2:26:49Make OpenGLChangeToSettings() draw 0.25 of our light atlases in both X and Y
2:26:49Make OpenGLChangeToSettings() draw 0.25 of our light atlases in both X and Y
2:26:49Make OpenGLChangeToSettings() draw 0.25 of our light atlases in both X and Y
2:27:02Glimpse our light atlases
🏃
2:27:02Glimpse our light atlases
🏃
2:27:02Glimpse our light atlases
🏃
2:27:11Make OpenGLChangeToSettings() draw 0.025 of our light atlases in both X and Y
2:27:11Make OpenGLChangeToSettings() draw 0.025 of our light atlases in both X and Y
2:27:11Make OpenGLChangeToSettings() draw 0.025 of our light atlases in both X and Y
2:27:34Glimpse our light atlases
🏃
2:27:34Glimpse our light atlases
🏃
2:27:34Glimpse our light atlases
🏃
2:27:37Make OpenGLChangeToSettings() draw 0.025 of our light atlases in X
2:27:37Make OpenGLChangeToSettings() draw 0.025 of our light atlases in X
2:27:37Make OpenGLChangeToSettings() draw 0.025 of our light atlases in X
2:28:05Check out our light atlases
🏃
2:28:05Check out our light atlases
🏃
2:28:05Check out our light atlases
🏃
2:28:35Make OpenGLChangeToSettings() draw 0.0125 of our light atlases in X
2:28:35Make OpenGLChangeToSettings() draw 0.0125 of our light atlases in X
2:28:35Make OpenGLChangeToSettings() draw 0.0125 of our light atlases in X
2:28:46Our light atlases have a consistent light bleed
🏃
2:28:46Our light atlases have a consistent light bleed
🏃
2:28:46Our light atlases have a consistent light bleed
🏃
2:28:55Let OpenGLChangeToSettings() draw the original portion of our light atlases
2:28:55Let OpenGLChangeToSettings() draw the original portion of our light atlases
2:28:55Let OpenGLChangeToSettings() draw the original portion of our light atlases
2:29:04Traverse the orphanage and watch the light bleed in certain areas
🏃
2:29:04Traverse the orphanage and watch the light bleed in certain areas
🏃
2:29:04Traverse the orphanage and watch the light bleed in certain areas
🏃
2:30:54Start by investigating BlockCopyAtlas()
📖
2:30:54Start by investigating BlockCopyAtlas()
📖
2:30:54Start by investigating BlockCopyAtlas()
📖
2:32:05Assert in UpdateLighting() that dVoxel.z is 0
2:32:05Assert in UpdateLighting() that dVoxel.z is 0
2:32:05Assert in UpdateLighting() that dVoxel.z is 0
2:32:23Correctly fail to hit the dVoxel.z assertion
🏃
2:32:23Correctly fail to hit the dVoxel.z assertion
🏃
2:32:23Correctly fail to hit the dVoxel.z assertion
🏃
2:32:36Scour UpdateLighting() for errors in other dVoxel values
📖
2:32:36Scour UpdateLighting() for errors in other dVoxel values
📖
2:32:36Scour UpdateLighting() for errors in other dVoxel values
📖
2:35:21Assert in UpdateLighting() that dVoxel.x and dVoxel.y are <= 1
2:35:21Assert in UpdateLighting() that dVoxel.x and dVoxel.y are <= 1
2:35:21Assert in UpdateLighting() that dVoxel.x and dVoxel.y are <= 1
2:36:18Hit our dVoxel.x assertion
🏃
2:36:18Hit our dVoxel.x assertion
🏃
2:36:18Hit our dVoxel.x assertion
🏃
2:36:30Make UpdateLighting() skip the dVoxel.x and dVoxel.y assertions first time round
2:36:30Make UpdateLighting() skip the dVoxel.x and dVoxel.y assertions first time round
2:36:30Make UpdateLighting() skip the dVoxel.x and dVoxel.y assertions first time round
2:37:05Correctly fail to hit the dVoxel.x and dVoxel.y assertions
🏃
2:37:05Correctly fail to hit the dVoxel.x and dVoxel.y assertions
🏃
2:37:05Correctly fail to hit the dVoxel.x and dVoxel.y assertions
🏃
2:37:15Remove the dVoxel.x and dVoxel.y assertions from UpdateLighting()
🏃
2:37:15Remove the dVoxel.x and dVoxel.y assertions from UpdateLighting()
🏃
2:37:15Remove the dVoxel.x and dVoxel.y assertions from UpdateLighting()
🏃
2:37:36Scour BlockCopyAtlas() for bugs
📖
2:37:36Scour BlockCopyAtlas() for bugs
📖
2:37:36Scour BlockCopyAtlas() for bugs
📖
2:39:52Traverse the orphanage and watch the light bleed in certain areas
🏃
2:39:52Traverse the orphanage and watch the light bleed in certain areas
🏃
2:39:52Traverse the orphanage and watch the light bleed in certain areas
🏃
2:40:03Toggle off the light atlas drawing in OpenGLEndFrame()
2:40:03Toggle off the light atlas drawing in OpenGLEndFrame()
2:40:03Toggle off the light atlas drawing in OpenGLEndFrame()
2:40:15Traverse the orphanage and carefully watch the lighting at a slow 0.04 timestep
🏃
2:40:15Traverse the orphanage and carefully watch the lighting at a slow 0.04 timestep
🏃
2:40:15Traverse the orphanage and carefully watch the lighting at a slow 0.04 timestep
🏃
2:41:50Set tUpdateBlend to 1 in UpdateLighting()
2:41:50Set tUpdateBlend to 1 in UpdateLighting()
2:41:50Set tUpdateBlend to 1 in UpdateLighting()
2:42:07The lighting clearly blinks when copying the atlases
🏃
2:42:07The lighting clearly blinks when copying the atlases
🏃
2:42:07The lighting clearly blinks when copying the atlases
🏃
2:43:29Scour BlockCopyAtlas() for bugs
📖
2:43:29Scour BlockCopyAtlas() for bugs
📖
2:43:29Scour BlockCopyAtlas() for bugs
📖
2:44:32Toggle on the LIGHT_ATLAS_ASSERT for VALIDATE_TEXEL_ATLAS() to fire
2:44:32Toggle on the LIGHT_ATLAS_ASSERT for VALIDATE_TEXEL_ATLAS() to fire
2:44:32Toggle on the LIGHT_ATLAS_ASSERT for VALIDATE_TEXEL_ATLAS() to fire
2:44:43Trap on VALIDATE_TEXEL_ATLAS() of the DiffuseAtlas
🏃
2:44:43Trap on VALIDATE_TEXEL_ATLAS() of the DiffuseAtlas
🏃
2:44:43Trap on VALIDATE_TEXEL_ATLAS() of the DiffuseAtlas
🏃
2:45:11Make ValidateTexelComponent() consider a component of between -100 and 100 to be valid
2:45:11Make ValidateTexelComponent() consider a component of between -100 and 100 to be valid
2:45:11Make ValidateTexelComponent() consider a component of between -100 and 100 to be valid
2:45:30Immediately trap on VALIDATE_TEXEL_ATLAS() of the SpecAtlas
🏃
2:45:30Immediately trap on VALIDATE_TEXEL_ATLAS() of the SpecAtlas
🏃
2:45:30Immediately trap on VALIDATE_TEXEL_ATLAS() of the SpecAtlas
🏃
2:45:44Consider deferring until next time the investigation of our out-of-bounds lighting values
📖
2:45:44Consider deferring until next time the investigation of our out-of-bounds lighting values
📖
2:45:44Consider deferring until next time the investigation of our out-of-bounds lighting values
📖
2:49:13Introduce VoxelIndexIsInDim() for GridRayCast() to assert that the sample fetch is in bounds
2:49:13Introduce VoxelIndexIsInDim() for GridRayCast() to assert that the sample fetch is in bounds
2:49:13Introduce VoxelIndexIsInDim() for GridRayCast() to assert that the sample fetch is in bounds
2:55:54Hit our IsInBounds assertion in GridRayCast()
🏃
2:55:54Hit our IsInBounds assertion in GridRayCast()
🏃
2:55:54Hit our IsInBounds assertion in GridRayCast()
🏃
2:58:36Get it
📖
2:58:36Get it
📖
2:58:36Get it
📖
3:00:34Toggle off the ray drawing in PushLightingRenderValues(), and toggle on DebugDrawSpatialGrid() in UpdateLighting()
3:00:34Toggle off the ray drawing in PushLightingRenderValues(), and toggle on DebugDrawSpatialGrid() in UpdateLighting()
3:00:34Toggle off the ray drawing in PushLightingRenderValues(), and toggle on DebugDrawSpatialGrid() in UpdateLighting()
3:01:36Immediately trap on VALIDATE_TEXEL_ATLAS() of the SpecAtlas
🏃
3:01:36Immediately trap on VALIDATE_TEXEL_ATLAS() of the SpecAtlas
🏃
3:01:36Immediately trap on VALIDATE_TEXEL_ATLAS() of the SpecAtlas
🏃
3:01:49Toggle off the LIGHT_ATLAS_ASSERT
3:01:49Toggle off the LIGHT_ATLAS_ASSERT
3:01:49Toggle off the LIGHT_ATLAS_ASSERT
3:01:57Our bug: We can sample garbage in Z when not hitting an occluder
🏃
3:01:57Our bug: We can sample garbage in Z when not hitting an occluder
🏃
3:01:57Our bug: We can sample garbage in Z when not hitting an occluder
🏃
3:06:26GridRayCast() is already clamping
📖
3:06:26GridRayCast() is already clamping
📖
3:06:26GridRayCast() is already clamping
📖
3:09:10Scour GridRayCast() for a subtle bug causing out-of-bounds sampling
📖
3:09:10Scour GridRayCast() for a subtle bug causing out-of-bounds sampling
📖
3:09:10Scour GridRayCast() for a subtle bug causing out-of-bounds sampling
📖
3:14:00Set the first entry of SampleDirectionTable to an invalid [0, 0, 0]
3:14:00Set the first entry of SampleDirectionTable to an invalid [0, 0, 0]
3:14:00Set the first entry of SampleDirectionTable to an invalid [0, 0, 0]
3:14:49Hit our read access violation in GridRayCast() on an invalid [0, 0, 0] sample direction
🏃
3:14:49Hit our read access violation in GridRayCast() on an invalid [0, 0, 0] sample direction
🏃
3:14:49Hit our read access violation in GridRayCast() on an invalid [0, 0, 0] sample direction
🏃
3:14:52Inspect the values in GridRayCast() on an invalid [0, 0, 0] sample direction
🏃
3:14:52Inspect the values in GridRayCast() on an invalid [0, 0, 0] sample direction
🏃
3:14:52Inspect the values in GridRayCast() on an invalid [0, 0, 0] sample direction
🏃
3:18:21GridRayCast() produces a bogus Txy value
🏃
3:18:21GridRayCast() produces a bogus Txy value
🏃
3:18:21GridRayCast() produces a bogus Txy value
🏃
3:19:17Revert the first entry of SampleDirectionTable to the generated value
3:19:17Revert the first entry of SampleDirectionTable to the generated value
3:19:17Revert the first entry of SampleDirectionTable to the generated value
3:19:25Consider calling it for today
🗩
3:19:25Consider calling it for today
🗩
3:19:25Consider calling it for today
🗩
3:20:04Take one last look at our light bleed, blinking on copy and light source occlusion
🏃
3:20:04Take one last look at our light bleed, blinking on copy and light source occlusion
🏃
3:20:04Take one last look at our light bleed, blinking on copy and light source occlusion
🏃
3:23:06midnightsun55 Brooo what is going on, Casey is about to do Unreal Engine 6 by himself at this point
🗪
3:23:06midnightsun55 Brooo what is going on, Casey is about to do Unreal Engine 6 by himself at this point
🗪
3:23:06midnightsun55 Brooo what is going on, Casey is about to do Unreal Engine 6 by himself at this point
🗪
3:23:18Call it for today
🗩
3:23:18Call it for today
🗩
3:23:18Call it for today
🗩