Switching to Precomputed Hemisphere Distributions
?
?

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:06combicombi Q: Casey, was just watching the previous stream about getting better noise sampling, and I was wondering why you need any randomness if you obtain a pretty evenly and well-covered sampling hemisphere?
🗪
0:06combicombi Q: Casey, was just watching the previous stream about getting better noise sampling, and I was wondering why you need any randomness if you obtain a pretty evenly and well-covered sampling hemisphere?
🗪
0:06combicombi Q: Casey, was just watching the previous stream about getting better noise sampling, and I was wondering why you need any randomness if you obtain a pretty evenly and well-covered sampling hemisphere?
🗪
0:49Undersampling, and moving noise to the least objectionable place
🖌
0:49Undersampling, and moving noise to the least objectionable place
🖌
0:49Undersampling, and moving noise to the least objectionable place
🖌
10:59Run the game to see how our lighting is working at the moment
🏃
10:59Run the game to see how our lighting is working at the moment
🏃
10:59Run the game to see how our lighting is working at the moment
🏃
14:20Add SamplePoints to the lighting_solution and loft our hemisphere generation code out to GenerateSpiralSamples() and GeneratePoissonSamples()
14:20Add SamplePoints to the lighting_solution and loft our hemisphere generation code out to GenerateSpiralSamples() and GeneratePoissonSamples()
14:20Add SamplePoints to the lighting_solution and loft our hemisphere generation code out to GenerateSpiralSamples() and GeneratePoissonSamples()
21:19Run the game to see our spiral sample
🏃
21:19Run the game to see our spiral sample
🏃
21:19Run the game to see our spiral sample
🏃
21:33Add keybindings for GeneratePoissonSamples() and GenerateSpiralSamples() in UpdateAndRenderWorld(), and reduce the MaxCos value in GeneratePoissonSamples()
21:33Add keybindings for GeneratePoissonSamples() and GenerateSpiralSamples() in UpdateAndRenderWorld(), and reduce the MaxCos value in GeneratePoissonSamples()
21:33Add keybindings for GeneratePoissonSamples() and GenerateSpiralSamples() in UpdateAndRenderWorld(), and reduce the MaxCos value in GeneratePoissonSamples()
24:24Run the game and check out our two sampling patterns
🏃
24:24Run the game and check out our two sampling patterns
🏃
24:24Run the game and check out our two sampling patterns
🏃
25:23Make LightingTest() draw connections between clusters of sampling points
25:23Make LightingTest() draw connections between clusters of sampling points
25:23Make LightingTest() draw connections between clusters of sampling points
27:52Run the game to see our cluster of sampling points, and consider other sampling patterns1,2,3,4
🏃
27:52Run the game to see our cluster of sampling points, and consider other sampling patterns1,2,3,4
🏃
27:52Run the game to see our cluster of sampling points, and consider other sampling patterns1,2,3,4
🏃
36:41Run the game and consider gleaning more structure from the spiral sampling over time
🏃
36:41Run the game and consider gleaning more structure from the spiral sampling over time
🏃
36:41Run the game and consider gleaning more structure from the spiral sampling over time
🏃
37:37Make LightingTest() colour the sampling points over time
37:37Make LightingTest() colour the sampling points over time
37:37Make LightingTest() colour the sampling points over time
39:49Run the game to see our coloured sampling points
🏃
39:49Run the game to see our coloured sampling points
🏃
39:49Run the game to see our coloured sampling points
🏃
43:51Vary the N2 value in GenerateSpiralSamples() to sample variable coverage of the sphere
43:51Vary the N2 value in GenerateSpiralSamples() to sample variable coverage of the sphere
43:51Vary the N2 value in GenerateSpiralSamples() to sample variable coverage of the sphere
45:42Run the game to see this variable coverage
🏃
45:42Run the game to see this variable coverage
🏃
45:42Run the game to see this variable coverage
🏃
46:15Make GenerateSpiralSamples() offset the coverage rotationally (i.e. spin the spirals)
46:15Make GenerateSpiralSamples() offset the coverage rotationally (i.e. spin the spirals)
46:15Make GenerateSpiralSamples() offset the coverage rotationally (i.e. spin the spirals)
47:40Run the game to see this spin
🏃
47:40Run the game to see this spin
🏃
47:40Run the game to see this spin
🏃
47:49Combine these coverage schemes in GenerateSpiralSamples()
47:49Combine these coverage schemes in GenerateSpiralSamples()
47:49Combine these coverage schemes in GenerateSpiralSamples()
48:00Run the game to see the variable coverage, and consider how to generate points in clusters
🏃
48:00Run the game to see the variable coverage, and consider how to generate points in clusters
🏃
48:00Run the game to see the variable coverage, and consider how to generate points in clusters
🏃
50:33Introduce the notion of a ClusterTable in LightingTest() to generate clusters of points
50:33Introduce the notion of a ClusterTable in LightingTest() to generate clusters of points
50:33Introduce the notion of a ClusterTable in LightingTest() to generate clusters of points
55:37Check out our first cluster
🏃
55:37Check out our first cluster
🏃
55:37Check out our first cluster
🏃
56:47Start to build up our ClusterTable in LightingTest(), also visualising the clusters as lines relative to the entire set
56:47Start to build up our ClusterTable in LightingTest(), also visualising the clusters as lines relative to the entire set
56:47Start to build up our ClusterTable in LightingTest(), also visualising the clusters as lines relative to the entire set
59:39Run the game to see our clusters
🏃
59:39Run the game to see our clusters
🏃
59:39Run the game to see our clusters
🏃
1:00:18Continue to build up our ClusterTable
1:00:18Continue to build up our ClusterTable
1:00:18Continue to build up our ClusterTable
1:01:10Check out this new cluster and consider how best to tessellate our clusters
🏃
1:01:10Check out this new cluster and consider how best to tessellate our clusters
🏃
1:01:10Check out this new cluster and consider how best to tessellate our clusters
🏃
1:04:04Introduce GeneratePolarSamples()
1:04:04Introduce GeneratePolarSamples()
1:04:04Introduce GeneratePolarSamples()
1:07:47Polar sampling, derived from the height up the sphere
🖌
1:07:47Polar sampling, derived from the height up the sphere
🖌
1:07:47Polar sampling, derived from the height up the sphere
🖌
1:09:29Continue to implement GeneratePolarSamples(), adding a key to trigger this pattern
1:09:29Continue to implement GeneratePolarSamples(), adding a key to trigger this pattern
1:09:29Continue to implement GeneratePolarSamples(), adding a key to trigger this pattern
1:11:50Check out this polar pattern, and consider making the spoke count proportional to the slice
🏃
1:11:50Check out this polar pattern, and consider making the spoke count proportional to the slice
🏃
1:11:50Check out this polar pattern, and consider making the spoke count proportional to the slice
🏃
1:13:18Introduce a SpokeTable in GeneratePolarSamples() to distribute the samples around the sphere
1:13:18Introduce a SpokeTable in GeneratePolarSamples() to distribute the samples around the sphere
1:13:18Introduce a SpokeTable in GeneratePolarSamples() to distribute the samples around the sphere
1:18:29Check out this polar pattern
🏃
1:18:29Check out this polar pattern
🏃
1:18:29Check out this polar pattern
🏃
1:18:41Bias the z away from directly up and reduce the SliceCount in GeneratePolarSamples()
1:18:41Bias the z away from directly up and reduce the SliceCount in GeneratePolarSamples()
1:18:41Bias the z away from directly up and reduce the SliceCount in GeneratePolarSamples()
1:21:03Check out our awesome polar pattern, and consider how to line the samples up for casting purposes
🏃
1:21:03Check out our awesome polar pattern, and consider how to line the samples up for casting purposes
🏃
1:21:03Check out our awesome polar pattern, and consider how to line the samples up for casting purposes
🏃
1:23:09Reduce the SliceCount to 5 and introduce vertical jitter in GeneratePolarSamples()
1:23:09Reduce the SliceCount to 5 and introduce vertical jitter in GeneratePolarSamples()
1:23:09Reduce the SliceCount to 5 and introduce vertical jitter in GeneratePolarSamples()
1:26:13Check out the polar jitter, and consider how to cluster our sampling points in terms of the jitter
🏃
1:26:13Check out the polar jitter, and consider how to cluster our sampling points in terms of the jitter
🏃
1:26:13Check out the polar jitter, and consider how to cluster our sampling points in terms of the jitter
🏃
1:31:59Store SamplePoints as a matrix of v3_4x in lighting_solution, and enable InitLighting() to cluster up the samples
1:31:59Store SamplePoints as a matrix of v3_4x in lighting_solution, and enable InitLighting() to cluster up the samples
1:31:59Store SamplePoints as a matrix of v3_4x in lighting_solution, and enable InitLighting() to cluster up the samples
1:41:06Check out our slightly broken lighting
🏃
1:41:06Check out our slightly broken lighting
🏃
1:41:06Check out our slightly broken lighting
🏃
1:41:22Enable ComputeLightPropagation() to reorient the SampleD4x along the sample point normal
1:41:22Enable ComputeLightPropagation() to reorient the SampleD4x along the sample point normal
1:41:22Enable ComputeLightPropagation() to reorient the SampleD4x along the sample point normal
1:43:50Check out this potentially more correct lighting
🏃
1:43:50Check out this potentially more correct lighting
🏃
1:43:50Check out this potentially more correct lighting
🏃
1:46:06Q&A
🗩
1:46:06Q&A
🗩
1:46:06Q&A
🗩
1:47:04ssylvan handmade_hero By the way, I mentioned this on twitter but the easiest way to compute a cosine distribution is to start with a 2D disk distribution for x / y then compute z by projecting to sphere (z = sqrt(1 - x^2 - y^2))
🗪
1:47:04ssylvan handmade_hero By the way, I mentioned this on twitter but the easiest way to compute a cosine distribution is to start with a 2D disk distribution for x / y then compute z by projecting to sphere (z = sqrt(1 - x^2 - y^2))
🗪
1:47:04ssylvan handmade_hero By the way, I mentioned this on twitter but the easiest way to compute a cosine distribution is to start with a 2D disk distribution for x / y then compute z by projecting to sphere (z = sqrt(1 - x^2 - y^2))
🗪
1:48:12thejimjames40 Q: Do you have some resources for researching different game / system architectures in C? I'd like to focus on the data layout5
🗪
1:48:12thejimjames40 Q: Do you have some resources for researching different game / system architectures in C? I'd like to focus on the data layout5
🗪
1:48:12thejimjames40 Q: Do you have some resources for researching different game / system architectures in C? I'd like to focus on the data layout5
🗪
1:51:33blackburn1911 Q: What should I / we do everyday to become a good programmer like you, Jon Blow, etc?
🗪
1:51:33blackburn1911 Q: What should I / we do everyday to become a good programmer like you, Jon Blow, etc?
🗪
1:51:33blackburn1911 Q: What should I / we do everyday to become a good programmer like you, Jon Blow, etc?
🗪
1:53:42elfeck Q: Do you use templates in the code right now?
🗪
1:53:42elfeck Q: Do you use templates in the code right now?
🗪
1:53:42elfeck Q: Do you use templates in the code right now?
🗪
1:53:58bas170400 Q: Hi, I am programming my first game (2D) as an intake assignment from my next education. The game uses an EntityComponentSystem. But now I'm stuck because I want different entities to have different animations for different situations but I don't know how to implement that. So my question is how do I go about that without writing different sprite components for every different entity type? All sorts of information is welcome
🗪
1:53:58bas170400 Q: Hi, I am programming my first game (2D) as an intake assignment from my next education. The game uses an EntityComponentSystem. But now I'm stuck because I want different entities to have different animations for different situations but I don't know how to implement that. So my question is how do I go about that without writing different sprite components for every different entity type? All sorts of information is welcome
🗪
1:53:58bas170400 Q: Hi, I am programming my first game (2D) as an intake assignment from my next education. The game uses an EntityComponentSystem. But now I'm stuck because I want different entities to have different animations for different situations but I don't know how to implement that. So my question is how do I go about that without writing different sprite components for every different entity type? All sorts of information is welcome
🗪
2:00:16vkar2 Q: I played with the spiral, and had problems with the angular falloff
🗪
2:00:16vkar2 Q: I played with the spiral, and had problems with the angular falloff
🗪
2:00:16vkar2 Q: I played with the spiral, and had problems with the angular falloff
🗪
2:00:4330ygamer Q: First timer here. From what I saw it looks like organizational-wise a lot of things are bundled together in your code. How do you handle organizing a lot of code in general? Is it a C / C++ thing to have so many things together? I'm just kinda used to having small pieces of code
🗪
2:00:4330ygamer Q: First timer here. From what I saw it looks like organizational-wise a lot of things are bundled together in your code. How do you handle organizing a lot of code in general? Is it a C / C++ thing to have so many things together? I'm just kinda used to having small pieces of code
🗪
2:00:4330ygamer Q: First timer here. From what I saw it looks like organizational-wise a lot of things are bundled together in your code. How do you handle organizing a lot of code in general? Is it a C / C++ thing to have so many things together? I'm just kinda used to having small pieces of code
🗪
2:02:38gorevojd Q: Casey, I just want to say you thank you for everything. I started to watch you in 2014, when I graduated from university. You taught me more than all of my teachers there. I love game development and I love programming all because of you. Just thank you
🗪
2:02:38gorevojd Q: Casey, I just want to say you thank you for everything. I started to watch you in 2014, when I graduated from university. You taught me more than all of my teachers there. I love game development and I love programming all because of you. Just thank you
🗪
2:02:38gorevojd Q: Casey, I just want to say you thank you for everything. I started to watch you in 2014, when I graduated from university. You taught me more than all of my teachers there. I love game development and I love programming all because of you. Just thank you
🗪
2:03:09esert Q: Did you find an answer to your questions in 'Are Register Names Still Useful?'?6
🗪
2:03:09esert Q: Did you find an answer to your questions in 'Are Register Names Still Useful?'?6
🗪
2:03:09esert Q: Did you find an answer to your questions in 'Are Register Names Still Useful?'?6
🗪
2:05:39phort99 Q: You mentioned not using templates. Do you use any code generation / metaprogramming at all?
🗪
2:05:39phort99 Q: You mentioned not using templates. Do you use any code generation / metaprogramming at all?
🗪
2:05:39phort99 Q: You mentioned not using templates. Do you use any code generation / metaprogramming at all?
🗪
2:06:09thejimjames40 Q: Every time I am designing the data layout of a game / system I get very happy inside. Is this normal? Or should I see a psychiatrist? Also I absolutely love the sections about the entity system and game design decisions
🗪
2:06:09thejimjames40 Q: Every time I am designing the data layout of a game / system I get very happy inside. Is this normal? Or should I see a psychiatrist? Also I absolutely love the sections about the entity system and game design decisions
🗪
2:06:09thejimjames40 Q: Every time I am designing the data layout of a game / system I get very happy inside. Is this normal? Or should I see a psychiatrist? Also I absolutely love the sections about the entity system and game design decisions
🗪
2:06:30sneakybob_wot Q: How much more optimized do you think you'll be able to get this lighting code once you've sorted out this bundling?
🗪
2:06:30sneakybob_wot Q: How much more optimized do you think you'll be able to get this lighting code once you've sorted out this bundling?
🗪
2:06:30sneakybob_wot Q: How much more optimized do you think you'll be able to get this lighting code once you've sorted out this bundling?
🗪
2:06:47bozemoto Q: I'm a programmer with three years' experience, what would you recommend for someone with my experience level to do to improve as a developer. I've been trying to learn new things outside of work, while avoiding breaking the non-compete part of my contract
🗪
2:06:47bozemoto Q: I'm a programmer with three years' experience, what would you recommend for someone with my experience level to do to improve as a developer. I've been trying to learn new things outside of work, while avoiding breaking the non-compete part of my contract
🗪
2:06:47bozemoto Q: I'm a programmer with three years' experience, what would you recommend for someone with my experience level to do to improve as a developer. I've been trying to learn new things outside of work, while avoiding breaking the non-compete part of my contract
🗪
2:07:42pythno Q: Do you still use your Amiga?
🗪
2:07:42pythno Q: Do you still use your Amiga?
🗪
2:07:42pythno Q: Do you still use your Amiga?
🗪
2:08:23Close things down
🗩
2:08:23Close things down
🗩
2:08:23Close things down
🗩