Aligning Sampling Spheres with the Octahedral Map
?
?

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:03Welcome to the stream
🗩
0:03Welcome to the stream
🗩
0:03Welcome to the stream
🗩
0:09Demo our more tightly bound lighting region, at 33ms per frame
🏃
0:09Demo our more tightly bound lighting region, at 33ms per frame
🏃
0:09Demo our more tightly bound lighting region, at 33ms per frame
🏃
1:59Determine to optimise the lighting ray caster, then improve the quality
🏃
1:59Determine to optimise the lighting ray caster, then improve the quality
🏃
1:59Determine to optimise the lighting ray caster, then improve the quality
🏃
3:1180% frame time (40ms per frame) spent in FullCast()
🏃
3:1180% frame time (40ms per frame) spent in FullCast()
🏃
3:1180% frame time (40ms per frame) spent in FullCast()
🏃
4:31Check the lighting performance statistics
🏃
4:31Check the lighting performance statistics
🏃
4:31Check the lighting performance statistics
🏃
5:13Remove all mention of light probes from the entity system
5:13Remove all mention of light probes from the entity system
5:13Remove all mention of light probes from the entity system
9:35Check the lighting performance statistics, with the determination to simplify the full cast
🏃
9:35Check the lighting performance statistics, with the determination to simplify the full cast
🏃
9:35Check the lighting performance statistics, with the determination to simplify the full cast
🏃
12:47Add a RaysPerProbe DEBUG_VALUE in EndLightingComputation()
12:47Add a RaysPerProbe DEBUG_VALUE in EndLightingComputation()
12:47Add a RaysPerProbe DEBUG_VALUE in EndLightingComputation()
14:18RaysPerProbe: 72
🏃
14:18RaysPerProbe: 72
🏃
14:18RaysPerProbe: 72
🏃
14:40Determine to perform 64-ray stratified sampling
🏃
14:40Determine to perform 64-ray stratified sampling
🏃
14:40Determine to perform 64-ray stratified sampling
🏃
17:25Set up to make FullCast() light the texels directly
📖
17:25Set up to make FullCast() light the texels directly
📖
17:25Set up to make FullCast() light the texels directly
📖
19:19Modify FullCast() to load and store back to the texels directly, introducing StoreF32_4X()
19:19Modify FullCast() to load and store back to the texels directly, introducing StoreF32_4X()
19:19Modify FullCast() to load and store back to the texels directly, introducing StoreF32_4X()
40:02Consider welding the texel loading / storing into RayCast()
📖
40:02Consider welding the texel loading / storing into RayCast()
📖
40:02Consider welding the texel loading / storing into RayCast()
📖
40:46Weld FullCast()'s texel loading / storing into RayCast(), removing raycast_result and TestCast()
40:46Weld FullCast()'s texel loading / storing into RayCast(), removing raycast_result and TestCast()
40:46Weld FullCast()'s texel loading / storing into RayCast(), removing raycast_result and TestCast()
51:37The light seems to accumulate infinitely
🏃
51:37The light seems to accumulate infinitely
🏃
51:37The light seems to accumulate infinitely
🏃
52:20Consider relieving RayCast() of computing the normal
📖
52:20Consider relieving RayCast() of computing the normal
📖
52:20Consider relieving RayCast() of computing the normal
📖
54:41Try making FullCast() cast rays in known directions
54:41Try making FullCast() cast rays in known directions
54:41Try making FullCast() cast rays in known directions
57:22The lighting accumulates stably
🏃
57:22The lighting accumulates stably
🏃
57:22The lighting accumulates stably
🏃
58:10Introduce GeneratePoissonLightingPattern() and GenerateOctahedralLightingPattern() based on GenerateLightingPattern(), and InterleaveDirections()
58:10Introduce GeneratePoissonLightingPattern() and GenerateOctahedralLightingPattern() based on GenerateLightingPattern(), and InterleaveDirections()
58:10Introduce GeneratePoissonLightingPattern() and GenerateOctahedralLightingPattern() based on GenerateLightingPattern(), and InterleaveDirections()
1:05:15Plan to generate a blue noise sphere to be evaluated within each tile
📖
1:05:15Plan to generate a blue noise sphere to be evaluated within each tile
📖
1:05:15Plan to generate a blue noise sphere to be evaluated within each tile
📖
1:07:34Introduce GeneratePoissonDistribution()
1:07:34Introduce GeneratePoissonDistribution()
1:07:34Introduce GeneratePoissonDistribution()
1:21:31Invoke hhsphere 16 16 sphere_test.inl
🗹
1:21:31Invoke hhsphere 16 16 sphere_test.inl
🗹
1:21:31Invoke hhsphere 16 16 sphere_test.inl
🗹
1:23:25Peek at our lighting
🏃
1:23:25Peek at our lighting
🏃
1:23:25Peek at our lighting
🏃
1:24:23Fix GenerateOctahedralLightingPattern() to pick from the octahedral map correctly
1:24:23Fix GenerateOctahedralLightingPattern() to pick from the octahedral map correctly
1:24:23Fix GenerateOctahedralLightingPattern() to pick from the octahedral map correctly
1:24:31Invoke hhsphere 16 16 handmade_sampling_spheres.inl
🗹
1:24:31Invoke hhsphere 16 16 handmade_sampling_spheres.inl
🗹
1:24:31Invoke hhsphere 16 16 handmade_sampling_spheres.inl
🗹
1:25:35See no noise reappear
🏃
1:25:35See no noise reappear
🏃
1:25:35See no noise reappear
🏃
1:25:49Double-check GenerateOctahedralLightingPattern() for bugs
📖
1:25:49Double-check GenerateOctahedralLightingPattern() for bugs
📖
1:25:49Double-check GenerateOctahedralLightingPattern() for bugs
📖
1:26:48The light has accumulated infinitely
🏃
1:26:48The light has accumulated infinitely
🏃
1:26:48The light has accumulated infinitely
🏃
1:27:04Make EndLightingComputation() draw the sampling spheres
1:27:04Make EndLightingComputation() draw the sampling spheres
1:27:04Make EndLightingComputation() draw the sampling spheres
1:31:26See the submerged sampling sphere
🏃
1:31:26See the submerged sampling sphere
🏃
1:31:26See the submerged sampling sphere
🏃
1:31:37Make EndLightingComputation() elevate the sampling spheres
1:31:37Make EndLightingComputation() elevate the sampling spheres
1:31:37Make EndLightingComputation() elevate the sampling spheres
1:32:02Admire our 2D sampling sphere
🏃
1:32:02Admire our 2D sampling sphere
🏃
1:32:02Admire our 2D sampling sphere
🏃
1:32:28Fix GenerateOctahedralLightingPattern() to set the Pick before marking the Check as used
1:32:28Fix GenerateOctahedralLightingPattern() to set the Pick before marking the Check as used
1:32:28Fix GenerateOctahedralLightingPattern() to set the Pick before marking the Check as used
1:32:52Invoke hhsphere 16 16 handmade_sampling_spheres.inl
🗹
1:32:52Invoke hhsphere 16 16 handmade_sampling_spheres.inl
🗹
1:32:52Invoke hhsphere 16 16 handmade_sampling_spheres.inl
🗹
1:33:31Admire our correctly 3D sampling sphere
🏃
1:33:31Admire our correctly 3D sampling sphere
🏃
1:33:31Admire our correctly 3D sampling sphere
🏃
1:34:08Make EndLightingComputation() colourise the sampling sphere by region
1:34:08Make EndLightingComputation() colourise the sampling sphere by region
1:34:08Make EndLightingComputation() colourise the sampling sphere by region
1:34:34Admire our coloured sampling sphere
🏃
1:34:34Admire our coloured sampling sphere
🏃
1:34:34Admire our coloured sampling sphere
🏃
1:35:01Toggle off the sampling sphere drawing in EndLightingComputation()
1:35:01Toggle off the sampling sphere drawing in EndLightingComputation()
1:35:01Toggle off the sampling sphere drawing in EndLightingComputation()
1:35:1875% frame time (30ms per frame) spent in FullCast()
🏃
1:35:1875% frame time (30ms per frame) spent in FullCast()
🏃
1:35:1875% frame time (30ms per frame) spent in FullCast()
🏃
1:36:02Scour RayCast() and FullCast() for sampling bugs
📖
1:36:02Scour RayCast() and FullCast() for sampling bugs
📖
1:36:02Scour RayCast() and FullCast() for sampling bugs
📖
1:37:15Assert in FullCast() that RayBundleIndex <= LIGHT_SAMPLING_RAY_BUNDLES_PER_SPHERE
1:37:15Assert in FullCast() that RayBundleIndex <= LIGHT_SAMPLING_RAY_BUNDLES_PER_SPHERE
1:37:15Assert in FullCast() that RayBundleIndex <= LIGHT_SAMPLING_RAY_BUNDLES_PER_SPHERE
1:37:44Fail to hit that assertion
🏃
1:37:44Fail to hit that assertion
🏃
1:37:44Fail to hit that assertion
🏃
1:37:52Assert in FullCast() that DirSampleIndex < LIGHT_SAMPLING_SPHERE_COUNT
1:37:52Assert in FullCast() that DirSampleIndex < LIGHT_SAMPLING_SPHERE_COUNT
1:37:52Assert in FullCast() that DirSampleIndex < LIGHT_SAMPLING_SPHERE_COUNT
1:38:02Fail to hit that assertion
🏃
1:38:02Fail to hit that assertion
🏃
1:38:02Fail to hit that assertion
🏃
1:38:11Continue to scour FullCast() and RayCast() for sampling bugs
📖
1:38:11Continue to scour FullCast() and RayCast() for sampling bugs
📖
1:38:11Continue to scour FullCast() and RayCast() for sampling bugs
📖
1:40:19Fix RayCast() to correctly set S1 and S2
1:40:19Fix RayCast() to correctly set S1 and S2
1:40:19Fix RayCast() to correctly set S1 and S2
1:40:29Admire our correct lighting
🏃
1:40:29Admire our correct lighting
🏃
1:40:29Admire our correct lighting
🏃
1:41:21Q&A
🗩
1:41:21Q&A
🗩
1:41:21Q&A
🗩
1:42:04thetamiel Q: When will brogramming return?
🗪
1:42:04thetamiel Q: When will brogramming return?
🗪
1:42:04thetamiel Q: When will brogramming return?
🗪
1:42:41mycon_ Q: I don't really use "static" anywhere and I've been fine without it. Am I doing something wrong?
🗪
1:42:41mycon_ Q: I don't really use "static" anywhere and I've been fine without it. Am I doing something wrong?
🗪
1:42:41mycon_ Q: I don't really use "static" anywhere and I've been fine without it. Am I doing something wrong?
🗪
1:44:42czapa10 Q: Is 3D shear transformation useful in graphics programming for games? How to construct 4x4 shear matrix?
🗪
1:44:42czapa10 Q: Is 3D shear transformation useful in graphics programming for games? How to construct 4x4 shear matrix?
🗪
1:44:42czapa10 Q: Is 3D shear transformation useful in graphics programming for games? How to construct 4x4 shear matrix?
🗪
1:46:48Shear Matrix
🖌
1:46:48Shear Matrix
🖌
1:46:48Shear Matrix
🖌
1:52:38czapa10 Q: Yeah, makes sense. Thank you
🗪
1:52:38czapa10 Q: Yeah, makes sense. Thank you
🗪
1:52:38czapa10 Q: Yeah, makes sense. Thank you
🗪
1:52:41mattiamanzati Q: Which kind of light does Handmade Hero support? Did I assume right it supports any as long you put light correctly? Maybe moon light can be a planar light put over rooms marked as "outside"
🗪
1:52:41mattiamanzati Q: Which kind of light does Handmade Hero support? Did I assume right it supports any as long you put light correctly? Maybe moon light can be a planar light put over rooms marked as "outside"
🗪
1:52:41mattiamanzati Q: Which kind of light does Handmade Hero support? Did I assume right it supports any as long you put light correctly? Maybe moon light can be a planar light put over rooms marked as "outside"
🗪
1:53:45xxthebigfoxx Q: Can you check how much slower the build is if you define internal to nothing?
🗪
1:53:45xxthebigfoxx Q: Can you check how much slower the build is if you define internal to nothing?
🗪
1:53:45xxthebigfoxx Q: Can you check how much slower the build is if you define internal to nothing?
🗪
1:54:064.887 seconds -O2 build
🗹
1:54:064.887 seconds -O2 build
🗹
1:54:064.887 seconds -O2 build
🗹
1:54:232.203 seconds -Od build
🗹
1:54:232.203 seconds -Od build
🗹
1:54:232.203 seconds -Od build
🗹
1:54:56#define internal to nothing
1:54:56#define internal to nothing
1:54:56#define internal to nothing
1:55:072.360 seconds -Od build, without internal
🗹
1:55:072.360 seconds -Od build, without internal
🗹
1:55:072.360 seconds -Od build, without internal
🗹
1:55:22Remove hhsphere.cpp from the compilation
1:55:22Remove hhsphere.cpp from the compilation
1:55:22Remove hhsphere.cpp from the compilation
1:55:342.000 seconds -Od build, without internal or hhsphere.cpp
🗹
1:55:342.000 seconds -Od build, without internal or hhsphere.cpp
🗹
1:55:342.000 seconds -Od build, without internal or hhsphere.cpp
🗹
1:55:43#define internal static
1:55:43#define internal static
1:55:43#define internal static
1:55:511.969 seconds -Od build, without hhsphere.cpp
🗹
1:55:511.969 seconds -Od build, without hhsphere.cpp
🗹
1:55:511.969 seconds -Od build, without hhsphere.cpp
🗹
1:56:09#define internal to nothing
1:56:09#define internal to nothing
1:56:09#define internal to nothing
1:56:132.000 seconds -Od build, without internal or hhsphere.cpp
🗹
1:56:132.000 seconds -Od build, without internal or hhsphere.cpp
🗹
1:56:132.000 seconds -Od build, without internal or hhsphere.cpp
🗹
1:56:23#define internal static
1:56:23#define internal static
1:56:23#define internal static
1:56:294.375 seconds -O2 build, without hhsphere.cpp
🗹
1:56:294.375 seconds -O2 build, without hhsphere.cpp
🗹
1:56:294.375 seconds -O2 build, without hhsphere.cpp
🗹
1:56:53#define internal to nothing
1:56:53#define internal to nothing
1:56:53#define internal to nothing
1:56:564.657 seconds -O2 build, without internal or hhsphere.cpp (with an "unresolved external symbol memcpy" error)
🗹
1:56:564.657 seconds -O2 build, without internal or hhsphere.cpp (with an "unresolved external symbol memcpy" error)
🗹
1:56:564.657 seconds -O2 build, without internal or hhsphere.cpp (with an "unresolved external symbol memcpy" error)
🗹
1:57:03Investigate the "unresolved external symbol memcpy" error
📖
1:57:03Investigate the "unresolved external symbol memcpy" error
📖
1:57:03Investigate the "unresolved external symbol memcpy" error
📖
1:58:54Mark Copy() as static rather than internal
1:58:54Mark Copy() as static rather than internal
1:58:54Mark Copy() as static rather than internal
1:58:57Build and still hit that "unresolved external symbol memcpy" error
🗹
1:58:57Build and still hit that "unresolved external symbol memcpy" error
🗹
1:58:57Build and still hit that "unresolved external symbol memcpy" error
🗹
1:59:06Mark Copy() as internal
1:59:06Mark Copy() as internal
1:59:06Mark Copy() as internal
1:59:42#define internal static
1:59:42#define internal static
1:59:42#define internal static
1:59:444.390 seconds -O2 build, without hhsphere.cpp
🗹
1:59:444.390 seconds -O2 build, without hhsphere.cpp
🗹
1:59:444.390 seconds -O2 build, without hhsphere.cpp
🗹
2:00:06redine_not_eu Q: You REM'd something and forgot to unREM it?
🗪
2:00:06redine_not_eu Q: You REM'd something and forgot to unREM it?
🗪
2:00:06redine_not_eu Q: You REM'd something and forgot to unREM it?
🗪
2:00:44Wrap it up
🗩
2:00:44Wrap it up
🗩
2:00:44Wrap it up
🗩