Handmade Hero»Episode Guide
Textured Quadrilaterals
?
?

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:44Recap and push forwards
0:44Recap and push forwards
0:44Recap and push forwards
2:46Expand the notion of CoordinateSystem to allow passing a Texture
2:46Expand the notion of CoordinateSystem to allow passing a Texture
2:46Expand the notion of CoordinateSystem to allow passing a Texture
4:36Review how our Edge equations work
4:36Review how our Edge equations work
4:36Review how our Edge equations work
6:05Blackboard: Working through a problem from first principals
6:05Blackboard: Working through a problem from first principals
6:05Blackboard: Working through a problem from first principals
7:26Blackboard: Texture mapping
7:26Blackboard: Texture mapping
7:26Blackboard: Texture mapping
9:22Blackboard: Standard nomenclature
9:22Blackboard: Standard nomenclature
9:22Blackboard: Standard nomenclature
12:16Blackboard: How do we produce some u and v values that tell us where in the texture we are at any given time?
12:16Blackboard: How do we produce some u and v values that tell us where in the texture we are at any given time?
12:16Blackboard: How do we produce some u and v values that tell us where in the texture we are at any given time?
15:06Blackboard: Take a look at what's going to happen here
15:06Blackboard: Take a look at what's going to happen here
15:06Blackboard: Take a look at what's going to happen here
17:38Blackboard: Does this equation give us what we want?
17:38Blackboard: Does this equation give us what we want?
17:38Blackboard: Does this equation give us what we want?
19:30Blackboard: Looking at the problem from another angle
19:30Blackboard: Looking at the problem from another angle
19:30Blackboard: Looking at the problem from another angle
21:21Blackboard: The equation we'd like to implement
21:21Blackboard: The equation we'd like to implement
21:21Blackboard: The equation we'd like to implement
22:16Implement that equation, starting by distributing the negative in the Edge tests
22:16Implement that equation, starting by distributing the negative in the Edge tests
22:16Implement that equation, starting by distributing the negative in the Edge tests
22:49Introduce d
22:49Introduce d
22:49Introduce d
23:16Compute u and v
23:16Compute u and v
23:16Compute u and v
24:59Lookup the u and v inside the Texture
24:59Lookup the u and v inside the Texture
24:59Lookup the u and v inside the Texture
27:48Compile and see what's happening in-game
27:48Compile and see what's happening in-game
27:48Compile and see what's happening in-game
27:55Assert that X and Y are >=0 and < Texture dimensions
27:55Assert that X and Y are >=0 and < Texture dimensions
27:55Assert that X and Y are >=0 and < Texture dimensions
28:20Do that lookup of the u and v
28:20Do that lookup of the u and v
28:20Do that lookup of the u and v
29:36Check out our texture mapping in-gameα
29:36Check out our texture mapping in-gameα
29:36Check out our texture mapping in-gameα
30:24Add in the Alpha
30:24Add in the Alpha
30:24Add in the Alpha
31:56See the alpha composite happening in-game
31:56See the alpha composite happening in-game
31:56See the alpha composite happening in-game
32:23Slow down the fanciness
32:23Slow down the fanciness
32:23Slow down the fanciness
32:53Hit an assertion and postpone clamping U and V until we're doing SIMD
32:53Hit an assertion and postpone clamping U and V until we're doing SIMD
32:53Hit an assertion and postpone clamping U and V until we're doing SIMD
33:42Resume slowing down that fanciness
33:42Resume slowing down that fanciness
33:42Resume slowing down that fanciness
34:24Notice the flickering and mention subpixel accuracy
34:24Notice the flickering and mention subpixel accuracy
34:24Notice the flickering and mention subpixel accuracy
35:26Make the Tree bigger and put it in the centre of the screen
35:26Make the Tree bigger and put it in the centre of the screen
35:26Make the Tree bigger and put it in the centre of the screen
36:17Move the Tree horizontally and keep its angle constant
36:17Move the Tree horizontally and keep its angle constant
36:17Move the Tree horizontally and keep its angle constant
37:39Observe the nature of rendering without subpixel accuracy
37:39Observe the nature of rendering without subpixel accuracy
37:39Observe the nature of rendering without subpixel accuracy
38:56Blackboard: The number of pixels and texels isn't dividing out evenly
38:56Blackboard: The number of pixels and texels isn't dividing out evenly
38:56Blackboard: The number of pixels and texels isn't dividing out evenly
41:36Start tackling these problems
41:36Start tackling these problems
41:36Start tackling these problems
41:57Notice that DrawRectangleSlowly is ignoring the floating point accuracy that was passed to it
41:57Notice that DrawRectangleSlowly is ignoring the floating point accuracy that was passed to it
41:57Notice that DrawRectangleSlowly is ignoring the floating point accuracy that was passed to it
43:28Why do we still look like that, though?
43:28Why do we still look like that, though?
43:28Why do we still look like that, though?
43:58Blackboard: Doing a better job of figuring out where we are in the texture map
43:58Blackboard: Doing a better job of figuring out where we are in the texture map
43:58Blackboard: Doing a better job of figuring out where we are in the texture map
47:18Linearly blend (Lerp) the colours
47:18Linearly blend (Lerp) the colours
47:18Linearly blend (Lerp) the colours
48:55Pretend our Texture is smaller than it actually is
48:55Pretend our Texture is smaller than it actually is
48:55Pretend our Texture is smaller than it actually is
49:39Blend these guys together, but not before lofting out the Color values
49:39Blend these guys together, but not before lofting out the Color values
49:39Blend these guys together, but not before lofting out the Color values
53:01Manufacture a v4 for Lerping between two Lerps and ones for doing scalar multiplications
53:01Manufacture a v4 for Lerping between two Lerps and ones for doing scalar multiplications
53:01Manufacture a v4 for Lerping between two Lerps and ones for doing scalar multiplications
54:47View our properly blurry rendering in-game
54:47View our properly blurry rendering in-game
54:47View our properly blurry rendering in-game
56:55Switch between the old and new ways, for comparison
56:55Switch between the old and new ways, for comparison
56:55Switch between the old and new ways, for comparison
59:13Q&A, after getting the tree spinning again
59:13Q&A, after getting the tree spinning again
59:13Q&A, after getting the tree spinning again
1:00:53miblo Will the Wall trees be subpixel accurate now?
🗪
1:00:53miblo Will the Wall trees be subpixel accurate now?
🗪
1:00:53miblo Will the Wall trees be subpixel accurate now?
🗪
1:01:37andsz the top of the tree seems to be cut short
🗪
1:01:37andsz the top of the tree seems to be cut short
🗪
1:01:37andsz the top of the tree seems to be cut short
🗪
1:03:50powerc9k Is tree spinning going to be in the DLC?
🗪
1:03:50powerc9k Is tree spinning going to be in the DLC?
🗪
1:03:50powerc9k Is tree spinning going to be in the DLC?
🗪
1:04:14zuurr_ does it rotate with subpixel accuracy?
🗪
1:04:14zuurr_ does it rotate with subpixel accuracy?
🗪
1:04:14zuurr_ does it rotate with subpixel accuracy?
🗪
1:05:18trevnewt What's the most major / fundamental thing left to do on the renderer?
🗪
1:05:18trevnewt What's the most major / fundamental thing left to do on the renderer?
🗪
1:05:18trevnewt What's the most major / fundamental thing left to do on the renderer?
🗪
1:06:09TODO(casey): SSE clamping
1:06:09TODO(casey): SSE clamping
1:06:09TODO(casey): SSE clamping
1:06:27garlandobloom Q: how would you do smooth subpixel rendering for something like pixel art graphics, that doesn't blur but still moves smoothly
🗪
1:06:27garlandobloom Q: how would you do smooth subpixel rendering for something like pixel art graphics, that doesn't blur but still moves smoothly
🗪
1:06:27garlandobloom Q: how would you do smooth subpixel rendering for something like pixel art graphics, that doesn't blur but still moves smoothly
🗪
1:06:59Blackboard: Doing smooth subpixel rendering for pixel art graphics
1:06:59Blackboard: Doing smooth subpixel rendering for pixel art graphics
1:06:59Blackboard: Doing smooth subpixel rendering for pixel art graphics
1:12:09ttbjm couldn't you use the rounding +0.5 and truncate to not sample outside the edges of the texture?
🗪
1:12:09ttbjm couldn't you use the rounding +0.5 and truncate to not sample outside the edges of the texture?
🗪
1:12:09ttbjm couldn't you use the rounding +0.5 and truncate to not sample outside the edges of the texture?
🗪
1:13:31allaizn why are you still adding 0.5f to tX and tY?
🗪
1:13:31allaizn why are you still adding 0.5f to tX and tY?
🗪
1:13:31allaizn why are you still adding 0.5f to tX and tY?
🗪
1:13:48pseudonym73 Is it any faster if you just test the domain of (u,v) instead of testing edges?
🗪
1:13:48pseudonym73 Is it any faster if you just test the domain of (u,v) instead of testing edges?
🗪
1:13:48pseudonym73 Is it any faster if you just test the domain of (u,v) instead of testing edges?
🗪
1:15:57ssx1 Is rendering on the cpu different in comparison to rendering on a gpu codewise?
🗪
1:15:57ssx1 Is rendering on the cpu different in comparison to rendering on a gpu codewise?
🗪
1:15:57ssx1 Is rendering on the cpu different in comparison to rendering on a gpu codewise?
🗪
1:17:19digitaldomovoi Are there performance benefits for using a quad as primitive over triangles in a software renderer like this?
🗪
1:17:19digitaldomovoi Are there performance benefits for using a quad as primitive over triangles in a software renderer like this?
🗪
1:17:19digitaldomovoi Are there performance benefits for using a quad as primitive over triangles in a software renderer like this?
🗪
1:18:59cubercaleb why do the edges of the tree look like they are feathered?
🗪
1:18:59cubercaleb why do the edges of the tree look like they are feathered?
🗪
1:18:59cubercaleb why do the edges of the tree look like they are feathered?
🗪
1:19:54guit4rfreak Will the different renderers be in the platform layer?
🗪
1:19:54guit4rfreak Will the different renderers be in the platform layer?
🗪
1:19:54guit4rfreak Will the different renderers be in the platform layer?
🗪
1:20:19log_2 I saw a great video on youtube called 'Computer Color is Broken' from minutephysics that talks about how blending colours is usually incorrectly done. Without relying on 3rd party libraries, you have an opportunity to do it correctly.
🗪
1:20:19log_2 I saw a great video on youtube called 'Computer Color is Broken' from minutephysics that talks about how blending colours is usually incorrectly done. Without relying on 3rd party libraries, you have an opportunity to do it correctly.
🗪
1:20:19log_2 I saw a great video on youtube called 'Computer Color is Broken' from minutephysics that talks about how blending colours is usually incorrectly done. Without relying on 3rd party libraries, you have an opportunity to do it correctly.
🗪
1:22:21miblo Remember when you introduced RenderGroup the other week? Is this subpixel rendering lerp one of the things that will go in the RenderGroup?
🗪
1:22:21miblo Remember when you introduced RenderGroup the other week? Is this subpixel rendering lerp one of the things that will go in the RenderGroup?
🗪
1:22:21miblo Remember when you introduced RenderGroup the other week? Is this subpixel rendering lerp one of the things that will go in the RenderGroup?
🗪
1:23:16Call it for today with a recap and a glimpse into the future
🗩
1:23:16Call it for today with a recap and a glimpse into the future
🗩
1:23:16Call it for today with a recap and a glimpse into the future
🗩