rem Basic3D Showcase rem Standard Setup Code for all examples backdrop off : cls : sync on : sync rate 0 : hide mouse set text font "arial" : set text size 16 set text to bold : set text transparent rem Create availability chart dim name$(11) set image colorkey 32,32,32 set text size 14 : cls rgb(32,32,32) text 10,0,"MODES AVAILABLE" for t=1 to 11 if t=1 then name$(t)="[1] Normal Texture" if t=2 then name$(t)="[2] Light Mapping" if t=3 then name$(t)="[3] Cube Mapping" if t=4 then name$(t)="[4] Sphere Mapping" if t=5 then name$(t)="[5] Detail Mapping" if t=6 then name$(t)="[6] Custom Blend Mapping" if t=7 then name$(t)="[7] Bump Mapping" if t=8 then name$(t)="[8] Cartoon Shading" if t=9 then name$(t)="[9] Rainbow Shading" if t=10 then name$(t)="[0] Reflection Shading" if t=11 then name$(t)="[-] Shadow Shading" t$=name$(t) : a$="Available" if t>=7 and t<=11 if get maximum vertex shader version()<1.0 then a$="Not Available" if t>=10 and t<=11 if statistic(2)=0 then a$="Not Available" endif endif text 10,(t*12),t$+" "+a$ next t get image 31,0,0,256,256 set text size 16 : cls rem User Prompt center text screen width()/2,screen height()/2,"LOADING" : sync rem Load music load sound "space.wav",1 set sound volume 1,1 loop sound 1 rem Load Images set image colorkey 255,0,255 load image "microid.bmp",1 rem Load images (textures) load image "a.bmp",2 load image "b.bmp",3 load image "c.bmp",4 load image "models\ast4.bmp",5 load image "sky\spacesphere.bmp",6 load image "bump.bmp",7 load image "shade.bmp",8 load image "edge.bmp",9 load image "e.bmp",10 load image "rainbow.tga",21 rem Load sky cube (textures) load image "sky\am1.bmp",11 load image "sky\am2.bmp",12 load image "sky\am3.bmp",13 load image "sky\am4.bmp",14 load image "sky\am5.bmp",15 load image "sky\am6.bmp",16 rem Load sky set dir "sky" load object "am.x",1 set object specular 1,0 set object 1,1,1,1,0,0,0,0 set object texture 1,3,0 scale object 1,10,10,10 set dir ".." rem Load asteroid model set dir "models" load object "ast4.x",2 set object specular 2,0 rotate object 2,270,0,0 scale object 2,5,5,5 set dir ".." rem Reflection plane make object plain 3,300,300 position object 3,0,-50,0 set object specular 3,0 hide object 3 rem Set Camera autocam off set camera range 1,10000 position camera 0,0,-200 point camera 0,0,0 set point light 0,0,300,0 rem Load microid sprite animation dim sprx#(50) dim spry#(50) dim sprs#(50) for t=1 to 48 : sprx#(t)=rnd(640) : sprs#(t)=5+(rnd(50)/10.0) : spry#(t)=rnd(screen height()) : next t sprite 1,0,0,1 set sprite 1,0,1 size sprite 1,128,8 set sprite alpha 1,32 rem Sprite info panel sprite 50,0,0,31 : set sprite 50,0,1 rem First Effect set sphere mapping on 2,6 desc$="4. Sphere Mapping" distance#=5.0 : mode=0 do rem Control effects k$=inkey$() if k$<>"" lk$=k$ : mode=1+(asc(k$)-asc("1")) if k$="0" then mode=10 if k$="-" then mode=11 if mode=1 then texture object 2,5 : hide object 3 : color object 3,rgb(255,255,255) : desc$=name$(1) if mode=2 then set light mapping on 2,2 : desc$=name$(2) if mode=3 then set cube mapping on 2,11,12,13,14,15,16 : desc$=name$(3) if mode=4 then set sphere mapping on 2,6 : desc$=name$(4) if mode=5 then set detail mapping on 2,3 : desc$=name$(5) if mode=6 then set blend mapping on 2,4,10 : desc$=name$(6) if mode=7 then set bump mapping on 2,7 : desc$=name$(7) if mode=8 then set cartoon shading on 2,8,9 : desc$=name$(8) if mode=9 then set rainbow shading on 2,21 : desc$=name$(9) if mode=10 then set reflection shading on 3 : show object 3 : desc$=name$(10) if mode=11 then color object 3,rgb(255,255,255) : set shadow shading on 2 : show object 3 : desc$=name$(11) endif rem Control light position using mousex position light 0,mousex()-320,240-mousey(),-300 rem Rotate sky yrotate object 1,wrapvalue(object angle y(1)+0.01) rem wobble reflection plane for effect wob#=wrapvalue(wob#+1) rotate object 3,90+180+sin(wob#)*10,wob#,cos(wob#)*5 position object 3,0,-50+(sin(wob#)*10),0 rem Rotate asteroid ay#=wrapvalue(ay#+0.10) ax#=wrapvalue(ax#+0.03) az#=wrapvalue(az#+0.01) rotate object 2,ax#,ay#,az# scale object 2,distance#,distance#,distance# distance#=distance#+0.04 : if distance#>149.99 then distance#=150.0 rem Music volume mvol=70+((distance#/150.0)*30) set sound volume 1,mvol rem Paste many microids if mode<>11 for t=1 to 48 set sprite alpha 1,10+t sx#=10*sprs#(t) sy#=sprs#(t)*1.0 if sx#<128 then sx#=128 if sy#<8 then sy#=8 size sprite 1,sx#,sy# paste sprite 1,sprx#(t),spry#(t) inc sprx#(t),sprs#(t)*2 if sprx#(t)>screen width()+64 sprx#(t)=-64 spry#(t)=rnd(screen height()) endif next t endif rem Show Framerate text 20,screen height()-40,desc$ fps$="DBPro Fps: "+str$(screen fps()) text screen width()-20-text width(fps$),screen height()-40,fps$ rem Update screen sync loop