diff --git a/cmuratori/hero/code/code462.hmml b/cmuratori/hero/code/code462.hmml new file mode 100644 index 0000000..9e9b044 --- /dev/null +++ b/cmuratori/hero/code/code462.hmml @@ -0,0 +1,66 @@ +[video 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]