Finishing Indirect Diffuse Sampling
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
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 and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

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:02Mention the 'Handmade Collectives Worldwide" thread in the handmade.network forums1,2,3
📖
0:02Mention the 'Handmade Collectives Worldwide" thread in the handmade.network forums1,2,3
📖
0:02Mention the 'Handmade Collectives Worldwide" thread in the handmade.network forums1,2,3
📖
3:44Fix typo in CompileZBiasProgram()
3:44Fix typo in CompileZBiasProgram()
3:44Fix typo in CompileZBiasProgram()
5:17Show our current specular indirect-bounce lighting
🏃
5:17Show our current specular indirect-bounce lighting
🏃
5:17Show our current specular indirect-bounce lighting
🏃
6:14Embark on the switch to looking up into the diffuse light atlas, guided by the removal of light_voxel_cell from lighting_solution
6:14Embark on the switch to looking up into the diffuse light atlas, guided by the removal of light_voxel_cell from lighting_solution
6:14Embark on the switch to looking up into the diffuse light atlas, guided by the removal of light_voxel_cell from lighting_solution
6:56Consider relieving the lighting system of keeping stale data around
📖
6:56Consider relieving the lighting system of keeping stale data around
📖
6:56Consider relieving the lighting system of keeping stale data around
📖
8:36Respecify light_voxel_cell as light_atlas_tile
8:36Respecify light_voxel_cell as light_atlas_tile
8:36Respecify light_voxel_cell as light_atlas_tile
9:57Update LookUpVoxelClamped() to use the light_atlas_tile, rename it to GetTileClamped(), and introduce GetTileRowStride()
9:57Update LookUpVoxelClamped() to use the light_atlas_tile, rename it to GetTileClamped(), and introduce GetTileRowStride()
9:57Update LookUpVoxelClamped() to use the light_atlas_tile, rename it to GetTileClamped(), and introduce GetTileRowStride()
14:01Augment light_atlas with a TileRowStride for MakeLightAtlas() to set and LIGHT_ATLAS_OFFSET() to use
14:01Augment light_atlas with a TileRowStride for MakeLightAtlas() to set and LIGHT_ATLAS_OFFSET() to use
14:01Augment light_atlas with a TileRowStride for MakeLightAtlas() to set and LIGHT_ATLAS_OFFSET() to use
17:44Remove Stride from light_atlas_tile, rename its Base to Texel and update ComputeVoxelIrradianceAt() to sample from the DiffuseAtlas as a light_atlas_tile
17:44Remove Stride from light_atlas_tile, rename its Base to Texel and update ComputeVoxelIrradianceAt() to sample from the DiffuseAtlas as a light_atlas_tile
17:44Remove Stride from light_atlas_tile, rename its Base to Texel and update ComputeVoxelIrradianceAt() to sample from the DiffuseAtlas as a light_atlas_tile
24:13Set up ComputeVoxelIrradianceAt() to sample based on the surface reflection direction
24:13Set up ComputeVoxelIrradianceAt() to sample based on the surface reflection direction
24:13Set up ComputeVoxelIrradianceAt() to sample based on the surface reflection direction
26:04Update UpdateVoxel() to use our light_atlas_tile, respecifying the latter as light_atlas_texel containing a Value, introducing OffsetFromTexel()
26:04Update UpdateVoxel() to use our light_atlas_tile, respecifying the latter as light_atlas_texel containing a Value, introducing OffsetFromTexel()
26:04Update UpdateVoxel() to use our light_atlas_tile, respecifying the latter as light_atlas_texel containing a Value, introducing OffsetFromTexel()
30:28Update TestCast(), TestSphere(), FullCast() and ComputeLightPropagationWork() to use our light_atlas_texel
30:28Update TestCast(), TestSphere(), FullCast() and ComputeLightPropagationWork() to use our light_atlas_texel
30:28Update TestCast(), TestSphere(), FullCast() and ComputeLightPropagationWork() to use our light_atlas_texel
34:08Update ComputeLightPropagationWork() to blur from the SpecAtlas to the DiffuseAtlas, introducing a version of OffsetFromTexel() that takes a Tx and Ty
34:08Update ComputeLightPropagationWork() to blur from the SpecAtlas to the DiffuseAtlas, introducing a version of OffsetFromTexel() that takes a Tx and Ty
34:08Update ComputeLightPropagationWork() to blur from the SpecAtlas to the DiffuseAtlas, introducing a version of OffsetFromTexel() that takes a Tx and Ty
39:23Respecify BlockCopyVoxel() as BlockCopyAtlas()
39:23Respecify BlockCopyVoxel() as BlockCopyAtlas()
39:23Respecify BlockCopyVoxel() as BlockCopyAtlas()
44:41Introduce CopyTile(), a light_atlas_texel version of AdvanceRow(), and ZeroTile()
44:41Introduce CopyTile(), a light_atlas_texel version of AdvanceRow(), and ZeroTile()
44:41Introduce CopyTile(), a light_atlas_texel version of AdvanceRow(), and ZeroTile()
49:56Update BeginLightingComputation() to use BlockCopyAtlas() on both atlases
49:56Update BeginLightingComputation() to use BlockCopyAtlas() on both atlases
49:56Update BeginLightingComputation() to use BlockCopyAtlas() on both atlases
50:40Consider adding assertions in our new code to aid testing
📖
50:40Consider adding assertions in our new code to aid testing
📖
50:40Consider adding assertions in our new code to aid testing
📖
51:23Hit a read access violation in FillLightAtlasBorder()
🏃
51:23Hit a read access violation in FillLightAtlasBorder()
🏃
51:23Hit a read access violation in FillLightAtlasBorder()
🏃
52:05Run in debug mode without crashing
🏃
52:05Run in debug mode without crashing
🏃
52:05Run in debug mode without crashing
🏃
52:49Hit a read access violation in FillLightAtlasBorder() in release mode
🏃
52:49Hit a read access violation in FillLightAtlasBorder() in release mode
🏃
52:49Hit a read access violation in FillLightAtlasBorder() in release mode
🏃
53:27Introduce GetTileUnclamped() to CopyTile() and ZeroTile() to use, asserting that we are looking up within the bounds of the atlas
53:27Introduce GetTileUnclamped() to CopyTile() and ZeroTile() to use, asserting that we are looking up within the bounds of the atlas
53:27Introduce GetTileUnclamped() to CopyTile() and ZeroTile() to use, asserting that we are looking up within the bounds of the atlas
56:04somebody_took_my_name It's all just moving memory around
🗪
56:04somebody_took_my_name It's all just moving memory around
🗪
56:04somebody_took_my_name It's all just moving memory around
🗪
56:26Fix compile error
56:26Fix compile error
56:26Fix compile error
56:31Hit a read access violation in ComputeLightPropagationWork(), and determine to hunt for classes of bugs
🏃
56:31Hit a read access violation in ComputeLightPropagationWork(), and determine to hunt for classes of bugs
🏃
56:31Hit a read access violation in ComputeLightPropagationWork(), and determine to hunt for classes of bugs
🏃
57:32Assert in GetTileUnclamped() that Tx and Ty are in bounds, and there and also in OffsetFromTexel() and AdvanceRow() that the resulting pointer is in bounds, introducing PointerIsInBounds()
57:32Assert in GetTileUnclamped() that Tx and Ty are in bounds, and there and also in OffsetFromTexel() and AdvanceRow() that the resulting pointer is in bounds, introducing PointerIsInBounds()
57:32Assert in GetTileUnclamped() that Tx and Ty are in bounds, and there and also in OffsetFromTexel() and AdvanceRow() that the resulting pointer is in bounds, introducing PointerIsInBounds()
1:01:42Hit our PointerIsInBounds() assertion in GetTileUnclamped()
🏃
1:01:42Hit our PointerIsInBounds() assertion in GetTileUnclamped()
🏃
1:01:42Hit our PointerIsInBounds() assertion in GetTileUnclamped()
🏃
1:02:24Remove the LIGHT_LARGE_VOXEL_DIM definitions from lighting_solution, and propagate this change
1:02:24Remove the LIGHT_LARGE_VOXEL_DIM definitions from lighting_solution, and propagate this change
1:02:24Remove the LIGHT_LARGE_VOXEL_DIM definitions from lighting_solution, and propagate this change
1:05:05Embark on updating BeginLightingComputation() to place our hot voxel, removing LIGHT_CHUNK_COUNT, augmenting lighting_solution with LightingEnabled and turning off the lighting for now
1:05:05Embark on updating BeginLightingComputation() to place our hot voxel, removing LIGHT_CHUNK_COUNT, augmenting lighting_solution with LightingEnabled and turning off the lighting for now
1:05:05Embark on updating BeginLightingComputation() to place our hot voxel, removing LIGHT_CHUNK_COUNT, augmenting lighting_solution with LightingEnabled and turning off the lighting for now
1:08:28See no lighting
🏃
1:08:28See no lighting
🏃
1:08:28See no lighting
🏃
1:08:58Disable the lighting in CompileZBiasProgram()
1:08:58Disable the lighting in CompileZBiasProgram()
1:08:58Disable the lighting in CompileZBiasProgram()
1:09:08See the orphanage with no lighting, hop to the neighbouring room and hit our PointerIsInBounds() assertion in GetTileUnclamped()
🏃
1:09:08See the orphanage with no lighting, hop to the neighbouring room and hit our PointerIsInBounds() assertion in GetTileUnclamped()
🏃
1:09:08See the orphanage with no lighting, hop to the neighbouring room and hit our PointerIsInBounds() assertion in GetTileUnclamped()
🏃
1:10:17Run in debug mode to investigate our PointerIsInBounds() assertion hit in GetTileUnclamped()
🏃
1:10:17Run in debug mode to investigate our PointerIsInBounds() assertion hit in GetTileUnclamped()
🏃
1:10:17Run in debug mode to investigate our PointerIsInBounds() assertion hit in GetTileUnclamped()
🏃
1:11:13Fix PointerIsInBounds() to find the atlas extents using GetLightAtlasSize()
1:11:13Fix PointerIsInBounds() to find the atlas extents using GetLightAtlasSize()
1:11:13Fix PointerIsInBounds() to find the atlas extents using GetLightAtlasSize()
1:11:36Hit our PointerIsInBounds() assertion in AdvanceRow(), called by ZeroTile()
🏃
1:11:36Hit our PointerIsInBounds() assertion in AdvanceRow(), called by ZeroTile()
🏃
1:11:36Hit our PointerIsInBounds() assertion in AdvanceRow(), called by ZeroTile()
🏃
1:12:59Remove the PointerIsInBounds() assertion from AdvanceRow(), instead asserting the same within CopyTile() and ZeroTile()
1:12:59Remove the PointerIsInBounds() assertion from AdvanceRow(), instead asserting the same within CopyTile() and ZeroTile()
1:12:59Remove the PointerIsInBounds() assertion from AdvanceRow(), instead asserting the same within CopyTile() and ZeroTile()
1:14:04Hit no assertions in the light_atlas_tile code
🏃
1:14:04Hit no assertions in the light_atlas_tile code
🏃
1:14:04Hit no assertions in the light_atlas_tile code
🏃
1:14:25Make BeginLightingComputation() draw the voxels
1:14:25Make BeginLightingComputation() draw the voxels
1:14:25Make BeginLightingComputation() draw the voxels
1:15:13Hit an assertion in GetTileUnclamped(), called by BlockCopyAtlas() within BeginLightingComputation()
🏃
1:15:13Hit an assertion in GetTileUnclamped(), called by BlockCopyAtlas() within BeginLightingComputation()
🏃
1:15:13Hit an assertion in GetTileUnclamped(), called by BlockCopyAtlas() within BeginLightingComputation()
🏃
1:22:05Fix BlockCopyAtlas() to correctly operate within bounds
1:22:05Fix BlockCopyAtlas() to correctly operate within bounds
1:22:05Fix BlockCopyAtlas() to correctly operate within bounds
1:25:12Run without hitting any assertions in GetTileUnclamped(), with a few words on paranoid bounds checking
🏃
1:25:12Run without hitting any assertions in GetTileUnclamped(), with a few words on paranoid bounds checking
🏃
1:25:12Run without hitting any assertions in GetTileUnclamped(), with a few words on paranoid bounds checking
🏃
1:26:42Check out the unexpectedly large and correctly centred lighting voxel
🏃
1:26:42Check out the unexpectedly large and correctly centred lighting voxel
🏃
1:26:42Check out the unexpectedly large and correctly centred lighting voxel
🏃
1:27:30Re-enable the lighting in BeginLightingComputation()
1:27:30Re-enable the lighting in BeginLightingComputation()
1:27:30Re-enable the lighting in BeginLightingComputation()
1:27:38Double-check the lighting distribution code in EndLightingComputation()
📖
1:27:38Double-check the lighting distribution code in EndLightingComputation()
📖
1:27:38Double-check the lighting distribution code in EndLightingComputation()
📖
1:27:56Run in debug mode without hitting any assertions
🏃
1:27:56Run in debug mode without hitting any assertions
🏃
1:27:56Run in debug mode without hitting any assertions
🏃
1:28:23Run in release mode and hit a read access violation in ComputeLightPropagationWork()
🏃
1:28:23Run in release mode and hit a read access violation in ComputeLightPropagationWork()
🏃
1:28:23Run in release mode and hit a read access violation in ComputeLightPropagationWork()
🏃
1:29:58Toggle off the specular–diffuse atlas blurring code in ComputeLightPropagationWork()
1:29:58Toggle off the specular–diffuse atlas blurring code in ComputeLightPropagationWork()
1:29:58Toggle off the specular–diffuse atlas blurring code in ComputeLightPropagationWork()
1:30:14Run successfully in release mode
🏃
1:30:14Run successfully in release mode
🏃
1:30:14Run successfully in release mode
🏃
1:30:54Toggle on the specular–diffuse atlas blurring code in ComputeLightPropagationWork()
1:30:54Toggle on the specular–diffuse atlas blurring code in ComputeLightPropagationWork()
1:30:54Toggle on the specular–diffuse atlas blurring code in ComputeLightPropagationWork()
1:31:08Consider removing LIGHT_ATLAS_OFFSET()
📖
1:31:08Consider removing LIGHT_ATLAS_OFFSET()
📖
1:31:08Consider removing LIGHT_ATLAS_OFFSET()
📖
1:32:03Scour for bugs the specular–diffuse atlas blurring code in ComputeLightPropagationWork()
📖
1:32:03Scour for bugs the specular–diffuse atlas blurring code in ComputeLightPropagationWork()
📖
1:32:03Scour for bugs the specular–diffuse atlas blurring code in ComputeLightPropagationWork()
📖
1:34:51Toggle off the store calls in ComputeLightPropagationWork()
1:34:51Toggle off the store calls in ComputeLightPropagationWork()
1:34:51Toggle off the store calls in ComputeLightPropagationWork()
1:35:11Break on the final Transpose() call in ComputeLightPropagationWork() and check the asm to ensure the blurring loop has not been optimised out
🏃
1:35:11Break on the final Transpose() call in ComputeLightPropagationWork() and check the asm to ensure the blurring loop has not been optimised out
🏃
1:35:11Break on the final Transpose() call in ComputeLightPropagationWork() and check the asm to ensure the blurring loop has not been optimised out
🏃
1:35:50Continue to run without storing, but also without crashing
🏃
1:35:50Continue to run without storing, but also without crashing
🏃
1:35:50Continue to run without storing, but also without crashing
🏃
1:36:05Fix ComputeLightPropagationWork() to use the DiffuseTexel.Value pointer itself, rather than its address
1:36:05Fix ComputeLightPropagationWork() to use the DiffuseTexel.Value pointer itself, rather than its address
1:36:05Fix ComputeLightPropagationWork() to use the DiffuseTexel.Value pointer itself, rather than its address
1:36:38Run successfully with the specular–diffuse blurring and bouncing
🏃
1:36:38Run successfully with the specular–diffuse blurring and bouncing
🏃
1:36:38Run successfully with the specular–diffuse blurring and bouncing
🏃
1:37:01Re-enable the lighting in CompileZBiasProgram()
1:37:01Re-enable the lighting in CompileZBiasProgram()
1:37:01Re-enable the lighting in CompileZBiasProgram()
1:37:20Admire our diffuse lighting
🏃
1:37:20Admire our diffuse lighting
🏃
1:37:20Admire our diffuse lighting
🏃
1:38:33Try hard-setting the SampleRefColor to 70% in FullCast()
1:38:33Try hard-setting the SampleRefColor to 70% in FullCast()
1:38:33Try hard-setting the SampleRefColor to 70% in FullCast()
1:39:41See the light brighten and brighten
🏃
1:39:41See the light brighten and brighten
🏃
1:39:41See the light brighten and brighten
🏃
1:40:04Try decreasing the SampleRefColor from 70% to 25% in FullCast()
1:40:04Try decreasing the SampleRefColor from 70% to 25% in FullCast()
1:40:04Try decreasing the SampleRefColor from 70% to 25% in FullCast()
1:40:15See the light's brightness remain stable
🏃
1:40:15See the light's brightness remain stable
🏃
1:40:15See the light's brightness remain stable
🏃
1:40:30Try increasing the SampleRefColor from 25% to 50% in FullCast()
1:40:30Try increasing the SampleRefColor from 25% to 50% in FullCast()
1:40:30Try increasing the SampleRefColor from 25% to 50% in FullCast()
1:40:35Hit a write access violation in the debug arena
🏃
1:40:35Hit a write access violation in the debug arena
🏃
1:40:35Hit a write access violation in the debug arena
🏃
1:40:51Admire our diffuse lighting
🏃
1:40:51Admire our diffuse lighting
🏃
1:40:51Admire our diffuse lighting
🏃
1:41:06Remove the commented out reflectance code from ComputeVoxelIrradianceAt(), and the SampleRefColor hard-setting from FullCast()
1:41:06Remove the commented out reflectance code from ComputeVoxelIrradianceAt(), and the SampleRefColor hard-setting from FullCast()
1:41:06Remove the commented out reflectance code from ComputeVoxelIrradianceAt(), and the SampleRefColor hard-setting from FullCast()
1:42:19Try modifying the W by ×0.25 in BuildDiffuseLightMaps()
1:42:19Try modifying the W by ×0.25 in BuildDiffuseLightMaps()
1:42:19Try modifying the W by ×0.25 in BuildDiffuseLightMaps()
1:43:09See our lighting bounce less
🏃
1:43:09See our lighting bounce less
🏃
1:43:09See our lighting bounce less
🏃
1:43:17Try increasing the W modification from ×0.25 to ×0.5 in BuildDiffuseLightMaps()
1:43:17Try increasing the W modification from ×0.25 to ×0.5 in BuildDiffuseLightMaps()
1:43:17Try increasing the W modification from ×0.25 to ×0.5 in BuildDiffuseLightMaps()
1:43:19Hit a write access violation in DEBUGGetArena()
🏃
1:43:19Hit a write access violation in DEBUGGetArena()
🏃
1:43:19Hit a write access violation in DEBUGGetArena()
🏃
1:43:42Check out our ×0.5 bounced lighting
🏃
1:43:42Check out our ×0.5 bounced lighting
🏃
1:43:42Check out our ×0.5 bounced lighting
🏃
1:44:01Try increasing the W modification from ×0.5 to ×0.75 in BuildDiffuseLightMaps()
1:44:01Try increasing the W modification from ×0.5 to ×0.75 in BuildDiffuseLightMaps()
1:44:01Try increasing the W modification from ×0.5 to ×0.75 in BuildDiffuseLightMaps()
1:44:03Check out our more correct ×0.75 bounced lighting
🏃
1:44:03Check out our more correct ×0.75 bounced lighting
🏃
1:44:03Check out our more correct ×0.75 bounced lighting
🏃
1:45:29Try increasing the W modification from ×0.75 to ×0.85 in BuildDiffuseLightMaps()
1:45:29Try increasing the W modification from ×0.75 to ×0.85 in BuildDiffuseLightMaps()
1:45:29Try increasing the W modification from ×0.75 to ×0.85 in BuildDiffuseLightMaps()
1:45:38Check out our ×0.85 bounced lighting, with the determination to tighten our lighting equation
🏃
1:45:38Check out our ×0.85 bounced lighting, with the determination to tighten our lighting equation
🏃
1:45:38Check out our ×0.85 bounced lighting, with the determination to tighten our lighting equation
🏃
1:46:54Try increasing the W modification from ×0.85 to ×0.9 in BuildDiffuseLightMaps()
1:46:54Try increasing the W modification from ×0.85 to ×0.9 in BuildDiffuseLightMaps()
1:46:54Try increasing the W modification from ×0.85 to ×0.9 in BuildDiffuseLightMaps()
1:46:56Check out our ×0.9 bounced lighting
🏃
1:46:56Check out our ×0.9 bounced lighting
🏃
1:46:56Check out our ×0.9 bounced lighting
🏃
1:47:39Try increasing the W modification from ×0.9 to ×0.95 in BuildDiffuseLightMaps()
1:47:39Try increasing the W modification from ×0.9 to ×0.95 in BuildDiffuseLightMaps()
1:47:39Try increasing the W modification from ×0.9 to ×0.95 in BuildDiffuseLightMaps()
1:47:43Check out our still stable ×0.95 bounced lighting
🏃
1:47:43Check out our still stable ×0.95 bounced lighting
🏃
1:47:43Check out our still stable ×0.95 bounced lighting
🏃
1:48:58Remove the W modification from BuldDiffuseLightMaps()
1:48:58Remove the W modification from BuldDiffuseLightMaps()
1:48:58Remove the W modification from BuldDiffuseLightMaps()
1:49:07Check out our (slowly destabilising) bounced lighting
🏃
1:49:07Check out our (slowly destabilising) bounced lighting
🏃
1:49:07Check out our (slowly destabilising) bounced lighting
🏃
1:49:54Q&A
🗩
1:49:54Q&A
🗩
1:49:54Q&A
🗩
1:50:30picklebobdogflog Q: What is the cause of the flickering in the lighting? Will you do some de-noising or cast more rays in the future to try to fix it?
🗪
1:50:30picklebobdogflog Q: What is the cause of the flickering in the lighting? Will you do some de-noising or cast more rays in the future to try to fix it?
🗪
1:50:30picklebobdogflog Q: What is the cause of the flickering in the lighting? Will you do some de-noising or cast more rays in the future to try to fix it?
🗪
1:50:54Try modifying the W by ×0.975 in BuildDiffuseLightMaps()
1:50:54Try modifying the W by ×0.975 in BuildDiffuseLightMaps()
1:50:54Try modifying the W by ×0.975 in BuildDiffuseLightMaps()
1:52:17somebody_took_my_name Q: I think you might have flipped the tx / /ty in TestSphere() while rewriting the code
🗪
1:52:17somebody_took_my_name Q: I think you might have flipped the tx / /ty in TestSphere() while rewriting the code
🗪
1:52:17somebody_took_my_name Q: I think you might have flipped the tx / /ty in TestSphere() while rewriting the code
🗪
1:52:33xxthebigfoxx Q: Could it be useful to have it print a value like the average texel color of the diffuse and / or specular maps on the screen?
🗪
1:52:33xxthebigfoxx Q: Could it be useful to have it print a value like the average texel color of the diffuse and / or specular maps on the screen?
🗪
1:52:33xxthebigfoxx Q: Could it be useful to have it print a value like the average texel color of the diffuse and / or specular maps on the screen?
🗪
1:53:05vaualbus Q: Are you using different level on assert also for release build? Or you only use asserts on debug builds?
🗪
1:53:05vaualbus Q: Are you using different level on assert also for release build? Or you only use asserts on debug builds?
🗪
1:53:05vaualbus Q: Are you using different level on assert also for release build? Or you only use asserts on debug builds?
🗪
1:53:10Disable HANDMADE_INTERNAL and HANDMADE_SLOW in build.bat
1:53:10Disable HANDMADE_INTERNAL and HANDMADE_SLOW in build.bat
1:53:10Disable HANDMADE_INTERNAL and HANDMADE_SLOW in build.bat
1:53:24Hit a read access violation in OpenGLEndFrame(), and identifier not found compile errors
1:53:24Hit a read access violation in OpenGLEndFrame(), and identifier not found compile errors
1:53:24Hit a read access violation in OpenGLEndFrame(), and identifier not found compile errors
1:53:46Make HANDMADE_INTERNAL define the macros that HANDMADE_SLOW – within HANDMADE_INTERNAL – would have been able to define
1:53:46Make HANDMADE_INTERNAL define the macros that HANDMADE_SLOW – within HANDMADE_INTERNAL – would have been able to define
1:53:46Make HANDMADE_INTERNAL define the macros that HANDMADE_SLOW – within HANDMADE_INTERNAL – would have been able to define
1:55:24Run with both HANDMADE_INTERNAL and HANDMADE_SLOW disabled, but asserts enabled
🏃
1:55:24Run with both HANDMADE_INTERNAL and HANDMADE_SLOW disabled, but asserts enabled
🏃
1:55:24Run with both HANDMADE_INTERNAL and HANDMADE_SLOW disabled, but asserts enabled
🏃
1:56:53yesyesyourmother Can't find anything with DuckDuckGo4
🗪
1:56:53yesyesyourmother Can't find anything with DuckDuckGo4
🗪
1:56:53yesyesyourmother Can't find anything with DuckDuckGo4
🗪
1:57:27sahfortv Q: How slow are we? Is there any significant change in speed from the changes today?
🗪
1:57:27sahfortv Q: How slow are we? Is there any significant change in speed from the changes today?
🗪
1:57:27sahfortv Q: How slow are we? Is there any significant change in speed from the changes today?
🗪
1:57:30Check out the performance of our lighting
🏃
1:57:30Check out the performance of our lighting
🏃
1:57:30Check out the performance of our lighting
🏃
2:01:06sahfortv Q: And was the goal is to get to 30FPS in debug mode?
🗪
2:01:06sahfortv Q: And was the goal is to get to 30FPS in debug mode?
🗪
2:01:06sahfortv Q: And was the goal is to get to 30FPS in debug mode?
🗪
2:01:16vaualbus Q: So we are faster than the previous solution? I don't remember the performance of the old system
🗪
2:01:16vaualbus Q: So we are faster than the previous solution? I don't remember the performance of the old system
🗪
2:01:16vaualbus Q: So we are faster than the previous solution? I don't remember the performance of the old system
🗪
2:01:48Consider removing all mentions of LIGHT_LOOKUP_VOXEL_DIM
📖
2:01:48Consider removing all mentions of LIGHT_LOOKUP_VOXEL_DIM
📖
2:01:48Consider removing all mentions of LIGHT_LOOKUP_VOXEL_DIM
📖
2:02:49Temporarily reduce LIGHT_LOOKUP_VOXEL_DIM_POW_2 from 5 to 4
2:02:49Temporarily reduce LIGHT_LOOKUP_VOXEL_DIM_POW_2 from 5 to 4
2:02:49Temporarily reduce LIGHT_LOOKUP_VOXEL_DIM_POW_2 from 5 to 4
2:02:59Admire our much faster lighting
2:02:59Admire our much faster lighting
2:02:59Admire our much faster lighting
2:03:42Revert our LIGHT_LOOKUP_VOXEL_DIM_POW_2 to 5
2:03:42Revert our LIGHT_LOOKUP_VOXEL_DIM_POW_2 to 5
2:03:42Revert our LIGHT_LOOKUP_VOXEL_DIM_POW_2 to 5
2:04:09mattiamanzati Q: Can you still parameterise the voxel size? I'm curious if decreasing voxel size will remove some cubeness
🗪
2:04:09mattiamanzati Q: Can you still parameterise the voxel size? I'm curious if decreasing voxel size will remove some cubeness
🗪
2:04:09mattiamanzati Q: Can you still parameterise the voxel size? I'm curious if decreasing voxel size will remove some cubeness
🗪
2:04:42pragmascrypt Q: For what are you still using voxels?
🗪
2:04:42pragmascrypt Q: For what are you still using voxels?
🗪
2:04:42pragmascrypt Q: For what are you still using voxels?
🗪
2:05:40data_pi Q: Off-topic: Do you see Rust replacing C / C++ in the game industry in the next 5–10 years?
🗪
2:05:40data_pi Q: Off-topic: Do you see Rust replacing C / C++ in the game industry in the next 5–10 years?
🗪
2:05:40data_pi Q: Off-topic: Do you see Rust replacing C / C++ in the game industry in the next 5–10 years?
🗪
2:11:05ravarix Interesting that you think Rust doesn't help with swizzling. There are many libs for it just like C. It's not really a language problem
🗪
2:11:05ravarix Interesting that you think Rust doesn't help with swizzling. There are many libs for it just like C. It's not really a language problem
🗪
2:11:05ravarix Interesting that you think Rust doesn't help with swizzling. There are many libs for it just like C. It's not really a language problem
🗪
2:12:03s0imn Q: Are there any language features in C++ (that is not borrowed from C) that you like, and are there other language features than metaprogramming, that you want in a new language?
🗪
2:12:03s0imn Q: Are there any language features in C++ (that is not borrowed from C) that you like, and are there other language features than metaprogramming, that you want in a new language?
🗪
2:12:03s0imn Q: Are there any language features in C++ (that is not borrowed from C) that you like, and are there other language features than metaprogramming, that you want in a new language?
🗪
2:13:39ravarix Have you looked at the macro power of Rust? You can manipulate the AST as desired
🗪
2:13:39ravarix Have you looked at the macro power of Rust? You can manipulate the AST as desired
🗪
2:13:39ravarix Have you looked at the macro power of Rust? You can manipulate the AST as desired
🗪
2:14:02etheraxx Functional languages like Haskell allow developing embedded DSLs and you can write compiler extensions to do symbol replacement
🗪
2:14:02etheraxx Functional languages like Haskell allow developing embedded DSLs and you can write compiler extensions to do symbol replacement
🗪
2:14:02etheraxx Functional languages like Haskell allow developing embedded DSLs and you can write compiler extensions to do symbol replacement
🗪
2:16:22fierydrake Procedural Macros?5
🗪
2:16:22fierydrake Procedural Macros?5
🗪
2:16:22fierydrake Procedural Macros?5
🗪
2:17:46ravarix handmade_hero Oh sorry, I wasn't asking for specific detail. I was just curious if you had looked at it at all
🗪
2:17:46ravarix handmade_hero Oh sorry, I wasn't asking for specific detail. I was just curious if you had looked at it at all
🗪
2:17:46ravarix handmade_hero Oh sorry, I wasn't asking for specific detail. I was just curious if you had looked at it at all
🗪
2:18:49maliusarth Q: Where can I find Moustache?
🗪
2:18:49maliusarth Q: Where can I find Moustache?
🗪
2:18:49maliusarth Q: Where can I find Moustache?
🗪
2:19:01maliusarth Q: What do you think of clang tooling to create such AST manipulation tools as part of the build pipeline?
🗪
2:19:01maliusarth Q: What do you think of clang tooling to create such AST manipulation tools as part of the build pipeline?
🗪
2:19:01maliusarth Q: What do you think of clang tooling to create such AST manipulation tools as part of the build pipeline?
🗪
2:19:29Wrap this up
🗩
2:19:29Wrap this up
🗩
2:19:29Wrap this up
🗩