Nutty
07-18-2001, 01: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).]