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

69 lines
5.5 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=day618 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Analyzing the Diffuse Blur" vod_platform=youtube id=vwi-Tq0c64w annotator=Miblo]
[0:02][Recap and set the stage for the day][:speech]
[0:40][Demo the :lighting with different resolution spatial and lighting grids][:run]
[2:22][Determine to optimise the :lighting pipeline, and work on quality, smoothing out the rectilinear pattern and reducing flicker][:optimisation :run]
[5:02][Determine to compile at least the :lighting in clang, to gauge the :SIMD :performance][:run]
[6:50][How the :ABI works on Microsoft Windows, in terms of register use][:simd :speech]
[10:01][On the possible work getting the code to compile with clang, including its exploitation of undefined behaviour][:language :speech]
[13:46][hhlightprof total seconds elapsed: 4.221848][:lighting :performance :run]
[13:52][Determine to optimise the diffuse blur][:lighting :optimisation :research]
[14:31][Toggle off the diffuse blur in ComputeLightPropagationWork()][:lighting]
[14:50][hhlightprof total seconds elapsed: 3.233531][:lighting :performance :run]
[15:15][Briefly describe our diffuse blur in ComputeLightPropagationWork()][:lighting :research]
[15:59]["Seperable" Filters][:blackboard :dsp :filtering]
[18:55][Example filter: Linear blend][:blackboard :dsp :filtering]
[23:53][Example filter: Bilinear blend][:blackboard :dsp :filtering]
[27:20][Example seperable filter: two-pass, one-dimensional blends][:blackboard :dsp :filtering]
[29:16][Get some tissues][:admin]
[29:20][:afk]
[30:01][Return with tissues][:admin]
[30:20][Our current cosine-weighted falloff equation][:blackboard :dsp :filtering]
[35:47][Walk through UnitVectorFromOctahedral()][:lighting :research]
[37:38][Determine to print the weight map table][:filtering :lighting :research]
[39:11][Regular tea break][:admin]
[39:20][:afk]
[40:06][Return with the realisation that we're at risk of infringing [@naysayer88 Jon Blow]'s on-stream tea-making patent][:admin]
[40:27][Make ProfileRun() print the DiffuseWeightMap to stdout][:filtering :lighting]
[46:29][hhlightprof DiffuseWeightMap: Many 0s][:filtering :lighting :run]
[46:51][Reacquaint ourselves with the use of DiffuseWeightMap in ComputeLightPropagationWork][:filtering :lighting :research]
[48:46][Make ProfileRun() print out the DiffuseWeightMap, based on BuildDiffuseLightMaps()][:filtering :lighting]
[51:56][hhlightprof DiffuseWeightMap: Sensibly populated][:filtering :lighting :run]
[52:20][Make ProfileRun() print dashes when the Entry is 0][:filtering :lighting]
[52:49][hhlightprof DiffuseWeightMap: More visible shape][:filtering :lighting :run]
[53:10][Regular tea break][:admin]
[53:14][:afk]
[54:40][Return, with the tea now steeping][:admin]
[54:45][Analyse the DiffuseWeightMap printout for reused values][:filtering :lighting :research]
[58:43][Approaches to making the cosine falloff seperable: 1) Produce a somewhat similar, but regular pattern; 2) Classify values by their position][:filtering :lighting :research]
[59:32][There's the tea][:admin]
[59:37][:afk]
[1:00:17][Return and pour the tea][:admin]
[1:00:50][Try making ProfileRun() print out the DiffuseWeightMap 16×16, to see the shape when it wraps][:filtering :lighting]
[1:02:03][hhlightprof DiffuseWeightMap: 16×16 shapes, and identical rows between maps][:filtering :lighting :run]
[1:05:17][Consider changing the cosine falloff function to a basic blur][:filtering :lighting :research]
[1:06:28][Accidentally add a threshold of 0.01f to BuildDiffuseLightMaps()][:filtering :lighting]
[1:07:20][hhlightprof DiffuseWeightMap: Without threshold][:filtering :lighting :run]
[1:07:38][Add a threshold to the DiffuseWeightMap printout][:filtering :lighting]
[1:08:13][hhlightprof DiffuseWeightMap: Still without threshold][:filtering :lighting :run]
[1:08:24][Eyeball ProfileRun() for threshold bugs][:filtering :lighting :research]
[1:09:52][Step in to ProfileRun() and inspect W][:filtering :lighting :run]
[1:10:35][Fix the DiffuseWeightMap printout threshold in ProfileRun()][:filtering :lighting]
[1:11:25][hhlightprof DiffuseWeightMap: With threshold, blank columns][:filtering :lighting :run]
[1:13:45][Try various thresholds for the DiffuseWeightMap printout][:filtering :lighting :programming :run]
[1:14:54][Make ProfileRun() print out the DiffuseWeightMap 8×8][:filtering :lighting]
[1:15:05][hhlightprof DiffuseWeightMap: 8×8 shapes, with threshold][:filtering :lighting :run]
[1:15:47][Make ProfileRun() print out the X, Y and Z directions of a DiffuseWeightMap Element][:filtering :lighting]
[1:18:15][hhlightprof DiffuseWeightMap: Element directions][:filtering :lighting :run]
[1:18:42][Make ProfileRun() add a dash to its 0 printout][:filtering :lighting]
[1:18:56][hhlightprof DiffuseWeightMap: Element directions, completely symmetric][:filtering :lighting :run]
[1:22:35][Our cosine falloff equation, and its reusable terms][:blackboard :filtering :lighting]
[1:31:53][Rephrasing the DiffuseWeightMap generation in a seperable way][:blackboard :filtering :lighting]
[1:40:28][Determine to ruminate on the DiffuseWeightMap][:filtering :lighting :research]
[1:40:55][Q&A][:speech]
[1:41:35][@mindmark42][Q: Couldn't at least the tetrahedron unit vector function use a lookup table and lerp?][:lighting]
[1:42:38][@mindmark42][Q: Speed up that function, if it gets called a lot][:lighting :performance]
[1:43:47][Toggle on the diffuse blur in ComputeLightPropagationWork()][:lighting]
[1:43:52][Our desire to do the cosine falloff seperable, if we can][:lighting :filtering :research]
[1:45:21][Wrap it up][:speech]
[/video]