Normal Map Code Cleanup
?
?

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)
1:43Off we go with a bit of a recap
1:43Off we go with a bit of a recap
1:43Off we go with a bit of a recap
3:51Talk about MakeSphereNormalMap and GPU vs CPU renderer
3:51Talk about MakeSphereNormalMap and GPU vs CPU renderer
3:51Talk about MakeSphereNormalMap and GPU vs CPU renderer
4:54Make TreeNormal for MakeSphereNormalMap to use
4:54Make TreeNormal for MakeSphereNormalMap to use
4:54Make TreeNormal for MakeSphereNormalMap to use
7:23Get the game running, look at the unpacking of the NormalMap and change the way that it's packed
7:23Get the game running, look at the unpacking of the NormalMap and change the way that it's packed
7:23Get the game running, look at the unpacking of the NormalMap and change the way that it's packed
9:05Blackboard: Consider the hacky nature of the problem
9:05Blackboard: Consider the hacky nature of the problem
9:05Blackboard: Consider the hacky nature of the problem
11:38Blackboard: The Ground's normals
11:38Blackboard: The Ground's normals
11:38Blackboard: The Ground's normals
14:03Handle front-facing bitmaps for now, starting by introducing UnscaleAndBiasNormal
14:03Handle front-facing bitmaps for now, starting by introducing UnscaleAndBiasNormal
14:03Handle front-facing bitmaps for now, starting by introducing UnscaleAndBiasNormal
16:21Check it out in-game and look back through the code
16:21Check it out in-game and look back through the code
16:21Check it out in-game and look back through the code
17:28Draw just the Normal and force Texel.a to be 1.0f
17:28Draw just the Normal and force Texel.a to be 1.0f
17:28Draw just the Normal and force Texel.a to be 1.0f
18:17Step through the NormalMap code
18:17Step through the NormalMap code
18:17Step through the NormalMap code
19:14Moment of realisation: We were still sampling out of the Texture
19:14Moment of realisation: We were still sampling out of the Texture
19:14Moment of realisation: We were still sampling out of the Texture
19:43Continue stepping through the code
19:43Continue stepping through the code
19:43Continue stepping through the code
21:43Moment of realisation: Usually you want to move to the next Pixel when you write one
21:43Moment of realisation: Usually you want to move to the next Pixel when you write one
21:43Moment of realisation: Usually you want to move to the next Pixel when you write one
22:13Quickly check the maths
22:13Quickly check the maths
22:13Quickly check the maths
22:52Blackboard: Nz should be Pythagorean theorem solved
22:52Blackboard: Nz should be Pythagorean theorem solved
22:52Blackboard: Nz should be Pythagorean theorem solved
24:39Calculate Nz
24:39Calculate Nz
24:39Calculate Nz
25:11Set the Normal and look at how the Pixels are packed
25:11Set the Normal and look at how the Pixels are packed
25:11Set the Normal and look at how the Pixels are packed
26:28Step through the code
26:28Step through the code
26:28Step through the code
26:52Blackboard: Dealing with the area outside the sphere
26:52Blackboard: Dealing with the area outside the sphere
26:52Blackboard: Dealing with the area outside the sphere
27:35Introduce RootTerm
27:35Introduce RootTerm
27:35Introduce RootTerm
29:05Check the values of the Normal
29:05Check the values of the Normal
29:05Check the values of the Normal
29:55Take a look at it in-game and find some erroneously negative values
29:55Take a look at it in-game and find some erroneously negative values
29:55Take a look at it in-game and find some erroneously negative values
31:40Owl of Shame Moment: Yesterday's code was awful
31:40Owl of Shame Moment: Yesterday's code was awful
31:40Owl of Shame Moment: Yesterday's code was awful
32:14View the correct NormalMap
32:14View the correct NormalMap
32:14View the correct NormalMap
32:48Recalculate Texel.rgb such that it is within the valid range of colours
32:48Recalculate Texel.rgb such that it is within the valid range of colours
32:48Recalculate Texel.rgb such that it is within the valid range of colours
34:23Turn off the NormalMap and consider using something more defined than the tree bitmap
34:23Turn off the NormalMap and consider using something more defined than the tree bitmap
34:23Turn off the NormalMap and consider using something more defined than the tree bitmap
34:55Temporarily draw TreeNormal as if it was a texture map
34:55Temporarily draw TreeNormal as if it was a texture map
34:55Temporarily draw TreeNormal as if it was a texture map
36:02Set the Pitch correctly and introduce BilinearSample function
36:02Set the Pitch correctly and introduce BilinearSample function
36:02Set the Pitch correctly and introduce BilinearSample function
39:07Check it out in-game and switch to the path in which the NormalMap modulates the texture
39:07Check it out in-game and switch to the path in which the NormalMap modulates the texture
39:07Check it out in-game and switch to the path in which the NormalMap modulates the texture
39:49Light the texture with the NormalMap
39:49Light the texture with the NormalMap
39:49Light the texture with the NormalMap
41:22Take a look at it in-game
41:22Take a look at it in-game
41:22Take a look at it in-game
41:48Tackle the environment_map stuff
41:48Tackle the environment_map stuff
41:48Tackle the environment_map stuff
45:24Blackboard: Picking from the environment map
45:24Blackboard: Picking from the environment map
45:24Blackboard: Picking from the environment map
47:51Nullify the Middle sample and make SampleEnvironmentMap produce values we can use
47:51Nullify the Middle sample and make SampleEnvironmentMap produce values we can use
47:51Nullify the Middle sample and make SampleEnvironmentMap produce values we can use
55:33Look forward to next week
55:33Look forward to next week
55:33Look forward to next week
56:28Q&A
🗩
56:28Q&A
🗩
56:28Q&A
🗩
57:42Recap today's cleaning up
57:42Recap today's cleaning up
57:42Recap today's cleaning up
58:21pseudonym73 When you lerp two normals, you probably won't get a normalised vector. There are a few things you can do about that. Would you briefly comment on your thoughts about this?
🗪
58:21pseudonym73 When you lerp two normals, you probably won't get a normalised vector. There are a few things you can do about that. Would you briefly comment on your thoughts about this?
🗪
58:21pseudonym73 When you lerp two normals, you probably won't get a normalised vector. There are a few things you can do about that. Would you briefly comment on your thoughts about this?
🗪
1:01:41chronaldragon Q: how are we going to sample lights when calculating the pixel values for each sprite? Will there be a list of all the lights? Or will that be a parameter of some sort?
🗪
1:01:41chronaldragon Q: how are we going to sample lights when calculating the pixel values for each sprite? Will there be a list of all the lights? Or will that be a parameter of some sort?
🗪
1:01:41chronaldragon Q: how are we going to sample lights when calculating the pixel values for each sprite? Will there be a list of all the lights? Or will that be a parameter of some sort?
🗪
1:02:10ingenero What ever happened to your almond milk?
🗪
1:02:10ingenero What ever happened to your almond milk?
🗪
1:02:10ingenero What ever happened to your almond milk?
🗪
1:02:27insofaras Will Yangtian be making normal maps for the art now too?
🗪
1:02:27insofaras Will Yangtian be making normal maps for the art now too?
🗪
1:02:27insofaras Will Yangtian be making normal maps for the art now too?
🗪
1:02:51andsz_ Will you cover more advanced BRDFs? Or just simple phong-like lighting equations?
🗪
1:02:51andsz_ Will you cover more advanced BRDFs? Or just simple phong-like lighting equations?
🗪
1:02:51andsz_ Will you cover more advanced BRDFs? Or just simple phong-like lighting equations?
🗪
1:04:48panic00 What if I don't want my game to be just 'normal'? Are there any other kinds of maps I can use to make my game more unique?
🗪
1:04:48panic00 What if I don't want my game to be just 'normal'? Are there any other kinds of maps I can use to make my game more unique?
🗪
1:04:48panic00 What if I don't want my game to be just 'normal'? Are there any other kinds of maps I can use to make my game more unique?
🗪
1:06:25chronaldragon Q: Some games use a 'bump-map' in addition or instead of a normal map. What is the difference between these and what are the advantages or disadvantages?
🗪
1:06:25chronaldragon Q: Some games use a 'bump-map' in addition or instead of a normal map. What is the difference between these and what are the advantages or disadvantages?
🗪
1:06:25chronaldragon Q: Some games use a 'bump-map' in addition or instead of a normal map. What is the difference between these and what are the advantages or disadvantages?
🗪
1:07:12Blackboard: Bump Map vs Normal Map
1:07:12Blackboard: Bump Map vs Normal Map
1:07:12Blackboard: Bump Map vs Normal Map
1:12:37gasto5 Q; Will the effect end up like a bump map effect?
1:12:37gasto5 Q; Will the effect end up like a bump map effect?
1:12:37gasto5 Q; Will the effect end up like a bump map effect?
1:12:54deadvertex Could we do reflections by using our frame buffer as an environment map when drawing the bitmap?
🗪
1:12:54deadvertex Could we do reflections by using our frame buffer as an environment map when drawing the bitmap?
🗪
1:12:54deadvertex Could we do reflections by using our frame buffer as an environment map when drawing the bitmap?
🗪
1:13:17pseudonym73 If you imagine the surface as an implicit function f(x,y,z) = 0, it's the gradient of THAT function. Which is the same as the cross product of the two surface tangents.
🗪
1:13:17pseudonym73 If you imagine the surface as an implicit function f(x,y,z) = 0, it's the gradient of THAT function. Which is the same as the cross product of the two surface tangents.
🗪
1:13:17pseudonym73 If you imagine the surface as an implicit function f(x,y,z) = 0, it's the gradient of THAT function. Which is the same as the cross product of the two surface tangents.
🗪
1:14:44We have come to the end of the questions
🗩
1:14:44We have come to the end of the questions
🗩
1:14:44We have come to the end of the questions
🗩