Jump to content
  • Advertisement
Sign in to follow this  
greggman

Texture Samplers

This topic is 2118 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

There's a feature of DirectX called "samplers" or "sampler state".  A sampler has the clamping/repeating/filtering settings used with a texture. This lets you use the same texture with in 2 different samplers with different settings
 
My experience is, except for the examples in books, I've never seen that ability used. I've never seen a game asset (shipped 17 games) that used a single texture in such a way that 2 samplers would be needed, one with the settings one way and other with the settings another way for the same texture. For the stuff I've worked on there's always been a 1 texture to 1 sampler mapping.
 
Do you know of any games that have needed to use more than 1 sampler for the same texture?
 
If you know of one please name the game and where in the game the feature is used.

Share this post


Link to post
Share on other sites
Advertisement

I'm not sure which version of D3D you're referring to, but you should be aware that under 10+ textures and samplers are completely decoupled.  This means that as well as using the same texture with two (or more) different samplers, you can also use the same sampler with two (or more) different textures.  HLSL code might look like:

 

float4 result = texture1.Sample (linearSampler, texcoords1) + texture2.Sample (linearSampler, texcoords2);

 

The usefulness of this is that it allows for sampler state to be set only once and then reused for multiple textures.

 

Worth noting that the same functionality is available under OpenGL (although it isn't exposed in GLSL) using GL_ARB_sampler_objects (which includes a discussion of the rationale behind it).

Share this post


Link to post
Share on other sites

Yeah it's not really about using the same texture multiple samplers within a given shader, it's more about decoupling texture state from sampler state. If you use 32 textures but only 4 different sampler configurations then you change a lot less state if the samplers are decoupled. It also lets you author shaders in such a way that you can just decide in code which sampler configuration to use rather than having to to set the state externally with D3D code.

Edited by MJP

Share this post


Link to post
Share on other sites

Setting up the sampler states in the shader can give you a finer level in control. They mostly become useful when you have to send multiple textures to the shader at once (as is common with bump/normal mapping, depth map sampling, etc). For instance, with a skybox, texture clamping would be preferred over tiling. It becomes crucial to bind the correct textures to the right sampler states, because some texture formats may not be compatible with certain states.

Share this post


Link to post
Share on other sites

Okay guys, I see your point. I've been in GL land for the last few years where all the state that's on a DX10+ sampler is actually directly on the texture. In that land, I've never needed to decouple a texture from a sampler (which I would have to effectively emulate). My artists have never come to given me a file with one texture used multiple ways.  So, the ability to use 2 samplers with 1 texture, while I understand it, isn't something I've ever needed to do. 

 

The ability to use 1 sampler with multiple textures adds something I guess but only because samplers are detached from textures on DX10+. Not because I actually need that functionality. Though I can see how if I did need it and I didn't have it I'd be screwed (would have to duplicate the texture).

 

thanks

Share this post


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

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!