Push Buffer Rendering
?
?

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:37Investigate possible bug in the collision detector
0:37Investigate possible bug in the collision detector
0:37Investigate possible bug in the collision detector
3:02Pass TestP to SpeculativeCollide and also base MoverGroundPoint off TestP
3:02Pass TestP to SpeculativeCollide and also base MoverGroundPoint off TestP
3:02Pass TestP to SpeculativeCollide and also base MoverGroundPoint off TestP
3:27Make a version of GetEntityGroundPoint that takes ForEntityP
3:27Make a version of GetEntityGroundPoint that takes ForEntityP
3:27Make a version of GetEntityGroundPoint that takes ForEntityP
4:36Walk around in-game
4:36Walk around in-game
4:36Walk around in-game
5:00Put the stairs back in and try colliding with them
5:00Put the stairs back in and try colliding with them
5:00Put the stairs back in and try colliding with them
5:59Increase GroundBufferCount from 32 to 64
5:59Increase GroundBufferCount from 32 to 64
5:59Increase GroundBufferCount from 32 to 64
7:02Think about sorting entities in a render list and scaling bitmaps
7:02Think about sorting entities in a render list and scaling bitmaps
7:02Think about sorting entities in a render list and scaling bitmaps
8:48Look at the TODO list
8:48Look at the TODO list
8:48Look at the TODO list
9:31Create handmade_render_group.h
9:31Create handmade_render_group.h
9:31Create handmade_render_group.h
9:53Consider sorting and translating the coordinate systems
9:53Consider sorting and translating the coordinate systems
9:53Consider sorting and translating the coordinate systems
10:53Take a look at how the buffering currently works
10:53Take a look at how the buffering currently works
10:53Take a look at how the buffering currently works
11:22Pull out entity_visible_piece and entity_visible_piece_group into handmade_render_group.h
11:22Pull out entity_visible_piece and entity_visible_piece_group into handmade_render_group.h
11:22Pull out entity_visible_piece and entity_visible_piece_group into handmade_render_group.h
12:23#include handmade_render_group.h and handmade_render_group.cpp in handmade.cpp
12:23#include handmade_render_group.h and handmade_render_group.cpp in handmade.cpp
12:23#include handmade_render_group.h and handmade_render_group.cpp in handmade.cpp
12:50Expand the notion of the PieceGroup so that it tracks everything
12:50Expand the notion of the PieceGroup so that it tracks everything
12:50Expand the notion of the PieceGroup so that it tracks everything
14:31Move the rendering outside
14:31Move the rendering outside
14:31Move the rendering outside
15:35Now all the pieces are in one giant buffer, and we have no idea which one goes with which entity
15:35Now all the pieces are in one giant buffer, and we have no idea which one goes with which entity
15:35Now all the pieces are in one giant buffer, and we have no idea which one goes with which entity
16:07Introduce render_basis
16:07Introduce render_basis
16:07Introduce render_basis
17:06Enable setting the render_basis after moving the entities around
17:06Enable setting the render_basis after moving the entities around
17:06Enable setting the render_basis after moving the entities around
20:16Set the DefaultBasis and point to it
20:16Set the DefaultBasis and point to it
20:16Set the DefaultBasis and point to it
21:48View the results in-game
21:48View the results in-game
21:48View the results in-game
23:15Move PieceGroup up and give it its own memory
23:15Move PieceGroup up and give it its own memory
23:15Move PieceGroup up and give it its own memory
24:40Change all of the draw calls to operate off the PieceGroup
24:40Change all of the draw calls to operate off the PieceGroup
24:40Change all of the draw calls to operate off the PieceGroup
26:19Check it out in-game
26:19Check it out in-game
26:19Check it out in-game
26:39The inversion and scaling is all still happening erroneously
26:39The inversion and scaling is all still happening erroneously
26:39The inversion and scaling is all still happening erroneously
27:19Look at what the Push functions are doing
27:19Look at what the Push functions are doing
27:19Look at what the Push functions are doing
28:05Try and regularise how the rendering works
28:05Try and regularise how the rendering works
28:05Try and regularise how the rendering works
29:40See how it looks in-game
29:40See how it looks in-game
29:40See how it looks in-game
30:16Investigate why the Bitmaps aren't being drawn in the correct places
30:16Investigate why the Bitmaps aren't being drawn in the correct places
30:16Investigate why the Bitmaps aren't being drawn in the correct places
35:00It's drawing the same Bitmap
35:00It's drawing the same Bitmap
35:00It's drawing the same Bitmap
35:21Moment of realisation: Rather than sending the whole loaded_bitmap down, we were using one on the stack
35:21Moment of realisation: Rather than sending the whole loaded_bitmap down, we were using one on the stack
35:21Moment of realisation: Rather than sending the whole loaded_bitmap down, we were using one on the stack
36:32Consider ways to pass the correct Bitmaps
36:32Consider ways to pass the correct Bitmaps
36:32Consider ways to pass the correct Bitmaps
37:13Send the whole Bitmap to ground_buffer
37:13Send the whole Bitmap to ground_buffer
37:13Send the whole Bitmap to ground_buffer
38:55See if that fixes our problem
38:55See if that fixes our problem
38:55See if that fixes our problem
39:40Get rid of that other DrawRectangle call
39:40Get rid of that other DrawRectangle call
39:40Get rid of that other DrawRectangle call
40:31Rename entity_visible_piece_group to render_group
40:31Rename entity_visible_piece_group to render_group
40:31Rename entity_visible_piece_group to render_group
41:17Consider how we want to extend the notion of render_group so that you can have multiple things pushed onto this render stack
41:17Consider how we want to extend the notion of render_group so that you can have multiple things pushed onto this render stack
41:17Consider how we want to extend the notion of render_group so that you can have multiple things pushed onto this render stack
41:56Consider linked list vs packed set
41:56Consider linked list vs packed set
41:56Consider linked list vs packed set
42:43Add PushBufferBase, PushBufferSize and MaxPushBufferSize to render_group
42:43Add PushBufferBase, PushBufferSize and MaxPushBufferSize to render_group
42:43Add PushBufferBase, PushBufferSize and MaxPushBufferSize to render_group
43:52Introduce AllocateRenderGroup in handmade_render_group.cpp
43:52Introduce AllocateRenderGroup in handmade_render_group.cpp
43:52Introduce AllocateRenderGroup in handmade_render_group.cpp
45:18#define PushSize macro
45:18#define PushSize macro
45:18#define PushSize macro
45:40Allocate MaxPushBufferSize and store it in PushBufferBase
45:40Allocate MaxPushBufferSize and store it in PushBufferBase
45:40Allocate MaxPushBufferSize and store it in PushBufferBase
45:55Initialise all of the fields of the render_group
45:55Initialise all of the fields of the render_group
45:55Initialise all of the fields of the render_group
46:16Call AllocateRenderGroup and set MaxPushBufferSize to 4MB
46:16Call AllocateRenderGroup and set MaxPushBufferSize to 4MB
46:16Call AllocateRenderGroup and set MaxPushBufferSize to 4MB
46:52Make the DefaultBasis get allocated and initialise it
46:52Make the DefaultBasis get allocated and initialise it
46:52Make the DefaultBasis get allocated and initialise it
47:21Store MetersToPixels rather than GameState and pass it to AllocateRenderGroup
47:21Store MetersToPixels rather than GameState and pass it to AllocateRenderGroup
47:21Store MetersToPixels rather than GameState and pass it to AllocateRenderGroup
48:06Initialise MaxPushBufferSize and PushBufferSize
48:06Initialise MaxPushBufferSize and PushBufferSize
48:06Initialise MaxPushBufferSize and PushBufferSize
48:36Now we've got a problem: When we do PushPiece we can't get one because we don't know where that piece is anymore
48:36Now we've got a problem: When we do PushPiece we can't get one because we don't know where that piece is anymore
48:36Now we've got a problem: When we do PushPiece we can't get one because we don't know where that piece is anymore
48:44Attend to the other issues
48:44Attend to the other issues
48:44Attend to the other issues
50:11Straighten out the PushBuffer situation
50:11Straighten out the PushBuffer situation
50:11Straighten out the PushBuffer situation
54:07See if it works in-game
54:07See if it works in-game
54:07See if it works in-game
54:46Blackboard: PieceGroup
54:46Blackboard: PieceGroup
54:46Blackboard: PieceGroup
56:23Blackboard: Compression Oriented Programming
56:23Blackboard: Compression Oriented Programming
56:23Blackboard: Compression Oriented Programming
56:57Blackboard: render_group
56:57Blackboard: render_group
56:57Blackboard: render_group
58:19Q&A
🗩
58:19Q&A
🗩
58:19Q&A
🗩
59:16miblo Will things like filters end up in the render_group?
🗪
59:16miblo Will things like filters end up in the render_group?
🗪
59:16miblo Will things like filters end up in the render_group?
🗪
1:00:55cezonezor How long will the renderer take?
🗪
1:00:55cezonezor How long will the renderer take?
🗪
1:00:55cezonezor How long will the renderer take?
🗪
1:02:29poohshoes Could you give us examples of what some of the simpler things will be in the render_group?
🗪
1:02:29poohshoes Could you give us examples of what some of the simpler things will be in the render_group?
🗪
1:02:29poohshoes Could you give us examples of what some of the simpler things will be in the render_group?
🗪
1:02:47gplwhite Are there any static code analysis tools for C / Visual Studio that will help pick up bugs like unused variables, etc?
🗪
1:02:47gplwhite Are there any static code analysis tools for C / Visual Studio that will help pick up bugs like unused variables, etc?
🗪
1:02:47gplwhite Are there any static code analysis tools for C / Visual Studio that will help pick up bugs like unused variables, etc?
🗪
1:04:38d7samurai So are you planning on abstracting away the renderer as a layer, similar to how we separated the platform from the game code, so that the various renderers will be operating on the same data structures?
🗪
1:04:38d7samurai So are you planning on abstracting away the renderer as a layer, similar to how we separated the platform from the game code, so that the various renderers will be operating on the same data structures?
🗪
1:04:38d7samurai So are you planning on abstracting away the renderer as a layer, similar to how we separated the platform from the game code, so that the various renderers will be operating on the same data structures?
🗪
1:05:48ezioauditorerevs If you were going to write an algorithm to generate Sudoku puzzles, how would it work?
🗪
1:05:48ezioauditorerevs If you were going to write an algorithm to generate Sudoku puzzles, how would it work?
🗪
1:05:48ezioauditorerevs If you were going to write an algorithm to generate Sudoku puzzles, how would it work?
🗪
1:06:03mr4thdimention Unused variables are a warning on my compiler. Did you turn that warning off? I use an allow local macro when I want it to ignore the variable
🗪
1:06:03mr4thdimention Unused variables are a warning on my compiler. Did you turn that warning off? I use an allow local macro when I want it to ignore the variable
🗪
1:06:03mr4thdimention Unused variables are a warning on my compiler. Did you turn that warning off? I use an allow local macro when I want it to ignore the variable
🗪
1:06:56jfcatalan Would it make sense for the render_group to contain render groups itself?
🗪
1:06:56jfcatalan Would it make sense for the render_group to contain render groups itself?
🗪
1:06:56jfcatalan Would it make sense for the render_group to contain render groups itself?
🗪
1:07:44d7samurai I meant whether you plan for the data describing what needs to be rendered to be in a format such that it's suitable for both software and hardware rendering
🗪
1:07:44d7samurai I meant whether you plan for the data describing what needs to be rendered to be in a format such that it's suitable for both software and hardware rendering
🗪
1:07:44d7samurai I meant whether you plan for the data describing what needs to be rendered to be in a format such that it's suitable for both software and hardware rendering
🗪
1:08:45boondoggle42 Will our hero always be taller than the treetops?
🗪
1:08:45boondoggle42 Will our hero always be taller than the treetops?
🗪
1:08:45boondoggle42 Will our hero always be taller than the treetops?
🗪
1:09:58We've finished early... or have we?
1:09:58We've finished early... or have we?
1:09:58We've finished early... or have we?
1:10:19abnercoimbre Are we keeping the 5PM schedule?
🗪
1:10:19abnercoimbre Are we keeping the 5PM schedule?
🗪
1:10:19abnercoimbre Are we keeping the 5PM schedule?
🗪
1:12:06Wrap it up with a recap and closing remarks
🗩
1:12:06Wrap it up with a recap and closing remarks
🗩
1:12:06Wrap it up with a recap and closing remarks
🗩