Tracking Light Proportional to Photons per Second
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
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 and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

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:01Recap and set the stage for the day continuing debugging the lighting
🗩
0:01Recap and set the stage for the day continuing debugging the lighting
🗩
0:01Recap and set the stage for the day continuing debugging the lighting
🗩
3:23Lighting transport with fewer sample points than in nature, and the need to record light over time
🖌
3:23Lighting transport with fewer sample points than in nature, and the need to record light over time
🖌
3:23Lighting transport with fewer sample points than in nature, and the need to record light over time
🖌
8:11Introducing 1. Formulation for stored light that means something
🖌
8:11Introducing 1. Formulation for stored light that means something
🖌
8:11Introducing 1. Formulation for stored light that means something
🖌
9:31Introducing 2. Understanding of emission and extinguishing
🖌
9:31Introducing 2. Understanding of emission and extinguishing
🖌
9:31Introducing 2. Understanding of emission and extinguishing
🖌
12:43Introducing 3. Difference between render colour and the emission
🖌
12:43Introducing 3. Difference between render colour and the emission
🖌
12:43Introducing 3. Difference between render colour and the emission
🖌
17:43Unidirectional vs Bidirectional Transport
🖌
17:43Unidirectional vs Bidirectional Transport
🖌
17:43Unidirectional vs Bidirectional Transport
🖌
22:051. Formulation for stored light that means something
🖌
22:051. Formulation for stored light that means something
🖌
22:051. Formulation for stored light that means something
🖌
27:54Photons / sec, with separate arrays for the emitters and collectors
🖌
27:54Photons / sec, with separate arrays for the emitters and collectors
🖌
27:54Photons / sec, with separate arrays for the emitters and collectors
🖌
32:14Using photons / sec to update the collectors
🖌
32:14Using photons / sec to update the collectors
🖌
32:14Using photons / sec to update the collectors
🖌
39:022. Understanding of emission and extinguishing
🖌
39:022. Understanding of emission and extinguishing
🖌
39:022. Understanding of emission and extinguishing
🖌
39:523. Difference between render colour and the emission
🖌
39:523. Difference between render colour and the emission
🖌
39:523. Difference between render colour and the emission
🖌
40:20Consider the sanity of this way of looking at the problem
🖌
40:20Consider the sanity of this way of looking at the problem
🖌
40:20Consider the sanity of this way of looking at the problem
🖌
42:52Consider how to move ComputeLightPropagation() towards a scheme in which emitters emit light at a constant photons / sec rate
📖
42:52Consider how to move ComputeLightPropagation() towards a scheme in which emitters emit light at a constant photons / sec rate
📖
42:52Consider how to move ComputeLightPropagation() towards a scheme in which emitters emit light at a constant photons / sec rate
📖
45:42Emitter-Reflectors
🖌
45:42Emitter-Reflectors
🖌
45:42Emitter-Reflectors
🖌
48:33Introduce the notion of photons / sec and AccumulatedWeight in lighting_solution for LightingTest() to use to average the light over time
48:33Introduce the notion of photons / sec and AccumulatedWeight in lighting_solution for LightingTest() to use to average the light over time
48:33Introduce the notion of photons / sec and AccumulatedWeight in lighting_solution for LightingTest() to use to average the light over time
1:07:19Simplify ComputeLightPropagation() and AccumulateSample(), enabling the latter to use our new notion of AccumulatedWeight
1:07:19Simplify ComputeLightPropagation() and AccumulateSample(), enabling the latter to use our new notion of AccumulatedWeight
1:07:19Simplify ComputeLightPropagation() and AccumulateSample(), enabling the latter to use our new notion of AccumulatedWeight
1:14:19Finish simplifying and enable ComputeLightPropagation() to use our new notion of photons / sec
1:14:19Finish simplifying and enable ComputeLightPropagation() to use our new notion of photons / sec
1:14:19Finish simplifying and enable ComputeLightPropagation() to use our new notion of photons / sec
1:20:31Run the game to see some flickering
🏃
1:20:31Run the game to see some flickering
🏃
1:20:31Run the game to see some flickering
🏃
1:21:31Step through LightingTest() to inspect the lighting Solution
🏃
1:21:31Step through LightingTest() to inspect the lighting Solution
🏃
1:21:31Step through LightingTest() to inspect the lighting Solution
🏃
1:30:17Try to fix the if(Valid) test in LightingTest() and make CompileZBiasProgram() clamp the surface reflectance
1:30:17Try to fix the if(Valid) test in LightingTest() and make CompileZBiasProgram() clamp the surface reflectance
1:30:17Try to fix the if(Valid) test in LightingTest() and make CompileZBiasProgram() clamp the surface reflectance
1:34:18Continue to step through LightingTest()
🏃
1:34:18Continue to step through LightingTest()
🏃
1:34:18Continue to step through LightingTest()
🏃
1:35:10Correctly fix the if(Valid) test in LightingTest()
1:35:10Correctly fix the if(Valid) test in LightingTest()
1:35:10Correctly fix the if(Valid) test in LightingTest()
1:36:14Continue to step through LightingTest()
🏃
1:36:14Continue to step through LightingTest()
🏃
1:36:14Continue to step through LightingTest()
🏃
1:36:42Fix the AccumulatedPPS computation in LightingTest()
1:36:42Fix the AccumulatedPPS computation in LightingTest()
1:36:42Fix the AccumulatedPPS computation in LightingTest()
1:39:04Continue to step through LightingTest()
🏃
1:39:04Continue to step through LightingTest()
🏃
1:39:04Continue to step through LightingTest()
🏃
1:40:01Darken the MoonColor in ComputeLightPropagation()
1:40:01Darken the MoonColor in ComputeLightPropagation()
1:40:01Darken the MoonColor in ComputeLightPropagation()
1:40:29Run the game to see our current lighting solution
🏃
1:40:29Run the game to see our current lighting solution
🏃
1:40:29Run the game to see our current lighting solution
🏃
1:42:33Try preventing OutputLightingTextures() from updating the AverageDirectionToLight
1:42:33Try preventing OutputLightingTextures() from updating the AverageDirectionToLight
1:42:33Try preventing OutputLightingTextures() from updating the AverageDirectionToLight
1:43:15Run the game to observe the difference in just the emission values
🏃
1:43:15Run the game to observe the difference in just the emission values
🏃
1:43:15Run the game to observe the difference in just the emission values
🏃
1:45:26Try forcing LightingTest() to always accumulate the lighting from the previous frame and reduce the tUpdate
📖
1:45:26Try forcing LightingTest() to always accumulate the lighting from the previous frame and reduce the tUpdate
📖
1:45:26Try forcing LightingTest() to always accumulate the lighting from the previous frame and reduce the tUpdate
📖
1:46:45Run the game to barely see flicker
🏃
1:46:45Run the game to barely see flicker
🏃
1:46:45Run the game to barely see flicker
🏃
1:47:41Try increasing the RayCount in ComputeLightPropagation()
1:47:41Try increasing the RayCount in ComputeLightPropagation()
1:47:41Try increasing the RayCount in ComputeLightPropagation()
1:47:55Run the game to see greatly reduced flicker
🏃
1:47:55Run the game to see greatly reduced flicker
🏃
1:47:55Run the game to see greatly reduced flicker
🏃
1:48:33Increase the MAX_LIGHT_EMISSION and reduce the RayCount
1:48:33Increase the MAX_LIGHT_EMISSION and reduce the RayCount
1:48:33Increase the MAX_LIGHT_EMISSION and reduce the RayCount
1:49:30Consider stabilising our samples
🏃
1:49:30Consider stabilising our samples
🏃
1:49:30Consider stabilising our samples
🏃
1:50:57Q&A
🗩
1:50:57Q&A
🗩
1:50:57Q&A
🗩
1:52:40zilarrezko Q: Is that... color banding I see? I hope that's just from being on-stream
🗪
1:52:40zilarrezko Q: Is that... color banding I see? I hope that's just from being on-stream
🗪
1:52:40zilarrezko Q: Is that... color banding I see? I hope that's just from being on-stream
🗪
1:54:40jakkzera Q: What do you think of game development frameworks like unity? Do you think an AAA game can be made using it?
🗪
1:54:40jakkzera Q: What do you think of game development frameworks like unity? Do you think an AAA game can be made using it?
🗪
1:54:40jakkzera Q: What do you think of game development frameworks like unity? Do you think an AAA game can be made using it?
🗪
1:56:02bigmofo1 Q: Why can't sampling rays be evenly distributed to eliminate the flickering? Wouldn't it be fine with enough rays?
🗪
1:56:02bigmofo1 Q: Why can't sampling rays be evenly distributed to eliminate the flickering? Wouldn't it be fine with enough rays?
🗪
1:56:02bigmofo1 Q: Why can't sampling rays be evenly distributed to eliminate the flickering? Wouldn't it be fine with enough rays?
🗪
1:56:18Distribution of Rays
🖌
1:56:18Distribution of Rays
🖌
1:56:18Distribution of Rays
🖌
1:57:32azmreece Q: I've been watching a fair bit of the backlog, and you seem to return values from functions via parameter pointers, even when you're not returning anything else (i.e. `void Func(int Arg, int *Return)` instead of `int Func(int Arg`)). Is there any particular reason behind this? I can imagine it maybe stops the API changing too much over time?
🗪
1:57:32azmreece Q: I've been watching a fair bit of the backlog, and you seem to return values from functions via parameter pointers, even when you're not returning anything else (i.e. `void Func(int Arg, int *Return)` instead of `int Func(int Arg`)). Is there any particular reason behind this? I can imagine it maybe stops the API changing too much over time?
🗪
1:57:32azmreece Q: I've been watching a fair bit of the backlog, and you seem to return values from functions via parameter pointers, even when you're not returning anything else (i.e. `void Func(int Arg, int *Return)` instead of `int Func(int Arg`)). Is there any particular reason behind this? I can imagine it maybe stops the API changing too much over time?
🗪
1:58:30longboolean Q: Are there any light effects that you can think of where assuming bidirectional ray sampling would give janky results? Maybe subsurface scattering?
🗪
1:58:30longboolean Q: Are there any light effects that you can think of where assuming bidirectional ray sampling would give janky results? Maybe subsurface scattering?
🗪
1:58:30longboolean Q: Are there any light effects that you can think of where assuming bidirectional ray sampling would give janky results? Maybe subsurface scattering?
🗪
2:00:13bigmofo1 Q: But if the rays are the same across frames, the flickering would only happen around moving objects? Would that be less offensive during gameplay?
🗪
2:00:13bigmofo1 Q: But if the rays are the same across frames, the flickering would only happen around moving objects? Would that be less offensive during gameplay?
🗪
2:00:13bigmofo1 Q: But if the rays are the same across frames, the flickering would only happen around moving objects? Would that be less offensive during gameplay?
🗪
2:01:10Stratified sampling
🖌
2:01:10Stratified sampling
🖌
2:01:10Stratified sampling
🖌
2:02:45vateferfout Q: Would it be possible to cast cones instead of rays?
🗪
2:02:45vateferfout Q: Would it be possible to cast cones instead of rays?
🗪
2:02:45vateferfout Q: Would it be possible to cast cones instead of rays?
🗪
2:04:01lkalinovcic Q: Do you currently do any form of ambient occlusion?
🗪
2:04:01lkalinovcic Q: Do you currently do any form of ambient occlusion?
🗪
2:04:01lkalinovcic Q: Do you currently do any form of ambient occlusion?
🗪
2:04:55gureitoro Q: So you could use a blue noise-like source to select possible "cones" and shoot random rays inside each of these cones?
🗪
2:04:55gureitoro Q: So you could use a blue noise-like source to select possible "cones" and shoot random rays inside each of these cones?
🗪
2:04:55gureitoro Q: So you could use a blue noise-like source to select possible "cones" and shoot random rays inside each of these cones?
🗪
2:05:23dragoonx6 Q: What do you think about buying an IP that is practically abandoned by the publisher / developer? For a game that has about 100 players online at maximum? This is an online game
🗪
2:05:23dragoonx6 Q: What do you think about buying an IP that is practically abandoned by the publisher / developer? For a game that has about 100 players online at maximum? This is an online game
🗪
2:05:23dragoonx6 Q: What do you think about buying an IP that is practically abandoned by the publisher / developer? For a game that has about 100 players online at maximum? This is an online game
🗪
2:05:34pileopoop Q: How much does each new light in the scene reduce performance?
🗪
2:05:34pileopoop Q: How much does each new light in the scene reduce performance?
🗪
2:05:34pileopoop Q: How much does each new light in the scene reduce performance?
🗪
2:06:01gg_nate Q: (Off-topic) Do you feel like you still have the same passion for this project as you did back when you first began, or do some days feel more like it's a chore?
🗪
2:06:01gg_nate Q: (Off-topic) Do you feel like you still have the same passion for this project as you did back when you first began, or do some days feel more like it's a chore?
🗪
2:06:01gg_nate Q: (Off-topic) Do you feel like you still have the same passion for this project as you did back when you first began, or do some days feel more like it's a chore?
🗪
2:07:14zilarrezko Q: I'm sure it's been asked before, and maybe to some extent like reflections AAA games do this, but are ray casters / tracers really such a performance hit that they aren't used on more complex set of geometry in games like Call of Dooters or just in general games with lots of geometry?
🗪
2:07:14zilarrezko Q: I'm sure it's been asked before, and maybe to some extent like reflections AAA games do this, but are ray casters / tracers really such a performance hit that they aren't used on more complex set of geometry in games like Call of Dooters or just in general games with lots of geometry?
🗪
2:07:14zilarrezko Q: I'm sure it's been asked before, and maybe to some extent like reflections AAA games do this, but are ray casters / tracers really such a performance hit that they aren't used on more complex set of geometry in games like Call of Dooters or just in general games with lots of geometry?
🗪
2:10:38lkalinovcic Q: Do you have any good sources for learning about making lighting solutions?
🗪
2:10:38lkalinovcic Q: Do you have any good sources for learning about making lighting solutions?
🗪
2:10:38lkalinovcic Q: Do you have any good sources for learning about making lighting solutions?
🗪
2:10:59vaualbus Q: Our light is not getting, at least on the light propagation, more close to PBR schema? How would we implement fog in this system? Can we simulate different media through which the light propagates?
🗪
2:10:59vaualbus Q: Our light is not getting, at least on the light propagation, more close to PBR schema? How would we implement fog in this system? Can we simulate different media through which the light propagates?
🗪
2:10:59vaualbus Q: Our light is not getting, at least on the light propagation, more close to PBR schema? How would we implement fog in this system? Can we simulate different media through which the light propagates?
🗪
2:13:10That's about it
🗩
2:13:10That's about it
🗩
2:13:10That's about it
🗩