In dem Konstruktor von der Classe GreyFlatRenderer.java wird ein eindimensionales Integer-Array (colors)
in einer for-Schleife mit den Grau-Werten (immer gleiches Anteil von Rot, Grün und Blau) gefüllt.
public GreyFlatRenderer() { clipper = new WCClipper(); bfculler = new BFCuller(); colors = new int[256]; for (int i=0; i<256; i++) { colors[i] = 255<<24; colors[i] |= i<<16; colors[i] |= i<<8; colors[i] |= i; } }
Nach der Triangulisierung werden die Intensität-Werte an den Eckpunkten genommen,
gemittelt und und an die Scanline-Methode übergegeben.
shade(p0,p1,p2, (l0+l1+l2)/3.0f); // l0, l1, l2 Intensität an den Eckpunkten. ::: putScanline(y, xAC, xAB, zAC, zAB, I); // I für gemittelte Intensität von l0, l1, l2.
In der Scanline-Methode wird der übergegebene Wert mit 256 multipliziert (da der Intensität-Wert zwischen 0 und 1 liegt)
und es wird Pixel mit dem Wert aus dem colors-Array mit dem Ergebnis der Multiplikation als Index gesetzt.
int col = colors[(int)(I*256)]; ::: cgc.setPixelWithZ(x, y, z, col);