Handmade Hero»Episode Guide
Adding a Filmic Response Curve
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:00Recap and set the stage for the day improving the quality of single bright light sources
🏃
0:00Recap and set the stage for the day improving the quality of single bright light sources
🏃
0:00Recap and set the stage for the day improving the quality of single bright light sources
🏃
1:07Decrease RayCount from 16 to 8 in GridRayCast()
1:07Decrease RayCount from 16 to 8 in GridRayCast()
1:07Decrease RayCount from 16 to 8 in GridRayCast()
1:24Smooth framerate with good light everywhere other than around small fast-moving light sources
🏃
1:24Smooth framerate with good light everywhere other than around small fast-moving light sources
🏃
1:24Smooth framerate with good light everywhere other than around small fast-moving light sources
🏃
2:35Diffuse gather looks quite good, and the flicker is good enough
🏃
2:35Diffuse gather looks quite good, and the flicker is good enough
🏃
2:35Diffuse gather looks quite good, and the flicker is good enough
🏃
5:19Consider writing light into overlapping probes as a forward pass
🏃
5:19Consider writing light into overlapping probes as a forward pass
🏃
5:19Consider writing light into overlapping probes as a forward pass
🏃
7:26Toggle on DebugDrawSpatialGrid() in UpdateLighting()
7:26Toggle on DebugDrawSpatialGrid() in UpdateLighting()
7:26Toggle on DebugDrawSpatialGrid() in UpdateLighting()
7:39Our light source is lower than expected
🏃
7:39Our light source is lower than expected
🏃
7:39Our light source is lower than expected
🏃
8:27Make AddPlayer() elevate the head light from 0 to 0.5
8:27Make AddPlayer() elevate the head light from 0 to 0.5
8:27Make AddPlayer() elevate the head light from 0 to 0.5
9:10Our light is higher up
🏃
9:10Our light is higher up
🏃
9:10Our light is higher up
🏃
9:19Make AddPlayer() elevate the head light from 0.5 to 1
9:19Make AddPlayer() elevate the head light from 0.5 to 1
9:19Make AddPlayer() elevate the head light from 0.5 to 1
9:27Our light is less square
🏃
9:27Our light is less square
🏃
9:27Our light is less square
🏃
10:51Toggle on DebugDrawOctahedralValues() in UpdateLighting()
10:51Toggle on DebugDrawOctahedralValues() in UpdateLighting()
10:51Toggle on DebugDrawOctahedralValues() in UpdateLighting()
11:01Glimpse our spatial grid and octahedral values
🏃
11:01Glimpse our spatial grid and octahedral values
🏃
11:01Glimpse our spatial grid and octahedral values
🏃
11:05Toggle off DebugDrawOctahedralValues() and DebugDrawSpatialGrid() in UpdateLighting()
11:05Toggle off DebugDrawOctahedralValues() and DebugDrawSpatialGrid() in UpdateLighting()
11:05Toggle off DebugDrawOctahedralValues() and DebugDrawSpatialGrid() in UpdateLighting()
11:12Our light is still a bit square
🏃
11:12Our light is still a bit square
🏃
11:12Our light is still a bit square
🏃
11:39Make AddPlayer() decrease the head light's intensity from 0.5 to 0.25, and add the glove light
11:39Make AddPlayer() decrease the head light's intensity from 0.5 to 0.25, and add the glove light
11:39Make AddPlayer() decrease the head light's intensity from 0.5 to 0.25, and add the glove light
11:55Our glove light has a fair bit of lag, and it's still a bit square
🏃
11:55Our glove light has a fair bit of lag, and it's still a bit square
🏃
11:55Our glove light has a fair bit of lag, and it's still a bit square
🏃
13:30nomad_pixel Wait, I grabbed some water. Is this with tone mapping now?
🗪
13:30nomad_pixel Wait, I grabbed some water. Is this with tone mapping now?
🗪
13:30nomad_pixel Wait, I grabbed some water. Is this with tone mapping now?
🗪
14:08Make AddPlayer() elevate the glove light from 0 to 0.5
14:08Make AddPlayer() elevate the glove light from 0 to 0.5
14:08Make AddPlayer() elevate the glove light from 0 to 0.5
14:30Consider the possibility of repairing the squareness
🏃
14:30Consider the possibility of repairing the squareness
🏃
14:30Consider the possibility of repairing the squareness
🏃
15:05Consider doing filmic tone mapping1,2,3
📖
15:05Consider doing filmic tone mapping1,2,3
📖
15:05Consider doing filmic tone mapping1,2,3
📖
29:55Introduce ACESFilm()4 and remove IrradiancePack() and stale code from SumLight()
29:55Introduce ACESFilm()4 and remove IrradiancePack() and stale code from SumLight()
29:55Introduce ACESFilm()4 and remove IrradiancePack() and stale code from SumLight()
34:03Check out our "before tone mapping" lighting
🏃
34:03Check out our "before tone mapping" lighting
🏃
34:03Check out our "before tone mapping" lighting
🏃
34:17Make the fragment shader in CompileZBiasProgram() call ACESFilm()
34:17Make the fragment shader in CompileZBiasProgram() call ACESFilm()
34:17Make the fragment shader in CompileZBiasProgram() call ACESFilm()
35:37Our light already looks a lot more dramatic, but still square
🏃
35:37Our light already looks a lot more dramatic, but still square
🏃
35:37Our light already looks a lot more dramatic, but still square
🏃
37:27Enable LIGHTS_ARE_SPHERES
37:27Enable LIGHTS_ARE_SPHERES
37:27Enable LIGHTS_ARE_SPHERES
37:32The lights dim, but remain square
🏃
37:32The lights dim, but remain square
🏃
37:32The lights dim, but remain square
🏃
37:57Disable LIGHTS_ARE_SPHERES
37:57Disable LIGHTS_ARE_SPHERES
37:57Disable LIGHTS_ARE_SPHERES
38:04Consider rasterising light into overlapped probes as a pre-pass
🏃
38:04Consider rasterising light into overlapped probes as a pre-pass
🏃
38:04Consider rasterising light into overlapped probes as a pre-pass
🏃
41:13drzool How about jittering the light probe positions?
🗪
41:13drzool How about jittering the light probe positions?
🗪
41:13drzool How about jittering the light probe positions?
🗪
42:20Admire the lighting besides the squareness
🏃
42:20Admire the lighting besides the squareness
🏃
42:20Admire the lighting besides the squareness
🏃
43:54Toggle off room lights in StandardLightingPattern()
43:54Toggle off room lights in StandardLightingPattern()
43:54Toggle off room lights in StandardLightingPattern()
44:07Admire the indirect lighting with only one light source
🏃
44:07Admire the indirect lighting with only one light source
🏃
44:07Admire the indirect lighting with only one light source
🏃
44:34Increase RayCount from 8 to 64 in GridRayCast()
44:34Increase RayCount from 8 to 64 in GridRayCast()
44:34Increase RayCount from 8 to 64 in GridRayCast()
44:52The light now has very little flicker
🏃
44:52The light now has very little flicker
🏃
44:52The light now has very little flicker
🏃
45:11Decrease RayCount from 64 to 16 in GridRayCast()
45:11Decrease RayCount from 64 to 16 in GridRayCast()
45:11Decrease RayCount from 64 to 16 in GridRayCast()
45:13Consider rasterising light into overlapped probes as a pre-pass
🏃
45:13Consider rasterising light into overlapped probes as a pre-pass
🏃
45:13Consider rasterising light into overlapped probes as a pre-pass
🏃
46:50Toggle on DebugDrawOctahedralValues() in UpdateLighting()
46:50Toggle on DebugDrawOctahedralValues() in UpdateLighting()
46:50Toggle on DebugDrawOctahedralValues() in UpdateLighting()
46:52Our light fall-off has a hard edge not explained by linear interpolation
🏃
46:52Our light fall-off has a hard edge not explained by linear interpolation
🏃
46:52Our light fall-off has a hard edge not explained by linear interpolation
🏃
49:29Make SampleLighting() use a pure diffuse material
49:29Make SampleLighting() use a pure diffuse material
49:29Make SampleLighting() use a pure diffuse material
50:00Our diffuse map doesn't quite have the same problem
🏃
50:00Our diffuse map doesn't quite have the same problem
🏃
50:00Our diffuse map doesn't quite have the same problem
🏃
50:21Toggle off DebugDrawOctahedralValues() in UpdateLighting()
50:21Toggle off DebugDrawOctahedralValues() in UpdateLighting()
50:21Toggle off DebugDrawOctahedralValues() in UpdateLighting()
50:28Our light is still more square than we'd like
🏃
50:28Our light is still more square than we'd like
🏃
50:28Our light is still more square than we'd like
🏃
50:38Make SampleLighting() use a pure specular material
50:38Make SampleLighting() use a pure specular material
50:38Make SampleLighting() use a pure specular material
50:45Our small moving light is very hard edged in the specular map
🏃
50:45Our small moving light is very hard edged in the specular map
🏃
50:45Our small moving light is very hard edged in the specular map
🏃
50:56Make DebugDrawOctahedralValues() draw the SpecAtlas values, toggling it on in UpdateLighting()
50:56Make DebugDrawOctahedralValues() draw the SpecAtlas values, toggling it on in UpdateLighting()
50:56Make DebugDrawOctahedralValues() draw the SpecAtlas values, toggling it on in UpdateLighting()
51:23Our light probes pick up a far more gradual fall-off than appears
🏃
51:23Our light probes pick up a far more gradual fall-off than appears
🏃
51:23Our light probes pick up a far more gradual fall-off than appears
🏃
53:37Reacquaint ourselves with SumLight()
📖
53:37Reacquaint ourselves with SumLight()
📖
53:37Reacquaint ourselves with SumLight()
📖
1:01:10Check out our current light
🏃
1:01:10Check out our current light
🏃
1:01:10Check out our current light
🏃
1:01:22Prevent SumLight() from shrinking LIGHT_LOOKUP_VOXEL_DIM by 1 when computing VoxR
1:01:22Prevent SumLight() from shrinking LIGHT_LOOKUP_VOXEL_DIM by 1 when computing VoxR
1:01:22Prevent SumLight() from shrinking LIGHT_LOOKUP_VOXEL_DIM by 1 when computing VoxR
1:01:30Our lighting shifts
🏃
1:01:30Our lighting shifts
🏃
1:01:30Our lighting shifts
🏃
1:02:57Revert SumLight() to shrink LIGHT_LOOKUP_VOXEL_DIM by 1 when computing VoxR
1:02:57Revert SumLight() to shrink LIGHT_LOOKUP_VOXEL_DIM by 1 when computing VoxR
1:02:57Revert SumLight() to shrink LIGHT_LOOKUP_VOXEL_DIM by 1 when computing VoxR
1:03:36Hunt for a corresponding minus 1 in FullCast()
📖
1:03:36Hunt for a corresponding minus 1 in FullCast()
📖
1:03:36Hunt for a corresponding minus 1 in FullCast()
📖
1:06:19The light fall-off's hardness is influenced by the reflection angle
🏃
1:06:19The light fall-off's hardness is influenced by the reflection angle
🏃
1:06:19The light fall-off's hardness is influenced by the reflection angle
🏃
1:08:20Make SampleLighting() use a pure diffuse material
1:08:20Make SampleLighting() use a pure diffuse material
1:08:20Make SampleLighting() use a pure diffuse material
1:08:26Check out our pure diffuse light
🏃
1:08:26Check out our pure diffuse light
🏃
1:08:26Check out our pure diffuse light
🏃
1:09:53Consider changing the interpolation of the octahedral map
🏃
1:09:53Consider changing the interpolation of the octahedral map
🏃
1:09:53Consider changing the interpolation of the octahedral map
🏃
1:11:38Introduce Mestre() for SumLight() to use
1:11:38Introduce Mestre() for SumLight() to use
1:11:38Introduce Mestre() for SumLight() to use
1:19:07Our light is more circular
🏃
1:19:07Our light is more circular
🏃
1:19:07Our light is more circular
🏃
1:20:00Toggle off DebugDrawOctahedralValues() in UpdateLighting()
1:20:00Toggle off DebugDrawOctahedralValues() in UpdateLighting()
1:20:00Toggle off DebugDrawOctahedralValues() in UpdateLighting()
1:20:10Our more circular light is nicer, but maybe still not quite right
🏃
1:20:10Our more circular light is nicer, but maybe still not quite right
🏃
1:20:10Our more circular light is nicer, but maybe still not quite right
🏃
1:21:27Toggle on room lights in StandardLightingPattern()
1:21:27Toggle on room lights in StandardLightingPattern()
1:21:27Toggle on room lights in StandardLightingPattern()
1:21:44Our more circular light is better than the alternative
🏃
1:21:44Our more circular light is better than the alternative
🏃
1:21:44Our more circular light is better than the alternative
🏃
1:22:59frizi09 I still believe this might be just an artifact of too low voxel resolution, and what we see is actually expected given the current constraints
🗪
1:22:59frizi09 I still believe this might be just an artifact of too low voxel resolution, and what we see is actually expected given the current constraints
🗪
1:22:59frizi09 I still believe this might be just an artifact of too low voxel resolution, and what we see is actually expected given the current constraints
🗪
1:24:22Comment out the Mestre() calls in SumLight()
1:24:22Comment out the Mestre() calls in SumLight()
1:24:22Comment out the Mestre() calls in SumLight()
1:24:41Our light looks great barring the squareness
🏃
1:24:41Our light looks great barring the squareness
🏃
1:24:41Our light looks great barring the squareness
🏃
1:24:55Determine to place a known point of light in the system
📖
1:24:55Determine to place a known point of light in the system
📖
1:24:55Determine to place a known point of light in the system
📖
1:26:30Determine to make ComputeLightPropagationWork() further slice up the work for better threading
1:26:30Determine to make ComputeLightPropagationWork() further slice up the work for better threading
1:26:30Determine to make ComputeLightPropagationWork() further slice up the work for better threading
1:28:07Make FullCast() hard set the TransferPPS of all light probes in a radial pattern
1:28:07Make FullCast() hard set the TransferPPS of all light probes in a radial pattern
1:28:07Make FullCast() hard set the TransferPPS of all light probes in a radial pattern
1:31:34Our light fall-off does not look radial
🏃
1:31:34Our light fall-off does not look radial
🏃
1:31:34Our light fall-off does not look radial
🏃
1:31:56Multiply the distance between the origin and light probe by 0.1 to try and prevent more distant probes from zeroing out
1:31:56Multiply the distance between the origin and light probe by 0.1 to try and prevent more distant probes from zeroing out
1:31:56Multiply the distance between the origin and light probe by 0.1 to try and prevent more distant probes from zeroing out
1:32:05Our light fall-off looks radial
🏃
1:32:05Our light fall-off looks radial
🏃
1:32:05Our light fall-off looks radial
🏃
1:32:07Multiply the distance between the origin and light probe by 0.25
1:32:07Multiply the distance between the origin and light probe by 0.25
1:32:07Multiply the distance between the origin and light probe by 0.25
1:32:16Our light fall-off looks more blocky
🏃
1:32:16Our light fall-off looks more blocky
🏃
1:32:16Our light fall-off looks more blocky
🏃
1:33:38Make the fragment shader in CompileZBiasProgram() remove a guessed 0.1 from the SurfaceReflect
1:33:38Make the fragment shader in CompileZBiasProgram() remove a guessed 0.1 from the SurfaceReflect
1:33:38Make the fragment shader in CompileZBiasProgram() remove a guessed 0.1 from the SurfaceReflect
1:34:11Our light is blown out
🏃
1:34:11Our light is blown out
🏃
1:34:11Our light is blown out
🏃
1:34:20Make the fragment shader in CompileZBiasProgram() clamp SurfaceReflect to 0
1:34:20Make the fragment shader in CompileZBiasProgram() clamp SurfaceReflect to 0
1:34:20Make the fragment shader in CompileZBiasProgram() clamp SurfaceReflect to 0
1:35:11Our light fall-off is now circular
🏃
1:35:11Our light fall-off is now circular
🏃
1:35:11Our light fall-off is now circular
🏃
1:35:29Decrease the SurfaceReflect light floor removal from 0.1 to 0.01
1:35:29Decrease the SurfaceReflect light floor removal from 0.1 to 0.01
1:35:29Decrease the SurfaceReflect light floor removal from 0.1 to 0.01
1:35:41Our light fall-off is a little blocky again
🏃
1:35:41Our light fall-off is a little blocky again
🏃
1:35:41Our light fall-off is a little blocky again
🏃
1:35:48Increase the SurfaceReflect light floor removal from 0.01 to 0.05
1:35:48Increase the SurfaceReflect light floor removal from 0.01 to 0.05
1:35:48Increase the SurfaceReflect light floor removal from 0.01 to 0.05
1:36:02Our light fall-off is circular
🏃
1:36:02Our light fall-off is circular
🏃
1:36:02Our light fall-off is circular
🏃
1:36:18Comment out the hardcoded TransferPPS in FullCast()
1:36:18Comment out the hardcoded TransferPPS in FullCast()
1:36:18Comment out the hardcoded TransferPPS in FullCast()
1:36:29Our light falls to black
🏃
1:36:29Our light falls to black
🏃
1:36:29Our light falls to black
🏃
1:37:26Comment out the SurfaceReflect light floor removal in the fragment shader
1:37:26Comment out the SurfaceReflect light floor removal in the fragment shader
1:37:26Comment out the SurfaceReflect light floor removal in the fragment shader
1:37:36Our light is back
🏃
1:37:36Our light is back
🏃
1:37:36Our light is back
🏃
1:37:49Check Clamp0Inf() for bugs
📖
1:37:49Check Clamp0Inf() for bugs
📖
1:37:49Check Clamp0Inf() for bugs
📖
1:38:08Decrease the SurfaceReflect light floor removal from 0.05 to 0
1:38:08Decrease the SurfaceReflect light floor removal from 0.05 to 0
1:38:08Decrease the SurfaceReflect light floor removal from 0.05 to 0
1:38:21Our light remains
🏃
1:38:21Our light remains
🏃
1:38:21Our light remains
🏃
1:38:26Increase the SurfaceReflect light floor removal from 0 to 0.01
1:38:26Increase the SurfaceReflect light floor removal from 0 to 0.01
1:38:26Increase the SurfaceReflect light floor removal from 0 to 0.01
1:38:35Our light darkens considerably
🏃
1:38:35Our light darkens considerably
🏃
1:38:35Our light darkens considerably
🏃
1:38:41Decrease the SurfaceReflect light floor removal from 0.01 to 0.001
1:38:41Decrease the SurfaceReflect light floor removal from 0.01 to 0.001
1:38:41Decrease the SurfaceReflect light floor removal from 0.01 to 0.001
1:38:50Our light brightens somewhat
🏃
1:38:50Our light brightens somewhat
🏃
1:38:50Our light brightens somewhat
🏃
1:39:07Increase the SurfaceReflect light floor removal from 0.001 to 0.01
1:39:07Increase the SurfaceReflect light floor removal from 0.001 to 0.01
1:39:07Increase the SurfaceReflect light floor removal from 0.001 to 0.01
1:39:19Our light fall-off is very circular
🏃
1:39:19Our light fall-off is very circular
🏃
1:39:19Our light fall-off is very circular
🏃
1:39:44leemyy Considering this is supposed to be specular, I find it odd that the region at full brightness is so large
🗪
1:39:44leemyy Considering this is supposed to be specular, I find it odd that the region at full brightness is so large
🗪
1:39:44leemyy Considering this is supposed to be specular, I find it odd that the region at full brightness is so large
🗪
1:39:57Make SampleLighting() use a pure specular material
1:39:57Make SampleLighting() use a pure specular material
1:39:57Make SampleLighting() use a pure specular material
1:40:04Our specular light fall-off remains circular
🏃
1:40:04Our specular light fall-off remains circular
🏃
1:40:04Our specular light fall-off remains circular
🏃
1:40:25Make SampleLighting() use a pure diffuse material
1:40:25Make SampleLighting() use a pure diffuse material
1:40:25Make SampleLighting() use a pure diffuse material
1:40:28Applying a natural floor enables our light to fall off radially
📖
1:40:28Applying a natural floor enables our light to fall off radially
📖
1:40:28Applying a natural floor enables our light to fall off radially
📖
1:43:00Decrease the SurfaceReflect light floor removal from 0.01 to 0.0001
1:43:00Decrease the SurfaceReflect light floor removal from 0.01 to 0.0001
1:43:00Decrease the SurfaceReflect light floor removal from 0.01 to 0.0001
1:43:14Our light fall-off is square again
🏃
1:43:14Our light fall-off is square again
🏃
1:43:14Our light fall-off is square again
🏃
1:43:23Increase the SurfaceReflect light floor removal from 0.0001 to 0.01
1:43:23Increase the SurfaceReflect light floor removal from 0.0001 to 0.01
1:43:23Increase the SurfaceReflect light floor removal from 0.0001 to 0.01
1:43:33Our light fall-off is circular, but the solution is too dark
🏃
1:43:33Our light fall-off is circular, but the solution is too dark
🏃
1:43:33Our light fall-off is circular, but the solution is too dark
🏃
1:43:58Remove the SurfaceReflect light floor removal
1:43:58Remove the SurfaceReflect light floor removal
1:43:58Remove the SurfaceReflect light floor removal
1:44:18pfizzyenator Is the ACESFilm() function contributing to the badness?
🗪
1:44:18pfizzyenator Is the ACESFilm() function contributing to the badness?
🗪
1:44:18pfizzyenator Is the ACESFilm() function contributing to the badness?
🗪
1:44:27The light with ACESFilm()
🏃
1:44:27The light with ACESFilm()
🏃
1:44:27The light with ACESFilm()
🏃
1:44:33Remove the ACESFilm() call
1:44:33Remove the ACESFilm() call
1:44:33Remove the ACESFilm() call
1:44:46The light without ACESFilm()
🏃
1:44:46The light without ACESFilm()
🏃
1:44:46The light without ACESFilm()
🏃
1:44:55Reinsert the ACESFilm() call
1:44:55Reinsert the ACESFilm() call
1:44:55Reinsert the ACESFilm() call
1:45:02The light with ACESFilm()
🏃
1:45:02The light with ACESFilm()
🏃
1:45:02The light with ACESFilm()
🏃
1:45:27Consider the light pretty reasonable
🏃
1:45:27Consider the light pretty reasonable
🏃
1:45:27Consider the light pretty reasonable
🏃
1:47:00Without flooring, linear interpolation won't cut it
📖
1:47:00Without flooring, linear interpolation won't cut it
📖
1:47:00Without flooring, linear interpolation won't cut it
📖
1:47:39frizi09 Would it be practical to up the voxel resolution a bit? Just to see the comparison
🗪
1:47:39frizi09 Would it be practical to up the voxel resolution a bit? Just to see the comparison
🗪
1:47:39frizi09 Would it be practical to up the voxel resolution a bit? Just to see the comparison
🗪
1:48:38Double the LIGHT_LOOKUP_VOXEL_DIM_X and LIGHT_LOOKUP_VOXEL_DIM_Y
1:48:38Double the LIGHT_LOOKUP_VOXEL_DIM_X and LIGHT_LOOKUP_VOXEL_DIM_Y
1:48:38Double the LIGHT_LOOKUP_VOXEL_DIM_X and LIGHT_LOOKUP_VOXEL_DIM_Y
1:49:01Our lighting region is larger
🏃
1:49:01Our lighting region is larger
🏃
1:49:01Our lighting region is larger
🏃
1:49:23Make UpdateLighting() halve the VoxCellDim in all dimensions
1:49:23Make UpdateLighting() halve the VoxCellDim in all dimensions
1:49:23Make UpdateLighting() halve the VoxCellDim in all dimensions
1:50:04Hit an out-of-bounds assert in GridBuildSpatialPartition()
🏃
1:50:04Hit an out-of-bounds assert in GridBuildSpatialPartition()
🏃
1:50:04Hit an out-of-bounds assert in GridBuildSpatialPartition()
🏃
1:50:28Make UpdateLighting() retain the full VoxCellDim in Z
1:50:28Make UpdateLighting() retain the full VoxCellDim in Z
1:50:28Make UpdateLighting() retain the full VoxCellDim in Z
1:51:03Hit an out-of-bounds assert in GridBuildSpatialPartition()
🏃
1:51:03Hit an out-of-bounds assert in GridBuildSpatialPartition()
🏃
1:51:03Hit an out-of-bounds assert in GridBuildSpatialPartition()
🏃
1:51:33Scour UpdateLighting() for sources of our out-of-bounds lookup
📖
1:51:33Scour UpdateLighting() for sources of our out-of-bounds lookup
📖
1:51:33Scour UpdateLighting() for sources of our out-of-bounds lookup
📖
1:52:22Run an -Od build until hitting our IsInBounds() assertion in FlatIndexFrom()
🏃
1:52:22Run an -Od build until hitting our IsInBounds() assertion in FlatIndexFrom()
🏃
1:52:22Run an -Od build until hitting our IsInBounds() assertion in FlatIndexFrom()
🏃
1:55:10Investigate our IsInBounds() assertion hit in FlatIndexFrom()
🏃
1:55:10Investigate our IsInBounds() assertion hit in FlatIndexFrom()
🏃
1:55:10Investigate our IsInBounds() assertion hit in FlatIndexFrom()
🏃
1:56:57Remove the Z loops from GridBuildSpatialPartition()
1:56:57Remove the Z loops from GridBuildSpatialPartition()
1:56:57Remove the Z loops from GridBuildSpatialPartition()
1:58:40Run an -O2 build without asserting
🏃
1:58:40Run an -O2 build without asserting
🏃
1:58:40Run an -O2 build without asserting
🏃
1:59:06The light looks better, but with shiny sampling errors
🏃
1:59:06The light looks better, but with shiny sampling errors
🏃
1:59:06The light looks better, but with shiny sampling errors
🏃
1:59:47Quadruple the LIGHT_LOOKUP_VOXEL_DIM_X and LIGHT_LOOKUP_VOXEL_DIM_Y and make UpdateLighting() quarter the VoxCellDim in X and Y
1:59:47Quadruple the LIGHT_LOOKUP_VOXEL_DIM_X and LIGHT_LOOKUP_VOXEL_DIM_Y and make UpdateLighting() quarter the VoxCellDim in X and Y
1:59:47Quadruple the LIGHT_LOOKUP_VOXEL_DIM_X and LIGHT_LOOKUP_VOXEL_DIM_Y and make UpdateLighting() quarter the VoxCellDim in X and Y
2:00:16Hit an OpenGL error
🏃
2:00:16Hit an OpenGL error
🏃
2:00:16Hit an OpenGL error
🏃
2:00:26Revert LIGHT_LOOKUP_VOXEL_DIM_X, LIGHT_LOOKUP_VOXEL_DIM_Y and VoxCellDim to their original values
2:00:26Revert LIGHT_LOOKUP_VOXEL_DIM_X, LIGHT_LOOKUP_VOXEL_DIM_Y and VoxCellDim to their original values
2:00:26Revert LIGHT_LOOKUP_VOXEL_DIM_X, LIGHT_LOOKUP_VOXEL_DIM_Y and VoxCellDim to their original values
2:00:41Consider bigger light sources to be our only option
🏃
2:00:41Consider bigger light sources to be our only option
🏃
2:00:41Consider bigger light sources to be our only option
🏃
2:01:32frizi09 Bigger and slightly weaker light source could work there, though
🗪
2:01:32frizi09 Bigger and slightly weaker light source could work there, though
🗪
2:01:32frizi09 Bigger and slightly weaker light source could work there, though
🗪
2:01:51Our light is pretty good
🏃
2:01:51Our light is pretty good
🏃
2:01:51Our light is pretty good
🏃
2:02:08Make AddPlayer() increase the lights' size to 0.7 and decrease the brightness to 0.1
2:02:08Make AddPlayer() increase the lights' size to 0.7 and decrease the brightness to 0.1
2:02:08Make AddPlayer() increase the lights' size to 0.7 and decrease the brightness to 0.1
2:02:48Our moving lights are less square
🏃
2:02:48Our moving lights are less square
🏃
2:02:48Our moving lights are less square
🏃
2:03:14Uncomment the Mestre() calls in SumLight()
2:03:14Uncomment the Mestre() calls in SumLight()
2:03:14Uncomment the Mestre() calls in SumLight()
2:03:37Our moving lights are more radial
🏃
2:03:37Our moving lights are more radial
🏃
2:03:37Our moving lights are more radial
🏃
2:03:52Make AddPlayer() increase the lights' size to 1
2:03:52Make AddPlayer() increase the lights' size to 1
2:03:52Make AddPlayer() increase the lights' size to 1
2:04:17pfizzyenator How trivial is it to move to GPU?
🗪
2:04:17pfizzyenator How trivial is it to move to GPU?
🗪
2:04:17pfizzyenator How trivial is it to move to GPU?
🗪
2:04:44This bigger light actually looks square as the main light source outdoors
🏃
2:04:44This bigger light actually looks square as the main light source outdoors
🏃
2:04:44This bigger light actually looks square as the main light source outdoors
🏃
2:07:00Make AddPlayer() increase the lights' brightness to 0.5
2:07:00Make AddPlayer() increase the lights' brightness to 0.5
2:07:00Make AddPlayer() increase the lights' brightness to 0.5
2:07:30Our lights are blown out
🏃
2:07:30Our lights are blown out
🏃
2:07:30Our lights are blown out
🏃
2:07:42Reinstate the SurfaceReflect light floor removal of 0.01
2:07:42Reinstate the SurfaceReflect light floor removal of 0.01
2:07:42Reinstate the SurfaceReflect light floor removal of 0.01
2:08:27Our light fall-off is radial
🏃
2:08:27Our light fall-off is radial
🏃
2:08:27Our light fall-off is radial
🏃
2:10:27Rewrite the SurfaceReflect floor removal and ACESFilm() application
2:10:27Rewrite the SurfaceReflect floor removal and ACESFilm() application
2:10:27Rewrite the SurfaceReflect floor removal and ACESFilm() application
2:10:54Our light fall-off is radial
🏃
2:10:54Our light fall-off is radial
🏃
2:10:54Our light fall-off is radial
🏃
2:11:03Make StandardLightingPattern() increase the room lights' brightness to 0.5
2:11:03Make StandardLightingPattern() increase the room lights' brightness to 0.5
2:11:03Make StandardLightingPattern() increase the room lights' brightness to 0.5
2:12:12Patches of the solution fall to full darkness
🏃
2:12:12Patches of the solution fall to full darkness
🏃
2:12:12Patches of the solution fall to full darkness
🏃
2:13:15Make StandardLightingPattern() increase the room lights' brightness to 1
2:13:15Make StandardLightingPattern() increase the room lights' brightness to 1
2:13:15Make StandardLightingPattern() increase the room lights' brightness to 1
2:13:32Patches of the solution still fall to full darkness
🏃
2:13:32Patches of the solution still fall to full darkness
🏃
2:13:32Patches of the solution still fall to full darkness
🏃
2:14:20Revert the room lights' brightness to 0.05 in StandardLightingPattern(), and that of the head and glove lights to 0.1 in AddPlayer()
2:14:20Revert the room lights' brightness to 0.05 in StandardLightingPattern(), and that of the head and glove lights to 0.1 in AddPlayer()
2:14:20Revert the room lights' brightness to 0.05 in StandardLightingPattern(), and that of the head and glove lights to 0.1 in AddPlayer()
2:15:03Our light is dim but circular
🏃
2:15:03Our light is dim but circular
🏃
2:15:03Our light is dim but circular
🏃
2:15:06Decrease the SurfaceReflect light floor removal from 1 to 0
2:15:06Decrease the SurfaceReflect light floor removal from 1 to 0
2:15:06Decrease the SurfaceReflect light floor removal from 1 to 0
2:15:19Our light fall-off is square
🏃
2:15:19Our light fall-off is square
🏃
2:15:19Our light fall-off is square
🏃
2:15:37Try squaring the SurfaceReflect
2:15:37Try squaring the SurfaceReflect
2:15:37Try squaring the SurfaceReflect
2:15:59Our light fall-off is way less blocky
🏃
2:15:59Our light fall-off is way less blocky
🏃
2:15:59Our light fall-off is way less blocky
🏃
2:16:19Increase the SurfaceReflect multiplier from 100 to 1000
2:16:19Increase the SurfaceReflect multiplier from 100 to 1000
2:16:19Increase the SurfaceReflect multiplier from 100 to 1000
2:16:24Our light brightens a touch
🏃
2:16:24Our light brightens a touch
🏃
2:16:24Our light brightens a touch
🏃
2:17:06Partially revert the SurfaceReflect light floor removal to 0
2:17:06Partially revert the SurfaceReflect light floor removal to 0
2:17:06Partially revert the SurfaceReflect light floor removal to 0
2:17:13Our light fall-off is square
🏃
2:17:13Our light fall-off is square
🏃
2:17:13Our light fall-off is square
🏃
2:17:38Try to flatten the ACES filmic tone mapping curve5,6
📖
2:17:38Try to flatten the ACES filmic tone mapping curve5,6
📖
2:17:38Try to flatten the ACES filmic tone mapping curve5,6
📖
2:19:31Try setting B to 0 in ACESFilm()
2:19:31Try setting B to 0 in ACESFilm()
2:19:31Try setting B to 0 in ACESFilm()
2:19:44Our light fall-off doesn't differ much
🏃
2:19:44Our light fall-off doesn't differ much
🏃
2:19:44Our light fall-off doesn't differ much
🏃
2:20:05Play with the ACES filmic tone mapping curve7
📖
2:20:05Play with the ACES filmic tone mapping curve7
📖
2:20:05Play with the ACES filmic tone mapping curve7
📖
2:21:02Try setting Z to 0.05 [typo] in ACESFilm()
2:21:02Try setting Z to 0.05 [typo] in ACESFilm()
2:21:02Try setting Z to 0.05 [typo] in ACESFilm()
2:21:10Our light fall-off remains square
🏃
2:21:10Our light fall-off remains square
🏃
2:21:10Our light fall-off remains square
🏃
2:21:44Revert ACESFilm()
2:21:44Revert ACESFilm()
2:21:44Revert ACESFilm()
2:21:56pfizzyenator I think you typed 0.05?
🗪
2:21:56pfizzyenator I think you typed 0.05?
🗪
2:21:56pfizzyenator I think you typed 0.05?
🗪
2:22:04Fix typo of Z from 0.05 to 0.5 in ACESFilm()
2:22:04Fix typo of Z from 0.05 to 0.5 in ACESFilm()
2:22:04Fix typo of Z from 0.05 to 0.5 in ACESFilm()
2:22:06Our light fall-off remains square
🏃
2:22:06Our light fall-off remains square
🏃
2:22:06Our light fall-off remains square
🏃
2:23:22Revert ACESFilm()
2:23:22Revert ACESFilm()
2:23:22Revert ACESFilm()
2:24:02Consider adding self-illumination and bloom, maybe leaving the square fall-off, removing 3D from the collision and adding gameplay rooms
🏃
2:24:02Consider adding self-illumination and bloom, maybe leaving the square fall-off, removing 3D from the collision and adding gameplay rooms
🏃
2:24:02Consider adding self-illumination and bloom, maybe leaving the square fall-off, removing 3D from the collision and adding gameplay rooms
🏃
2:26:56Enable LIGHTS_ARE_SPHERES
2:26:56Enable LIGHTS_ARE_SPHERES
2:26:56Enable LIGHTS_ARE_SPHERES
2:27:22Our light fall-off isn't materially different
🏃
2:27:22Our light fall-off isn't materially different
🏃
2:27:22Our light fall-off isn't materially different
🏃
2:27:35Disable LIGHTS_ARE_SPHERES
2:27:35Disable LIGHTS_ARE_SPHERES
2:27:35Disable LIGHTS_ARE_SPHERES
2:27:41Our light fall-off isn't materially different
🏃
2:27:41Our light fall-off isn't materially different
🏃
2:27:41Our light fall-off isn't materially different
🏃
2:27:52Decrease RayCount from 16 to 8 in GridRayCast()
2:27:52Decrease RayCount from 16 to 8 in GridRayCast()
2:27:52Decrease RayCount from 16 to 8 in GridRayCast()
2:27:56The light looks great
🏃
2:27:56The light looks great
🏃
2:27:56The light looks great
🏃
2:28:51Call it a day, with the determination to add bloom next time
🗩
2:28:51Call it a day, with the determination to add bloom next time
🗩
2:28:51Call it a day, with the determination to add bloom next time
🗩
2:29:10pfizzyenator Framerate too high! Go back to 1 fps!
🗪
2:29:10pfizzyenator Framerate too high! Go back to 1 fps!
🗪
2:29:10pfizzyenator Framerate too high! Go back to 1 fps!
🗪
2:29:20Thank you, everyone
🗩
2:29:20Thank you, everyone
🗩
2:29:20Thank you, everyone
🗩
2:30:21frizi09 We need an RTX ON comparison
🗪
2:30:21frizi09 We need an RTX ON comparison
🗪
2:30:21frizi09 We need an RTX ON comparison
🗪
2:30:24Thanks, everyone
🗩
2:30:24Thanks, everyone
🗩
2:30:24Thanks, everyone
🗩