Code archives/3D Graphics - Effects/Simple lensflare
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Compatible with various 2D in 3D sprite libs and so forth for ease of use. | |||||
;lensflare example for 2D and 3D ;rob@redflame.net Graphics3D 640,480,16,2 ;required Global viewx=GraphicsWidth(),viewy=GraphicsHeight() camera=CreateCamera() CameraRange camera,1,2000 HidePointer() ;make a sun sun=CreateSphere() EntityColor sun,255,255,0 EntityFX sun,1 ScaleEntity sun,100,100,100 PositionEntity sun,800,600,800 ;level p=CreatePlane() PositionEntity p,0,-10,0 While Not KeyHit(1) ;mouse mxspd#=MouseXSpeed()*0.25 myspd#=MouseYSpeed()*0.25 MoveMouse viewx/2,viewy/2 ;rotate view pitch#=pitch#+myspd# If pitch#<-90 Then pitch#=-90 If pitch#>90 Then pitch#=90 yaw#=yaw#-mxspd# RotateEntity camera,pitch#,yaw#,0 RenderWorld ;update flare (if using 3D, place before renderworld) updateflare(camera,sun) Flip Wend End Function updateflare(camera,source) CameraProject camera,EntityX(source,1),EntityY(source,1),EntityZ(source,1) x#=ProjectedX()/viewx y#=ProjectedY()/viewy ;if on screen If (x>0 And x<=1) And (y>0 And y<=1) ;-1 to 1 xoffset# = (x-0.5)*2 yoffset# = (y-0.5)*2 ;notes: ;Flares: (use sprites and a sprite lib to translate from 3D to 2D. ;For now, we use 2D to illustrate. Multiply offsets however you like. ;Oval coords corrected for offset - not needed with 3D sprites. ;flare 1 flare1_x# = (viewx/2) - (xoffset*640) flare1_y# = (viewy/2) - (yoffset*320) Oval flare1_x-16,flare1_y-16,32,32,0 ;flare 2 flare2_x# = (viewx/2) - (xoffset*64) flare2_y# = (viewy/2) - (yoffset*32) Oval flare2_x-100,flare2_y-100,200,200,0 ;flare 3 flare3_x# = (viewx/2) - (xoffset*500) flare3_y# = (viewy/2) - (yoffset*250) Oval flare3_x-64,flare3_y-64,128,128,0 EndIf End Function |
Comments
| ||
huh this is very cool and useful |
Code Archives Forum