cinera_handmade.network/cmuratori/hero/code/code462.hmml

67 lines
5.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[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 Id 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]