Alpha precision on R300 and NV30 in "deep" FB mode

Grall

Invisible Member
Legend
Sorry if this has been asked and answered before, but I actually haven't seen it answered anywhere, not in pre/reviews or here on the board.

So, question is: how many bits?

That these chips feature 24 or 32 bit floats for color channels is a well-known fact, but alpha precision seems to be a well-kept secret... :)


*G*

PS: Fully expecting Dave to reply with a link to some thread with 3000+ messages in it I'll have to sort through, and lock this one! :D
 
I think the alpha channel is 24 or 32 bits just like the colour channels.

R G B A

32 + 32 + 32 + 32 = 128

24 + 24 + 24 + 24 = 96

Cheers.
 
Because of the additional programmability and the ability to swizzle colors, consistency between the color and alpha channels is an absolute necessity.

In other words, the programmability of these cards would utterly fail under certain special scenarios if the alpha channel was not computed with the exact same accuracy.
 
Alright, thanks guys!

By the way, what does 'swizzle colors' really MEAN anyway?

And how much more useful is a 96/128-bit framebuffer compared to 64-bit? Carmack seemed satisfied with 'only' 64 when he started talking about floating-point formats for framebuffers.

*G*
 
As far as I'm concerned, for most things, 64-bit color is more than enough. 96-bit or 128-bit color would be useful for large numbers of passes, or non-color data used in pixel shaders.

And swizzling the colors basically means you can assign one color to any other.
 
Assign a color to another color? That makes no sense at all man! :)

Either I'm stupid, or you forgot to add some words to your sentence, hehe. Please give it another try, maybe an example to help clear the mists...?


*G*
 
I don't have any actual experience within this area (graphic programming), but here is my take on what they mean by swizzling. A pixel is represented by the following components Red, Green, Blue, Alpha channel [RGBA]. You can assign the value from the R component to any other component, for instance the B component.

If you have a pure red pixel (8bit format) [R=255, B=0, G=0, A=0], and you swizzle the R and B components you end up with a pure blue pixel [R=0, B=255, G=0, A=0]. {Or you end up with some mix of pure-red with pure-blue pixel [R=255, B=255, G=0, A=0]. I'm not quite sure on exact semantics.}

I appologize if any of this is incorrect, but this is my guess at things. Could somone please correct me if I'm wrong?

--|BRiT|
 
Well, swizzling works like that:
If you have a register, say c0, containing [R=0.8, G=0.6, B=0.4, A=0.2], and in your shader code you write c0.bagr, the actual value you get is [0.4, 0.2, 0.6, 0.8]. You could also write something like c0.aaaa to turn you alpha value into a shade of grey.
 
Back
Top