, 57 tweets, 13 min read Read on Twitter
#SuperMarioOdyssey tech art thread, let's go. Feel free to respond with your own observations. No spoilers.
Photo mode's 'silhouette' option is just the depth buffer. Could use this to make your own effects out of screenshots.
There's a bit of weird shadowing on non-flat surfaces beneath Mario. It's especially visible on particles from jumping off your hat.
This implies that the game doesn't render a normal buffer, because with that you could clip the shadow on very uneven surfaces.
This hole is used in many walls early on. The shape always being exactly the same suggests Mario team uses brush-based level design tools.
Here you can see the frog is slightly doubled. This is an artifact of using what's been rendered so far as the base for water refraction.
Gist is you take the existing render and adjust the UVs based on the camera's view direction to emulate the high refractive index of water.
Because the frog is rendered earlier than water, the buffer already has the frog and it gets shifted down along with what's under the water.
Sausage Sports Club had the same issue and I used a hack fix to unrefract pixels of stuff over the water by checking the depthbuffer.
In the frozen desert level you can see they used the same hack fix on the ice. It's hard to see but most obvious under Mario's left arm.
Notably this fix makes the shader more expensive. I think they chose not to use it by the frogs bc the water can occupy most of the screen.
If framerate starts to slow, Odyssey lowers the resolution temporarily to keep the experience smooth at the expense of resolution.
The pause menu uses a much higher poly version of Mario and Cappy. I'd guess in-game poly count is 15k and menu version is closer to 50k.
There's a big difference between the textures in-game and in the pause menus as well. I'd guess 2k to 4k. The hair is especially noticeable.
As is the trend since MGSV, Odyssey use dither transparency a lot. Team Mario's innovation here is different patterns for different uses.
If the camera is close to Mario, we see dots. When Mario is behind a solid, short lines with offset rows. Object's that fade, bayer pattern.
Odyssey's foliage uses amazing normal maps and a specular cheat to fake 3D-ness despite being simple cutout quads.
Already kicking myself for not writing let's a go
I should note that this isn't just a stylistic choice. Dither avoids overdraw by creating the illusion of transparency through stippling.
Another note about foliage, Odyssey doesn't bother to draw shadows if the meshes are too small to notice them. Probably artist defined.
These guys are a series of connected physics joints. Each piece gets stuck on/wraps around geometry, but ignore all other segments.
Mario's ship has 2 types of persistence. Decals and scuffs. Can tell decals are drawn separately and as cutoff because of the round edges-
and the scuffs us a texture mask where paint was supposedly scraped off. You can tell by the blurry edge where the textures blend.
For rainy scenes: a few varieties of screen raindrops and ground particles, each of which use a normal map to distort what's behind them.
I first noticed this one in Splatoon. Make a surface feel wet by faking many lights in the shader so there are shines in every direction.
Here's another example of this on some water.
Moving onto water, here's a closeup showing the use of vertex displacement to make the water react to your movement.
There's a few ways they could make the water so reactive, but bc of the fog and cleanable goop I think it's probably similar to-
Naughty Dog's history particle system where they render a top down view of particles representing position and velocity and decay over time.
That gives you a fixed cost representation of actors over time and makes shader access to that info very cheap.
Next topic: In New Donk City, city folk change their animation speed based on how far away you are.
This spreads out the work of updating many skinned character rigs over time. Some characters update every nth frame, some nth + 1 frame, etc
I first saw this technique in Dark Souls, but I'm sure it existed long before that.
Looks like a similar, less successful fix is used when underwater looking towards the surface as well.
It seems there's more to this. When turning the camera quickly there seems to be a resolution drop on parts of the screen far from Mario.
It feels a bit like motion blur, but that may be an additional step to try to hide the lower resolution.
I can't tell if this is a stylistic choice or a trick to try a save of performance, honestly.
I've seen people gawking at the furry ground in the first area. It's really nice, but surprisingly simple.
The corners are lined with a cutout mesh with individual curly bits of fur. Then just a few patches of standing fur are added.
Here you can see some hills have a shell of cutout fur on top, but many don't. Also there's no normal map, just a diffuse and rim lighting.
Mario's hat resolves against wall collision when thrown, even if using the special motion controlled dab that does a wild spin.
Notably it doesn't stop and give up when hitting walls it just keeps doing it's best to follow the intended path without intersecting walls.
Challenge rooms have simple backgrounds often with just a skybox. To ground you in the space there are slow moving particles all over.
Because they're moving and farther away ones are correctly sized, you get a good sense of scale and the world doesn't feel infinite.
Here's the fog I mentioned earlier when covering water. Notably the fog only dissipates when Mario is moving-
which supports my suggestion that they're using particles rendered to a buffer from a top down camera to cheaply save movement over time.
I've got just a few more from the rest of my playthrough. Heads up. I show a later but not especially secret costume a few tweets down.
In 3D platformers knowing the spot you're going to land a jump is super important. Mario's shadow is always cast from directly above.
Lots of actors use blob shadows to show positioning in a similar way, but Mario has a real stencil shadow which means 2 directional lights.
In-game UI has an outline/shadow that starts dark gray and fades off to ensure elements are readable against bright backgrounds.
When trying to jump away from a nearby wall, joint constraints want you in the wall but physics don't, resulting in this weird beak bend.
Ok next tweet shows the later, but not secret, costume. Second warning so please don't bite my head off.
Here, selective motion blur is used to create a cool hat trail. I'd guess the hats are stenciled out and recent frames are saved/composited-
in an image affect that combines the current render with each of the recent hat-stenciled buffers, with older frames being less opaque.
The especially interesting bit is that Mario's coloring is based on the main directional light and only the shadow is from this extra light.
Pretty sure the trail of hats aren't just transparent clones because the spikes would self overlap creating sorting artifacts.
unroll
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to 🌭Chris Wade
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($3.00/month or $30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!