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