Code archives/3D Graphics - Effects/Glow Effect
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
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
| ||
Hi, its very well! Exactly what I need! thx |
| ||
Great ! |
| ||
Excellent, I will used this idea for my FPS Engine ! |
| ||
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. |
| ||
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 |
| ||
WOOOOOOOOOOOOOOOOOOWWWWW!!!!!!!!!!!!! |
| ||
Wow. Very nice. |
| ||
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. |
| ||
Nice! |
| ||
So nice! Will definitely use this sometime! |
| ||
can somebody explain what is going on (the method) in this code ? it seems that "mag" tweaked it until it looks ok but without any clue of why he has configured it this way... |
Code Archives Forum