Nutty

07-18-2001, 02:33 PM

LO.

I'm looking at the register combiner extension at the mo, and I seem to understand it all, except what equations are done on the variables.

gcc1rgb = [ Argb[r]*Brgb[r], Argb[g]*Brgb[g], Argb[B]*Brgb[B] ]

gcc2rgb = [ Argb[r]*Brgb[r] + Argb[g]*Brgb[g] + Argb[B]*Brgb[B],

Argb[r]*Brgb[r] + Argb[g]*Brgb[g] + Argb[B]*Brgb[B],

Argb[r]*Brgb[r] + Argb[g]*Brgb[g] + Argb[B]*Brgb[B] ]

gcc3rgb = [ Crgb[r]*Drgb[r], Crgb[g]*Drgb[g], Crgb[B]*Drgb[B] ]

gcc4rgb = [ Crgb[r]*Drgb[r] + Crgb[g]*Drgb[g] + Crgb[B]*Drgb[B],

Crgb[r]*Drgb[r] + Crgb[g]*Drgb[g] + Crgb[B]*Drgb[B],

Crgb[r]*Drgb[r] + Crgb[g]*Drgb[g] + Crgb[B]*Drgb[B] ]

gcc5rgb = gcc1rgb + gcc3rgb

gcc6rgb = gcc1rgb or gcc3rgb

gcc1a = Aa * Ba

gcc2a = Ca * Da

gcc3a = gcc1a + gcc2a

gcc4a = gcc1a or gcc2a

This is what the NV spec says, but it looks horrendously complcated.

Can anyone tell me what is going on here?

Then whats all this bit about?

if <portion> is RGB, out1rgb = max(min(gcc1rgb + cbiasrgb) * cscalergb, 1), -1)

if <portion> is ALPHA, out1a = max(min((gcc1a + cbiasa) * cscalea, 1), -1)

otherwise <portion> must be RGB and

out1rgb = max(min((gcc2rgb + cbiasrgb) * cscalergb, 1), -1)

If the <cdDotProduct> parameter is FALSE, then

if <portion> is RGB, out2rgb = max(min((gcc3rgb + cbiasrgb) * cscalergb, 1), -1)

if <portion> is ALPHA, out2a = max(min((gcc2a + cbiasa) * cscalea, 1), -1)

otherwise <portion> must be RGB so

out2rgb = max(min((gcc4rgb + cbiasrgb) * cscalergb, 1), -1)

If the <muxSum> parameter is FALSE, then

if <portion> is RGB, out3rgb = max(min((gcc5rgb + cbiasrgb) * cscalergb, 1), -1)

if <portion> is ALPHA, out3a = max(min((gcc3a + cbiasa) * cscalea, 1), -1)

otherwise

if <portion> is RGB, out3rgb = max(min((gcc6rgb + cbiasrgb) * cscalergb, 1), -1)

if <portion> is ALPHA, out3a = max(min((gcc4a + cbiasa) * cscalea, 1), -1)

Any help understanding this would be appreciated.

cheers,

Nutty

[This message has been edited by Nutty (edited 07-18-2001).]

I'm looking at the register combiner extension at the mo, and I seem to understand it all, except what equations are done on the variables.

gcc1rgb = [ Argb[r]*Brgb[r], Argb[g]*Brgb[g], Argb[B]*Brgb[B] ]

gcc2rgb = [ Argb[r]*Brgb[r] + Argb[g]*Brgb[g] + Argb[B]*Brgb[B],

Argb[r]*Brgb[r] + Argb[g]*Brgb[g] + Argb[B]*Brgb[B],

Argb[r]*Brgb[r] + Argb[g]*Brgb[g] + Argb[B]*Brgb[B] ]

gcc3rgb = [ Crgb[r]*Drgb[r], Crgb[g]*Drgb[g], Crgb[B]*Drgb[B] ]

gcc4rgb = [ Crgb[r]*Drgb[r] + Crgb[g]*Drgb[g] + Crgb[B]*Drgb[B],

Crgb[r]*Drgb[r] + Crgb[g]*Drgb[g] + Crgb[B]*Drgb[B],

Crgb[r]*Drgb[r] + Crgb[g]*Drgb[g] + Crgb[B]*Drgb[B] ]

gcc5rgb = gcc1rgb + gcc3rgb

gcc6rgb = gcc1rgb or gcc3rgb

gcc1a = Aa * Ba

gcc2a = Ca * Da

gcc3a = gcc1a + gcc2a

gcc4a = gcc1a or gcc2a

This is what the NV spec says, but it looks horrendously complcated.

Can anyone tell me what is going on here?

Then whats all this bit about?

if <portion> is RGB, out1rgb = max(min(gcc1rgb + cbiasrgb) * cscalergb, 1), -1)

if <portion> is ALPHA, out1a = max(min((gcc1a + cbiasa) * cscalea, 1), -1)

otherwise <portion> must be RGB and

out1rgb = max(min((gcc2rgb + cbiasrgb) * cscalergb, 1), -1)

If the <cdDotProduct> parameter is FALSE, then

if <portion> is RGB, out2rgb = max(min((gcc3rgb + cbiasrgb) * cscalergb, 1), -1)

if <portion> is ALPHA, out2a = max(min((gcc2a + cbiasa) * cscalea, 1), -1)

otherwise <portion> must be RGB so

out2rgb = max(min((gcc4rgb + cbiasrgb) * cscalergb, 1), -1)

If the <muxSum> parameter is FALSE, then

if <portion> is RGB, out3rgb = max(min((gcc5rgb + cbiasrgb) * cscalergb, 1), -1)

if <portion> is ALPHA, out3a = max(min((gcc3a + cbiasa) * cscalea, 1), -1)

otherwise

if <portion> is RGB, out3rgb = max(min((gcc6rgb + cbiasrgb) * cscalergb, 1), -1)

if <portion> is ALPHA, out3a = max(min((gcc4a + cbiasa) * cscalea, 1), -1)

Any help understanding this would be appreciated.

cheers,

Nutty

[This message has been edited by Nutty (edited 07-18-2001).]