Laser Blur

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

StepTiger

Betreff: Laser Blur

BeitragSo, Okt 22, 2006 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwo im Forum tauchte die Frage nach einem Blur für Laserstrahlen auf.

Hab mal ne Funktion geschrieben Smile

Code: [AUSKLAPPEN]
;----------------------------------
;           Bloom Filter          ;
;        Made by StepTiger        ;
;----------------------------------
;                                 ;
;            Main Code            ;
;          Global Things          ;
;----------------------------------

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

;Consants
Const TYPE_NORMAL=0
Const TYPE_LASER=1

;Dims
Dim farbr(1)
Dim farbg(1)
Dim farbb(1)

;Types
Type Objekt
   Field obj
   Field typ
End Type

;Cams
cam=CreateCamera()
CameraRange cam,.5,1000

;Light
Light=CreateLight(2)
PositionEntity light,2,200,0

;Bloom Sprite and Tex
BloomSprite=CreateSprite(cam)
BloomTex=CreateTexture(64,64,8)
MoveEntity BloomSprite,-(GraphicsWidth()-TextureWidth(BloomTex)*6)*.00005,-TextureHeight(BloomTex)*.0005+(GraphicsHeight())*.0001,1
EntityTexture BloomSprite,BloomTex
EntityBlend BloomSprite,3
TextureBlend BloomTex,5

;Test Cube
cube=CreateCube()
PositionEntity cube,0,0,5
RegisterObject(cube,TYPE_NORMAL)

;Laser Beam
beam=CreateCylinder()
ScaleEntity beam,.02,1,.02
PositionEntity beam,0,0,2
EntityAlpha beam,.99
EntityColor beam,255,0,0
RegisterObject(beam,TYPE_LASER)

;While Loop
While Not KeyDown(1)
   
   Bloom(cam,BloomSprite,BloomTex)
   
   UpdateWorld
   RenderWorld
   
   fps#=(19.*fps#+1000./(MilliSecs()-LastFPS))/20.:LastFPS=MilliSecs()
   
   Text 1,1,fps#
   
   Flip
   
Wend

;Functions

;Register an Object
Function RegisterObject(obj,typ)
   
   r.Objekt=New Objekt
   r\obj=obj
   r\typ=typ
   
End Function

;The Main Bloom Function
Function Bloom(Cam,Sprite,Tex)
   
   HideEntity Sprite
   
   For f.Objekt=Each Objekt
      If f\typ<>TYPE_LASER Then HideEntity f\obj
   Next
   
   wid=TextureWidth(Tex)
   hei=TextureHeight(Tex)
   
   gfxwid=GraphicsWidth()
   gfxhei=GraphicsHeight()
   
   CameraViewport Cam,0,0,wid,hei
   RenderWorld
   
   CopyRect 0,0,wid,hei,0,0,BackBuffer(),TextureBuffer(Tex)
   Blur(Tex,1)
   
   CameraViewport Cam,0,0,gfxwid,gfxhei
   
   For f.Objekt=Each Objekt
      ShowEntity f\obj
   Next
   
   ShowEntity Sprite
   
End Function

;Blur an Image or Texture
Function Blur(Bild,tex)
   
   If tex=1
      
      LockBuffer TextureBuffer(Bild)
      wid=TextureWidth(Bild)
      hei=TextureHeight(Bild)
      
   ElseIf tex=2
      
      LockBuffer ImageBuffer(Bild)
      wid=ImageWidth(Bild)
      hei=ImageHeight(Bild)
      
   EndIf
   
   Dim farbr(wid*(hei+1)+hei)
   Dim farbg(wid*(hei+1)+hei)
   Dim farbb(wid*(hei+1)+hei)
   
   For x=0 To wid-1
      For y=0 To hei-1
         
         pos=x*(hei+1)+y
         
         If tex=1
            
            farb=ReadPixelFast(x,y,TextureBuffer(Bild))
            
         ElseIf tex=2
            
            farb=ReadPixelFast(x,y,ImageBuffer(Bild))
            
         EndIf
         
         farbr(pos)=farb Shr 16 And 255
         farbg(pos)=farb Shr 8 And 255
         farbb(pos)=farb And 255
         
      Next
   Next
   
   For x=0 To wid-1
      For y=0 To wid-1
         
         pos=x*(hei+1)+y
         
         c=0
         
         cr=0
         cg=0
         cb=0
         
         For px=-1 To 1
            For py=-1 To 1
               
               tx=x+px
               ty=y+py
               tpos=tx*(hei+1)+ty
               
               If tx>=0 And tx<wid And ty>=0 And ty<hei
                  
                  c=c+1
                  cr=cr+farbr(tpos)
                  cg=cg+farbg(tpos)
                  cb=cb+farbb(tpos)
                  
               EndIf
               
            Next
         Next
         
         cr=cr/c
         cg=cg/c
         cb=cb/c
         
         col=(cr Shl 16) + (cg Shl 8) + (cb)
         
         If tex=1
            
            WritePixelFast x,y,col,TextureBuffer(Bild)
            
         ElseIf tex=2
            
            WritePixelFast x,y,col,ImageBuffer(Bild)
            
         EndIf
         
      Next
   Next
   
   If tex=1
      
      UnlockBuffer TextureBuffer(Bild)
   
   ElseIf tex=2
      
      UnlockBuffer ImageBuffer(Bild)
      
   EndIf
   
End Function


*edit* hier war das:
https://www.blitzforum.de/foru...p?p=213004
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Mr.Keks

BeitragSo, Okt 22, 2006 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
es ist besser, hardwarebeschleunigt zu bluren. wie das geht, sollte sich hier auch irgendwo im ca finden lassen Smile
MrKeks.net

Black Spider

BeitragMo, Okt 23, 2006 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht auch ohne den Blur effekt sehr schön aus,
ansonsten Jan´s Blur lib benutzen (oder vll. auch meine ^^).
Habe mich gerade auch selber an som Bloomfilter versucht, da der Ideal als erweiterung für die Wärmeblid funktion klang,
doch bin gescheitert, man hat nix ausser weiss gesehen...
Egal,
was ich zu bemängeln habe: Das is arschlahm, in realtime im Game kaum benutzbar...
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

StepTiger

BeitragMo, Okt 23, 2006 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
was hast du denn für nen pc?

ohne framelimiter->360 fps
mit bei 60fps->59fps
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

#Reaper

Newsposter

BeitragMo, Okt 23, 2006 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab da 40 FPS o_O
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Lunatix

BeitragMo, Okt 23, 2006 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
26 FPS.... Steptiger - lügst du oder so ^^
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

StepTiger

BeitragMo, Okt 23, 2006 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
nein?

flip 0 und debugger aus

beweis:
https://www.blitzforum.de/upload/file.php?id=615
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Mr.Keks

BeitragMo, Okt 23, 2006 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
komischerweise habe ich hier auch über 200 fps.. sonst ist meine graka nicht so die schnellste ^^.
MrKeks.net
 

#Reaper

Newsposter

BeitragMo, Okt 23, 2006 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, hatte Debugger an, hab nun rund 400-450 FPS Very Happy
Selstsammerweise ist
BloomTex=CreateTexture(64,64,8)
schneller als
BloomTex=CreateTexture(64,64,8+256)
also VRam o_O

Very Happy
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Black Spider

BeitragDi, Okt 24, 2006 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
jo, auch ma Debugger ausgeschaltet und Flip auf 0, aber das prog is ja jetzt nicht die Monster Rechenschlugga,
pack das mal in ein Game rein, oder noch besser, in ein Game was schon einen Shader-Fake benutzt (^^),
dann wirds ruckelig
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

StepTiger

BeitragDi, Okt 24, 2006 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
glaub ich eher nicht. 2 mal rendern dürfte jeder PC aushalten. Der Rest macht auch nicht viel. Das Blur dauert immer gleich lang.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

PSY

BeitragMi, Okt 25, 2006 1:08
Antworten mit Zitat
Benutzer-Profile anzeigen
#Reaper hat Folgendes geschrieben:

Selstsammerweise ist
BloomTex=CreateTexture(64,64,8)
schneller als
BloomTex=CreateTexture(64,64,8+256)
also VRam o_O

Very Happy


hm bei mir ist die 2. variante schneller...
 

#Reaper

Newsposter

BeitragMi, Okt 25, 2006 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
PSY hat Folgendes geschrieben:
#Reaper hat Folgendes geschrieben:

Selstsammerweise ist
BloomTex=CreateTexture(64,64,8)
schneller als
BloomTex=CreateTexture(64,64,8+256)
also VRam o_O

Very Happy


hm bei mir ist die 2. variante schneller...


ja, sollte sie ja auch, tuts bei mir ja auch sonst immer, nur hier diesmal seltsammer weise nicht, so um die Hälfte langsammer o_O
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

StepTiger

BeitragMi, Okt 25, 2006 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
gleiches bei mir! Mit 256-> 160 FPS ohne->365 FPS
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group