Reconstructing Multiple Lights
?
?

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:01Recap yesterday's discovery using a signed distance field for lighting falloff
🗩
0:01Recap yesterday's discovery using a signed distance field for lighting falloff
🗩
0:01Recap yesterday's discovery using a signed distance field for lighting falloff
🗩
2:42Demo our voxel-based signed distance field interpolated lighting, non-computed
🏃
2:42Demo our voxel-based signed distance field interpolated lighting, non-computed
🏃
2:42Demo our voxel-based signed distance field interpolated lighting, non-computed
🏃
4:04Make EndLightingComputation() encode the light as 0 to 1 values
4:04Make EndLightingComputation() encode the light as 0 to 1 values
4:04Make EndLightingComputation() encode the light as 0 to 1 values
4:28Watch the falloff interpolation artifact return
🏃
4:28Watch the falloff interpolation artifact return
🏃
4:28Watch the falloff interpolation artifact return
🏃
5:00Reinstate the signed distance field in EndLightingComputation() and watch the falloff smooth out
🏃
🖮
5:00Reinstate the signed distance field in EndLightingComputation() and watch the falloff smooth out
🏃
🖮
5:00Reinstate the signed distance field in EndLightingComputation() and watch the falloff smooth out
🏃
🖮
7:39Reorganise and enable our voxel checkerboard code in EndLightingComputation()
7:39Reorganise and enable our voxel checkerboard code in EndLightingComputation()
7:39Reorganise and enable our voxel checkerboard code in EndLightingComputation()
14:04Check out the resolution of our voxel grid
🏃
14:04Check out the resolution of our voxel grid
🏃
14:04Check out the resolution of our voxel grid
🏃
15:07Halve our voxel resolution
15:07Halve our voxel resolution
15:07Halve our voxel resolution
15:15Check out our lower resolution voxel grid
🏃
15:15Check out our lower resolution voxel grid
🏃
15:15Check out our lower resolution voxel grid
🏃
15:23Toggle off our checkerboard in EndLightingComputation()
15:23Toggle off our checkerboard in EndLightingComputation()
15:23Toggle off our checkerboard in EndLightingComputation()
15:53Admire the quality of our lighting reconstruction
🏃
15:53Admire the quality of our lighting reconstruction
🏃
15:53Admire the quality of our lighting reconstruction
🏃
16:46Disable trilinear filtering
16:46Disable trilinear filtering
16:46Disable trilinear filtering
17:16Check out the sparse resolution of our light
🏃
17:16Check out the sparse resolution of our light
🏃
17:16Check out the sparse resolution of our light
🏃
18:03Toggle on our checkerboard in EndLightingComputation()
18:03Toggle on our checkerboard in EndLightingComputation()
18:03Toggle on our checkerboard in EndLightingComputation()
18:27Consider our voxel resolution to suffice
🏃
18:27Consider our voxel resolution to suffice
🏃
18:27Consider our voxel resolution to suffice
🏃
18:59Enable trilinear filtering and embark on switching our light sampling from the box-model, to a signed distance field scheme
18:59Enable trilinear filtering and embark on switching our light sampling from the box-model, to a signed distance field scheme
18:59Enable trilinear filtering and embark on switching our light sampling from the box-model, to a signed distance field scheme
20:29Consider encoding our light field using spherical harmonics1,2,3
📖
20:29Consider encoding our light field using spherical harmonics1,2,3
📖
20:29Consider encoding our light field using spherical harmonics1,2,3
📖
38:07Change our light sampling to a signed distance field, normal plus colour scheme in CompileZBiasProgram()4,5,6
38:07Change our light sampling to a signed distance field, normal plus colour scheme in CompileZBiasProgram()4,5,6
38:07Change our light sampling to a signed distance field, normal plus colour scheme in CompileZBiasProgram()4,5,6
1:00:51Update EndLightingComputation() to handle our separately encoded normal and colour
1:00:51Update EndLightingComputation() to handle our separately encoded normal and colour
1:00:51Update EndLightingComputation() to handle our separately encoded normal and colour
1:06:05Update CompileZBiasProgram() to handle our separately encoded normal and colour
1:06:05Update CompileZBiasProgram() to handle our separately encoded normal and colour
1:06:05Update CompileZBiasProgram() to handle our separately encoded normal and colour
1:08:10Find that that worked the first time, but the normals are not correct
🏃
1:08:10Find that that worked the first time, but the normals are not correct
🏃
1:08:10Find that that worked the first time, but the normals are not correct
🏃
1:08:59Enable GetIrradiance() in CompileZBiasProgram() to produce and EndLightingComputation() to encode a -1 to 1 normal, introducing BinormalToNormal()
1:08:59Enable GetIrradiance() in CompileZBiasProgram() to produce and EndLightingComputation() to encode a -1 to 1 normal, introducing BinormalToNormal()
1:08:59Enable GetIrradiance() in CompileZBiasProgram() to produce and EndLightingComputation() to encode a -1 to 1 normal, introducing BinormalToNormal()
1:12:33Find that our normal encoding now works correctly
🏃
1:12:33Find that our normal encoding now works correctly
🏃
1:12:33Find that our normal encoding now works correctly
🏃
1:13:04Add a secondary light source in EndLightingComputation()
1:13:04Add a secondary light source in EndLightingComputation()
1:13:04Add a secondary light source in EndLightingComputation()
1:15:42See our two light sources
🏃
1:15:42See our two light sources
🏃
1:15:42See our two light sources
🏃
1:15:54Further separate our two light sources
1:15:54Further separate our two light sources
1:15:54Further separate our two light sources
1:16:21See our two separated light sources
🏃
1:16:21See our two separated light sources
🏃
1:16:21See our two separated light sources
🏃
1:16:27Colour our light sources yellow and cyan
1:16:27Colour our light sources yellow and cyan
1:16:27Colour our light sources yellow and cyan
1:16:38See our two separate coloured light
🏃
1:16:38See our two separate coloured light
🏃
1:16:38See our two separate coloured light
🏃
1:16:49Overlap our two lights
1:16:49Overlap our two lights
1:16:49Overlap our two lights
1:16:57Check out the intersection of our lights
🏃
1:16:57Check out the intersection of our lights
🏃
1:16:57Check out the intersection of our lights
🏃
1:19:29Nsight rendering time: 6ms / frame
🏃
1:19:29Nsight rendering time: 6ms / frame
🏃
1:19:29Nsight rendering time: 6ms / frame
🏃
1:20:41Add two more light sources in EndLightingComputation()
1:20:41Add two more light sources in EndLightingComputation()
1:20:41Add two more light sources in EndLightingComputation()
1:22:57See three of our four lights
🏃
1:22:57See three of our four lights
🏃
1:22:57See three of our four lights
🏃
1:23:16Enable CompileZBiasProgram() to sample our fourth light
1:23:16Enable CompileZBiasProgram() to sample our fourth light
1:23:16Enable CompileZBiasProgram() to sample our fourth light
1:24:32See our four lights
🏃
1:24:32See our four lights
🏃
1:24:32See our four lights
🏃
1:25:32Consider how to change our light probes to work as a signed distance field
📖
1:25:32Consider how to change our light probes to work as a signed distance field
📖
1:25:32Consider how to change our light probes to work as a signed distance field
📖
1:31:56Admire our lighting, and consider tracking colour and intensity differently
🏃
1:31:56Admire our lighting, and consider tracking colour and intensity differently
🏃
1:31:56Admire our lighting, and consider tracking colour and intensity differently
🏃
1:33:52Q&A
🗩
1:33:52Q&A
🗩
1:33:52Q&A
🗩
1:34:14invertedgold Q: Have you taken anything you implemented for Handmade Hero and used it in your other work?
🗪
1:34:14invertedgold Q: Have you taken anything you implemented for Handmade Hero and used it in your other work?
🗪
1:34:14invertedgold Q: Have you taken anything you implemented for Handmade Hero and used it in your other work?
🗪
1:35:23eddiesutrecht Q: What are you working on during the week?7,8,9
🗪
1:35:23eddiesutrecht Q: What are you working on during the week?7,8,9
🗪
1:35:23eddiesutrecht Q: What are you working on during the week?7,8,9
🗪
1:36:43rooctag Q: How will walls stop light, same bouncing rays as before?
🗪
1:36:43rooctag Q: How will walls stop light, same bouncing rays as before?
🗪
1:36:43rooctag Q: How will walls stop light, same bouncing rays as before?
🗪
1:37:55eddiesutrecht Q: I assume there is a source of income, not working on projects for pay?
🗪
1:37:55eddiesutrecht Q: I assume there is a source of income, not working on projects for pay?
🗪
1:37:55eddiesutrecht Q: I assume there is a source of income, not working on projects for pay?
🗪
1:40:22eddiesutrecht Q: You do realise you could be a very wealthy man if you accept a small project for a few weeks, right?
🗪
1:40:22eddiesutrecht Q: You do realise you could be a very wealthy man if you accept a small project for a few weeks, right?
🗪
1:40:22eddiesutrecht Q: You do realise you could be a very wealthy man if you accept a small project for a few weeks, right?
🗪
1:51:10tomisqi Q: In terms of programming techniques, how has your style changed over the course of this project? Are there things you did at the beginning of this project that you think were steps in the wrong direction or would do differently?
🗪
1:51:10tomisqi Q: In terms of programming techniques, how has your style changed over the course of this project? Are there things you did at the beginning of this project that you think were steps in the wrong direction or would do differently?
🗪
1:51:10tomisqi Q: In terms of programming techniques, how has your style changed over the course of this project? Are there things you did at the beginning of this project that you think were steps in the wrong direction or would do differently?
🗪
1:55:14centhusiast Q: Can memory fragmentation happen on GPU?
🗪
1:55:14centhusiast Q: Can memory fragmentation happen on GPU?
🗪
1:55:14centhusiast Q: Can memory fragmentation happen on GPU?
🗪
1:59:30filiadelski Q: 10/10 pants, looks very comfy
🗪
1:59:30filiadelski Q: 10/10 pants, looks very comfy
🗪
1:59:30filiadelski Q: 10/10 pants, looks very comfy
🗪
1:59:33timetravel1 Q: How would you compare WinDBG and RemedyBG? Should I consider switching to RemedyBG if I'm using WinDBG?
🗪
1:59:33timetravel1 Q: How would you compare WinDBG and RemedyBG? Should I consider switching to RemedyBG if I'm using WinDBG?
🗪
1:59:33timetravel1 Q: How would you compare WinDBG and RemedyBG? Should I consider switching to RemedyBG if I'm using WinDBG?
🗪
2:03:01vtlmks Q: Where could I learn more about out-of-order optimization?
🗪
2:03:01vtlmks Q: Where could I learn more about out-of-order optimization?
🗪
2:03:01vtlmks Q: Where could I learn more about out-of-order optimization?
🗪
2:03:14centhusiast Q: Could you explained the stripped binary? Is it possible to optimize a binary even there is no access to the source code?
🗪
2:03:14centhusiast Q: Could you explained the stripped binary? Is it possible to optimize a binary even there is no access to the source code?
🗪
2:03:14centhusiast Q: Could you explained the stripped binary? Is it possible to optimize a binary even there is no access to the source code?
🗪
2:05:12ikojan Q: Do you have any resources on why OOP programming isn't that good?
🗪
2:05:12ikojan Q: Do you have any resources on why OOP programming isn't that good?
🗪
2:05:12ikojan Q: Do you have any resources on why OOP programming isn't that good?
🗪
2:05:58genos3 Q: What would be the best way to prevent overdraw in a software rasterizer, in particular with a voxel scene like Minecraft? (I asked this before but didn't specify the type of game)
🗪
2:05:58genos3 Q: What would be the best way to prevent overdraw in a software rasterizer, in particular with a voxel scene like Minecraft? (I asked this before but didn't specify the type of game)
🗪
2:05:58genos3 Q: What would be the best way to prevent overdraw in a software rasterizer, in particular with a voxel scene like Minecraft? (I asked this before but didn't specify the type of game)
🗪
2:08:03devsigner Q: I've heard you mention before that you don't like callbacks. Should they be avoided at all costs? How would you avoid them if using recursion and navigating a tree-like structure?
🗪
2:08:03devsigner Q: I've heard you mention before that you don't like callbacks. Should they be avoided at all costs? How would you avoid them if using recursion and navigating a tree-like structure?
🗪
2:08:03devsigner Q: I've heard you mention before that you don't like callbacks. Should they be avoided at all costs? How would you avoid them if using recursion and navigating a tree-like structure?
🗪
2:08:55freddo669 Q: What’s your opinion on white board interviews in the big tech companies like Google?
🗪
2:08:55freddo669 Q: What’s your opinion on white board interviews in the big tech companies like Google?
🗪
2:08:55freddo669 Q: What’s your opinion on white board interviews in the big tech companies like Google?
🗪
2:12:01jessef Q: If virtual memory exists, how are games still able to be hacked? Is it because offsets are constant?
🗪
2:12:01jessef Q: If virtual memory exists, how are games still able to be hacked? Is it because offsets are constant?
🗪
2:12:01jessef Q: If virtual memory exists, how are games still able to be hacked? Is it because offsets are constant?
🗪
2:12:31centhusiast Q: Have you heard about game development workshop assembly10 and also assembly archive?11There are lots of material there.
🗪
2:12:31centhusiast Q: Have you heard about game development workshop assembly10 and also assembly archive?11There are lots of material there.
🗪
2:12:31centhusiast Q: Have you heard about game development workshop assembly10 and also assembly archive?11There are lots of material there.
🗪
2:12:39culdevu Q: Is there an errata page for the Jeff and Casey show that I can submit to?
🗪
2:12:39culdevu Q: Is there an errata page for the Jeff and Casey show that I can submit to?
🗪
2:12:39culdevu Q: Is there an errata page for the Jeff and Casey show that I can submit to?
🗪
2:12:47thehorse1sbrown Q: How do you do design memory arenas for multiple dynamic arrays to please the cache?
🗪
2:12:47thehorse1sbrown Q: How do you do design memory arenas for multiple dynamic arrays to please the cache?
🗪
2:12:47thehorse1sbrown Q: How do you do design memory arenas for multiple dynamic arrays to please the cache?
🗪
2:13:32sharlock93 Q: Don't you think that the reason for low quality software was because people wanted to do things faster?
🗪
2:13:32sharlock93 Q: Don't you think that the reason for low quality software was because people wanted to do things faster?
🗪
2:13:32sharlock93 Q: Don't you think that the reason for low quality software was because people wanted to do things faster?
🗪
2:13:53argor34 Q: I would like to express my deepest disappointment in the lack of new J&C episodes
🗪
2:13:53argor34 Q: I would like to express my deepest disappointment in the lack of new J&C episodes
🗪
2:13:53argor34 Q: I would like to express my deepest disappointment in the lack of new J&C episodes
🗪
2:14:15thehorse1sbrown Q: I mean for software for simulations, something like Mathematica
🗪
2:14:15thehorse1sbrown Q: I mean for software for simulations, something like Mathematica
🗪
2:14:15thehorse1sbrown Q: I mean for software for simulations, something like Mathematica
🗪
2:14:26sharlock93 Q: Do you think it's possible to turn the web around? Also PJs are pretty nice
🗪
2:14:26sharlock93 Q: Do you think it's possible to turn the web around? Also PJs are pretty nice
🗪
2:14:26sharlock93 Q: Do you think it's possible to turn the web around? Also PJs are pretty nice
🗪
2:15:22montrealchrislee Q: If you are an employer, which candidate would you choose? A: 4.0 GPA with no side project; B: 2.5 GPA with lots of side projects
🗪
2:15:22montrealchrislee Q: If you are an employer, which candidate would you choose? A: 4.0 GPA with no side project; B: 2.5 GPA with lots of side projects
🗪
2:15:22montrealchrislee Q: If you are an employer, which candidate would you choose? A: 4.0 GPA with no side project; B: 2.5 GPA with lots of side projects
🗪
2:19:21timetravel1 Q: Hey Casey, I know you're busy and all. Can you stand up for me and reverse this linked list for me on the white board? Thanks
🗪
2:19:21timetravel1 Q: Hey Casey, I know you're busy and all. Can you stand up for me and reverse this linked list for me on the white board? Thanks
🗪
2:19:21timetravel1 Q: Hey Casey, I know you're busy and all. Can you stand up for me and reverse this linked list for me on the white board? Thanks
🗪
2:24:05sharlock93 Q: Random off-topic question but why does it feel like you would enjoy knitting? Just a random gut feeling
🗪
2:24:05sharlock93 Q: Random off-topic question but why does it feel like you would enjoy knitting? Just a random gut feeling
🗪
2:24:05sharlock93 Q: Random off-topic question but why does it feel like you would enjoy knitting? Just a random gut feeling
🗪
2:24:40printf_armin Q: The thing is also that these people probably make the software slow and sh… on purpose to not be easily fired
🗪
2:24:40printf_armin Q: The thing is also that these people probably make the software slow and sh… on purpose to not be easily fired
🗪
2:24:40printf_armin Q: The thing is also that these people probably make the software slow and sh… on purpose to not be easily fired
🗪
2:26:44enemypanda Q: What are some resources to learn graphics programming? How much math is really necessary?
🗪
2:26:44enemypanda Q: What are some resources to learn graphics programming? How much math is really necessary?
🗪
2:26:44enemypanda Q: What are some resources to learn graphics programming? How much math is really necessary?
🗪
2:27:41argor34 Q: If not with dynamic arrays, how do you store dynamically growing data when you can't predict how much memory you will need and need to store it, so the Handmade Hero temporary memory concept doesn't solve the problem? I figure some sort of linked list is even worse for the cache
🗪
2:27:41argor34 Q: If not with dynamic arrays, how do you store dynamically growing data when you can't predict how much memory you will need and need to store it, so the Handmade Hero temporary memory concept doesn't solve the problem? I figure some sort of linked list is even worse for the cache
🗪
2:27:41argor34 Q: If not with dynamic arrays, how do you store dynamically growing data when you can't predict how much memory you will need and need to store it, so the Handmade Hero temporary memory concept doesn't solve the problem? I figure some sort of linked list is even worse for the cache
🗪
2:28:00devsigner Q: Have you or would you ever use goto?
🗪
2:28:00devsigner Q: Have you or would you ever use goto?
🗪
2:28:00devsigner Q: Have you or would you ever use goto?
🗪
2:30:33uplinkcoder Q: switches can in some cases generate indirect jumps
🗪
2:30:33uplinkcoder Q: switches can in some cases generate indirect jumps
🗪
2:30:33uplinkcoder Q: switches can in some cases generate indirect jumps
🗪
2:31:35catccherguy14 Q: Will you be an early adopter of JAI?
🗪
2:31:35catccherguy14 Q: Will you be an early adopter of JAI?
🗪
2:31:35catccherguy14 Q: Will you be an early adopter of JAI?
🗪
2:31:40pookyo_o Q: In your experience what do you think are good ways to manage software projects? I hear lots of praise for scrum / agile but from my experience these methodologies have shown none to little results. Am I missing something with these methodologies?
🗪
2:31:40pookyo_o Q: In your experience what do you think are good ways to manage software projects? I hear lots of praise for scrum / agile but from my experience these methodologies have shown none to little results. Am I missing something with these methodologies?
🗪
2:31:40pookyo_o Q: In your experience what do you think are good ways to manage software projects? I hear lots of praise for scrum / agile but from my experience these methodologies have shown none to little results. Am I missing something with these methodologies?
🗪
2:31:53argor34 Q: The dynamic array example: 1) a list of active connections on a server; 2) an array of entities in a game
🗪
2:31:53argor34 Q: The dynamic array example: 1) a list of active connections on a server; 2) an array of entities in a game
🗪
2:31:53argor34 Q: The dynamic array example: 1) a list of active connections on a server; 2) an array of entities in a game
🗪
2:32:34thehorse1sbrown Q: If you have several unpredictably growing dynamic arrays, say in a "math" simulation, would you separate them by a large distance in a memory arena? Or do you pile blocks on top of each other? What does the cache prefer? Is it even a concern?
🗪
2:32:34thehorse1sbrown Q: If you have several unpredictably growing dynamic arrays, say in a "math" simulation, would you separate them by a large distance in a memory arena? Or do you pile blocks on top of each other? What does the cache prefer? Is it even a concern?
🗪
2:32:34thehorse1sbrown Q: If you have several unpredictably growing dynamic arrays, say in a "math" simulation, would you separate them by a large distance in a memory arena? Or do you pile blocks on top of each other? What does the cache prefer? Is it even a concern?
🗪
2:34:41Close it down, people
🗩
2:34:41Close it down, people
🗩
2:34:41Close it down, people
🗩