HLSL Texture Samplers

Started by
3 comments, last by MJP 14 years, 1 month ago
Does anyone know what value gets put into the alpha channel if you try sample a texture that doesn't have an alpha channel? Eg. if I have a bitmap loaded in and I sample it in the shader with: float4 tex = tex2D(TextureSampler, TextureCoords) What gets put into tex.a? 0? I ask because I want a good way to determine if in a specular map, the power/gloss value has been put into the alpha channel, and if not, use a default value.
Advertisement

I'm not sure, but I think this is one of the areas where no predictable behavior is guaranteed (like behavior when setting a texture to null). It might be a more robust option to convert your textures to use an alpha channel with the default value. That way you don't need extra code for special cases, which as I got told is always a good thing [smile]
Rim van Wersch [ MDXInfo ] [ XNAInfo ] [ YouTube ] - Do yourself a favor and bookmark this excellent free online D3D/shader book!
To my knowledge, the behaviour is indeed specified. The default result of a texture access is (0, 0, 0, 1). So if you access a one-channel texture, you'll get (r, 0, 0, 1) as a result.

You might want to reread it in the documentation, though.
----------
Gonna try that "Indie" stuff I keep hearing about. Let's start with Splatter.
Thanks. The documentation doesn't really specify what is returned.

http://msdn.microsoft.com/en-us/library/ee418491(VS.85).aspx

I guess I'll just have to test it out and see what happens.
Quote:Original post by Shael
I guess I'll just have to test it out and see what happens.


Unless you have every GPU and driver made in the last 7 years that you can test on, I wouldn't recommend that approach.

This topic is closed to new replies.

Advertisement