[video output=day462 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Extracting Asset Tiles from Gridded PNGs" vod_platform=youtube id=rWrHfGfzoOE annotator=Miblo]
[0:04][Recap and set the stage for the day][:speech]
[1:57][Dive into implementing UpdateAssetPackageFromPNG(), adding an Errors stream to asset_source_file][:"asset loading" :"error handling"]
[9:52][Introduce MakeReadStream()][:memory]
[11:09][Note the flexibility of having the first Contents buffer within the stream struct, rather than making everything go through a stream_chunk][:"data structure" :memory :speech]
[12:42][Fix compile errors][:"asset loading"]
[14:17][A few words on :memory arenas][:speech]
[15:53][Set up to enable UpdateAssetPackageFromPNG() to break assets up into tiles][:"asset loading"]
[18:17][Note the need to handle non-tiled assets, with a mention of mom's misremembrance of Krampus as "Krumpus"[ref
    site=GitHub
    page="HandmadeHero / cpp / Issues"
    url=https://github.com/HandmadeHero/cpp/issues/]][:"asset loading" :speech :trivia]
[19:43][Introduce ProcessTiledImport() to split up assets into 1024×1024 tiles, for UpdateAssetPackageFromPNG() to call][:"asset loading"]
[31:10][Note the need to invalidate the texture :memory, determining first to load the stuff in before switching to fixed size blocks][:"asset loading" :speech]
[33:44][Consider resizing our title_screen.png down to fit into one of our fixed blocks, with some general thoughts on texture :memory][:speech]
[40:23][Consult the Steam Hardware and & Software Survey[ref
    site=Valve
    page="Steam Hardware & Software Survey"
    url=https://store.steampowered.com/hwsurvey] for VRAM availability statistics][:research]
[44:16][Enable ProcessTiledImport() to load the asset-tile into a provisional bitmap][:"asset loading"]
[47:25][Texture Borders, for sub-pixel :rendering][:"asset loading" :blackboard]
[51:33][Where the 1-pixel border approach falls down: Mipmapping][:blackboard :rendering]
[54:14][Border thickening][:blackboard :drawing :rendering]
[59:14][Make ProcessTiledImport() enforce an 8-pixel border, and warn about encroachments into this border][:"asset loading" :"error handling"]
[1:08:01][Set up to store our tiles in the pack file][:"asset loading" :speech]
[1:10:15][Make ProcessTiledImport() write our tiles into Bitmap->Memory][:"asset loading"]
[1:13:09][Consider writing our tiles into a backing store before compacting down into the .hha file][:"asset loading" :speech]
[1:18:03][Introduce WriteAssetBitmap()][:"asset loading"]
[1:23:45][Change ProcessTiledImport() to load our tiles into a provisional bitmap before writing out to the .hha file][:"asset loading"]
[1:43:03][Fix compile errors and stub out ReserveAsset(), ReserveData(), WriteAssetData() and WriteAsset()]
[1:47:33][Q&A][:speech]
[1:48:11][@sratke][Q: Will you rewrite the software rasterizer with SSE4?][:isa]
[1:50:05][@hark85][I don't have AVX512][:isa]
[1:50:51][@frostyninja][Q: You still haven't bounded HashValue in CheckForAssetChanges(). Thought I’d mention][:"asset loading"]
[1:51:06][Make CheckForAssetChanges() bound the HashValue][:"asset loading"]
[1:52:37][@json__bourne][Q: How long until Microsoft tries to force win32 to become obsolete, and what comes after win32 for games?]
[1:53:27][Trying to play PUBG with Anna and Matt][:rant :speech]
[2:01:57][@centhusiast][Q: If I remember correctly, stb_lib was used in one of the episodes. Was it for loading PNG assets?[ref
    site=GitHub
    page="nothings/stb/stb_truetype.h"
    url=https://github.com/nothings/stb/blob/master/stb_truetype.h]][:library]
[2:04:21][@sopvop][Q: Since you already have deflate decoder implemented in PNG reader, will you implement deflate compressor for asset files?]
[2:04:33][@frostyninja][Q: Speaking of stupid driver distribution, Sony only have DualShock 3 drivers for PC packaged with their PS Now software. Ridiculous]
[2:05:03][@frostyninja][Q: Spent ages struggling with getting that damned controller to work]
[2:05:07][@ivereadthesequel][Q: My poor friend said when Windows last updated for her it took four hours]
[2:05:14][@toolegit2quit_][Q: Do you think Linux will take over? Seems unlikely. Also remember when the PlayStation 3 had Linux support?]
[2:06:15][@thestalkingwolf][Q: What would it take to make it more designer friendly to develop on an Ubuntu or Fedora platform first?]
[2:08:37][@puremouron][Q: MSVC does a terrible job with mod,[ref
    site="Compiler Explorer"
    page="x86-64 MSVC 19 2015 U3"
    url=https://godbolt.org/g/KDHstB] clang seems to do better[ref
        site="Compiler Explorer"
        page="x86-64 clang 6.0.0"
        url=https://godbolt.org/g/kgY6AM]]
[2:09:19][@enemymouse][Q: Are you going to support more complex languages. Coding your own HarfBuzz text shaping equivalent?][:language]
[2:09:54][@frostyninja][Q: Sixaxis / PS3 controller]
[2:10:21][@ivereadthesequel][Q: So is our plan to infiltrate Microsoft and make Handmade Windows?]
[2:11:32][@frostyninja][Q: Yeah they need a handshake thingy. You get past that with the driver though. That's exactly why I struggled with it. Writing a rawinput thingy for controllers]
[2:11:47][@frostyninja][Q: Cant enable the controller through userland win32, sadly]
[2:12:38][Brief continuation of the PUBG story][:speech]
[2:13:10][@toolegit2quit_][Q: Isn't a big part of the issue that the operating system would need a lot of traction. If Jonathan or someone like you build an OS it would need a very significant amount of traction to incentivize game developers to build for that platform]
[2:15:08][That's it, with a mention of the new site[ref
    site="Handmade Hero"
    page="Watch"
    url=https://handmadehero.org/watch] and a glimpse into the future][:speech]
[/video]
