Code archives/3D Graphics - Effects/3D Lens Flare
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
1 light, 3 lens reflections, and distance adjustment this will not take into account objects that come between the light and the camera | |||||
Type Make_Light Field Light_Sprite Field Flare_Sprite1 Field Flare_Sprite2 Field Flare_Sprite3 Field LF_pivot1 Field LF_pivot2 Field Screen_Wash_Alpha1# Field light_bright# Field Light_Bright_size# Field Light1_Distance# Field Flare1_Distance# Field Flare2_Distance# Field Flare3_Distance# Field FLareX_Ang# Field FLareY_Ang# End Type ;################### MAIN LOOP ;################### ;************************************************ Places then updates coordinates for placing ;************************************************ If Light_Create = False And Place_light = 3 Then Make_Lens_Flare = True Light_Create = True EndIf If Light_Create = False And Place_light = 2 Then LightX_Pos# = 100 LightY_Pos# = 100 LightZ_Pos# = 100 Place_light = 3 EndIf If Light_Create = False And Place_light = 1 Then LightX_Pos# = 200 LightY_Pos# = -100 LightZ_Pos# = 100 Place_light = 2 EndIf If Light_Create = False And Place_light = 0 Then LightX_Pos# = 0 LightY_Pos# = 0 LightZ_Pos# = 0 Place_light = 1 EndIf If Make_Lens_Flare = False Then New_Light.Make_Light = New Make_Light New_Light\Light_Sprite = LoadSprite("sprites/LightA.png") PositionEntity New_Light\Light_Sprite,LightX_Pos#,LightY_Pos#,LightZ_Pos# New_Light\Flare_Sprite1 = LoadSprite("sprites/FlareA.png") EntityParent New_Light\Flare_Sprite1,New_Light\Light_Sprite New_Light\Flare_Sprite2 = LoadSprite("sprites/FlareA.png") EntityParent New_Light\Flare_Sprite2,New_Light\Light_Sprite New_Light\Flare_Sprite3 = LoadSprite("sprites/FlareA.png") EntityParent New_Light\Flare_Sprite3,New_Light\Light_Sprite New_Light\LF_pivot1 = CreatePivot() EntityParent New_Light\LF_pivot1,camera New_Light\LF_pivot2 = CreatePivot() EntityParent New_Light\LF_pivot2,New_Light\Light_Sprite New_Light\light_bright# = EntityDistance(New_Light\LF_pivot2,New_Light\Light_Sprite) New_Light\Screen_Wash_Alpha1# = (-light_bright# + 30) / 60 EndIf For New_Light.Make_Light = Each Make_Light PointEntity New_Light\LF_pivot1,New_Light\Light_Sprite New_Light\Light_Bright_size# = (-light_bright# + 30) / 6 If New_Light\Light_Bright_size# < 1 Then New_Light\Light_Bright_size# = 1 EndIf New_Light\Light1_Distance# = EntityDistance(New_Light\Light_Sprite,camera) / 5 New_Light\Flare1_Distance# = EntityDistance(New_Light\Light_Sprite,camera) / 6 New_Light\Flare2_Distance# = EntityDistance(New_Light\Light_Sprite,camera) / 15 New_Light\Flare3_Distance# = EntityDistance(New_Light\Light_Sprite,camera) / 30 New_Light\FLareX_Ang# = (EntityPitch(New_Light\LF_pivot1) - EntityPitch(camera)) * EntityDistance(New_Light\Light_Sprite,New_Light\LF_pivot1) / 139 New_Light\FLareY_Ang# = (EntityYaw(New_Light\LF_pivot1) - EntityYaw(camera)) * EntityDistance(New_Light\Light_Sprite,New_Light\LF_pivot1) / 139 ScaleSprite New_Light\Light_Sprite,New_Light\Light1_Distance# * New_Light\Light_Bright_size# ,New_Light\Light1_Distance# * New_Light\Light_Bright_size# ScaleSprite New_Light\Flare_Sprite1,New_Light\Flare1_Distance# / 3,New_Light\Flare1_Distance# / 3 ScaleSprite New_Light\Flare_Sprite2,New_Light\Flare2_Distance# / 3,New_Light\Flare2_Distance# / 3 ScaleSprite New_Light\Flare_Sprite3,New_Light\Flare3_Distance# / 2,New_Light\Flare3_Distance# / 2 PositionEntity New_Light\Flare_Sprite3,New_Light\FLareY_Ang# / 2,New_Light\FLareX_Ang# / 2,1 PositionEntity New_Light\Flare_Sprite2,New_Light\FLareY_Ang# / 3,New_Light\FLareX_Ang# / 3,2 PositionEntity New_Light\Flare_Sprite1,New_Light\FLareY_Ang# / 6,New_Light\FLareX_Ang# / 6,3 PositionEntity New_Light\LF_pivot2,EntityYaw(New_Light\LF_pivot1),EntityPitch(New_L ight\LF_pivot1),0 Next |
Comments
None.
Code Archives Forum