SIMD Raycast Point and Normal Computations

?

?# 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

## 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)

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)

a

w

s

s

d

h
j
k
l

←

↑

↓

↓

→

Esc Close menu / unfocus timestamp

X, ShiftSpace Toggle category and focus previous

v Invert topics / media as per focus

⏫

Previous: 'Removing Old Lighting Lookups'

⏫

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

🗩

2:14Putting six-rayed light probes into the lighting system

🗩

2:14Putting six-rayed light probes into the lighting system

🗩

2:14Putting six-rayed light probes into the lighting system

🗩

3:16Our old box-intersection testing in RayCast()

🗩

3:16Our old box-intersection testing in RayCast()

🗩

3:16Our old box-intersection testing in RayCast()

🗩

4:54Our box lighting primitives

🏃

4:54Our box lighting primitives

🏃

4:54Our box lighting primitives

🏃

7:00Our old box-intersection testing and reporting in RayCast(), continued

🗩

7:00Our old box-intersection testing and reporting in RayCast(), continued

🗩

7:00Our old box-intersection testing and reporting in RayCast(), continued

🗩

10:31Ways of Getting Intersection Normals for AABB

🖌

10:31Ways of Getting Intersection Normals for AABB

🖌

10:31Ways of Getting Intersection Normals for AABB

🖌

14:31Consider storing the BoxMin and BoxMax in lighting_box

14:31Consider storing the BoxMin and BoxMax in lighting_box

14:31Consider storing the BoxMin and BoxMax in lighting_box

15:39Getting an Approximate Normal from an Ellipsoid-like AABB

🖌

15:39Getting an Approximate Normal from an Ellipsoid-like AABB

🖌

15:39Getting an Approximate Normal from an Ellipsoid-like AABB

🖌

18:50Getting Accurate AABB Intersection Normals

🖌

18:50Getting Accurate AABB Intersection Normals

🖌

18:50Getting Accurate AABB Intersection Normals

🖌

24:52Set up RayCast() to compute the intersection normal for a unit cube lighting_box

24:52Set up RayCast() to compute the intersection normal for a unit cube lighting_box

24:52Set up RayCast() to compute the intersection normal for a unit cube lighting_box

29:39Could we compute our intersection normal more efficiently?

🖌

29:39Could we compute our intersection normal more efficiently?

🖌

29:39Could we compute our intersection normal more efficiently?

🖌

32:26Consider the cost of our intersection normal computation in RayCast()

📖

32:26Consider the cost of our intersection normal computation in RayCast()

📖

32:26Consider the cost of our intersection normal computation in RayCast()

📖

34:31Computing the intersection normal only of box hits, saving the box scale and centre

🖌

34:31Computing the intersection normal only of box hits, saving the box scale and centre

🖌

34:31Computing the intersection normal only of box hits, saving the box scale and centre

🖌

37:33Let RayCast() only set the box centre and scale, making ComputeLightPropagation() compute the intersection normal

37:33Let RayCast() only set the box centre and scale, making ComputeLightPropagation() compute the intersection normal

40:17The cost and availability of _mm_blend_ps^{1}^{,2}^{,3}

📖

40:17The cost and availability of _mm_blend_ps^{1}^{,2}^{,3}

📖

40:17The cost and availability of _mm_blend_ps^{1}^{,2}^{,3}

📖

44:25Make RayCast() select the RefColor and at the end compute the Result, augmenting raycast_result with P, Normal and RefColor^{4}

44:25Make RayCast() select the RefColor and at the end compute the Result, augmenting raycast_result with P, Normal and RefColor^{4}

57:37Introduce SignBitFrom()

57:37Introduce SignBitFrom()

57:37Introduce SignBitFrom()

59:37Finish making RayCast() set the HitNormal from Masks

59:37Finish making RayCast() set the HitNormal from Masks

59:37Finish making RayCast() set the HitNormal from Masks

1:07:49Clean up compile errors, making RayCast() compute BoxRadius and its approximate inverse, introducing ApproxOneOver()^{5}

1:07:49Clean up compile errors, making RayCast() compute BoxRadius and its approximate inverse, introducing ApproxOneOver()^{5}

1:22:33Consider the potential speed improvement of RayCast()

🗩

1:22:33Consider the potential speed improvement of RayCast()

🗩

1:22:33Consider the potential speed improvement of RayCast()

🗩

1:23:39Determine to make ComputeLightPropagation() operate wide

🗩

1:23:39Determine to make ComputeLightPropagation() operate wide

🗩

1:23:39Determine to make ComputeLightPropagation() operate wide

🗩

1:24:52Lament SIMD's lack of fetching instructions

🗩

1:24:52Lament SIMD's lack of fetching instructions

🗩

1:24:52Lament SIMD's lack of fetching instructions

🗩

1:26:09Consider how to make our lighting operate wide

🗩

1:26:09Consider how to make our lighting operate wide

🗩

1:26:09Consider how to make our lighting operate wide

🗩

1:30:08Q&A

🗩

1:30:08Q&A

🗩

1:30:08Q&A

🗩

1:58:02Shut down, with a plug of Jon's stream^{10} and Handmade Seattle^{11}

🗩

1:58:02Shut down, with a plug of Jon's stream^{10} and Handmade Seattle^{11}

🗩

1:58:02Shut down, with a plug of Jon's stream^{10} and Handmade Seattle^{11}

🗩

⏬

Next: 'Computing Probe to Probe Transmission'

⏬