The image above is a screenshot from the room "Water Switch Area" in the Nintendo 64 game Banjo-Kazooie's overworld, taken on the site noclip.website. Banjo-Kazooie had very nice-looking graphics, and here's a question: How could it have that? It's strange, because Nintendo 64 was a technically limited game console, both in storage size (you couldn't store very many or very detailed 3D models on the game cartridges) and in speed (you could only do a certain amount of calculations/tasks/things during each frame without getting lag), which meant it could only display very simple 3D graphics. That's for example why Super Mario 64 had to look so incredibly simple and "boxy":
You can kind of see how its world is just a bunch of very simple 3D shapes with small JPG (or any other format) images wrapped onto them. These images are called "textures" and in this example you clearly see which parts of the world use which texture, because there are sharp edges between them (the ground uses either a grass, stone or dirt texture, for example). And in the 90s, these were simply the best graphics you could get! Or... Was it? No! Banjo-Kazooie, that came two years after Super Mario 64, used the exact same technology and had much more sophisticated graphics. It used as few and blurry textures as Super Mario 64, but its world seem to have much more graphical variation, with no sharp edges between textures. It looks seamless and alive. So how did they do it?
One thing they did to get this variation and seamlessness was to blend textures together. If you blend two textures, you also get an area in between them with a combined look of the two textures. Two textures suddenly becomes three, in a way! In the images below I have removed the texture blending (called "vertex alpha" in the tool I use), which lets you see that the texture usage is actually similar to that in Super Mario 64, with sharp edges between the textures, before they add the texture blending to get a way more varied and alive look:
Then they also mixed their textures with different color gradients (or "vertex colors"). As you see below, the big pipes outside the entrance to Clanker's Cavern could be turned slightly yellow, slightly blue or whichever color to get a whole new vibe, without adding any texture. Out of one single texture we get multiple different-looking textures, just through these color gradients. And the color gradients/vertex colors only need a color value at each vertex of the 3D surfaces, which it then uses to interpolate the color gradient in between the vertices, so we get a lot more color shades than the ones we actually put into the system:
Textures could be max 64x64 pixels big in Nintendo 64, and Banjo-Kazooie kind of overcame this limit too: By "manually cutting up larger textures into usable pieces" (quote). The "ship wall" in the image below is big but it consists of only the small 64x64 textures in the small yellow rectangle in the lower left corner, tiled and repeated in different patterns, to make some kind of... ship wall. As you see, that little yellow rectangle can become a big ship wall if you do it right (here's another example). Here they made repetition look like not repetition, which is what you had to do when working with very few files which all had to be very small:
And that's how you make things look better than what should be possible with available technology. Somehow, Banjo-Kazooie's developers managed to increase the Nintendo 64's graphics capacity and use more information than what could be stored on the console. If you hear someone say that the max texture size of your platform is 64x64 pixels, and you take it as a truth, it will be a truth, but if you believe it's not you can overcome it. Just look at the big ship wall! And if Banjo-Kazooie could do this with limited 90s technology, imagine what we could do with the overpowered technology of today! We can make beautiful things that run fast on all devices, if we look for win-win solutions instead of compromises, and believe the impossible is possible. But more on this later, maybe.