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