hero/code and chat013: Miscellaneous fixes

This commit is contained in:
Matt Mascarenhas 2021-05-27 15:26:58 +01:00
parent 6ea1be4b70
commit eb4548b401
20 changed files with 27 additions and 27 deletions

View File

@ -82,7 +82,7 @@
[4:09:39][@user549][Maybe the smallest crt ever[ref
site="suckless"
page="suckless C compiler/crt.s"
url="http://git.suckless.org/scc/tree/crt/amd64-sysv-linux/crt.s"] ]
url="http://git.suckless.org/scc/tree/crt/amd64-sysv-linux/crt.s"]]
[4:10:02][@filiadelski][Is there a low-level reason you don't like virtual functions? My understanding of them is that they're basically just function pointers in a table that is dereferenced]
[4:11:45][@ingenero][First of all, thank you so much for this stream! At the beginning you mentioned you hadn't done some of these things for a while. My question is, in what context did you originally learn and apply all this information? It seems like spending time at work exploring this may be considered time taken away from actually being "productive". Is it just something you have to learn on your own time?]
[4:15:07][Wrap it up there]

View File

@ -23,7 +23,7 @@
[1:17:53][How did you setup Visual Studio to have that black theme?]
[1:18:22][During coding is it easy to discipline yourself to make the code as clean and tidy as possible. \[...\] Do you think this is good in general or could it backfire?]
[1:22:20][Would there be a way to build your platform dependant code in a separate entity in order to allow you to use it in the future?]
[1:23:11][Will you be developing your own implementation of strings? (No) ]
[1:23:11][Will you be developing your own implementation of strings? (No)]
[1:23:52][Does the unity build approach work with parallel compilation?]
[1:26:04][Do you feel it is necessary to make a flowchart before coding, or do you go with the flow?]
[1:27:18][Why the #define part for the header file (include guards)]

View File

@ -11,7 +11,7 @@
[31:31][Addressing bug]
[35:00][Compiling and running successfully]
[35:30][Observing weird gaps in sound]
[35:55][Not tracking frame time correctly ]
[35:55][Not tracking frame time correctly]
[38:30][Addressing the weird gaps]
[50:00][Running new code for debug diagram. Sound card read seems unreliable]
[53:00][Sound stream has to be continuous. Figuring out how far ahead of the current play cursor we should be writing]

View File

@ -1,14 +1,14 @@
[video output=day038 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Basic Linear Bitmap Blending" vod_platform=youtube id=ydiHNs1YQoI annotator=schme annotator=effect0r annotator=theinternetftw]
[0:00:00][Prestream stuff]
[0:09:18][Intro and welcome]
[0:10:52][Where we left of from last time]
[0:10:52][Where we left off from last time]
[0:11:17][Fixing the hero's color]
[0:16:16][Figuring out what the shift values are]
[0:18:48][Bitscanforward]
[0:27:53][Renaming bitscanforward to FindLeastSignificantSetBit]
[0:29:36][The intrinsics thing]
[0:30:16][Finding out what compiler we're on]
[0:31:27][Making a comprimise: Allowing the intrinsics file access to the platform layer]
[0:31:27][Making a compromise: Allowing the intrinsics file access to the platform layer]
[0:33:20][Determining what compiler is being used]
[0:41:20][Simple version of using the alpha channel]
[0:45:20][Alpha as an opacity value]
@ -17,7 +17,7 @@
[0:50:04][Krita crashes..]
[0:50:47][Blackboard session explaining alpha blending using the background value]
[0:51:01]['Deriving' the formula for a linear blend]
[0:58:02][The cannonical form of a linear blend]
[0:58:02][The canonical form of a linear blend]
[0:58:45][How the 't' works in the linear blend formula]
[1:00:35][Implementing the floating point version of linear blend]
[1:06:55][Drawing the herohead at the location of the player]
@ -38,5 +38,5 @@
[1:34:36][Is the large VirtualAlloc() at the beginning similar to Linux mmap()?]
[1:35:51][What bitvalue is 50% brightness?]
[1:37:34][Does the display bitmap operation actually do anything with the alpha channel?]
[1:37:58][The solid curve on Wikipedias gamma correction is the linear space intensity. Should be what you're looking for.]
[1:37:58][The solid curve on Wikipedia's gamma correction is the linear space intensity. Should be what you're looking for.]
[/video]

View File

@ -9,7 +9,7 @@
[0:16:20][Tackeling SetCursor]
[0:17:45][Spy++]
[0:21:45][LoadCursor()]
[0:25:50][Setting up dynamically controled cursor visability]
[0:25:50][Setting up dynamically controlled cursor visibility]
[0:34:12][Trying to figure out how to stop the 'loading' cursor]
[0:37:53][Fullscreen support[ref
site="The Old New Thing"
@ -17,7 +17,7 @@
url="http://blogs.msdn.com/b/oldnewthing/archive/2010/04/12/9994016.aspx"]]
[0:51:09][Discussion on his method of going fullscreen in Windows]
[0:54:45][Going over the notes]
[0:55:30]['Hackey' way to fill the entire screen with the game]
[0:55:30]['Hacky' way to fill the entire screen with the game]
[0:58:50][Q&A][:speech]
[0:59:57][You said you want your artist to leave an alpha apron around your bitmaps. Why is that?]
[1:02:15][Sour trolli worms or Haribo gummy bears?]

View File

@ -31,13 +31,13 @@
[1:11:27][Will there be a minimum distance to the wall?]
[1:12:03][Will computing a vector where the player will stop just before the wall solve the sticking?]
[1:13:13][Additional explanation to the bounce vector calculation]
[1:19:25][Is there a way to speed up the DrawBitmap -code?]
[1:19:25][Is there a way to speed up the DrawBitmap code?]
[1:21:15][Suggestion to remove reblitting the background to improve performance]
[1:22:08][Stream notes Casey drew the cos/sin triangle wrong]
[1:23:39][A wish to mention formal keywords to help people look things up]
[1:24:53][Was the Witness collision trick to try maintain the distance traveled?]
[1:25:21][Why does wall bouncing not seem to cause sticking, but sliding does?]
[1:27:06][Stream mentions KhanAchademy for learning math]
[1:27:06][Stream mentions KhanAcademy for learning math]
[1:27:20][Will the rendering code be able to squash bitmaps?]
[1:28:01][Could you/would you benefit from unrolling the collision loop ... ?]
[/video]

View File

@ -2,10 +2,10 @@
[0:00:00][Intro and welcome]
[0:01:25][Where we were..]
[0:01:50][Addressing a bug that was found by the forums]
[0:04:30][Thinking about how to handle imput]
[0:04:30][Thinking about how to handle input]
[0:06:24][Which controller maps to which character?]
[0:09:04][How we're going to handle this problem]
[0:10:36][Maping a controller to a character]
[0:10:36][Mapping a controller to a character]
[0:11:36][Pulling player info into the 'entity' structure to support multiple players]
[0:12:50][Modifying game_input to allow for multiple players]
[0:14:31][Changing his mind about how to handle this]

View File

@ -2,7 +2,7 @@
[0:00:25][Owl of Shame: Single producer/Multiple consumer issue]
[0:03:33][InterlockedCompareExchange]
[0:04:20][Fixing our shame]
[0:06:19][Siumplifying more with the API change]
[0:06:19][Simplifying more with the API change]
[0:09:00][Implementing the multithreading API]
[0:12:42][Piping the work queue through]
[0:14:33][Global defines for AddEntry and CompleteAllWork]
@ -35,7 +35,7 @@
[1:16:10][@pragmascrypt][Is the WeShouldSleep still right after you changed the if condition?]
[1:17:55][@manicthenobody][Why do you use #if 0 instead of // or /*?]
[1:19:09][@nightbasilisk][Can you show 4k?]
[1:19:47][gasto5 Q: Is multithreaded code less reliable than singlethreaded code?]
[1:19:47][@gasto5][Q: Is multithreaded code less reliable than singlethreaded code?]
[1:20:37][@noxy_key][So is the circular buffer recycling threads after they're done processing a tile? I wasn't clear on why a circular buffer was chosen.]
[1:20:56][Power cord bumped, computer shut down]
[1:24:20][@noxy_key][(once more) So is the circular buffer recycling threads after they're done processing a tile? I wasn't clear on why a circular buffer was chosen.]

View File

@ -22,7 +22,7 @@
[29:13][handmade_debug.cpp: Initialise that GroupStack in debug_variable_definition_context]
[31:07][handmade_debug_variables.h: Continue on cleaning up compile errors]
[33:05][Blackboard: Traversing trees using pointers and then stacks]
[38:08][handmade_debug.cpp: Add *Stack to WriteHandmadeConfig ]
[38:08][handmade_debug.cpp: Add *Stack to WriteHandmadeConfig]
[41:51][Blackboard: The natural order of the stack]
[45:40][handmade_debug.cpp: Introduce debug_variable_iterator to augment the stack]
[52:39][handmade_debug.cpp: Continue cleaning up compile errors]

View File

@ -22,7 +22,7 @@
[56:11]["We won't add up to 100%"][quote 469]
[58:00][Q&A][:speech]
[59:22][@gunngames][Can I avoid taxation by reinvesting into capital gains?]
[59:44][@dudeinbasement1][Why won't we add to ~100%?]
[59:44][@dudeinbasement1][Why won't we add to \~100%?]
[1:00:42][@sssmcgrath][How would you self-update an exe? Right now I have a second exe that copies a file that overwrites the current exe. So main exe calls updateme.exe, closes itself, updateme sleeps for 1/2 second, then copies... There's gotta be something smarter]
[1:01:27][@zamar037][Can the percentage support a decimal place?]
[1:01:46][handmade_debug.cpp: Print the percentage as a float]

View File

@ -46,7 +46,7 @@
[1:52:02][Build and run in -Od and investigate what's happening]
[1:54:18][handmade_sim_region.cpp: Add an assert in AddEntityToHash() to validate the hash, run the game and do not hit that assertion]
[1:55:07][Step through AddEntityToHash() and investigate what's happening]
[1:56:30][handmade_sim_region.cpp: Add an assert in GetOrAddBrain() to validate the brain, run the game and ]
[1:56:30][handmade_sim_region.cpp: Walk through GetOrAddBrain()]
[1:57:38][handmade_sim_region.cpp: Make GetOrAddBrain() set the Hash->ID, run the game and crash in FreeFrame()]
[1:58:31][handmade_sim_region.h: Remove the ID from the entity_hash and brain_hash and instead use their Ptr to identify them]
[1:59:36][Run the game and note that "our brains are still not working properly"][quote 535]

View File

@ -33,7 +33,7 @@
[42:06][handmade_opengl.cpp: Make OpenGLRenderCommands() call glDepthFunc()[ref
site="docs.GL"
page="glDepthFunc"
url="http://docs.gl/gl2/glDepthFunc"] ]
url="http://docs.gl/gl2/glDepthFunc"]]
[43:19][Run the game to see that the drawing order is being respected, but that the sort is unstable]
[46:05][Determine to process the Z-values[ref
site="Unspecified Behaviour"

View File

@ -72,7 +72,7 @@
page="glcorearb.h"
url="https://www.khronos.org/registry/OpenGL/api/GL/glcorearb.h"]]
[1:32:47][Compile and run to see our crazy w coordinate]
[1:33:56][Introduce handmade_opengl.h ]
[1:33:56][Create handmade_opengl.h]
[1:36:18][handmade_opengl.cpp: Make OpenGLInit() call OpenGLCreateProgram(), and write here docs for Header, Vertex and Fragment code]
[1:41:57][Run the game to find that we got through the compilation phase okay, and determine to enable OpenGLCreateProgram() to perform error handling]
[1:44:21][handmade_opengl.cpp: Enable OpenGLCreateProgram() to log shader info and assert on validation failure[ref

View File

@ -65,7 +65,7 @@
[1:37:56][handmade_opengl.cpp: Enable the FragmentCode to sample from textures, using a uniform]
[1:41:39][Run the game and unexpectedly receive no error]
[1:41:50][handmade_opengl.cpp: Enable VertexCode to pass FragUV and FragColor out to the FragmentCode]
[1:45:03][Run the game ]
[1:45:03][Run the game]
[1:45:08][handmade_opengl.cpp: Make VertexCode correctly set FragUV using gl_TexCoord\[0\].xy]
[1:47:51][Run the game in the belief that we're passing down everything we need]
[1:48:51][handmade_opengl.cpp: Make OpenGLRenderCommands() set a TextureSamplerID to pass to the FragmentCode shader]

View File

@ -67,7 +67,7 @@
[1:36:43][Run the game and watch the incorrect clipping behaviour]
[1:37:42][handmade_math.h: Tweak the near and far clip plane in PerspectiveProjection()]
[1:38:54][Try to find a source for the standard projection perspective matrix]
[1:43:48][Run the game and consider ]
[1:43:48][Run the game to see some projection wonkiness]
[1:46:06][handmade_render_group.cpp: Try turning off the ZBias in PushBitmap()]
[1:46:25][Run the game to see that everything is sorting as expected]
[1:48:45][Consider that the ZBias is pre-transformed and appears to be being applied in clip space]

View File

@ -53,7 +53,7 @@
[1:07:12][Investigate which VK_ keys are available to us]
[1:10:06][win32_handmade.cpp: Make Win32ProcessPendingMessage() use VK_OEM_PLUS and VK_OEM_MINUS]
[1:10:46][Run the game to try out our key bindings, and investigate why we can't cycle between the textures]
[1:12:29][handmade_opengl.cpp: ]
[1:12:29][handmade_opengl.cpp: Double-check CompileFinalStretch()]
[1:13:05][Consult the documentation on Framebuffer[ref
site="Khronos"
page="Framebuffer"

View File

@ -21,7 +21,7 @@
[54:30][Blackboard: All light must go somewhere]
[55:33][handmade_render_group.cpp: Enable LightingTest() to make RefC converge towards 0, and track the transference and accumulation of light]
[1:03:25][handmade_render_group.cpp: Enable LightingTest() to correct for the wrongness of the transfer]
[1:11:10][Step in to LightingTest() and ]
[1:11:10][Step through LightingTest()]
[1:13:10][Consider how to handle emission]
[1:13:46][handmade_render_group.cpp: Prevent LightingTest() from performing the correction and just letting the light bounce ad infinitum]
[1:14:27][Run the game to see the flickery results]

View File

@ -34,7 +34,7 @@
[1:12:47][Make RayCast() account for the Source Position in the Position computation][:lighting :rendering]
[1:13:55][:Run the game to see that it looks much more correct][:lighting :rendering]
[1:15:47][Temporarily increase the RayCount in ComputeLightPropagation()][:lighting :rendering]
[1:16:01][:Run the game to see the :lighting solution with more rays[:rendering]]
[1:16:01][:Run the game to see the :lighting solution with more rays][:rendering]
[1:17:05][Determine to make the light sampling more unbiased][:lighting :rendering :speech]
[1:18:58][:Run the game and determine to enable :lighting recomputation while showing the :"debug visualisation"][:"debug system" :rendering]
[1:19:34][Enable UpdateAndRenderWorld() to recompute the :lighting while showing the :"debug visualisation"][:"debug system" :rendering]

View File

@ -4,7 +4,7 @@
page="HandmadeHero / cpp"
url=https://github.com/HandmadeHero/cpp/issues]][:speech]
[1:35][Show item_hat_03.png with a view to investigating why we are extracting six tiles from this four-tile asset][:admin :art :"asset system"]
[5:14][Determine to enable test_png to output ]
[5:14][Determine to enable test_png to output alpha pixels full white]
[6:54][Enable WriteImageTopDownRGBA() to output any alpha pixels full white, introducing ThreshAlpha()][:rendering]
[9:52][Run test_png on item_hat_03.png and see some spurious data in the output][:admin :rendering]
[11:40][Reacquaint ourselves with ProcessMultiTileImport() to see that it only processes tiles containing alpha pixels][:"asset system" :research :rendering]

View File

@ -64,7 +64,7 @@
[1:55:52][Get a new dotahero][:admin]
[1:56:43][Ponder ~RemedyBG's breakpoint confusion][:"hot reloading" :library :speech]
[1:57:46][Wonder why we're jumping to an unknown function][:"hot reloading" :library :speech]
[1:58:17][:Run, rebuild, step in to OpenGLEndFrame() and ][:"hot reloading" :library]
[1:58:17][:Run, rebuild, step in to OpenGLEndFrame() and inspect the OpenGL struct][:"hot reloading" :library]
[1:59:51][Remember that our OpenGL functions reside in a dll-local table, and must be reinitialised][:"hot reloading" :library :speech]
[2:01:32][Augment open_gl with our OpenGL functions, renaming OpenGLGlobalFunction() to OpenGLFunction()][:library :rendering]
[2:08:23][Make our OpenGL context available to all OpenGL-calling functions, and Win32InitOpenGL() initialise our OpenGL functions][:library :rendering]