[video output=day551 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Computing Probe to Probe Transmission" vod_platform=youtube id=H_TJChafe9c annotator=Miblo]
[0:00][Recap and set the stage for the day][:speech]
[1:53][Walk through the current state of our light probe implementation][:lighting :research]
[8:45][Determine to perform probe to probe transmission][:lighting :speech]
[11:14][Switch ComputeLightPropagation() over from geometry-locked to probe-to-probe :lighting propagation, with an eye on :threading this routine]
[31:40][Note the expense of ray casting and transference][:lighting :performance :speech]
[33:06][Implement probe-to-probe transference in ComputeLightPropagation(), initially in scalar][:lighting]
[57:52][Fix compile errors][:lighting]
[1:05:28][Consider how to store the AccumulatedPPS in lighting_solution, in a cache-friendly way][:lighting :research]
[1:08:46][Enable InitLighting() to reserve six times the space for each AccumulatedPPS][:lighting :memory]
[1:09:52][Find that the game runs][:lighting :run]
[1:10:41][Delete stale data from lighting_solution][:lighting]
[1:11:50][Consider storing light boxes in a free-list][:lighting :memory :speech]
[1:17:59][Consider storing the light probes stably][:lighting :memory :speech]
[1:18:42][Augment raycast_result with an Emission for RayCast() and ComputeLightPropagation() to use][:lighting]
[1:22:49][Continue to delete stale data from lighting_solution][:lighting]
[1:24:01][Find that the game runs][:lighting :run]
[1:24:36][Q&A][:speech]
[1:24:45][Rename some struct members to satisfy the C++ standard[ref
    site=GitHub
    page="HandmadeHero / cpp / Linux Problems"
    url=https://github.com/HandmadeHero/cpp/issues/109]][:language]
[1:29:47][Close the "Linux Problems" issue[ref
    site=GitHub
    page="HandmadeHero / cpp / Linux Problems"
    url=https://github.com/HandmadeHero/cpp/issues/109]][:admin :language]
[1:30:15][@zufaelligertyp][Let me guess, this is about undefined behaviour?][:language]
[1:33:39][@genos3][Q: How do you know if you wrote undefined behaviour code?][:language]
[1:35:16][@uplinkcoder][Q: There is Clang's ub sanitizer][:language]
[1:37:15][@vaualbus][Q: Which is the weirdest macro you had to make for some application? Have you ever gone to macro madness?][:language]
[1:38:03][@xrxr13579][Q: What's the full screen purple flash that happens in your editor sometimes?]
[1:38:37][@illumi25][Q: Have you seen "The Grand C++ Error Explosion Competition"?[ref
    site="The Grand C++ Error Explosion Competition"
    page="Results of the Grand C++ Error Explosion Competition"
    url=https://tgceec.tumblr.com/post/74534916370/results-of-the-grand-c-error-explosion]][:language]
[1:39:15][@tiswoody][Q: Did you enjoy it?][:language]
[1:40:08][@tiswoody][Q: Did you enjoy [@naysayer88 Jon]'s macro video[ref
    author="Jonathan Blow"
    title="Compiler Demo: Macros and Iteration"
    publisher=YouTube
    url=https://www.youtube.com/watch?v=QX46eLqq1ps]][:language]
[1:40:27][@pragmascrypt][Q: Imagine a light probe that has no direct visibility to a red wall but it could reach it via one indirect bounce. I don't think the light probe will ever get any red contribution from that wall no matter how long you iterate, unless you cast secondary rays from surfaces][:lighting]
[1:41:06][Secondary Bounces][:blackboard :lighting]
[1:50:09][@pragmascrypt][Q: Yes]
[1:53:55][@xrxr13579][I just checked Wikipedia,[ref
    site=Wikipedia
    page="Integer overflow"
    url=https://en.wikipedia.org/wiki/Integer_overflow] and apparently signed overflows are still undefined behaviour][:language]
[1:56:50][Thank you, everyone][:speech]
[1:59:11][Edit the schedule, adding an episode on 24th August 2019 at 12:00PM PDT[ref
    site=Twitter
    page="Handmade Hero"
    url=https://twitter.com/handmade_hero]][:admin]
[2:01:38][Until we next meet][:speech]
[/video]
