[video output=day282 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Z Movement and Camera Motion" vod_platform=youtube id=8f9ggBzjUBE annotator=Miblo]
[2:40][Run the game and show where we're at]
[5:49][handmade_world_mode.cpp: Randomise the heights of the traversable points]
[9:45][Run the game and traverse the room]
[13:33][handmade_sim_region.cpp: Provide the ability to interpolate the camera's height]
[17:32][4coder: Spot a potential bug with a space being inserted after a square-bracket]
[19:33][handmade_sim_region.cpp: Make AddStandardRoom form a ramp]
[20:58][Run the game and attempt to hop up the ramp]
[23:24][handmade_world_mode.cpp: Set HeadToPoint.z to 0]
[23:50][Run the game and find that we can now hop upwards]
[25:08][handmade_world_mode.cpp: Make AddStandardRoom produce a shallower ramp]
[25:39][Run the game and traverse the shallower ramp]
[26:32][handmade_world_mode.cpp: Comment out the HeadToPoint.z setting and again traverse the shallower ramp]
[28:26][handmade_world_mode.cpp: Compute the HeadToPoint in order to prefer traversable points in the XY plane]
[31:00][Run the game and traverse the world]
[33:18][Blackboard: The Plan for Final Z]
[37:17][handmade_world_mode.cpp: Let the ramp go below 0 and traverse it in an effort to see the alpha-fade]
[39:09][handmade_world_mode.cpp: Investigate why the alpha-fade is not happening]
[41:07][Debugger: Break on CameraRelativeGroupP initialisation and inspect the values]
[43:34][handmade_world_mode.cpp: Only create one room]
[46:21][handmade_world_mode.cpp: Add a DEBUG_VALUE for CameraRelativeGroundP to the HeroHead]
[46:50][Run the game, traverse the ramp and watch that CameraRelativeGroundP]
[47:49][handmade_world_mode.cpp: Add that DEBUG_VALUE to the Monstar]
[48:23][Run the game and note that we don't load in the world one layer above us]
[49:08][handmade_world_mode.cpp: Add fifteen floors to the SimBoundsExpansion]
[49:43][Run the game and find that the alpha-fade is working]
[50:22][handmade_world_mode.cpp: Add another column of trees to the room]
[51:43][Run the game, trigger the fade and explain the problem with alpha blending multiple faded entities]
[55:04][handmade_render_group.h: Consider ways to blend the alpha]
[58:24][Q&A][:speech]
[59:04][@Miblo][That up / down camera movement looks so cool. I do hope the terrain height of the rooms makes good use of this]
[59:42][@insofaras][Could you do something with GL_MIN / GL_MAX blend equation for the alpha?]
[1:03:12][@deras007][Can you create the word of warcraft game?]
[1:04:19][@d7][If the contour of your entities wasn't antialiased, you could have used the depth buffer and reverse the render order for the entities being faded (front to back), but alas, it is hard to do properly with the alpha blending around the contours]
[1:05:50][@evraire][You mentioned rendering to an offscreen buffer then compositing as one means of getting the desired alpha effect, but you also mentioned something along the lines of using a "fragment list"? could you please elaborate a bit more on that approach?]
[1:06:23][Blackboard: Per-fragment atomic lists]
[1:18:08][@cubercaleb][That sounds insane. Are there any modern games that use this?]
[1:18:52][@quikligames][Could you just pre-render normally to an offscreen buffer, and then composite it with the primary frame buffer with the fade-out alpha?]
[1:19:22][@d7][If the antialiasing didn't throw a wrench, you could have used the depth-buffer-front-to-back rendering method all the way, and compensate for some of the extra bandwidth on less overdraw]
[1:20:36][@cubercaleb][I mean that sounds like it has huge performance implications]
[1:23:59][@sssmcgrath][Speaking of your smoke example, did you see what David Rosen posted today?[ref
    site="YouTube"
    page="Particle lighting test"
    url="https://www.youtube.com/watch?v=VWHyTeEu31U"]]
[1:24:58][@cosmiczord][I thought most games were only designed to max out console hardware?]
[1:25:55][Wrap it up][:speech]
[/video]
