1
00:00:00,000 --> 00:00:03,820
You're digging through some old moving boxes you never unpacked, and you discover your

2
00:00:03,820 --> 00:00:08,140
old console with a bunch of retro games. Ah, nostalgia.

3
00:00:08,140 --> 00:00:12,860
You dust it off, and after managing to hook it up to your shiny 4K flat screen TV, you

4
00:00:12,860 --> 00:00:19,300
find that it looksâ¦ well, did Link always look so blurry?

5
00:00:19,300 --> 00:00:25,860
Part of the problem is that old consoles like the SNES had a resolution of just 256x224 pixels,

6
00:00:25,860 --> 00:00:31,660
compared to the 3840x2160 pixels of a modern 4K TV.

7
00:00:31,660 --> 00:00:36,780
That means that if your TV were to show the game at its true native resolution, it would

8
00:00:36,780 --> 00:00:42,460
be this tiny. And you'd have to get so close to the screen, you'd go cross-eyed.

9
00:00:42,460 --> 00:00:47,840
So instead, a television will take that small media and upscale it so that it fills up most,

10
00:00:47,840 --> 00:00:58,180
if not all, of the available pixels. To do this, the TV manufacturer had to choose just one of several different upscaling algorithms.

11
00:00:58,180 --> 00:01:04,020
The most common ones are nearest neighbor, bilinear, bicubic, and landshaws, with nearest

12
00:01:04,020 --> 00:01:08,820
neighbor being the simplest and fastest to process, and landshaws being the slowest

13
00:01:08,820 --> 00:01:16,940
and most complex. However, on modern day hardware, any of these algorithms can easily upscale an image in

14
00:01:16,940 --> 00:01:24,340
real time, which for this video, I am defining as 16 milliseconds or less.

15
00:01:24,340 --> 00:01:29,660
And that's because if you're playing a game at 60 frames per second, each individual frame

16
00:01:29,660 --> 00:01:33,340
will appear on screen for about 16 milliseconds.

17
00:01:33,340 --> 00:01:39,820
Therefore, each of these algorithms should work faster than that, which also means that

18
00:01:39,820 --> 00:01:43,460
buffering multiple frames is not necessary.

19
00:01:43,500 --> 00:01:50,820
However, for AI or smart image upscaling, a multi-frame buffer can be necessary, which

20
00:01:50,820 --> 00:01:57,300
will result in a delay, or input lag, of much more than 16 milliseconds.

21
00:01:57,300 --> 00:02:00,860
So check out this video for more information about all that.

22
00:02:00,860 --> 00:02:08,380
But back to the topic at hand. Assuming that each of these algorithms can work in real time, which one actually looks

23
00:02:08,380 --> 00:02:12,660
the best? Well, see for yourself.

24
00:02:12,660 --> 00:02:19,500
And immediately you can see that only nearest neighbor can deliver the perfect, sharp pixels

25
00:02:19,500 --> 00:02:27,820
that make pixel art look good. All the others just kind of blend the pixels together, which blurs the image.

26
00:02:27,820 --> 00:02:34,860
So the upscaling algorithm on your TV is probably some form of bicubic or landshaws.

27
00:02:34,860 --> 00:02:40,900
Raising the question, why would anyone want an upscaling algorithm that's more complicated,

28
00:02:40,900 --> 00:02:44,220
slower, and looks worse?

29
00:02:44,220 --> 00:02:50,140
Because while nearest neighbor scaling looks great for pixel art, it does not look good

30
00:02:50,140 --> 00:02:57,580
for most other images. Your TV doesn't know that you've plugged in a retro game console, as opposed to a DVD

31
00:02:57,580 --> 00:03:05,420
player or something. And for live action video, bicubic or landshaws scaling really are better choices.

32
00:03:05,420 --> 00:03:13,100
The real world is not made of pixels. And so when we upscale a photograph, the results should not look pixelated.

33
00:03:13,100 --> 00:03:16,300
2D Mario is made of pixels.

34
00:03:16,300 --> 00:03:21,020
And therefore, when we upscale him, the results should be pixelated.

35
00:03:21,020 --> 00:03:25,500
But wait, I hear you say, my TV already has a game mode setting.

36
00:03:25,500 --> 00:03:33,980
Why doesn't it just use nearest neighbor for that? Well, because most 3D games also look better with bicubic or landshaws scaling.

37
00:03:33,980 --> 00:03:39,940
So the manufacturer would have to include a nearest neighbor menu option, which doesn't

38
00:03:39,940 --> 00:03:46,100
sound so hard. As for why they don't do that, I don't know.

39
00:03:46,100 --> 00:03:50,060
TV manufacturers just don't care, I guess.

40
00:03:50,060 --> 00:03:53,860
Maybe because not enough consumers know or care about this problem.

41
00:03:53,860 --> 00:03:57,780
But if you really want those sharp pixels, I have good news.

42
00:03:57,780 --> 00:04:04,140
There are a lot of options, like the RetroTink 2X, Framemeister or open source scan converter.

43
00:04:04,140 --> 00:04:10,260
But before you buy anything, I recommend you check out this great RGB video explainer series

44
00:04:10,260 --> 00:04:14,620
from MyLife in gaming, because this stuff can get really complicated.

45
00:04:14,620 --> 00:04:20,980
I ended up just buying a $14 component cable for my Wii, which provides much better quality

46
00:04:20,980 --> 00:04:27,580
than the stock composite cable. And it's not perfect, but you know what, it's good enough for me.

47
00:04:27,580 --> 00:04:32,340
Now if you're emulating your old games, you have way more options.

48
00:04:32,340 --> 00:04:37,420
Emulators like RetroArch have access to an arguably even better scaling method called

49
00:04:37,420 --> 00:04:43,260
Sharp Bilinear, which uses nearest neighbor for pre-scaling to the closest integer and

50
00:04:43,260 --> 00:04:46,760
then uses bilinear scaling for the remainder.

51
00:04:46,760 --> 00:04:52,860
This method even allows you to rotate the image without getting any jagged edges.

52
00:04:52,860 --> 00:04:57,540
There are also tons of other interesting scalers and shaders that can be mixed and customized

53
00:04:57,740 --> 00:05:04,300
to get just the look you want. And blurry pixel art is not just a problem for retro gamers.

54
00:05:04,300 --> 00:05:09,700
If you're a digital artist like me, you should know that programs like GIMP, Photoshop and

55
00:05:09,700 --> 00:05:15,420
After Effects do have support for nearest neighbor if you know where to look.

56
00:05:15,420 --> 00:05:21,140
But some creative software, including Premiere, does not.

57
00:05:21,140 --> 00:05:27,540
It's annoying. Also, support for integer scaling from PC hardware manufacturers like AMD, NVIDIA and

58
00:05:27,540 --> 00:05:33,500
Intel has been getting better lately, but we've still got a ways to go.

59
00:05:33,500 --> 00:05:38,140
If you want to learn more and get involved in the Sharp Pixel Revolution, Merritt Tenenlin's

60
00:05:38,140 --> 00:05:42,540
website, which I used as a resource for this video, is a great place to start.

61
00:05:42,540 --> 00:05:47,180
He's even developed a browser plugin that solves a similar problem with improperly scaled

62
00:05:47,180 --> 00:05:54,140
images on websites. And I use it every day when taking important screenshots for TechWiki videos like this one.

63
00:05:54,140 --> 00:06:00,820
Never mind that. Thanks for watching. Like, dislike and check out our other video about how to buy a TV for gaming.

64
00:06:00,820 --> 00:06:04,580
Leave a comment with your video suggestions and subscribe for more TechWiki.
