• Advertisement
Sign in to follow this  

DirectX scaling pixelated textures

This topic is 2220 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I'm having some troubles with scaling and maintaining the pixelated look of my textures.

[img]http://i.imgur.com/Am7S0.png[/img]

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:
[img]http://i.imgur.com/v0mQp.png[/img]


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:

[img]http://i.imgur.com/0WW6t.png[/img]


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 [img]http://public.gamedev.net/public/style_emoticons/default/smile.gif[/img]

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
[quote name='iedoc' timestamp='1324612567' post='4896720']
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
[/quote]

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.

Share this post


Link to post
Share on other sites
Thanks guys! I'm using DirectX 9 so setting MagFilter = POINT did the trick. It works like a charm :)

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement