[video output=day413 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Encoding Light Values" vod_platform=youtube id=g3VG1H-CBGU annotator=Miblo]
[0:03][Address Patreon's proposed fee change of December 2017[ref
    site=Patreon
    page="Patreon Implosion"
    url=https://www.patreon.com/posts/patreon-15786847]][:speech]
[2:31][Plug the Annotated Episode Guide,[ref
    site="Handmade Hero"
    page="Annotated Episode Guide"
    url=https://hero.handmade.network/episode/code] Handmade Network[ref
        site="Handmade Network"
        url=https://hero.handmade.network/] - began by @abnercoimbre, @ChronalDragon and @Kelimion - @mr4thdimension's ~4coder and @serge_rgb's ~milton][:speech]
[5:12][Continue to address Patreon's fee change[ref
    site=Patreon
    page="Patreon Implosion"
    url=https://www.patreon.com/posts/patreon-15786847]][:speech]
[17:47][Mention the chair, a SPACE Seating Professional AirGrid Dark Back and Padded Black Eco Leather Seat…[ref
    site=Amazon
    page="SPACE Seating Professional AirGrid Dark Back and Padded Black Eco Leather Seat, 2-to-1 Synchro Tilt Control, Adjustable Arms and Tilt Tension with Nylon Base Managers Chair"
    url=https://www.amazon.com/Seating-Professional-AirGrid-Adjustable-Managers/dp/B000PWGZOI]][:trivia]
[21:14][Segue out of the preamble][:speech]
[22:08][:Run the game to see our current :lighting solution][:rendering]
[26:16][Make CompileZBiasProgram() clamp the DirFalloff][:hardware :lighting :rendering]
[28:07][:Run the game to see dramatically different :lighting results][:rendering]
[29:14][Prevent RayCast() from tinting the light grey][:lighting :rendering]
[29:51][:Run the game and consider that the ray caster is wrong][:lighting :rendering]
[31:11][TODO(casey): Need a skylight method that works with our propagation]
[32:37][Mention the office espresso machine][:trivia]
[34:01][Read through RayCast()][:lighting :rendering :research]
[35:50][Wax lyrical on ~milton and its creator @serge_rgb][:speech]
[36:33][Raycast Debugging][:blackboard :lighting :rendering]
[43:43][Explain RayCast() complete with :blackboard illustrations][:lighting :rendering]
[54:09][Consider what may be going wrong in RayCast()][:lighting :rendering :research]
[56:22][How GatherFinalLighting() may be incorrectly generating uniform samples without a hemisphere][:blackboard :lighting :rendering]
[59:20][:Run the game to see light sailing out of the back of geometry]
[1:00:00][Introduce SampleHemisphere()][:lighting :rendering]
[1:01:32][:Run the game to see the same :lighting results][:rendering]
[1:02:04][Consider how to improve SampleHemisphere(), preventing the back-face problem][:blackboard :lighting :rendering]
[1:06:27][Halve the range of normals that SampleHemisphere() will produce][:lighting :rendering]
[1:06:47][:Run the game to see light still emanating from back faces][:lighting :rendering]
[1:08:18][Increase light intensity][:lighting :rendering]
[1:09:10][:Run the game to see that we must be capping the maximum light brightness][:lighting :rendering]
[1:11:07][Consider how better to encode the :lighting][:lighting :rendering]
[1:13:42][Introduce the notion of LightPower in OutputLightingTextures()][:lighting :rendering]
[1:16:39][Enable CompileZBiasProgram() to handle LightPower][:hardware :lighting :rendering]
[1:18:14][:Run the game to see that we didn't do that correctly][:lighting :rendering]
[1:18:50][Make OutputLightingTextures() use the Element to compute the LightColor][:lighting :rendering]
[1:19:26][:Run the game to see our much more powerful light and the back-face leakage][:lighting :rendering]
[1:22:52][Assert in SampleHemisphere() that we never sample from behind the hemisphere][:lighting :rendering]
[1:23:18][:Run the game and do not hit that assertion]
[1:23:23][Enable OutputTextureDebug() to correctly interpret the :lighting alpha values][:"debug visualisation" :rendering]
[1:25:28][:Run the game to see that our :lighting samples are heavily red][:lighting :rendering]
[1:26:19][Increase the voxel resolution][:lighting :rendering]
[1:26:43][:Run the game to see different artifacts][:lighting :rendering]
[1:27:40][Temporarily try to make RayCast() collide against back faces][:lighting :rendering]
[1:28:11][:Run the game to see different light leakage][:lighting :rendering]
[1:30:22][Toggle OutputLighting() over to OutputLightingQuads()][:"debug visualisation" :lighting :rendering]
[1:30:57][:Run the game to see the lit quads, noting that we have a double-counting problem][:"debug visualisation" :lighting :rendering]
[1:32:41][Add LightingDisabled to game_render_settings and enable CompileZBiasProgram() to honour this setting][:"debug visualisation" :hardware :lighting :rendering]
[1:35:17][Add a LightingDisabled switch to GameUpdateAndRender()][:"debug visualisation" :"debug system"]
[1:35:50][:Run the game and unsuccessfully toggle LightingDisabled][:"debug visualisation" :lighting :rendering]
[1:36:27][Introduce MemoryIsEqual()][:memory]
[1:39:09][:Run the game and successfully toggle LightingDisabled][:"debug visualisation" :lighting :rendering]
[1:40:08][Introduce DecodePower()][:lighting :rendering]
[1:43:07][:Run the game and take a look at the :lighting][:"debug visualisation" :rendering]
[1:43:45][Reduce the light power and :run the game to see hot :lighting][:"debug visualisation" :programming :rendering]
[1:45:10][Consider enabling us to dynamically set the :Lighting Iteration Count][:rendering :speech]
[1:46:34][:Run the game to confirm the presence of Iteration Count in the :"debug system" :ui]
[1:47:35][Provide the ability to set the :Lighting Iteration Count dynamically][:"debug system" :rendering]
[1:48:23][:Run the game and try increasing the :lighting iteration count][:"debug visualisation" :rendering]
[1:50:56][Consider the future of :lighting][:rendering :speech]
[1:52:00][Q&A][:speech]
[1:52:40][@flyingsolomon][Q: Don't forget that you can now indent your shaders (if you updated ~4coder)]
[1:53:21][@jojomunki][Q: Could the raycasting be bouncing off the bounds of the scene?][:lighting :rendering]
[1:53:41][@dragoonx6][SpeedCrunch[ref
    site=SpeedCrunch
    url=http://www.speedcrunch.org/] for a great replacement of wincalc]
[1:54:45][@deepbluev7][Q: Could Liberapay[ref
    site=Liberapay
    url=https://liberapay.com/about/] be a replacement for Patreon? It's nonprofit and payed for by donations to its own Liberapay account]
[1:57:40][@ieee754][Q: Just hopped into the stream, are you working on a global illumination approach specific for 2.5D?[ref
    site="Unreal Engine"
    page="Enlighten: Real-Time Global Illumination in Unreal Engine 4"
    url=https://www.unrealengine.com/en-US/showcase/enlighten-real-time-global-illumination-in-unreal-engine-4]][:lighting :rendering]
[2:00:54][@quickshift_][Q: I'm out of the loop. What's up with Patreon?[ref
    site="The Patreon Blog"
    page="We’re Updating Patreon’s Fee Structure. Here’s Why"
    url=https://blog.patreon.com/updating-patreons-fee-structure/]]
[2:21:10][@deravadom][Q: I've been having a lot of trouble staying motivated / inspired for new projects. Do you have any tips on how to take an idea and actually bring it fully into existence?]
[2:25:22][@printf_armin][Q: Did you get depends to work (the new version)]
[2:25:35][@stav_5][I'm fairly new to the series (only on Day 013) do you recommend coding along with the series? I personally like to just watch and learn rather than copying everything you type, but I don't know]
[2:26:37][@ieee754][Q: Have you considered applying for twitch partner? (I would subscribe)]
[2:27:21][@dragoonx6][Q: Consider getting a bitcoin, litecoin, and ethereum wallet, it's an easy way for people to donate. It's hard to get your money out of it, though, but I think it could be worth it]
[2:28:26][@kelimion][Blog post about Patreon onboarding[ref
    site="Brian Balfour"
    page="Inside the 6 Hypotheses that Doubled Patreon’s Activation Success"
    url=https://brianbalfour.com/essays/patreon-onboarding-growth]][:research]
[2:33:43][][:speech][quote 605]
[2:34:24][Continue to address the blog post[ref
    site="Brian Balfour"
    page="Inside the 6 Hypotheses that Doubled Patreon’s Activation Success"
    url=https://brianbalfour.com/essays/patreon-onboarding-growth]][:research]
[2:41:13][@dragoonx6][Q: What do you think of git lfs, or any other git large asset plugins over centralized source control such as svn or perforce? I've been taking a look and for free (as in pay) solution I actually came to mercurial with its large asset plugin. What do you recommend?][:vcs]
[2:45:02][Wrap it up][:speech]
[/video]
