Jump to content

  • Log In with Google      Sign In   
  • Create Account

Texture Samplers


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 greggman   Members   -  Reputation: 130

Like
0Likes
Like

Posted 29 January 2013 - 01:25 PM

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.

Gregg Tavareshttp://greggman.com

Sponsor:

#2 mhagain   Crossbones+   -  Reputation: 8005

Like
2Likes
Like

Posted 29 January 2013 - 02:14 PM

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).


It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.


#3 MJP   Moderators   -  Reputation: 11450

Like
1Likes
Like

Posted 29 January 2013 - 02:43 PM

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, 29 January 2013 - 09:05 PM.


#4 CC Ricers   Members   -  Reputation: 627

Like
0Likes
Like

Posted 29 January 2013 - 02:59 PM

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.


My development blog: Electronic Meteor

#5 greggman   Members   -  Reputation: 130

Like
0Likes
Like

Posted 29 January 2013 - 08:42 PM

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


Gregg Tavareshttp://greggman.com




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