[video output=day129 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Adding Orthographic Projection" vod_platform=youtube id=8DX-DPsXvy4 annotator=Miblo]
[1:03][Recap and set the stage for today]
[1:52][handmade.cpp: Turn off the debug lines]
[3:12][Blackboard: Why ground tiles are no longer seamless now that we're doing perspective transforms][quote 107]
[6:43][Blackboard: Doing the displacement with perspective transform]
[7:53][Take a look at how FillGroundChunk is working]
[11:58][Propose addressing GroundBuffers in terms of coordinates that mean something in the real world]
[13:11][Walk through FillGroundChunk]
[14:42][Consider telling the renderer to use the perspective transform]
[16:44][Start by writing an API call to the renderer to enable seamless ground tiles using orthographic transform]
[19:19][Provide the ability to switch between perspective and orthographic]
[22:00][handmade_render_group.cpp: Write Perspective function]
[23:51][Write Orthographic function]
[25:42][Consider how to allow Perspective and Orthographic to flow through the pipeline]
[26:23][Force them to be rectilinear]
[27:54][Clean up and compile before moving on]
[28:48][handmade.cpp: Make the orthographic version work]
[29:31][handmade_render_group.cpp: Write at orthographic path in entity_basis_p_result]
[32:19][handmade_render_group.h: Introduce bool32 Orthographic]
[34:29][Take a look in-game]
[34:49][handmade_render_group.cpp: Walk through entity_basis_p_result]
[35:34][Correct OriginalP to P]
[36:02][handmade.cpp: Consider what PushBitmap is doing in FillGroundChunk]
[37:48][handmade_render_group.cpp: Ensure that MetersToPixels is being calculated correctly]
[38:28][Debugger: Step in and see what's happening in Orthographic]
[41:42][Moment of realisation: The Scale cannot be 1.0f]
[42:42][Debugger: Step into FillGroundChunk]
[44:54][Are we doing PixelsToMeters and MetersToPixels backwards?]
[46:18][handmade.cpp: Correct the Pixels / Meters calculation in Orthographic]
[46:40][Take a look in-game]
[48:17][handmade.cpp: Walk through FillGroundChunk]
[49:12][Make it splat in a more concentrated area and turn back on the debug lines]
[50:28][Splat about half the space and note that there doesn't appear to be 100 things in that tile]
[50:43][Return to splatting the whole tile and tweak the sizes]
[51:59][Take a look at the seams]
[52:50][Create a checkerboard pattern to accentuate the seams]
[54:47][See the seams]
[55:45][build.bat: Switch to -O2 and run around the world]
[56:24][Q&A][:speech]
[57:18][@dmitsuki][When do we make everything hardware accelerated to get the amazing powers of ROTATION?]
[57:56][handmade_render_group.cpp: Demo rotation]
[1:00:47][@robrobby][Will we see how to find "expensive" functions that are called between frames? So far we SIMD only the pixel renderer right now, because we know]
[1:01:55][@dmitsuki][I'm so sorry, Casey-sama]
[1:03:00][@garlandobloom][Can you briefly go over the rest of what we're going to do to the engine before we start implementing gameplay code?]
[1:04:22][This will all be very game-codey][quote 108]
[1:05:52][@dmitsuki][Right now to get more performance out of the render you multithread it to render the screen in chunks. GPUs are parallel by design so how do these two concepts differ?]
[1:06:28][Blackboard: Tiled vs Non-tiled GPUs]
[1:10:00][@cfusion][If there are no better questions, wouldn't the solution to internally link objects in an arbitrary amount of linked lists be performance problematic? Or is there a smart solution I am missing here?]
[1:10:43][@ofx360][I feel like the GroundChunks move faster than the trees on the same plane]
[1:11:04][@avenger36][The gaming industry is too hard to enter. Why do potential programmers waste their time?]
[1:11:32][@kededro][There's a lot of mug action going on. Are you one of those coffee-blooded programmers?]
[1:11:46][@mvpatski][I am about to commence studying a degree in Computer Science. I love gaming, and the concept of creating them is fairly interesting, though I am not entirely mathematically inclined. This being the case, would you suggest I stay away from Game Development and steer toward my original plan of Software Engineering?]
[1:12:32][@malavbhavsar][I have Ruby and JS background and I was wondering if you normally do unit testing / behavioral testing in game development, or is it just too hard because of visual elements?]
[1:13:41][@darkrizen_tv][On your site you responded to the question, "Why are you doing this project?" with: "Game programmers need to start creating high-quality teaching materials for their trade." How much progress have you made towards developing the twitch VODs into high-quality teaching materials?]
[1:14:24][@robrobby][Do we know how many ms per frame we have right now for the game logic? So far we push 60 FPS but it's hard-locked and maybe we already have some room for game logic?]
[1:15:20][@marumoto][Will everything be programatically animated or will it be done by an artist? Or both?]
[1:15:31][@sicknastybra][Do you have a YouTube channel?]
[1:15:53][@darkrizen_tv][Can you show a snippet where you implemented a hash table?]
[1:17:23][@dmitsuki][If Vulkan is out by the time you hardware accelerate the renderer, would it be possible to use Vulkan?]
[1:17:42][@avenger36][Why do you think Microsoft decided to omit the 1080i resolution option for the XBox One? Do you think it was too difficult for them to include?]
[1:17:58][@noxy_key][Do you plan on commenting the code before releasing the engine?]
[1:19:24][@robrobby][It's just insane that we can have so many laggy games today when CPUs / GPUs are that fast...  Thank you for bringing some light into the reasons for that (bad programming and/or languages)]
[1:22:59][@kededro][Is unsafe memory key for high-performance optimizations needed for modern-day games? I've heard this is the key reason memory-safe languages like Rust and Haskell won't be able to take over for extremely low-latency applications or drivers, but I don't know enough about the domain]
[1:25:41][Shut things down][:speech]
[/video]
