How to Use Low-Res Sprites with UV Shaders for High-Res Characters?

Hi everyone,

I came across an interesting technique shared by Oskar Stålberg (creator of Bad North) on Twitter:

The approach involves using low-res animation sprites that encode UV coordinates to sample from a high-res character texture. This seems like a great way to combine lightweight animations with detailed visuals, but I’m not sure how to replicate this in Blender.

Does anyone have advice or tutorials on how to set up something similar? Specifically:

  1. How to create low-res sprites with UV coordinates?
  2. How to set up a shader in Blender that uses UVs to sample a high-res texture?

I’d love to hear any insights or suggestions. Thanks in advance!

Moved from Animations to Animation and Rigging

I guess you can try to start from baking some simple material with uv coordinates passed right to basecolor/emissive channel which will be baked to spritesheet.

Thank you for your suggestion! I’m still trying to fully wrap my head around this workflow. Could you possibly elaborate or point me toward resources/tutorials that go into more detail about this? I’d love to do more research, so if you have any links, tutorials, that would be incredibly helpful. Thanks again for your help!

Hm, honestly i dont believe i ever saw any tutorials showing such technique in depth, or even in a sneak peek manner.

I believe you can start from simple experiment like so. 512p texture with baked UV from a cylinder cap are using as a texture coordinates for 2k texture:

Here’s the original 2k texture. As you can see the smile are on the bottom, but since we pass baked UV coordinates from frame 8, where out circle was offset by Z axis, we affect our smile and “move” them to new position on the plane.

Due to the fact i didnt setup render output correctly (it was on sRGB i believe), the smile are deformed. Baked UV should be in linear space.

And the material for circle are bloody simple:

1 Like

Thank you very much, i’ll try my best! :slight_smile:

1 Like