Jump to content

  • Log In with Google      Sign In   
  • Create Account


DirectX scaling pixelated textures


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 simpler   Members   -  Reputation: 912

Like
0Likes
Like

Posted 22 December 2011 - 07:30 PM

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

Posted Image

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:
Posted Image


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:

Posted Image


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 Posted Image

Sponsor:

#2 iedoc   Members   -  Reputation: 524

Like
1Likes
Like

Posted 22 December 2011 - 09:56 PM

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
Braynzar Soft - DirectX Lessons & Game Programming Resources!

#3 Dancin_Fool   Members   -  Reputation: 581

Like
1Likes
Like

Posted 22 December 2011 - 10:29 PM

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.

#4 simpler   Members   -  Reputation: 912

Like
0Likes
Like

Posted 23 December 2011 - 03:35 AM

Thanks guys! I'm using DirectX 9 so setting MagFilter = POINT did the trick. It works like a charm :)

#5 Syranide   Members   -  Reputation: 375

Like
1Likes
Like

Posted 23 December 2011 - 05:53 AM

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.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS