MODULE srVolShader;
IMPORT srBase;
TYPE SREAL=srBase.SREAL;
TYPE Color=srBase.COLOR;
TYPE Shader* = OBJECT
PROCEDURE Shade*(VAR x,y,z,r,g,b,a: SREAL);
END Shade;
END Shader;
TYPE checkerboard3d*= OBJECT(Shader)
VAR
isquish*, jsquish*, ksquish*: INTEGER;
black, white: Color;
PROCEDURE squish*(i,j,k: INTEGER);
BEGIN
isquish:=i; jsquish:=j; ksquish:=k;
END squish;
PROCEDURE set*(b,w: Color);
BEGIN
black:=b; white:=w;
END set;
PROCEDURE Shade*(VAR x,y,z,r,g,b,a: SREAL);
VAR
i,j,k:INTEGER;
BEGIN
i:=SHORT(ENTIER(x*isquish));
j:=SHORT(ENTIER(y*jsquish));
k:=SHORT(ENTIER(z*ksquish));
IF ODD(i+j+k) THEN
r:=black.red; g:=black.green; b:=black.blue; a:=0
ELSE
r:=white.red; g:=white.green; b:=black.blue; a:=0
END
END Shade;
END checkerboard3d;
END srVolShader.