Merging the Raycaster with the Sampler
?
?

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:04Recap and set the stage for the day
🗩
0:04Recap and set the stage for the day
🗩
0:04Recap and set the stage for the day
🗩
0:25Our world remains in the dark
🏃
0:25Our world remains in the dark
🏃
0:25Our world remains in the dark
🏃
1:08Let GridRayCast() set a non-zero CostMetric
1:08Let GridRayCast() set a non-zero CostMetric
1:08Let GridRayCast() set a non-zero CostMetric
1:25Demo the current lighting
🏃
1:25Demo the current lighting
🏃
1:25Demo the current lighting
🏃
1:36Describe and consider the performance of our lighting
🗩
1:36Describe and consider the performance of our lighting
🗩
1:36Describe and consider the performance of our lighting
🗩
4:39Rare 4coder crash
🗹
4:39Rare 4coder crash
🗹
4:39Rare 4coder crash
🗹
5:26Consider gauging the grid ray casting performance if ComputeVoxelIrradianceAt() was optimal
🗩
5:26Consider gauging the grid ray casting performance if ComputeVoxelIrradianceAt() was optimal
🗩
5:26Consider gauging the grid ray casting performance if ComputeVoxelIrradianceAt() was optimal
🗩
8:25Break into ComputeVoxelIrradianceAt()
🏃
8:25Break into ComputeVoxelIrradianceAt()
🏃
8:25Break into ComputeVoxelIrradianceAt()
🏃
9:29RemedyBG feature request: Tabulated / colourised disassembly
🗹
9:29RemedyBG feature request: Tabulated / colourised disassembly
🗹
9:29RemedyBG feature request: Tabulated / colourised disassembly
🗹
12:17Inspect the assembly of ComputeVoxelIrradianceAt()
🏃
12:17Inspect the assembly of ComputeVoxelIrradianceAt()
🏃
12:17Inspect the assembly of ComputeVoxelIrradianceAt()
🏃
12:26Research the comiss instruction1,2
📖
12:26Research the comiss instruction1,2
📖
12:26Research the comiss instruction1,2
📖
15:40Try to interpret the origin of the comiss instructions
📖
15:40Try to interpret the origin of the comiss instructions
📖
15:40Try to interpret the origin of the comiss instructions
📖
21:06Compare our f32_4x and f32 versions of AbsoluteValue() in the Compiler Explorer3
📖
21:06Compare our f32_4x and f32 versions of AbsoluteValue() in the Compiler Explorer3
📖
21:06Compare our f32_4x and f32 versions of AbsoluteValue() in the Compiler Explorer3
📖
29:58Point out our comiss instructions
🏃
29:58Point out our comiss instructions
🏃
29:58Point out our comiss instructions
🏃
30:16Redo our f32 version of AbsoluteValue() based on the f32_4x version4,5
30:16Redo our f32 version of AbsoluteValue() based on the f32_4x version4,5
30:16Redo our f32 version of AbsoluteValue() based on the f32_4x version4,5
33:09Our comiss instructions are replaced with a call, which in turn retains the comiss ones
🏃
33:09Our comiss instructions are replaced with a call, which in turn retains the comiss ones
🏃
33:09Our comiss instructions are replaced with a call, which in turn retains the comiss ones
🏃
34:15Revert the f32 version of AbsoluteValue() to use fabs()
34:15Revert the f32 version of AbsoluteValue() to use fabs()
34:15Revert the f32 version of AbsoluteValue() to use fabs()
34:27Our comiss instructions are back, welded in
🏃
34:27Our comiss instructions are back, welded in
🏃
34:27Our comiss instructions are back, welded in
🏃
34:47Weld GetOctahedralOffset() in to ComputeVoxelIrradianceAt()
34:47Weld GetOctahedralOffset() in to ComputeVoxelIrradianceAt()
34:47Weld GetOctahedralOffset() in to ComputeVoxelIrradianceAt()
36:37Our comiss instructions remain
🏃
36:37Our comiss instructions remain
🏃
36:37Our comiss instructions remain
🏃
38:01Weld OctahedralFromUnitVector() in to ComputeVoxelIrradianceAt()
38:01Weld OctahedralFromUnitVector() in to ComputeVoxelIrradianceAt()
38:01Weld OctahedralFromUnitVector() in to ComputeVoxelIrradianceAt()
39:10SignOf() is the source of two comiss instructions
📖
39:10SignOf() is the source of two comiss instructions
📖
39:10SignOf() is the source of two comiss instructions
📖
40:04Make SignOf() branchless6
40:04Make SignOf() branchless6
40:04Make SignOf() branchless6
44:34Two of our comiss instructions are gone
🏃
44:34Two of our comiss instructions are gone
🏃
44:34Two of our comiss instructions are gone
🏃
45:26The lighting still looks the same
🏃
45:26The lighting still looks the same
🏃
45:26The lighting still looks the same
🏃
46:12Make the UV computation in ComputeVoxelIrradianceAt() fully branchless
46:12Make the UV computation in ComputeVoxelIrradianceAt() fully branchless
46:12Make the UV computation in ComputeVoxelIrradianceAt() fully branchless
50:06Note why _mm_extract_ps() is often not a good idea, as mmozeiko pointed out7
🗩
50:06Note why _mm_extract_ps() is often not a good idea, as mmozeiko pointed out7
🗩
50:06Note why _mm_extract_ps() is often not a good idea, as mmozeiko pointed out7
🗩
53:18Finish making the UV computation in ComputeVoxelIrradianceAt() fully branchless, also noting to change Extract1() and Extract2() to use SHUF+CVTSS
53:18Finish making the UV computation in ComputeVoxelIrradianceAt() fully branchless, also noting to change Extract1() and Extract2() to use SHUF+CVTSS
53:18Finish making the UV computation in ComputeVoxelIrradianceAt() fully branchless, also noting to change Extract1() and Extract2() to use SHUF+CVTSS
54:16All of our comiss instructions are gone
🏃
54:16All of our comiss instructions are gone
🏃
54:16All of our comiss instructions are gone
🏃
54:46Seek improvements to our ComputeVoxelIrradianceAt() vectorisation
📖
54:46Seek improvements to our ComputeVoxelIrradianceAt() vectorisation
📖
54:46Seek improvements to our ComputeVoxelIrradianceAt() vectorisation
📖
59:54Remove the stupidity from our ComputeVoxelIrradianceAt() vectorisation8
59:54Remove the stupidity from our ComputeVoxelIrradianceAt() vectorisation8
59:54Remove the stupidity from our ComputeVoxelIrradianceAt() vectorisation8
1:05:02A few words on being aware of gotchas in poorly designed instruction sets
🗩
1:05:02A few words on being aware of gotchas in poorly designed instruction sets
🗩
1:05:02A few words on being aware of gotchas in poorly designed instruction sets
🗩
1:06:45Continue to remove the stupidity from our ComputeVoxelIrradianceAt() vectorisation, introducing an f32_4x version of SignOf()
1:06:45Continue to remove the stupidity from our ComputeVoxelIrradianceAt() vectorisation, introducing an f32_4x version of SignOf()
1:06:45Continue to remove the stupidity from our ComputeVoxelIrradianceAt() vectorisation, introducing an f32_4x version of SignOf()
1:12:38Hit a read access violation in ComputeVoxelIrradianceAt()
🏃
1:12:38Hit a read access violation in ComputeVoxelIrradianceAt()
🏃
1:12:38Hit a read access violation in ComputeVoxelIrradianceAt()
🏃
1:13:38Remove the problematic part of the BaseXYZ computation in ComputeVoxelIrradianceAt()
1:13:38Remove the problematic part of the BaseXYZ computation in ComputeVoxelIrradianceAt()
1:13:38Remove the problematic part of the BaseXYZ computation in ComputeVoxelIrradianceAt()
1:13:50We no longer hit that read access violation
🏃
1:13:50We no longer hit that read access violation
🏃
1:13:50We no longer hit that read access violation
🏃
1:14:08Scrutinise ComputeVoxelIrradianceAt() for bugs
📖
1:14:08Scrutinise ComputeVoxelIrradianceAt() for bugs
📖
1:14:08Scrutinise ComputeVoxelIrradianceAt() for bugs
📖
1:21:25Make ComputeVoxelIrradianceAt() call GetOctahedralOffset() as originally
1:21:25Make ComputeVoxelIrradianceAt() call GetOctahedralOffset() as originally
1:21:25Make ComputeVoxelIrradianceAt() call GetOctahedralOffset() as originally
1:22:41Step into ComputeVoxelIrradianceAt() and compare the Txy and Check
🏃
1:22:41Step into ComputeVoxelIrradianceAt() and compare the Txy and Check
🏃
1:22:41Step into ComputeVoxelIrradianceAt() and compare the Txy and Check
🏃
1:24:48Weld GetOctahedralOffset() into ComputeVoxelIrradianceAt() to facilitate closer comparison
1:24:48Weld GetOctahedralOffset() into ComputeVoxelIrradianceAt() to facilitate closer comparison
1:24:48Weld GetOctahedralOffset() into ComputeVoxelIrradianceAt() to facilitate closer comparison
1:27:47Hit our assertion in ComputeVoxelIrradianceAt(), and compare the check and newly computed values
🏃
1:27:47Hit our assertion in ComputeVoxelIrradianceAt(), and compare the check and newly computed values
🏃
1:27:47Hit our assertion in ComputeVoxelIrradianceAt(), and compare the check and newly computed values
🏃
1:29:49Weld OctahedralFromUnitVector() into ComputeVoxelIrradianceAt() to facilitate comparison
1:29:49Weld OctahedralFromUnitVector() into ComputeVoxelIrradianceAt() to facilitate comparison
1:29:49Weld OctahedralFromUnitVector() into ComputeVoxelIrradianceAt() to facilitate comparison
1:32:25Hit our assertion in ComputeVoxelIrradianceAt(), and compare the check and newly computed values
🏃
1:32:25Hit our assertion in ComputeVoxelIrradianceAt(), and compare the check and newly computed values
🏃
1:32:25Hit our assertion in ComputeVoxelIrradianceAt(), and compare the check and newly computed values
🏃
1:32:54Fix ComputeVoxelIrradianceAt() to use AbsoluteValue() when computing the OneNorm
1:32:54Fix ComputeVoxelIrradianceAt() to use AbsoluteValue() when computing the OneNorm
1:32:54Fix ComputeVoxelIrradianceAt() to use AbsoluteValue() when computing the OneNorm
1:33:26We run successfully
🏃
1:33:26We run successfully
🏃
1:33:26We run successfully
🏃
1:33:35Remove the checking code from ComputeVoxelIrradianceAt()
1:33:35Remove the checking code from ComputeVoxelIrradianceAt()
1:33:35Remove the checking code from ComputeVoxelIrradianceAt()
1:33:51Our ray casting performance is improving
🏃
1:33:51Our ray casting performance is improving
🏃
1:33:51Our ray casting performance is improving
🏃
1:35:38hhlightprof total seconds elapsed: 5.244874
🏃
1:35:38hhlightprof total seconds elapsed: 5.244874
🏃
1:35:38hhlightprof total seconds elapsed: 5.244874
🏃
1:37:33Inspect the assembly of ComputeVoxelIrradianceAt()
🏃
1:37:33Inspect the assembly of ComputeVoxelIrradianceAt()
🏃
1:37:33Inspect the assembly of ComputeVoxelIrradianceAt()
🏃
1:38:26Replace Extract0(), Extract1() and Extract2() with ConvertF32() and ConvertS32()
1:38:26Replace Extract0(), Extract1() and Extract2() with ConvertF32() and ConvertS32()
1:38:26Replace Extract0(), Extract1() and Extract2() with ConvertF32() and ConvertS32()
1:42:08Our lighting looks the same
🏃
1:42:08Our lighting looks the same
🏃
1:42:08Our lighting looks the same
🏃
1:42:15hhlightprof total seconds elapsed: 5.055217
🏃
1:42:15hhlightprof total seconds elapsed: 5.055217
🏃
1:42:15hhlightprof total seconds elapsed: 5.055217
🏃
1:43:11Change ComputeVoxelIrradianceAt() to return the f32_4x ResultRGB, for the callers to use directly
1:43:11Change ComputeVoxelIrradianceAt() to return the f32_4x ResultRGB, for the callers to use directly
1:43:11Change ComputeVoxelIrradianceAt() to return the f32_4x ResultRGB, for the callers to use directly
1:46:13Our lighting looks the same
🏃
1:46:13Our lighting looks the same
🏃
1:46:13Our lighting looks the same
🏃
1:46:18hhlightprof total seconds elapsed: 4.963887
🏃
1:46:18hhlightprof total seconds elapsed: 4.963887
🏃
1:46:18hhlightprof total seconds elapsed: 4.963887
🏃
1:47:14Weld ComputeVoxelIrradianceAt() straight in to GridRayCast(), to save computing values twice
1:47:14Weld ComputeVoxelIrradianceAt() straight in to GridRayCast(), to save computing values twice
1:47:14Weld ComputeVoxelIrradianceAt() straight in to GridRayCast(), to save computing values twice
1:49:16Our lighting looks the same
🏃
1:49:16Our lighting looks the same
🏃
1:49:16Our lighting looks the same
🏃
1:49:30hhlightprof total seconds elapsed: 4.701094
🏃
1:49:30hhlightprof total seconds elapsed: 4.701094
🏃
1:49:30hhlightprof total seconds elapsed: 4.701094
🏃
1:50:40Seek further improvements to GridRayCast()
📖
1:50:40Seek further improvements to GridRayCast()
📖
1:50:40Seek further improvements to GridRayCast()
📖
1:54:19Our lighting looks the same
🏃
1:54:19Our lighting looks the same
🏃
1:54:19Our lighting looks the same
🏃
1:54:22Q&A
🗩
1:54:22Q&A
🗩
1:54:22Q&A
🗩
1:54:43golido3868 Q: Sorry to be off-topic. I've finished all the five days in the Intro to C and it was awesome. But there's a huge gap between the intro and the main course that I'm not able to fully understand. What's your suggestion? I'm new to programming, started reading K&R recently.9
🗪
1:54:43golido3868 Q: Sorry to be off-topic. I've finished all the five days in the Intro to C and it was awesome. But there's a huge gap between the intro and the main course that I'm not able to fully understand. What's your suggestion? I'm new to programming, started reading K&R recently.9
🗪
1:54:43golido3868 Q: Sorry to be off-topic. I've finished all the five days in the Intro to C and it was awesome. But there's a huge gap between the intro and the main course that I'm not able to fully understand. What's your suggestion? I'm new to programming, started reading K&R recently.9
🗪
1:56:35Plug Star Code Galaxy10
📖
1:56:35Plug Star Code Galaxy10
📖
1:56:35Plug Star Code Galaxy10
📖
1:57:39Close it down
🗩
1:57:39Close it down
🗩
1:57:39Close it down
🗩