Handmade Hero»Episode Guide
Transforming Normals Properly
?
?

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:31Yesterday we had a little bit of a problem
0:31Yesterday we had a little bit of a problem
0:31Yesterday we had a little bit of a problem
1:25Blackboard: Imagining the Normals for a house
1:25Blackboard: Imagining the Normals for a house
1:25Blackboard: Imagining the Normals for a house
3:51Blackboard: Recap how to get the perpendicular of a vector
3:51Blackboard: Recap how to get the perpendicular of a vector
3:51Blackboard: Recap how to get the perpendicular of a vector
5:20Blackboard: Constructing this Normal with rotation and uniform scale
5:20Blackboard: Constructing this Normal with rotation and uniform scale
5:20Blackboard: Constructing this Normal with rotation and uniform scale
8:27Blackboard: What happens if we do non-uniform scale?
8:27Blackboard: What happens if we do non-uniform scale?
8:27Blackboard: What happens if we do non-uniform scale?
13:30Blackboard: How can we work around this incorrect calculation?
13:30Blackboard: How can we work around this incorrect calculation?
13:30Blackboard: How can we work around this incorrect calculation?
17:41Open up emacs and take a look at what's currently going on in-game
17:41Open up emacs and take a look at what's currently going on in-game
17:41Open up emacs and take a look at what's currently going on in-game
18:15Rotate normals based on X/Y axis
18:15Rotate normals based on X/Y axis
18:15Rotate normals based on X/Y axis
20:04Introduce NxAxis and NyAxis
20:04Introduce NxAxis and NyAxis
20:04Introduce NxAxis and NyAxis
21:54Give our v4s the ability to assign just to xy, yz or zw
21:54Give our v4s the ability to assign just to xy, yz or zw
21:54Give our v4s the ability to assign just to xy, yz or zw
22:36Check it out in-game
22:36Check it out in-game
22:36Check it out in-game
22:50Moment of realisation: We can't just normalise afterwards without having touched the Z size
22:50Moment of realisation: We can't just normalise afterwards without having touched the Z size
22:50Moment of realisation: We can't just normalise afterwards without having touched the Z size
23:22Compensate for the size changes of X and Y
23:22Compensate for the size changes of X and Y
23:22Compensate for the size changes of X and Y
24:42Check it out in-game
24:42Check it out in-game
24:42Check it out in-game
25:47Blackboard: Explaining NzScale
25:47Blackboard: Explaining NzScale
25:47Blackboard: Explaining NzScale
29:19RIP Das Keyboard 4
29:19RIP Das Keyboard 4
29:19RIP Das Keyboard 4
30:11Consider NzScale
30:11Consider NzScale
30:11Consider NzScale
31:10Resume working on sampling from the maps correctly
31:10Resume working on sampling from the maps correctly
31:10Resume working on sampling from the maps correctly
35:09Document SampleEnvironmentMap a little
35:09Document SampleEnvironmentMap a little
35:09Document SampleEnvironmentMap a little
39:01Pass DistanceFromMapInZ to SampleEnvironmentMap
39:01Pass DistanceFromMapInZ to SampleEnvironmentMap
39:01Pass DistanceFromMapInZ to SampleEnvironmentMap
40:13Blackboard: Think about the weird nature of lighting in 2D games
40:13Blackboard: Think about the weird nature of lighting in 2D games
40:13Blackboard: Think about the weird nature of lighting in 2D games
41:54Flip DistanceFromMapInZ
41:54Flip DistanceFromMapInZ
41:54Flip DistanceFromMapInZ
42:23Ensure we're still where we were in-game and continue to verify SampleEnvironmentMap
42:23Ensure we're still where we were in-game and continue to verify SampleEnvironmentMap
42:23Ensure we're still where we were in-game and continue to verify SampleEnvironmentMap
45:17Blackboard: Figure out which direction Z should be sampling in the map
45:17Blackboard: Figure out which direction Z should be sampling in the map
45:17Blackboard: Figure out which direction Z should be sampling in the map
47:01Push BounceDirection.z up to the head end and negate it there
47:01Push BounceDirection.z up to the head end and negate it there
47:01Push BounceDirection.z up to the head end and negate it there
47:45View it in-game, try flipping it back and investigate what is happening
47:45View it in-game, try flipping it back and investigate what is happening
47:45View it in-game, try flipping it back and investigate what is happening
58:39Leave that as the puzzler and go to the Q&A
58:39Leave that as the puzzler and go to the Q&A
58:39Leave that as the puzzler and go to the Q&A
59:04grumpygiant256 Draw the sampling vector as RGB=XYZ*0.5+0.5 to visualize it
🗪
59:04grumpygiant256 Draw the sampling vector as RGB=XYZ*0.5+0.5 to visualize it
🗪
59:04grumpygiant256 Draw the sampling vector as RGB=XYZ*0.5+0.5 to visualize it
🗪
1:06:50miblo Is the map being clipped on either the top or bottom edge? (Don't know if that makes sense.)
🗪
1:06:50miblo Is the map being clipped on either the top or bottom edge? (Don't know if that makes sense.)
🗪
1:06:50miblo Is the map being clipped on either the top or bottom edge? (Don't know if that makes sense.)
🗪
1:07:23robotchocolatedino Could we calculate a value for the NzScale from the Normal.x and Normal.y so that the Normal.z is unchanged after normalization?
🗪
1:07:23robotchocolatedino Could we calculate a value for the NzScale from the Normal.x and Normal.y so that the Normal.z is unchanged after normalization?
🗪
1:07:23robotchocolatedino Could we calculate a value for the NzScale from the Normal.x and Normal.y so that the Normal.z is unchanged after normalization?
🗪
1:11:53thesizik Only flip the BounceDirection.z when you use the top map
🗪
1:11:53thesizik Only flip the BounceDirection.z when you use the top map
🗪
1:11:53thesizik Only flip the BounceDirection.z when you use the top map
🗪
1:18:08Identify that we're almost puncturing through, or inverting, the map
1:18:08Identify that we're almost puncturing through, or inverting, the map
1:18:08Identify that we're almost puncturing through, or inverting, the map
1:20:33nicstop Maybe you can try to write code to show points on the textures from which it is doing sampling?
🗪
1:20:33nicstop Maybe you can try to write code to show points on the textures from which it is doing sampling?
🗪
1:20:33nicstop Maybe you can try to write code to show points on the textures from which it is doing sampling?
🗪
1:20:50flaturated How would the anomaly shift if the sphere were to move up and down instead of left and right?
🗪
1:20:50flaturated How would the anomaly shift if the sphere were to move up and down instead of left and right?
🗪
1:20:50flaturated How would the anomaly shift if the sphere were to move up and down instead of left and right?
🗪
1:22:40grumpygiant256 Wondering if it shouldn't maybe be " / fabs(SampleDirection.y)"?
🗪
1:22:40grumpygiant256 Wondering if it shouldn't maybe be " / fabs(SampleDirection.y)"?
🗪
1:22:40grumpygiant256 Wondering if it shouldn't maybe be " / fabs(SampleDirection.y)"?
🗪
1:26:04stelar7 Show the sampling on the texture?
🗪
1:26:04stelar7 Show the sampling on the texture?
🗪
1:26:04stelar7 Show the sampling on the texture?
🗪
1:28:40The stream's over
🗩
1:28:40The stream's over
🗩
1:28:40The stream's over
🗩