DirectX scaling pixelated textures

Started by
3 comments, last by Syranide 12 years, 4 months ago
I'm having some troubles with scaling and maintaining the pixelated look of my textures.

Am7S0.png

That one is 16x16 and I want to be able to scale it up to any size and still have the same pixelated style.
This is what it looks like when i scale it to 256x256:
v0mQp.png


As you can see it's very blurry but I've been able to improve the result a bit by setting AlphaBlendEnable = FALSE in my pixel shader, that makes it look like this:

0WW6t.png


Removing alpha blending makes the border look right, but it's still very blurry inside. I tried to scale up the 16x16 texture in paint to a much bigger size and the result was exactly like I wanted, so I'm sure it's possible to do this with DirectX as well. Does anyone know what render states I should set to get the result I want? Or if there's something else I'm missing please tell me.

I hope there weren't to many images in this post, I really wanted to be clear about my problem.

Thanks smile.gif
Advertisement
I think you have to change the filter mode in your sampler description.

if your using direct3d 11, then when you fill out the D3D11_SAMPLER_DESC change the Filter member to D3D11_FILTER_MIN_MAG_MIP_POINT

the same is for direct3d 10 except you use D3D10_FILTER_MIN_MAG_MIP_POINT.

I hope i'm right, at least it worked for me when i wanted to keep my images pixelated when they are stretched

I think you have to change the filter mode in your sampler description.

if your using direct3d 11, then when you fill out the D3D11_SAMPLER_DESC change the Filter member to D3D11_FILTER_MIN_MAG_MIP_POINT

the same is for direct3d 10 except you use D3D10_FILTER_MIN_MAG_MIP_POINT.

I hope i'm right, at least it worked for me when i wanted to keep my images pixelated when they are stretched


Yeah that's exactly the problem. What you're seeing is the bilinear filtering being applied to each pixel resulting in a blur across the pixels. Setting it to point will get rid of the blurring. Also if you only need alpha as being on or off you're probably better off using Alpha Test instead of Alpha Blend.
Thanks guys! I'm using DirectX 9 so setting MagFilter = POINT did the trick. It works like a charm :)
If you're using POINT sampling for pixelated textures, you may need to offset your texture coordinates by half a pixel (0.5 / size), or you can end up with weird texturing issues that may be hard to spot at first.


This topic is closed to new replies.

Advertisement