Caching Composited Bitmaps
?
?

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
z Toggle filter mode V Revert filter to original state

Menu toggling

q Quotes r References f Filter 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

Credits Menu

Enter Open URL (in new tab)
0:41Let's take a look at where things were
0:41Let's take a look at where things were
0:41Let's take a look at where things were
2:12Toggle off the debug boundaries
2:12Toggle off the debug boundaries
2:12Toggle off the debug boundaries
2:49Two things to look at: 1) Speeding up the texture splats and 2) Multiple layers
2:49Two things to look at: 1) Speeding up the texture splats and 2) Multiple layers
2:49Two things to look at: 1) Speeding up the texture splats and 2) Multiple layers
4:16How to make the random number generation more systemic
4:16How to make the random number generation more systemic
4:16How to make the random number generation more systemic
10:17Introduce random_series which takes a seed
10:17Introduce random_series which takes a seed
10:17Introduce random_series which takes a seed
13:03RandomUnilateral (0 - 1) and RandomBilateral (-1 - 1)
13:03RandomUnilateral (0 - 1) and RandomBilateral (-1 - 1)
13:03RandomUnilateral (0 - 1) and RandomBilateral (-1 - 1)
14:35Blackboard: Brief recap of yesterday's maths class
14:35Blackboard: Brief recap of yesterday's maths class
14:35Blackboard: Brief recap of yesterday's maths class
15:18Introduce RandomBetween
15:18Introduce RandomBetween
15:18Introduce RandomBetween
16:38Pass RandomChoice to the Stamp picker
16:38Pass RandomChoice to the Stamp picker
16:38Pass RandomChoice to the Stamp picker
17:17Make Seed function
17:17Make Seed function
17:17Make Seed function
18:23Implement the rest of the random number generation
18:23Implement the rest of the random number generation
18:23Implement the rest of the random number generation
22:25(Re)introduce Lerp
22:25(Re)introduce Lerp
22:25(Re)introduce Lerp
24:48Blackboard: Lerp or Linear blend
24:48Blackboard: Lerp or Linear blend
24:48Blackboard: Lerp or Linear blend
26:48Stick it in handmade_math.h and use it?
26:48Stick it in handmade_math.h and use it?
26:48Stick it in handmade_math.h and use it?
27:53Finish propagating RandomChoice
27:53Finish propagating RandomChoice
27:53Finish propagating RandomChoice
31:17Make a RandomBetween for use in integer space
31:17Make a RandomBetween for use in integer space
31:17Make a RandomBetween for use in integer space
33:45Find the Familiar
33:45Find the Familiar
33:45Find the Familiar
36:34Fix the FamiliarOffset range
36:34Fix the FamiliarOffset range
36:34Fix the FamiliarOffset range
39:26We've taken care of everything regarding the random number table
39:26We've taken care of everything regarding the random number table
39:26We've taken care of everything regarding the random number table
40:08Next: Try doing a pre-composite
40:08Next: Try doing a pre-composite
40:08Next: Try doing a pre-composite
41:09Look at how game_offscreen_buffer used to work
41:09Look at how game_offscreen_buffer used to work
41:09Look at how game_offscreen_buffer used to work
41:54Condense game_offscreen_buffer and loaded_bitmap down to one thing
41:54Condense game_offscreen_buffer and loaded_bitmap down to one thing
41:54Condense game_offscreen_buffer and loaded_bitmap down to one thing
45:47Set the Pitch and Pixel pointer from the Bitmap
45:47Set the Pitch and Pixel pointer from the Bitmap
45:47Set the Pitch and Pixel pointer from the Bitmap
48:37A small correction, and viewing the results
48:37A small correction, and viewing the results
48:37A small correction, and viewing the results
49:12Change DrawBitmap to take loaded_bitmap *Buffer, and change *Pixels to *Memory in loaded_bitmap
49:12Change DrawBitmap to take loaded_bitmap *Buffer, and change *Pixels to *Memory in loaded_bitmap
49:12Change DrawBitmap to take loaded_bitmap *Buffer, and change *Pixels to *Memory in loaded_bitmap
50:02Remove BytesPerPixel from game_offscreen_buffer
50:02Remove BytesPerPixel from game_offscreen_buffer
50:02Remove BytesPerPixel from game_offscreen_buffer
51:10Make everything take the data from loaded_bitmap
51:10Make everything take the data from loaded_bitmap
51:10Make everything take the data from loaded_bitmap
52:53Implement a GroundBuffer cache
52:53Implement a GroundBuffer cache
52:53Implement a GroundBuffer cache
56:00Implement MakeEmptyBitmap
56:00Implement MakeEmptyBitmap
56:00Implement MakeEmptyBitmap
1:00:22Set the alpha channel of the composited bitmap
1:00:22Set the alpha channel of the composited bitmap
1:00:22Set the alpha channel of the composited bitmap
1:04:45Recap today's work
1:04:45Recap today's work
1:04:45Recap today's work
1:06:14Q&A
🗩
1:06:14Q&A
🗩
1:06:14Q&A
🗩
1:07:02Q: Casey, I missed the earlier part of the feed, but what was the intention of moving the ground plane with the player?
1:07:02Q: Casey, I missed the earlier part of the feed, but what was the intention of moving the ground plane with the player?
1:07:02Q: Casey, I missed the earlier part of the feed, but what was the intention of moving the ground plane with the player?
1:07:37Q: Why aren't RandomUnilateral and RandomBilateral not just using the implementation of RandomBetween? Seems like a pretty clear violation of DRY, although I realise you aren't currently intending for this code to be extremely clean right now
1:07:37Q: Why aren't RandomUnilateral and RandomBilateral not just using the implementation of RandomBetween? Seems like a pretty clear violation of DRY, although I realise you aren't currently intending for this code to be extremely clean right now
1:07:37Q: Why aren't RandomUnilateral and RandomBilateral not just using the implementation of RandomBetween? Seems like a pretty clear violation of DRY, although I realise you aren't currently intending for this code to be extremely clean right now
1:11:19Someone wants a cloc count
1:11:19Someone wants a cloc count
1:11:19Someone wants a cloc count
1:12:11Q: Why does the Seed function not have a prefix or suffix Random?
1:12:11Q: Why does the Seed function not have a prefix or suffix Random?
1:12:11Q: Why does the Seed function not have a prefix or suffix Random?
1:13:54Q: Is it okay that RandomChoice doesn't select the random value uniformly? [...]
1:13:54Q: Is it okay that RandomChoice doesn't select the random value uniformly? [...]
1:13:54Q: Is it okay that RandomChoice doesn't select the random value uniformly? [...]
1:15:22Q: Wouldn't RandomChoice have a slightly uneven distribution if the number of choices didn't evenly divide the maximum random number?
1:15:22Q: Wouldn't RandomChoice have a slightly uneven distribution if the number of choices didn't evenly divide the maximum random number?
1:15:22Q: Wouldn't RandomChoice have a slightly uneven distribution if the number of choices didn't evenly divide the maximum random number?
1:17:19Q: When is it okay to pass larger objects like r3's by value instead of by reference?
1:17:19Q: When is it okay to pass larger objects like r3's by value instead of by reference?
1:17:19Q: When is it okay to pass larger objects like r3's by value instead of by reference?
1:22:01Q: Casey, just curious because the background tiles are static at the moment...
1:22:01Q: Casey, just curious because the background tiles are static at the moment...
1:22:01Q: Casey, just curious because the background tiles are static at the moment...
1:22:28Q: Do you see yourself extending RandomNumber to have anything other than a uniform distribution?
1:22:28Q: Do you see yourself extending RandomNumber to have anything other than a uniform distribution?
1:22:28Q: Do you see yourself extending RandomNumber to have anything other than a uniform distribution?
1:23:22Q: Is this strictly handled in RAM? Do you have plans to use GPU resources for rendering?
1:23:22Q: Is this strictly handled in RAM? Do you have plans to use GPU resources for rendering?
1:23:22Q: Is this strictly handled in RAM? Do you have plans to use GPU resources for rendering?
1:24:06Q: I notice in functions you will always use a Result variable even if the calculation is a one-liner, rather than using the expression directly in a return statement. Does this incur an extra copy and are there performance implications?
1:24:06Q: I notice in functions you will always use a Result variable even if the calculation is a one-liner, rather than using the expression directly in a return statement. Does this incur an extra copy and are there performance implications?
1:24:06Q: I notice in functions you will always use a Result variable even if the calculation is a one-liner, rather than using the expression directly in a return statement. Does this incur an extra copy and are there performance implications?
1:25:06Q: Do you plan to move all the other loaded_bitmap memory to be in a memory_arena as well?
1:25:06Q: Do you plan to move all the other loaded_bitmap memory to be in a memory_arena as well?
1:25:06Q: Do you plan to move all the other loaded_bitmap memory to be in a memory_arena as well?
1:25:37Q: I think you've used an aggregate initialiser in one place with random_series being seeded, i.e. you only have one call to RandomSeed but you have at least...
1:25:37Q: I think you've used an aggregate initialiser in one place with random_series being seeded, i.e. you only have one call to RandomSeed but you have at least...
1:25:37Q: I think you've used an aggregate initialiser in one place with random_series being seeded, i.e. you only have one call to RandomSeed but you have at least...
1:26:53Q: Initially, you put BytesPerPixel into the bitmap structure because it can be useful. Then I asked you to remove it because it never changes, and you did that. But ten or so episodes later you added it back because it would be useful. And now you're removing it again. This is funny
1:26:53Q: Initially, you put BytesPerPixel into the bitmap structure because it can be useful. Then I asked you to remove it because it never changes, and you did that. But ten or so episodes later you added it back because it would be useful. And now you're removing it again. This is funny
1:26:53Q: Initially, you put BytesPerPixel into the bitmap structure because it can be useful. Then I asked you to remove it because it never changes, and you did that. But ten or so episodes later you added it back because it would be useful. And now you're removing it again. This is funny
1:27:45Q: You fix Random to be uniform by generating a full 32bit random number, do mod next power of 2 choice count, then check if result is less than choice count. If not, repeat the whole process
1:27:45Q: You fix Random to be uniform by generating a full 32bit random number, do mod next power of 2 choice count, then check if result is less than choice count. If not, repeat the whole process
1:27:45Q: You fix Random to be uniform by generating a full 32bit random number, do mod next power of 2 choice count, then check if result is less than choice count. If not, repeat the whole process
1:28:18The end of another full-power episode of Handmade Hero, which was dedicated to Abner Coimbre
🗩
1:28:18The end of another full-power episode of Handmade Hero, which was dedicated to Abner Coimbre
🗩
1:28:18The end of another full-power episode of Handmade Hero, which was dedicated to Abner Coimbre
🗩