Improving Light Distribution ⚠ Click here to regain focus ⚠
?
?

Keyboard Navigation

Global Keys

W, A, P / S, D, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
z Toggle filter mode V Revert filter to original state

Menu toggling

q Quotes r References f Filter c Credits

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

Credits Menu

Enter Open URL (in new tab)
0:06Recap and set the stage for the day
🗩
0:06Recap and set the stage for the day
🗩
0:06Recap and set the stage for the day
🗩
0:30Plug the SendOwl-powered contribution page1
🗹
0:30Plug the SendOwl-powered contribution page1
🗹
0:30Plug the SendOwl-powered contribution page1
🗹
7:44Run the game to see our current lighting solution
🏃
7:44Run the game to see our current lighting solution
🏃
7:44Run the game to see our current lighting solution
🏃
11:25Read through ComputeLightPropagation()
📖
11:25Read through ComputeLightPropagation()
📖
11:25Read through ComputeLightPropagation()
📖
15:37Bouncing light between emitters and reflectors
🖌
15:37Bouncing light between emitters and reflectors
🖌
15:37Bouncing light between emitters and reflectors
🖌
18:03Try to make ComputeLightPropagation() reduce the ray count per iteration
18:03Try to make ComputeLightPropagation() reduce the ray count per iteration
18:03Try to make ComputeLightPropagation() reduce the ray count per iteration
18:54Run the game to see how that looks
🏃
18:54Run the game to see how that looks
🏃
18:54Run the game to see how that looks
🏃
22:54Try to decrease the voxel resolution
22:54Try to decrease the voxel resolution
22:54Try to decrease the voxel resolution
23:30Run the game to see much smoother lighting
🏃
23:30Run the game to see much smoother lighting
🏃
23:30Run the game to see much smoother lighting
🏃
24:23Make RayCast() tint the scene grey
24:23Make RayCast() tint the scene grey
24:23Make RayCast() tint the scene grey
24:54Run the game to see how that looks with the skylight
🏃
24:54Run the game to see how that looks with the skylight
🏃
24:54Run the game to see how that looks with the skylight
🏃
25:48Lighting Improvement
🖌
25:48Lighting Improvement
🖌
25:48Lighting Improvement
🖌
29:22Check out Ward's 'Irradiance Caching Algorithm'2
📖
29:22Check out Ward's 'Irradiance Caching Algorithm'2
📖
29:22Check out Ward's 'Irradiance Caching Algorithm'2
📖
31:36Irradiance cache
🖌
31:36Irradiance cache
🖌
31:36Irradiance cache
🖌
33:21Photon tracing
🖌
33:21Photon tracing
🖌
33:21Photon tracing
🖌
34:07Replace the notion of next emission weight from ComputeLightPropagation() with an ever-decreasing accumulation of colour per ray cast iteration
34:07Replace the notion of next emission weight from ComputeLightPropagation() with an ever-decreasing accumulation of colour per ray cast iteration
34:07Replace the notion of next emission weight from ComputeLightPropagation() with an ever-decreasing accumulation of colour per ray cast iteration
35:46Run the game to see that the light looks a little more correct
🏃
35:46Run the game to see that the light looks a little more correct
🏃
35:46Run the game to see that the light looks a little more correct
🏃
36:16Prevent RayCast() from producing ambient light
36:16Prevent RayCast() from producing ambient light
36:16Prevent RayCast() from producing ambient light
36:36Run the game to check out the lighting solution without the ambient light
🏃
36:36Run the game to check out the lighting solution without the ambient light
🏃
36:36Run the game to check out the lighting solution without the ambient light
🏃
37:06Remove NextEmitW from lighting_element
37:06Remove NextEmitW from lighting_element
37:06Remove NextEmitW from lighting_element
37:39Run the game to see the straight photon distribution
🏃
37:39Run the game to see the straight photon distribution
🏃
37:39Run the game to see the straight photon distribution
🏃
39:36Consider how to record the photon distribution
39:36Consider how to record the photon distribution
39:36Consider how to record the photon distribution
40:24Try to make ComputeLightPropagation() accumulate the emittance colour
40:24Try to make ComputeLightPropagation() accumulate the emittance colour
40:24Try to make ComputeLightPropagation() accumulate the emittance colour
42:17Run the game to see the scene getting brighter with each iteration
🏃
42:17Run the game to see the scene getting brighter with each iteration
🏃
42:17Run the game to see the scene getting brighter with each iteration
🏃
45:46Try toggling off the hero in AddPlayer()
45:46Try toggling off the hero in AddPlayer()
45:46Try toggling off the hero in AddPlayer()
46:19Run the game to see the lighting solution without the hero obscuring great swathes of it
🏃
46:19Run the game to see the lighting solution without the hero obscuring great swathes of it
🏃
46:19Run the game to see the lighting solution without the hero obscuring great swathes of it
🏃
47:10Try to prevent GatherFinalLighting() from accumulating light but just use the emitter colour and destination normal directly
47:10Try to prevent GatherFinalLighting() from accumulating light but just use the emitter colour and destination normal directly
47:10Try to prevent GatherFinalLighting() from accumulating light but just use the emitter colour and destination normal directly
48:46Run the game to see the lighting solution without the final gather
🏃
48:46Run the game to see the lighting solution without the final gather
🏃
48:46Run the game to see the lighting solution without the final gather
🏃
50:00Try to make ComputeLightPropagation() modify the AverageDirectionToLight by its power
50:00Try to make ComputeLightPropagation() modify the AverageDirectionToLight by its power
50:00Try to make ComputeLightPropagation() modify the AverageDirectionToLight by its power
53:02Run the game to see how that looks, and consider improving the voxel scheme, hemisphere sampling and sprite cards
🏃
53:02Run the game to see how that looks, and consider improving the voxel scheme, hemisphere sampling and sprite cards
🏃
53:02Run the game to see how that looks, and consider improving the voxel scheme, hemisphere sampling and sprite cards
🏃
56:37Enable ComputeLightPropagation() to apply skylight contribution specially
56:37Enable ComputeLightPropagation() to apply skylight contribution specially
56:37Enable ComputeLightPropagation() to apply skylight contribution specially
1:02:46Run the game with our skylight in place
🏃
1:02:46Run the game with our skylight in place
🏃
1:02:46Run the game with our skylight in place
🏃
1:05:09Make ExtractReflectorsFromQuads() clear the IncidentLight and AverageDirectionToLight
1:05:09Make ExtractReflectorsFromQuads() clear the IncidentLight and AverageDirectionToLight
1:05:09Make ExtractReflectorsFromQuads() clear the IncidentLight and AverageDirectionToLight
1:06:38Run the game to see the more correct lighting solution
🏃
1:06:38Run the game to see the more correct lighting solution
🏃
1:06:38Run the game to see the more correct lighting solution
🏃
1:07:31Check out CodeItNow's 'Better Sampling' article3
📖
1:07:31Check out CodeItNow's 'Better Sampling' article3
📖
1:07:31Check out CodeItNow's 'Better Sampling' article3
📖
1:12:31Make SampleHemisphere() merely flip the result if the randomly chosen sample is in the reverse hemisphere
1:12:31Make SampleHemisphere() merely flip the result if the randomly chosen sample is in the reverse hemisphere
1:12:31Make SampleHemisphere() merely flip the result if the randomly chosen sample is in the reverse hemisphere
1:14:34Run the game to see how that looks
🏃
1:14:34Run the game to see how that looks
🏃
1:14:34Run the game to see how that looks
🏃
1:15:35Consider adding a Sun-style light to ComputeLightPropagation()
1:15:35Consider adding a Sun-style light to ComputeLightPropagation()
1:15:35Consider adding a Sun-style light to ComputeLightPropagation()
1:16:58Install ColorCop4
🗹
1:16:58Install ColorCop4
🗹
1:16:58Install ColorCop4
🗹
1:18:49Introduce the notion of a Sun-style light in ComputeLightPropagation()
1:18:49Introduce the notion of a Sun-style light in ComputeLightPropagation()
1:18:49Introduce the notion of a Sun-style light in ComputeLightPropagation()
1:23:15Run the game to see our sunlit scene
🏃
1:23:15Run the game to see our sunlit scene
🏃
1:23:15Run the game to see our sunlit scene
🏃
1:24:25Make ComputeLightPropagation() create a more powerful sun, and sample its direction
1:24:25Make ComputeLightPropagation() create a more powerful sun, and sample its direction
1:24:25Make ComputeLightPropagation() create a more powerful sun, and sample its direction
1:29:37Run the game to see how that looks
🏃
1:29:37Run the game to see how that looks
🏃
1:29:37Run the game to see how that looks
🏃
1:29:57Prevent ComputeLightPropagation() from bundling the sky color into the sun color
1:29:57Prevent ComputeLightPropagation() from bundling the sky color into the sun color
1:29:57Prevent ComputeLightPropagation() from bundling the sky color into the sun color
1:30:29Run the game to see this more directional sun
🏃
1:30:29Run the game to see this more directional sun
🏃
1:30:29Run the game to see this more directional sun
🏃
1:31:59Introduce AccumulateSample() for ComputeLightPropagation() to call
1:31:59Introduce AccumulateSample() for ComputeLightPropagation() to call
1:31:59Introduce AccumulateSample() for ComputeLightPropagation() to call
1:37:23Run the game to see no change
🏃
1:37:23Run the game to see no change
🏃
1:37:23Run the game to see no change
🏃
1:37:54Temporarily try to get rid of the sunlight
1:37:54Temporarily try to get rid of the sunlight
1:37:54Temporarily try to get rid of the sunlight
1:38:10Run the game without the sunlight
🏃
1:38:10Run the game without the sunlight
🏃
1:38:10Run the game without the sunlight
🏃
1:38:39Replace IncidentLight from lighting_element with the Hadamard product of EmitC
1:38:39Replace IncidentLight from lighting_element with the Hadamard product of EmitC
1:38:39Replace IncidentLight from lighting_element with the Hadamard product of EmitC
1:41:01Run the game to see how that looks
🏃
1:41:01Run the game to see how that looks
🏃
1:41:01Run the game to see how that looks
🏃
1:41:27Toggle off most of ComputeLightPropagation()
1:41:27Toggle off most of ComputeLightPropagation()
1:41:27Toggle off most of ComputeLightPropagation()
1:41:56Run the game to see no light
🏃
1:41:56Run the game to see no light
🏃
1:41:56Run the game to see no light
🏃
1:42:03Reenable UpdateAndRenderWorld() to call PushLight()
1:42:03Reenable UpdateAndRenderWorld() to call PushLight()
1:42:03Reenable UpdateAndRenderWorld() to call PushLight()
1:42:17Run the game to see the current lighting solution
🏃
1:42:17Run the game to see the current lighting solution
🏃
1:42:17Run the game to see the current lighting solution
🏃
1:42:51Glimpse into the future
🗩
1:42:51Glimpse into the future
🗩
1:42:51Glimpse into the future
🗩
1:43:20Q&A
🗩
1:43:20Q&A
🗩
1:43:20Q&A
🗩
1:43:43praet_a51 Q: Why is there a dark horizontal band on the Red / Blue voxels (approximately at the height of bottom of the push light box)? Note: Possibly fixed at the end of stream render
🗪
1:43:43praet_a51 Q: Why is there a dark horizontal band on the Red / Blue voxels (approximately at the height of bottom of the push light box)? Note: Possibly fixed at the end of stream render
🗪
1:43:43praet_a51 Q: Why is there a dark horizontal band on the Red / Blue voxels (approximately at the height of bottom of the push light box)? Note: Possibly fixed at the end of stream render
🗪
1:45:23Try to increase the voxel resolution
1:45:23Try to increase the voxel resolution
1:45:23Try to increase the voxel resolution
1:45:36Run the game to see that our lighting samples are now too isolated
🏃
1:45:36Run the game to see that our lighting samples are now too isolated
🏃
1:45:36Run the game to see that our lighting samples are now too isolated
🏃
1:46:58ataradov Q: Is there a good tutorial for using (modern) OpenGL in CAD-like applications, where you need to draw many sharp and precise lines and filled planes, mostly in 2D?5
🗪
1:46:58ataradov Q: Is there a good tutorial for using (modern) OpenGL in CAD-like applications, where you need to draw many sharp and precise lines and filled planes, mostly in 2D?5
🗪
1:46:58ataradov Q: Is there a good tutorial for using (modern) OpenGL in CAD-like applications, where you need to draw many sharp and precise lines and filled planes, mostly in 2D?5
🗪
1:49:14onanymous Q: Has anyone tried to give you an actual 3D model of a cartoon spruce by now?
🗪
1:49:14onanymous Q: Has anyone tried to give you an actual 3D model of a cartoon spruce by now?
🗪
1:49:14onanymous Q: Has anyone tried to give you an actual 3D model of a cartoon spruce by now?
🗪
1:49:25inked_in_java Q: I remember you mentioning you didn't go to college... how did you learn C?
🗪
1:49:25inked_in_java Q: I remember you mentioning you didn't go to college... how did you learn C?
🗪
1:49:25inked_in_java Q: I remember you mentioning you didn't go to college... how did you learn C?
🗪
1:50:30pytzy Q: In how much time did you learn game development?α
🗪
1:50:30pytzy Q: In how much time did you learn game development?α
🗪
1:50:30pytzy Q: In how much time did you learn game development?α
🗪
1:52:03sired22 Q: What's the most "oops, I may have deleted the database" thing you have seen?
🗪
1:52:03sired22 Q: What's the most "oops, I may have deleted the database" thing you have seen?
🗪
1:52:03sired22 Q: What's the most "oops, I may have deleted the database" thing you have seen?
🗪
1:53:01onanymous Q: Does C++17 bring anything you like? Do your metaprograms output templates at all?
🗪
1:53:01onanymous Q: Does C++17 bring anything you like? Do your metaprograms output templates at all?
🗪
1:53:01onanymous Q: Does C++17 bring anything you like? Do your metaprograms output templates at all?
🗪
1:54:57sneakybob_wot Q: What's your favourite game from your youth? M.U.L.E. on the Atari 8-bit for me
🗪
1:54:57sneakybob_wot Q: What's your favourite game from your youth? M.U.L.E. on the Atari 8-bit for me
🗪
1:54:57sneakybob_wot Q: What's your favourite game from your youth? M.U.L.E. on the Atari 8-bit for me
🗪
1:55:44demiplume Q: I'm looking for the best tools to begin learning coding / game design from scratch. Is visual studio, in your opinion, a good start?
🗪
1:55:44demiplume Q: I'm looking for the best tools to begin learning coding / game design from scratch. Is visual studio, in your opinion, a good start?
🗪
1:55:44demiplume Q: I'm looking for the best tools to begin learning coding / game design from scratch. Is visual studio, in your opinion, a good start?
🗪
1:56:33quickshift_ Q: Did you have any input on JAI?
🗪
1:56:33quickshift_ Q: Did you have any input on JAI?
🗪
1:56:33quickshift_ Q: Did you have any input on JAI?
🗪
1:58:24winter_squirrel Q: Do you have any language in mind to replace C++?
🗪
1:58:24winter_squirrel Q: Do you have any language in mind to replace C++?
🗪
1:58:24winter_squirrel Q: Do you have any language in mind to replace C++?
🗪
2:01:27printf_armin Q: What is your experience with macOS, especially their “cocoa API”?
🗪
2:01:27printf_armin Q: What is your experience with macOS, especially their “cocoa API”?
🗪
2:01:27printf_armin Q: What is your experience with macOS, especially their “cocoa API”?
🗪
2:01:31inked_in_java Q: I see you switched to 4coder from emacs. How do you like 4coder compared to emacs?
🗪
2:01:31inked_in_java Q: I see you switched to 4coder from emacs. How do you like 4coder compared to emacs?
🗪
2:01:31inked_in_java Q: I see you switched to 4coder from emacs. How do you like 4coder compared to emacs?
🗪
2:02:34onanymous Q: Do you agree with those who say "source code is text" or do you think we should push for more structure awareness in editors and tools?
🗪
2:02:34onanymous Q: Do you agree with those who say "source code is text" or do you think we should push for more structure awareness in editors and tools?
🗪
2:02:34onanymous Q: Do you agree with those who say "source code is text" or do you think we should push for more structure awareness in editors and tools?
🗪
2:02:44quiensab3 Q: What will come next after we're done with lighting?
🗪
2:02:44quiensab3 Q: What will come next after we're done with lighting?
🗪
2:02:44quiensab3 Q: What will come next after we're done with lighting?
🗪
2:03:05winter_squirrel Q: Is there ever gonna be a handmade compiler?
🗪
2:03:05winter_squirrel Q: Is there ever gonna be a handmade compiler?
🗪
2:03:05winter_squirrel Q: Is there ever gonna be a handmade compiler?
🗪
2:03:29Close this down with another plug of the SendOwl-powered contribution page6
🗩
2:03:29Close this down with another plug of the SendOwl-powered contribution page6
🗩
2:03:29Close this down with another plug of the SendOwl-powered contribution page6
🗩