Handmade Hero»Episode Guide
Filling Rotated and Scaled Rectangles
?
?

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:23Recap of people egging Casey on to do some weird sine-cosine-theta stuffα
0:23Recap of people egging Casey on to do some weird sine-cosine-theta stuffα
0:23Recap of people egging Casey on to do some weird sine-cosine-theta stuffα
1:36Blackboard: Introduce effects
1:36Blackboard: Introduce effects
1:36Blackboard: Introduce effects
4:39Blackboard: How do we do this rotation and scaling?
4:39Blackboard: How do we do this rotation and scaling?
4:39Blackboard: How do we do this rotation and scaling?
5:29Run the game
5:29Run the game
5:29Run the game
5:51Clip away all this ridiculousness
5:51Clip away all this ridiculousness
5:51Clip away all this ridiculousness
6:32Look at the coordinate system
6:32Look at the coordinate system
6:32Look at the coordinate system
7:13Blackboard: We need to know which pixels will be included as a result of rotating a rectangle
7:13Blackboard: We need to know which pixels will be included as a result of rotating a rectangle
7:13Blackboard: We need to know which pixels will be included as a result of rotating a rectangle
8:35Blackboard: How the collision detection system may be applicable to pixel filling
8:35Blackboard: How the collision detection system may be applicable to pixel filling
8:35Blackboard: How the collision detection system may be applicable to pixel filling
9:51Blackboard: Ignoring rotation and scaling for now
9:51Blackboard: Ignoring rotation and scaling for now
9:51Blackboard: Ignoring rotation and scaling for now
12:34Blackboard: Iterating over the pixels
12:34Blackboard: Iterating over the pixels
12:34Blackboard: Iterating over the pixels
13:44Look at the DrawRectangle routine
13:44Look at the DrawRectangle routine
13:44Look at the DrawRectangle routine
14:22Write a function, DrawRectangleSlowly, that does DrawRectangle in the least efficient way possible
14:22Write a function, DrawRectangleSlowly, that does DrawRectangle in the least efficient way possible
14:22Write a function, DrawRectangleSlowly, that does DrawRectangle in the least efficient way possible
16:43Draw a rectangle that's at the origin of the CoordinateSystem
16:43Draw a rectangle that's at the origin of the CoordinateSystem
16:43Draw a rectangle that's at the origin of the CoordinateSystem
18:11See the results in-game
18:11See the results in-game
18:11See the results in-game
18:23Stop it rotating for the moment
18:23Stop it rotating for the moment
18:23Stop it rotating for the moment
18:41Check the scaling of the axes
18:41Check the scaling of the axes
18:41Check the scaling of the axes
19:54DrawRectangle after the fact in a different Color
19:54DrawRectangle after the fact in a different Color
19:54DrawRectangle after the fact in a different Color
20:31Note that the rectangle is not properly clipping to its max bounds, and rectify this
20:31Note that the rectangle is not properly clipping to its max bounds, and rectify this
20:31Note that the rectangle is not properly clipping to its max bounds, and rectify this
21:11Moment of realisation: We were adding Entry->Origin twice
21:11Moment of realisation: We were adding Entry->Origin twice
21:11Moment of realisation: We were adding Entry->Origin twice
21:27We're filling correctly but inefficiently
21:27We're filling correctly but inefficiently
21:27We're filling correctly but inefficiently
21:58Consider restricting the area that DrawRectangleSlowly marches over
21:58Consider restricting the area that DrawRectangleSlowly marches over
21:58Consider restricting the area that DrawRectangleSlowly marches over
22:21Blackboard: How does that help us do our rotation and scaling?
22:21Blackboard: How does that help us do our rotation and scaling?
22:21Blackboard: How does that help us do our rotation and scaling?
23:25Blackboard: Can't we just test against four corners of our rectangle?
23:25Blackboard: Can't we just test against four corners of our rectangle?
23:25Blackboard: Can't we just test against four corners of our rectangle?
24:35Blackboard: How we could have done that without Casey's help
24:35Blackboard: How we could have done that without Casey's help
24:35Blackboard: How we could have done that without Casey's help
28:55Implement one of these edge tests
28:55Implement one of these edge tests
28:55Implement one of these edge tests
29:50Make DrawRectangleSlowly take all of the coordinate system information
29:50Make DrawRectangleSlowly take all of the coordinate system information
29:50Make DrawRectangleSlowly take all of the coordinate system information
30:57Make DrawRectangleSlowly do the edge tests using the dot product
30:57Make DrawRectangleSlowly do the edge tests using the dot product
30:57Make DrawRectangleSlowly do the edge tests using the dot product
32:18Blackboard: Rephrase these edge tests
32:18Blackboard: Rephrase these edge tests
32:18Blackboard: Rephrase these edge tests
32:57Turn the test around
32:57Turn the test around
32:57Turn the test around
34:03Notice that, because we're not doing the dot product, the sign doesn't flip
34:03Notice that, because we're not doing the dot product, the sign doesn't flip
34:03Notice that, because we're not doing the dot product, the sign doesn't flip
34:33Make greater-than be our standard
34:33Make greater-than be our standard
34:33Make greater-than be our standard
35:03Blackboard: Think of the surface normals pointing outwards
35:03Blackboard: Think of the surface normals pointing outwards
35:03Blackboard: Think of the surface normals pointing outwards
35:20Change all of those edge functions to be negative
35:20Change all of those edge functions to be negative
35:20Change all of those edge functions to be negative
36:10Get the dot product in there
36:10Get the dot product in there
36:10Get the dot product in there
36:43Blackboard: What are the vectors of those perpendiculars?
36:43Blackboard: What are the vectors of those perpendiculars?
36:43Blackboard: What are the vectors of those perpendiculars?
37:29Implement those vectors
37:29Implement those vectors
37:29Implement those vectors
38:40Now we're doing the full test, see how it looks in-game
38:40Now we're doing the full test, see how it looks in-game
38:40Now we're doing the full test, see how it looks in-game
38:59Consider changing the edge tests to use the edges of the rotating coordinate system
38:59Consider changing the edge tests to use the edges of the rotating coordinate system
38:59Consider changing the edge tests to use the edges of the rotating coordinate system
39:20Blackboard: How to use those edges
39:20Blackboard: How to use those edges
39:20Blackboard: How to use those edges
39:42Get rid of vMin and vMax in readiness to use those edges
39:42Get rid of vMin and vMax in readiness to use those edges
39:42Get rid of vMin and vMax in readiness to use those edges
39:57Blackboard: Our tests
39:57Blackboard: Our tests
39:57Blackboard: Our tests
40:35Implement those tests
40:35Implement those tests
40:35Implement those tests
42:11Compile and view the results in-game
42:11Compile and view the results in-game
42:11Compile and view the results in-game
42:48Change the scale over time
42:48Change the scale over time
42:48Change the scale over time
43:04Blackboard: Optimising these tests
43:04Blackboard: Optimising these tests
43:04Blackboard: Optimising these tests
44:12Implement optimised exclusion tests
44:12Implement optimised exclusion tests
44:12Implement optimised exclusion tests
50:20Fix a couple of things, but not before filling everywhere in the bounding region
50:20Fix a couple of things, but not before filling everywhere in the bounding region
50:20Fix a couple of things, but not before filling everywhere in the bounding region
50:58Check the code
50:58Check the code
50:58Check the code
51:40Find our typo and restore our buffer pre-step
51:40Find our typo and restore our buffer pre-step
51:40Find our typo and restore our buffer pre-step
52:15Re-enable our edge test and consider further work
52:15Re-enable our edge test and consider further work
52:15Re-enable our edge test and consider further work
53:08Q&A
🗩
53:08Q&A
🗩
53:08Q&A
🗩
53:54d7samurai What are your computer specs?
🗪
53:54d7samurai What are your computer specs?
🗪
53:54d7samurai What are your computer specs?
🗪
55:14powerc9k Is it weird that I got really excited once the rotated fill got faster?
🗪
55:14powerc9k Is it weird that I got really excited once the rotated fill got faster?
🗪
55:14powerc9k Is it weird that I got really excited once the rotated fill got faster?
🗪
56:06wardinsc Would skewing the axes still work?
🗪
56:06wardinsc Would skewing the axes still work?
🗪
56:06wardinsc Would skewing the axes still work?
🗪
57:37Implement a proper perpendicular
57:37Implement a proper perpendicular
57:37Implement a proper perpendicular
59:38Blackboard: How we want the Perp to work
59:38Blackboard: How we want the Perp to work
59:38Blackboard: How we want the Perp to work
1:00:26Make that Perp work
1:00:26Make that Perp work
1:00:26Make that Perp work
1:01:13ttbjm Is downscaling bitmaps correctly slower than upscaling (more colour points to blend)?
🗪
1:01:13ttbjm Is downscaling bitmaps correctly slower than upscaling (more colour points to blend)?
🗪
1:01:13ttbjm Is downscaling bitmaps correctly slower than upscaling (more colour points to blend)?
🗪
1:01:45Blackboard: Downsampling and upsampling bitmaps
1:01:45Blackboard: Downsampling and upsampling bitmaps
1:01:45Blackboard: Downsampling and upsampling bitmaps
1:04:05Blackboard: Mipmaps
1:04:05Blackboard: Mipmaps
1:04:05Blackboard: Mipmaps
1:05:33cubercaleb Eventually, will you implement anti-aliasing into the rendering of the rectangle, or is that too much for the CPU?
🗪
1:05:33cubercaleb Eventually, will you implement anti-aliasing into the rendering of the rectangle, or is that too much for the CPU?
🗪
1:05:33cubercaleb Eventually, will you implement anti-aliasing into the rendering of the rectangle, or is that too much for the CPU?
🗪
1:06:07Blackboard: Texture sampling handles anti-aliasing for the alpha'd bitmaps
1:06:07Blackboard: Texture sampling handles anti-aliasing for the alpha'd bitmaps
1:06:07Blackboard: Texture sampling handles anti-aliasing for the alpha'd bitmaps
1:07:57Check out our hilarious little shape and review our progress
1:07:57Check out our hilarious little shape and review our progress
1:07:57Check out our hilarious little shape and review our progress
1:09:37garlandobloom Historically, did we ever do anti-aliasing with CPU rendering?
🗪
1:09:37garlandobloom Historically, did we ever do anti-aliasing with CPU rendering?
🗪
1:09:37garlandobloom Historically, did we ever do anti-aliasing with CPU rendering?
🗪
1:11:52Postpone anything more until tomorrow, with a potential plan of action
🗩
1:11:52Postpone anything more until tomorrow, with a potential plan of action
🗩
1:11:52Postpone anything more until tomorrow, with a potential plan of action
🗩