Pixel Art Games and nSight Shader Analysis
?
?

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:02Welcome to the digression on pixel art games
0:02Welcome to the digression on pixel art games
0:02Welcome to the digression on pixel art games
3:03Launch Children of Morta (through Steam) and NVIDIA Nsight Graphics
🏃
3:03Launch Children of Morta (through Steam) and NVIDIA Nsight Graphics
🏃
3:03Launch Children of Morta (through Steam) and NVIDIA Nsight Graphics
🏃
5:10Point out the pixel art rendering artifacts
🏃
5:10Point out the pixel art rendering artifacts
🏃
5:10Point out the pixel art rendering artifacts
🏃
6:08Create a project in Nsight for Children of Morta, with a few words on launching games through Steam
🗹
6:08Create a project in Nsight for Children of Morta, with a few words on launching games through Steam
🗹
6:08Create a project in Nsight for Children of Morta, with a few words on launching games through Steam
🗹
11:10Launch Children of Morta standalone, and then within Nsight
🏃
11:10Launch Children of Morta standalone, and then within Nsight
🏃
11:10Launch Children of Morta standalone, and then within Nsight
🏃
14:46Capture our first D3D11 frame of Children of Morta and scrub through the draw events
🏃
14:46Capture our first D3D11 frame of Children of Morta and scrub through the draw events
🏃
14:46Capture our first D3D11 frame of Children of Morta and scrub through the draw events
🏃
21:11Swaying tree draw event: Events View
🏃
21:11Swaying tree draw event: Events View
🏃
21:11Swaying tree draw event: Events View
🏃
24:25Swaying tree draw event: API Inspector View - Input Assembler
🏃
24:25Swaying tree draw event: API Inspector View - Input Assembler
🏃
24:25Swaying tree draw event: API Inspector View - Input Assembler
🏃
26:49Swaying tree draw event: API Inspector View - Vertex Shader
🏃
26:49Swaying tree draw event: API Inspector View - Vertex Shader
🏃
26:49Swaying tree draw event: API Inspector View - Vertex Shader
🏃
28:11Swaying tree draw event: API Inspector View - Rasterizer
🏃
28:11Swaying tree draw event: API Inspector View - Rasterizer
🏃
28:11Swaying tree draw event: API Inspector View - Rasterizer
🏃
28:59Swaying tree draw event: API Inspector View - Pixel Shader
🏃
28:59Swaying tree draw event: API Inspector View - Pixel Shader
🏃
28:59Swaying tree draw event: API Inspector View - Pixel Shader
🏃
30:55Swaying tree draw event: API Inspector View - Pixel Shader Disassembly, and Resource Views
🏃
30:55Swaying tree draw event: API Inspector View - Pixel Shader Disassembly, and Resource Views
🏃
30:55Swaying tree draw event: API Inspector View - Pixel Shader Disassembly, and Resource Views
🏃
33:40Swaying tree draw event: API Inspector View - Our tree sprite and its assembly
🏃
33:40Swaying tree draw event: API Inspector View - Our tree sprite and its assembly
🏃
33:40Swaying tree draw event: API Inspector View - Our tree sprite and its assembly
🏃
44:11We got a puss!
44:11We got a puss!
44:11We got a puss!
44:55Swaying tree draw event: API Inspector View - Understanding our tree sprite's assembly
🏃
44:55Swaying tree draw event: API Inspector View - Understanding our tree sprite's assembly
🏃
44:55Swaying tree draw event: API Inspector View - Understanding our tree sprite's assembly
🏃
45:43How we may perform sub-pixel sampling
🏃
45:43How we may perform sub-pixel sampling
🏃
45:43How we may perform sub-pixel sampling
🏃
48:57Sampling Pixel Art
🖌
48:57Sampling Pixel Art
🖌
48:57Sampling Pixel Art
🖌
52:38The undesirable smearing effect of bilinear filtering on a pixel (texel) art game
🖌
52:38The undesirable smearing effect of bilinear filtering on a pixel (texel) art game
🖌
52:38The undesirable smearing effect of bilinear filtering on a pixel (texel) art game
🖌
54:54Panning with bilinear filtering disabled
🖌
54:54Panning with bilinear filtering disabled
🖌
54:54Panning with bilinear filtering disabled
🖌
1:01:16Zooming and unaligned panning with bilinear filtering disabled
🖌
1:01:16Zooming and unaligned panning with bilinear filtering disabled
🖌
1:01:16Zooming and unaligned panning with bilinear filtering disabled
🖌
1:04:47Understanding our desired filter in 1D
🖌
1:04:47Understanding our desired filter in 1D
🖌
1:04:47Understanding our desired filter in 1D
🖌
1:06:47Sub-pixel filtering: Brute-force sampling
🖌
1:06:47Sub-pixel filtering: Brute-force sampling
🖌
1:06:47Sub-pixel filtering: Brute-force sampling
🖌
1:08:52Sub-pixel filtering: UV coefficient bilinear sampling
🖌
1:08:52Sub-pixel filtering: UV coefficient bilinear sampling
🖌
1:08:52Sub-pixel filtering: UV coefficient bilinear sampling
🖌
1:20:09Plea to Unity: Precondition your UV coordinates in the pixel shader
🖌
1:20:09Plea to Unity: Precondition your UV coordinates in the pixel shader
🖌
1:20:09Plea to Unity: Precondition your UV coordinates in the pixel shader
🖌
1:21:21Preconditioning your UV coordinates in the pixel shader
🖌
1:21:21Preconditioning your UV coordinates in the pixel shader
🖌
1:21:21Preconditioning your UV coordinates in the pixel shader
🖌
1:55:47mempoedits handmade_hero Try "-force-glcore" for launch parameter to force OpenGL
🗪
1:55:47mempoedits handmade_hero Try "-force-glcore" for launch parameter to force OpenGL
🗪
1:55:47mempoedits handmade_hero Try "-force-glcore" for launch parameter to force OpenGL
🗪
1:56:24Try unsuccessfully to launch Children of Morta in Nsight using the "force-glcore" command line argument
🗹
1:56:24Try unsuccessfully to launch Children of Morta in Nsight using the "force-glcore" command line argument
🗹
1:56:24Try unsuccessfully to launch Children of Morta in Nsight using the "force-glcore" command line argument
🗹
1:58:00Capture and export a frame of Children of Morta
🏃
1:58:00Capture and export a frame of Children of Morta
🏃
1:58:00Capture and export a frame of Children of Morta
🏃
2:00:54Inspect our frame export
🗹
2:00:54Inspect our frame export
🗹
2:00:54Inspect our frame export
🗹
2:02:27Q&A
2:02:27Q&A
2:02:27Q&A
2:03:18dithinas Q: Here's a good side-by-side example of the artifacts you're talking about1
🗪
2:03:18dithinas Q: Here's a good side-by-side example of the artifacts you're talking about1
🗪
2:03:18dithinas Q: Here's a good side-by-side example of the artifacts you're talking about1
🗪
2:10:10Understanding the smooth sub-pixel filtering in that Shadertoy2
📖
2:10:10Understanding the smooth sub-pixel filtering in that Shadertoy2
📖
2:10:10Understanding the smooth sub-pixel filtering in that Shadertoy2
📖
2:13:39raf_85 Q: Children of Morta looks like a fairly ambitious game. Why do you think they didn't bother to implement proper sub-pixel rendering?
🗪
2:13:39raf_85 Q: Children of Morta looks like a fairly ambitious game. Why do you think they didn't bother to implement proper sub-pixel rendering?
🗪
2:13:39raf_85 Q: Children of Morta looks like a fairly ambitious game. Why do you think they didn't bother to implement proper sub-pixel rendering?
🗪
2:14:14xrxr13579 Q: How did you learn about this artifact / how did you figure out the cause?
🗪
2:14:14xrxr13579 Q: How did you learn about this artifact / how did you figure out the cause?
🗪
2:14:14xrxr13579 Q: How did you learn about this artifact / how did you figure out the cause?
🗪
2:14:58frostyninja Q: That Shadertoy is by our very own d7samurai!
🗪
2:14:58frostyninja Q: That Shadertoy is by our very own d7samurai!
🗪
2:14:58frostyninja Q: That Shadertoy is by our very own d7samurai!
🗪
2:15:13omgitsmoe11 Q: Someone posted a link before saying Unity has a pixel perfect 2D package3
🗪
2:15:13omgitsmoe11 Q: Someone posted a link before saying Unity has a pixel perfect 2D package3
🗪
2:15:13omgitsmoe11 Q: Someone posted a link before saying Unity has a pixel perfect 2D package3
🗪
2:18:02gigasightmedia handmade_hero How much more work / is any extra work required for oblique viewing?
🗪
2:18:02gigasightmedia handmade_hero How much more work / is any extra work required for oblique viewing?
🗪
2:18:02gigasightmedia handmade_hero How much more work / is any extra work required for oblique viewing?
🗪
2:18:33zrizi Q: (Off-topic) How is Pow function implemented? How would you go about implementing an efficient power?4
🗪
2:18:33zrizi Q: (Off-topic) How is Pow function implemented? How would you go about implementing an efficient power?4
🗪
2:18:33zrizi Q: (Off-topic) How is Pow function implemented? How would you go about implementing an efficient power?4
🗪
2:23:38zrizi Q: I thought for cosine and sine we would use a table lookup (instead of series expansion), isn't it?
🗪
2:23:38zrizi Q: I thought for cosine and sine we would use a table lookup (instead of series expansion), isn't it?
🗪
2:23:38zrizi Q: I thought for cosine and sine we would use a table lookup (instead of series expansion), isn't it?
🗪
2:27:10longboolean Q: Is there ever a reason not to compute your pixels this way? Is this a 2D only thing, etc?
🗪
2:27:10longboolean Q: Is there ever a reason not to compute your pixels this way? Is this a 2D only thing, etc?
🗪
2:27:10longboolean Q: Is there ever a reason not to compute your pixels this way? Is this a 2D only thing, etc?
🗪
2:27:50xrxr13579 Q: It seems that this artifact is quite well known, at least in your circle. Is there a name for it?
🗪
2:27:50xrxr13579 Q: It seems that this artifact is quite well known, at least in your circle. Is there a name for it?
🗪
2:27:50xrxr13579 Q: It seems that this artifact is quite well known, at least in your circle. Is there a name for it?
🗪
2:29:12gigasightmedia handmade_hero: This shader can only address artifacting within the texture, but cannot address sub-pixel occlusion artifacting (i.e. the shimmer is still present on exterior edge pixels)
🗪
2:29:12gigasightmedia handmade_hero: This shader can only address artifacting within the texture, but cannot address sub-pixel occlusion artifacting (i.e. the shimmer is still present on exterior edge pixels)
🗪
2:29:12gigasightmedia handmade_hero: This shader can only address artifacting within the texture, but cannot address sub-pixel occlusion artifacting (i.e. the shimmer is still present on exterior edge pixels)
🗪
2:30:23Brian Q: It was surprising to see how much latency was on division. Square root seems to have a similar latency, but reciprocal square root (i.e. _mm_rsqrt_ps) is as quick as multiply (with just half the throughput). Why is rsqrt much faster than regular sqrt?5
🗪
2:30:23Brian Q: It was surprising to see how much latency was on division. Square root seems to have a similar latency, but reciprocal square root (i.e. _mm_rsqrt_ps) is as quick as multiply (with just half the throughput). Why is rsqrt much faster than regular sqrt?5
🗪
2:30:23Brian Q: It was surprising to see how much latency was on division. Square root seems to have a similar latency, but reciprocal square root (i.e. _mm_rsqrt_ps) is as quick as multiply (with just half the throughput). Why is rsqrt much faster than regular sqrt?5
🗪
2:32:54Brian Q: Is there a less precise version of sqrt then? Because a lot of the math we need in games does not need the full precision
🗪
2:32:54Brian Q: Is there a less precise version of sqrt then? Because a lot of the math we need in games does not need the full precision
🗪
2:32:54Brian Q: Is there a less precise version of sqrt then? Because a lot of the math we need in games does not need the full precision
🗪
2:33:34ponkkiz Q: Could you do something similar inspecting some Unreal Engine 4 game and end the engine war for good?
🗪
2:33:34ponkkiz Q: Could you do something similar inspecting some Unreal Engine 4 game and end the engine war for good?
🗪
2:33:34ponkkiz Q: Could you do something similar inspecting some Unreal Engine 4 game and end the engine war for good?
🗪
2:34:23gigasightmedia handmade_hero: So the artifacting still present here is because there is no border-pixel? If the texture were prepared properly, it would address that as well6
🗪
2:34:23gigasightmedia handmade_hero: So the artifacting still present here is because there is no border-pixel? If the texture were prepared properly, it would address that as well6
🗪
2:34:23gigasightmedia handmade_hero: So the artifacting still present here is because there is no border-pixel? If the texture were prepared properly, it would address that as well6
🗪
2:38:24Wrap it up
2:38:24Wrap it up
2:38:24Wrap it up