Index hero/code608
This commit is contained in:
		
							parent
							
								
									dcf2c736f1
								
							
						
					
					
						commit
						23fe472502
					
				|  | @ -0,0 +1,113 @@ | |||
| [video output=day608 member=cmuratori stream_platform=twitch stream_username=handmade_hero  project=code title="Visualizing Lighting Values" vod_platform=youtube id=rVJw10RkR9c annotator=Miblo] | ||||
| [0:01][Note Twitch's latest twitchiness[ref | ||||
|     site="Handmade Hero" | ||||
|     page=Watch | ||||
|     url=https://handmadehero.org/watch]][:speech] | ||||
| [1:26][Determine to do a :lighting quality pass][:speech] | ||||
| [4:50][Debugging the :lighting: 1) Trial-and-error eyeballing][:speech] | ||||
| [5:28][Debugging the :lighting: 2) Create and validate against our own definition of correct lighting behaviour][:speech] | ||||
| [7:48][Regret not having gained much experience with :lighting][:speech] | ||||
| [8:27][Demo our ability to debug the raycaster][:"debug visualisation" :lighting :run] | ||||
| [10:19][ComputeLightPropagationWork cycle use: 82%][:lighting :performance :run] | ||||
| [11:23][Approaching :lighting transfer][:run] | ||||
| [13:52][Approaching :lighting transfer: Draw lines through the centre of each grid cube, derived from the octahedral map, with brighter directions drawn longer][:"debug visualisation" :run] | ||||
| [15:59][Try increasing the W modification from ×0.75 to ×0.1 in BuildDiffuseLightMaps()][:lighting] | ||||
| [16:23][Demo the slow, but feeding back, :lighting transfer, with the determination to step the lighting frame-by-frame][:run] | ||||
| [17:49][Determine to draw those octahedral lines in a smaller secondary debug bounds][:"debug visualisation" :lighting :run] | ||||
| [19:34][Introduce DebugDrawOctahedralValues() for UpdateLighting() to call][:"debug visualisation" :lighting] | ||||
| [21:05][Note that the diffuse blur is probably providing too much power to the system][:lighting :speech] | ||||
| [22:23][Make DebugDrawOctahedralValues() draw out our desired debug bounds][:"debug visualisation" :lighting] | ||||
| [29:44][Introduce a version of * that takes a v3s and s32, and fix compile errors][:"debug visualisation" :lighting :mathematics] | ||||
| [31:00][Check out our debug boxes][:"debug visualisation" :lighting :run] | ||||
| [31:37][Make DebugDrawOctahedralValues() draw our octahedral lines][:"debug visualisation" :lighting] | ||||
| [39:13][Check out our octahedral lines][:"debug visualisation" :lighting :run] | ||||
| [40:00][Make PushLightingRenderValues() Clamp01() the Color][:lighting] | ||||
| [42:46][The octahedral lines do not remain white][:"debug visualisation" :lighting :run] | ||||
| [43:10][Fix PushLightingRenderValues() to Clamp01() the Line->Color and pass the resulting Color to PushLineSegment()][:"debug visualisation" :lighting] | ||||
| [43:24][Our octahedral lines still do not remain white][:"debug visualisation" :lighting :run] | ||||
| [43:49][Fix PushLightingRenderValues() to pass the clamped Color to PushLineSegment() for both ends][:"debug visualisation" :lighting] | ||||
| [44:01][Our octahedral lines now remain white][:"debug visualisation" :lighting :run] | ||||
| [44:20][Determine to support stepping the lighting frame-by-frame][:run] | ||||
| [44:58][Prevent UpdateAndRenderWorld() from calling UpdateLighting()][:lighting] | ||||
| [46:08][We get no :lighting][:run] | ||||
| [46:19][Make UpdateAndRenderWorld() call UpdateLighting() when we press F9][:"input handling" :lighting] | ||||
| [47:58][Step the :lighting frame-by-frame with F9][:"input handling" :lighting :run] | ||||
| [49:25][Delete moonlight variables from GridRayCast()][:lighting] | ||||
| [50:41][Our system contains no moonlight, yet our octahedral maps are seeing more light from above][:"debug visualisation" :lighting :run] | ||||
| [52:11][Make PushLight() draw the light][:"debug visualisation" :lighting] | ||||
| [53:55][Check out our lights, and see that our octahedral maps are not really responding to them][:"debug visualisation" :lighting :run] | ||||
| [55:38][Move the DebugGridIndex and DebugRayIndex DEBUG_VALUE() initialisers from UpdateLighting() to PushLightingRenderValues()][:"debug system" :lighting] | ||||
| [56:43][Edit our DebugGridIndex and DebugRayIndex to 17912 and 100][:"debug system" :"debug visualisation" :lighting :run] | ||||
| [58:30][Make UpdateLighting() set DebugGridIndex and DebugRayIndex to 17912 + (SpatialGrid.CellCount.x × SpatialGrid.CellCount.y) and 100][:"debug system" :lighting] | ||||
| [58:55][Edit our DebugGridIndex and DebugRayIndex to 17912 and 99][:"debug system" :"debug visualisation" :lighting :run] | ||||
| [1:02:10][Make UpdateLighting() set DebugGridIndex to 17912][:"debug system" :lighting] | ||||
| [1:02:31][Edit our DebugRayIndex to 156, and wonder if we are writing back into the wrong parts of the octahedral map][:"debug system" :"debug visualisation" :lighting :run] | ||||
| [1:04:21][Make UpdateLighting() set DebugRayIndex to 156][:"debug system" :lighting] | ||||
| [1:04:30][Edit our DebugRayIndex to 155][:"debug system" :"debug visualisation" :lighting :run] | ||||
| [1:05:35][Make UpdateLighting() set DebugRayIndex to 155][:"debug system" :lighting] | ||||
| [1:05:42][Try making FullCast() pass an Ignored buffer to GridRayCast(), to rule out the :"debug system" interfering with the SpecAtlas][:lighting] | ||||
| [1:08:57][Our problem remains][:"debug visualisation" :lighting :run] | ||||
| [1:09:38][Make FullCast() draw the ExpectedDirection that our rays point into their octahedral map][:lighting] | ||||
| [1:15:38][Our rays and octahedral directions are closely aligned][:"debug visualisation" :lighting :run] | ||||
| [1:16:52][Try increasing the W modification from ×0.1 to ×0.75 in BuildDiffuseLightMaps()][:lighting] | ||||
| [1:17:16][Step through the :lighting][:"debug visualisation" :run] | ||||
| [1:17:43][Make DebugDrawOctahedralValues() increase the length of our octahedral lines][:"debug visualisation" :lighting] | ||||
| [1:18:34][Step through the :lighting][:"debug visualisation" :run] | ||||
| [1:19:07][Make DebugDrawOctahedralValues() draw the diffuse atlas lines, introducing DebugDrawColorDir()][:"debug visualisation" :lighting] | ||||
| [1:22:03][Step through the :lighting, to see that the diffuse atlas grows quickly][:"debug visualisation" :run] | ||||
| [1:23:06][Temporarily prevent DebugDrawOctahedralValues() from drawing the diffuse atlas lines][:"debug visualisation" :lighting] | ||||
| [1:23:19][Step through the :lighting, and note the upwards bias][:"debug visualisation" :run] | ||||
| [1:23:54][Prevent GridRayCast() from transferring the light for non-hits][:lighting] | ||||
| [1:27:16][Our SpecAtlas is getting light from the wrong directions][:"debug visualisation" :lighting :run] | ||||
| [1:28:14][Prevent GridRayCast() from transferring the light for hits][:lighting] | ||||
| [1:28:32][We correctly see no light][:"debug visualisation" :lighting :run] | ||||
| [1:29:00][Our bug possibilities: 1) False hit reports; 2) Incorrectly writing the direction; 3) Incorrect debug drawing][:lighting :speech] | ||||
| [1:30:41][Scrutinise FullCast() for write-back errors][:lighting :research] | ||||
| [1:33:38][Check out our apparent ray hit][:"debug visualisation" :lighting :run] | ||||
| [1:33:56][Prevent GridRayCast() from transferring the light for non-hits][:lighting] | ||||
| [1:34:21][Our target ray is correctly not drawn][:"debug visualisation" :lighting :run] | ||||
| [1:34:55][Move the debug line drawing branch in GridRayCast() outside of the SomethingHit condition][:"debug visualisation" :lighting] | ||||
| [1:35:25][Check out our misinformed octahedral lines][:"debug visualisation" :lighting :run] | ||||
| [1:37:00][Edit our DebugGridIndex to 17788][:"debug system" :"debug visualisation" :lighting :run] | ||||
| [1:38:08][Make UpdateLighting() set DebugGridIndex to 17788][:"debug system" :lighting] | ||||
| [1:38:29][Edit our DebugRayIndex, hopefully towards a light][:"debug system" :"debug visualisation" :lighting :run] | ||||
| [1:42:01][Try decreasing the W modification from ×0.75 to ×0.1 in BuildDiffuseLightMaps()][:lighting] | ||||
| [1:42:51][Edit our DebugRayIndex to 325, directly towards a light][:"debug system" :"debug visualisation" :lighting :run] | ||||
| [1:43:31][Make UpdateLighting() set DebugRayIndex to 325][:"debug system" :lighting] | ||||
| [1:44:16][Check out our direct hit][:"debug visualisation" :lighting :run] | ||||
| [1:45:16][Rename ControlMask to FPControlMask in SetDefaultFPBehavior()[ref | ||||
|     site=GitHub | ||||
|     page="HandmadeHero / cpp / ControlMask in SetDefaultFPBehaviour" | ||||
|     url=https://github.com/HandmadeHero/cpp/issues/118]][:"platform layer"] | ||||
| [1:46:40][@uplinkcoder][Q: Maybe just have one light source?][:lighting] | ||||
| [1:47:07][Temporarily prevent GenerateRoom() from adding lamps][:lighting :"procedural generation"] | ||||
| [1:47:26][Check out our one light][:lighting :run] | ||||
| [1:47:53][Try increasing the W modification from ×0.1 to ×0.75 in BuildDiffuseLightMaps()][:lighting] | ||||
| [1:48:00][Our octahedral maps are still seeing light from the wrong directions][:"debug visualisation" :lighting :run] | ||||
| [1:48:38][A few words on languages with non-helpful "error-catching" features][:language :run] | ||||
| [1:50:56][Consider our problem to be an indexing one][:"debug visualisation" :lighting :run] | ||||
| [1:53:12][Q&A][:speech] | ||||
| [1:53:29][@uplinkcoder][Q: Try moving the light][:lighting] | ||||
| [1:53:42][Step through the :lighting][:"debug visualisation" :run] | ||||
| [1:53:57][Make UpdateAndRenderWorld() offset the debug light in X][:lighting] | ||||
| [1:54:23][See how that affects our octahedral lines][:"debug visualisation" :lighting :run] | ||||
| [1:55:01][Make UpdateAndRenderWorld() offset the debug light the opposite direction in X][:lighting] | ||||
| [1:55:17][See how that affects our octahedral lines][:"debug visualisation" :lighting :run] | ||||
| [1:56:32][Prevent UpdateAndRenderWorld() from offsetting the debug light][:lighting] | ||||
| [1:57:02][@miltondts][Q: Why are there two lit areas in the map with only one light source?][:lighting] | ||||
| [1:57:14][The :lighting gets tiled around the world][:run] | ||||
| [1:58:37][Disable LIGHTING_USE_GRID][:lighting] | ||||
| [1:58:53][Our :"debug visualisation" is wrong][:lighting :run] | ||||
| [1:59:27][Let UpdateAndRenderWorld() call UpdateLighting() every frame][:lighting] | ||||
| [1:59:40][Our :"debug visualisation" is wrong][:lighting :run] | ||||
| [2:00:01][Scrutinise DebugDrawOctahedralValues() and related functions for bugs][:"debug visualisation" :lighting :research] | ||||
| [2:06:11][Check out our octahedral lines while moving the light][:"debug visualisation" :lighting :run] | ||||
| [2:07:41][Let LIGHT_ATLAS_ASSERT() actually Assert()][:language] | ||||
| [2:09:51][Happily fail to hit any LIGHT_ATLAS_ASSERT()][:"debug visualisation" :lighting :run] | ||||
| [2:11:03][@uplinkcoder][Q: PushDebugLine() parameter order maybe?][:"debug visualisation" :lighting] | ||||
| [2:12:05][@uplinkcoder][Q: Direction inverted?][:"debug visualisation" :lighting] | ||||
| [2:12:11][Eyeball the octahedral lines, not seeing inversion][:"debug visualisation" :lighting :run] | ||||
| [2:13:35][Briefly scrutinise DirectionFromTxTy() for bugs][:lighting :research] | ||||
| [2:14:29][@vaualbus][Q: Does this not pass through the thing we did for having the 3D texture? Maybe we are tilting the line in the shader][:"debug visualisation" :lighting] | ||||
| [2:15:17][Thank you, everyone][:speech] | ||||
| [/video] | ||||
		Loading…
	
		Reference in New Issue