🚀
REMĀĘĆĞ$Č*Ēĉ!ăě-ĕ'ď
MODE1:VDU5
FORN=8TO247:FORM=0TO319
X=0:Y=-.1:Z=3:U=(M-159.5)/160:V=(N-127.5)/160:W=1/SQR(U*U+V*V+1):U=U*W:V=V*W:I=SGNU:G=1
E=X-I:F=Y-I:P=U*E+V*F-W*Z:D=P*P-E*E-F*F-Z*Z+1:IFD>0T=-P-SQRD:IFT>0X=X+T*U:Y=Y+T*V:Z=Z-T*W:E=X-I:F=Y-I:G=Z:P=2*(U*E+V*F-W*G):U=U-P*E:V=V-P*F:W=W+P*G:I=-I:GOTO50
IFV<0P=(Y+2)/V:V=-V*((INT(X-U*P)+INT(Z-W*P)AND1)/2+.3)+.2
GCOL0,3-(48*SQRV+?(PAGE+5+M MOD4+N MOD4*4)/3)DIV16
PLOT69,4*M,4*N:NEXT,
#bbcmicrobot
I ran @coprolite9000's program and got this.
Source: https://bbcmic.ro/?t=9ctpk #bbcbasic
Owlet BBC BASIC Editor

#bbcmicrobot @coprolite9000 🚀$@%="ĀĘĆĞ$Č*Ēĉ!ăě-ĕ'ďGF$0GC!0":ë2:ï5:ãN=0¸Ɛƈ4:ì¹,N:ãM=0¸159:B=2330:X=0:Y=-.1:Z=3:U=(M-79.5)/80:V=(N-510)/640:W=1/¶(U*U+V*V+1):U=U*W:V=V*W:I=´U:G=1
E=X-I:F=Y-I:P=U*E+V*F-W*Z:D=P*P-E*E-F*F-Z*Z+1:çD>0T=-P-¶D:çT>0X=X+T*U:Y=Y+T*V:Z=Z-T*W:E=X-I:F=Y-I:G=Z:P=2*(U*E+V*F-W*G):U=U-P*E:V=V-P*F:W=W+P*G:I=-I:B=2334:å20
çV<0P=(Y+2)/V:V=-V*((¨(X-U*P)+¨(Z-W*P)ƀ1)/2+.3)+.2
æ0,B?((48*¶V+@%?(3ƀMƄ12ƀN)/3)Ɓ16):ð65,8,0:í,
I ran @rheolism's program and got this.
Source: https://bbcmic.ro/?t=b5i2Y #bbcbasic
Owlet BBC BASIC Editor

#bbcmicrobot 🚀 @rheolism
$@%="ĀĘĆĞ$Č*Ēĉ!ăě-ĕ'ďGF$0GC!0":ë2:ï5:ãN=0¸Ɛ ƈ4:ì¹,N:ãM=0¸159:B=2330:X=0:Y=-.1:Z=3:U=(M-79.5)/80:V=(N-510)/640:W=1/¶(U*U+V*V+1):U=U*W:V=V*W:I=´U:G=1
E=X-I:F=Y-I:P=U*E+V*F-W*Z:D=P*P-E*E-F*F-Z*Z+1:çD>0T=-P-¶D:çT>0X=X+T*U:Y=Y+T*V:Z=Z-T*W:E=X-I:F=Y-I:G=Z:P=2*(U*E+V*F-W*G):U=U-P*E:V=V-P*F:W=W+P*G:I=-I:å20
çV<0P=(Y+2)/V:V=-V*((¨(X-U*P)+¨(Z-W*P)ƀ1)/2+.3)+.2:B=4ƂB
æ0,B?((48*¶V+@%?(3ƀM Ƅ12ƀN)/3)Ɓ16):ð65,8,0:í,
@geoffl #bbcmicrobot 🚀$@%="ĀĘĆĞ$Č*Ēĉ!ăě-ĕ'ďBAH3BB!0":ë1:ï787;4;0;5:ãN=0¸Ɛƈ4:ì¹,N:ãM=0¸319:B=2330:X=0:Y=-.1:Z=3:U=(M-159.5)/160:V=(N-510)/640:W=1/¶(U*U+V*V+1):U=U*W:V=V*W:I=´U:G=1
E=X-I:F=Y-I:P=U*E+V*F-W*Z:D=P*P-E*E-F*F-Z*Z+1:çD>0T=-P-¶D:çT>0X=X+T*U:Y=Y+T*V:Z=Z-T*W:E=X-I:F=Y-I:G=Z:P=2*(U*E+V*F-W*G):U=U-P*E:V=V-P*F:W=W+P*G:I=-I:å20
çV<0P=(Y+2)/V:V=-V*((¨(X-U*P)+¨(Z-W*P)ƀ1)/2+.3)+.2:B=4ƂB
æ0,B?((48*¶V+@%?(3ƀMƄ12ƀN)/3)Ɓ16):ð65,4,0:í,
I ran @rheolism's program and got this.
Source: https://bbcmic.ro/?t=b7lfU #bbcbasic
Owlet BBC BASIC Editor

@bbcmicrobot @rheolism

Just noticed some redundant code there.
Remove "G=1:" and ":G=Z:"
Replace the two remaining Gs with Zs.

8 bytes saved.

@geoffl #bbcmicrobot
🚀$@%="ĀĘĆĞ$Č*Ēĉ!ăě-ĕ'ďBAH3BB!0":ë1:ñ"ąēĀĄrheēāăoliēĂĀsm!ēăĆ!":ãN=0¸Ɛƈ4:ì¹,N:ãM=0¸319:B=2330:X=0:Y=-.1:Z=3:U=(M-159.5)/160:V=(N-320)/640:W=1/¶(U*U+V*V+1):U=U*W:V=V*W:I=´U:
E=X-I:F=Y-I:P=U*E+V*F-W*Z:D=P*P-E*E-F*F-Z*Z+1:çD>0T=-P-¶D:çT>0X=X+T*U:Y=Y+T*V:Z=Z-T*W:E=X-I:F=Y-I:P=2*(U*E+V*F-W*Z):U=U-P*E:V=V-P*F:W=W+P*Z:I=-I:å20
çV<0P=(Y+2)/V:V=-V*((¨(X-U*P)+¨(Z-W*P)ƀ1)/2+.3)+.2:B=4ƂB
æ0,B?((48*¶V+@%?(3ƀMƄ12ƀN)/3)Ɓ16):ð65,4,0:í,
I ran @rheolism's program and got this.
Source: https://bbcmic.ro/?t=bC9Go #bbcbasic
Owlet BBC BASIC Editor

#bbcmicrobot MO.4:V.275;2;0;-233;1,2,4,8,16,32,64,128,-489;128,64,32,16,8,4,2,1:?584=8:A%=19:REP.V.A%;4;USR-12;A%;3;EXP2;-258ORRND;-258ORRND;:U.0
I ran @rheolism's program and got this.
Source: https://bbcmic.ro/?t=bCe5Y #bbcbasic
Owlet BBC BASIC Editor

@bbcmicrobot @rheolism #bbcmicrobot MODE2
FORI=0TO64
FORJ=0TO7
IFI=0:GCOL0,(J MOD4)+1
IFI>0ANDI<32:GCOL0,5
IFI=32:GCOL0,(J MOD4)+6
IFI>32ANDI<64:GCOL0,10
IFI=64:GCOL0,(J MOD4)+11
MOVEJ*140,(I+16)*10:PLOT97,140,10
NEXT,
VDU19,5,3;0;19,10,4;0;5
J=0
REPEAT
Z=INKEY(20)
J=(J+1)MOD4:K=(J+2)MOD4
VDU19,J+1,3;0;19,K+1,0;0;
VDU19,J+6,4;0;19,K+6,3;0;
VDU19,J+11,0;0;19,K+11,4;0;
UNTIL0
I ran @bazzargh's program and got this.
Source: https://bbcmic.ro/?t=bCfbv #bbcbasic
Owlet BBC BASIC Editor

#bbcmicrobot MO.1:?&D0=2:F.L=1TO1280:C=L>640A.2:C.-C:C.1ORC:V.ASCM."OOFWFSHPOOBHJWFZPVVQOFWFSHPOOBMFUZPVEPX",L MOD39+1)-1:N.:V.5,787;2;0;275;4;0
I ran @rheolism's program and got this.
Source: https://bbcmic.ro/?t=bCxKD #bbcbasic
Owlet BBC BASIC Editor

#bbcmicrobot 🚀
$@%="ĀĘĆĞ$Č*Ēĉ!ăě-ĕ'ďBAH3BB!0":MODE1:VDU787;4;0;5:FORN=0TOPAGE STEP4:MOVETRUE,N:FORM=0TO319:B=2330:X=.3:Y=.1:Z=2:U=(M-159.5)/160:V=(N-510)/640:W=1/SQR(U*U+V*V+1):U=U*W:V=V*W:I=4.2
E=X:F=Y:P=U*E+V*F-W*Z:D=P*P-E*E-F*F-Z*Z+1:IFD>0T=-P-SQRD:IFT>0X=X+T*U:Y=Y+T*V:Z=Z-T*W:E=X:F=Y:P=I*(U*E-V*F+W*Z):U=U-P*E:V=V-P*F:W=W+P*Z:I=-I:GOTO20
IFV<0P=(Y+2)/V:V=-V*((INT(X-U*P)+INT(Z-W*P)AND1)/2+.3)+.2:B=4EORB
GCOL0,B?((48*SQRV+@%?(3ANDM OR12ANDN)/3)DIV16):PLOT65,4,0:NEXT,
I ran @geoffl's program and got this.
Source: https://bbcmic.ro/?t=bGc15 #bbcbasic
Owlet BBC BASIC Editor

@bbcmicrobot Quick refraction hack avoiding using any sines (Sorry Snell). It's an approximation messes up the current colour/dithering which should fixable. With a few more bytes adding a second reflective sphere further away might also render in time.

Feel free to beat me to it.

@geoffl
This is very impressive as-is.
@bbcmicrobot

@edross @bbcmicrobot
That's just a recent hack. It's been the result of the combined effort of many people over several years, and started with fitting a ray tracer in a tweet. Not in any way a comprehensive list, because I don't think theres a record of who did what but @rheolism @p_malin
@bazzargh
@kweepa
I can't be sure but @coprolite9000 probably contributed too. I was late to the game. And without @DominicPajak there wouldn't be a @bbcmicrobot.

Please tag anyone I missed.

@geoffl @edross @bbcmicrobot @rheolism @p_malin @bazzargh @kweepa @DominicPajak

I did some stuff on dithering, but it was absolutely building on the substantial work of others!

(I still haven't worked out the finer aspects of the central raytracing gubbins...)

@coprolite9000 @geoffl @edross @bbcmicrobot @rheolism @p_malin @kweepa @DominicPajak I'm the same, the only version I posted of that was to drop the lookup table for the dithering!