Here are some explanations on the settings.
Thank you very much for the extensive explanation(s) circular. That is very much appreciated.
Pardon my ignorance but instead of what seems to be you repeating documentation is there something I can read about such details of the different effects that BGRA contains/support ? Right now I just try and dive into the examples, sources and wiki to get myself acquainted by playing with them but it is not always enough to get a good understanding of some of details of the effects.
For lolz I modified Gigatron's example to draw phong shaded spheres that have a light source originating from the middle of the screen at a certain distance (which would have taken me days to figure out without your splendid explanation). It could just as well be an animated point to make it appear even more dynamic.
Of course the ball.png is not perfect but you can replace it with better image..
Yes, I know
I understand that it is easy enough to add other graphics for the bob routine but that is imho a bit besides the point.
My point is that BGRA contains so many nice features that it almost feels like a shame that the code you present looks like it does not make full use of BGRA. That is not meant to criticize the code itself but in all honestly for most of the effects you showed there is no need to use BGRA et all. For instance all effects shown so far are pretty easy to implement using f.e. PTC and/or normal bitmap graphics.
I look at BGRA as the tool that can be used to create such images and color-schemes as attached in your post, and not (only) for displaying them
edit: for some colourful addition:
procedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);
const
h: byte = 0; // hue value
var
i,x,y : integer; // index, xcoord and ycoord of bob
box : TRect; // boxed position of bob
r,g,b : byte; // red, green and blue color values
cd : integer = 2; // color distance between bobs
cs : integer = 1; // color cycling speed
begin
for i:=0 to 39 do
begin
FShading.LightPosition := point(320, 220);
x := 320+round(size*sin(i*fc+t));
y := 220+round(size*cos(i*fs+t));
box := bounds(x, y, 32, 32);
HLStoRGB((h + i * cd) mod 255, 255 shr 1, 255, r,g,b);
FShading.DrawSphere(bitmap,box,8,BGRA(r,g,b));
end;
h := (h + cs) mod 255;
end;