Code archives/3D Graphics - Effects/Glow Effect

This code has been declared by its author to be Public Domain code.

Download source code

Glow Effect by mag.
(Posted 22 years ago)
Create a Glow effect (like in Prince Of Persia - Sand of time) . Not really ;)
;Glow effect
;Code by Mag. Idea from Sswift.

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

; Create camera
Global camera=CreateCamera()
MoveEntity camera,3,3,0
RotateEntity camera,30,30,0

light=CreateLight()

Global cube=CreateCube()
PositionEntity cube,0,0,5
tex0=CreateTexture(300,300)
SetBuffer TextureBuffer(tex0)
ClsColor 255,255,255
Cls
SeedRnd(MilliSecs())
For k=1 To 50
	Color Rand(256),Rand(256),Rand(256)
	Rect Rand(600),Rand(600),Rand(600),Rand(600)
Next
EntityTexture cube,tex0
SetBuffer BackBuffer()

;glow setup
s=1
Global sizex=640/s
Global sizey=480/s
Global glowtexture=CreateTexture (384,384,256)
Global sp=CreateSprite(camera)
MoveEntity sp,-.25,-0.06,1.18
EntityAlpha sp,.32
ScaleTexture glowtexture,GraphicsWidth()/sizex,GraphicsHeight()/sizey
EntityTexture sp,glowtexture
TextureBlend glowtexture, 5
While Not KeyDown( 1 )
	TurnEntity cube,0.5,0.5,0.5
	CameraViewport camera,0,0,sizex,sizey
	RenderWorld
	CopyRect 0,0,sizex,sizey,0,0,BackBuffer(),TextureBuffer(glowtexture)
	CameraViewport camera,0,0,GraphicsWidth(),GraphicsHeight()
	
	RenderWorld
	Flip
Wend

End

Comments

t-head
(Posted 22 years ago)
Hi,

its very well! Exactly what I need!

thx

Filax
(Posted 22 years ago)
Great !

FredMe
(Posted 21 years ago)
Excellent,

I will used this idea for my FPS Engine !

Picklesworth
(Posted 21 years ago)
This will be very useful for a strategy game with glowing objects, where they are all really small and in large numbers... Thus needing a fast routine that looks good from afar.

Barliesque
(Posted 21 years ago)
It seems to work just as well, removing the first RenderWorld statement, which ought to give faster results in a complex scene.

Try this slightly adjusted version...

;Glow effect
;Code by Mag. Idea from Sswift.

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

; Create camera
Global camera=CreateCamera()
MoveEntity camera,3,3,0
RotateEntity camera,30,30,0

light=CreateLight()

Global cube=CreateCube()
PositionEntity cube,0,0,5
tex0=CreateTexture(300,300)
SetBuffer TextureBuffer(tex0)
ClsColor 255,255,255
Cls
SeedRnd(MilliSecs())
For k=1 To 50
	Color Rand(256),Rand(256),Rand(256)
	Rect Rand(600),Rand(600),Rand(600),Rand(600)
Next
EntityTexture cube,tex0
SetBuffer BackBuffer()

;glow setup
s=1
Global sizex=640/s
Global sizey=480/s
Global glowtexture=CreateTexture (384,384,256)
Global sp=CreateSprite(camera)
MoveEntity sp,-.25,-0.06,1.21
ScaleTexture glowtexture,GraphicsWidth()/sizex,GraphicsHeight()/sizey
EntityTexture sp,glowtexture

TextureBlend glowtexture, 5    ;Also try mode 2 ...and increase the Alpha from 0.44 to about 0.80
EntityAlpha sp, 0.44

While Not KeyDown( 1 )
	TurnEntity cube,0.5,0.5,0.5
	CameraViewport camera,0,0,sizex,sizey
;	RenderWorld
	CopyRect 0,0,sizex,sizey,0,0,BackBuffer(),TextureBuffer(glowtexture)
	CameraViewport camera,0,0,GraphicsWidth(),GraphicsHeight()
	
	RenderWorld
	Flip
Wend

End


ingenium
(Posted 21 years ago)
WOOOOOOOOOOOOOOOOOOWWWWW!!!!!!!!!!!!!

Nmuta
(Posted 21 years ago)
Wow. Very nice.

puki
(Posted 21 years ago)
This can be optimised further and can also be made more dynamic with regard to resizing.

I'll expect an amened version within the week.

Thank you.

Mustang
(Posted 21 years ago)
Nice!

Buggy
(Posted 20 years ago)
So nice! Will definitely use this sometime!

Code Archives Forum