Вот функция для бликов, но она отжирает фпс при нахождении в кадре 2 и более бликов ровно в 2 раза, вот это действительно проблема

Global flar.flare
Type Flare
Field lightsphere
Field lightsp
Field visible
Field timefade
End Type
Function CreateNewFlare.Flare(x#,y#,z#,sx#,sy# )
flar.Flare=New Flare
flar\lightsphere = CreateSphere()
EntityAlpha flar\lightsphere, 0
PositionEntity flar\lightsphere,x,y,z
EntityPickMode flar\lightsphere, 2
flar\lightsp=LoadSprite( ".\Data\effects\misc_flare.png",8,flar\lightsphere )
;HandleSprite f\lightsp,0,-1
ScaleSprite flar\lightsp,sx#*10,sy#*10
PositionEntity flar\lightsp, 0,0,0
SpriteViewMode flar\lightsp,3
EntityColor flar\lightsp,100,100,100
;EntityShininess f\lightsp, 1
EntityOrder flar\lightsp, -1
HandleSprite flar\lightsp, 0, 0
flar\visible = False
Return flar
End Function
Function UpdateFlares()
For flar.Flare=Each Flare
If EntityVisible(CameraBody, flar\lightsphere) And (Not flar\visible)
flar\visible = True
EntityColor flar\lightsp,150,150,150
distan = EntityDistance(CameraBody,flar\lightsphere)
scale = distan/2
ScaleSprite flar\lightsp, scale, scale
ShowEntity flar\lightsphere
RotateSprite flar\lightsp, EntityYaw(camerabody)*2
Else
If flar\visible
flar\visible = False
; If Rnd(500)<100 Then HideEntity flar\lightsphere
flar\timefade = 100
Else
If flar\timefade >= 0
flar\timefade = flar\timefade - 10
EntityColor flar\lightsp,flar\timefade,flar\timefade,flar\timefade
EndIf
EndIf
EndIf
Next
End Function