VerschimmBlur+MotionBlur+Bildschirm verziehung

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Jan_

Ehemaliger Admin

Betreff: VerschimmBlur+MotionBlur+Bildschirm verziehung

BeitragMo, Sep 20, 2004 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Wer mehr sehen will, muss laden!

und zwar hier: http://www.fx-visions.de/files/jansblurlib.rar (1,4 MB)
neuer link:
https://www.blitzforum.de/upload/file.php?id=153

BlitzBasic: [AUSKLAPPEN]

;Blur Libary by Jan Kuhnert
;Diese Blur effekt Libary für Blitz Basic 3D wurde von Jan Kuhnert entwickelt.

Global Blur_image_primaer, blur_texture, blur_gw, blur_gh,Blur_W,Blur_H,Blur_R,Blur_g,Blur_B
Global Blur_image_secundaer,Blur_image_tri,Blur_Wett#,Blur_TX,Blur_TY,Blur_surface,Blur_def
Global Blur_Time,Blur_Timeset

Dim Blur_Point(10,10)

Function CreateBlur(BlurCam,CameraEntfernung# = 4,Weichen# = 0,r=255,g=255,b=255,Zoomeffekt# = 0.0,Blend = False,X_Teilung=1,Y_Teilung=1)
Local sf,spr,w#,h#,BildschirmVerhaeltnis#
Local ScaleX#,ScaleY#

Dim Blur_Point(X_Teilung,Y_Teilung)

Blur_TX=X_Teilung
Blur_TY=Y_Teilung

Blur_Cam = BlurCam

Blur_r=r
Blur_g=g
Blur_b=b

If blurimage = 0 Then
FreeBlur()
EndIf

blur_gw = GraphicsWidth()
Blur_gh = GraphicsHeight()

blur_texture = CreateTexture(blur_gw, blur_gh, 1+256)
Blur_W=TextureWidth(blur_texture)
Blur_H=TextureHeight(blur_texture)

w#=Blur_W - blur_gw
h#=Blur_h - blur_gh

BildschirmVerhaeltnis#= Float(blur_gh)/Float(blur_gw)*cameraEntfernung#

ScaleX# = cameraEntfernung# + (cameraEntfernung#*w#/Float(blur_gw))
ScaleY# = BildschirmVerhaeltnis#+ (BildschirmVerhaeltnis#*h#/Float(blur_gh))

BB_to_Pixel_X# = (ScaleX#/Blur_W)
BB_to_Pixel_Y# = (ScaleY#/Blur_H)

Local Schnitt_X#,Schnitt_Y#
Schnitt_X#=((1.0/Blur_W)*W#)/2.0
Schnitt_Y#=((1.0/Blur_H)*H#)/2.0

spr = CreateMesh(BlurCam)
sf = CreateSurface(spr)

Local X,Y
Local X2#,Y2#
X2#=X_Teilung/2.0
Y2#=Y_Teilung/2.0

For x = 0 To X_Teilung
For y = 0 To Y_Teilung
Blur_Point(X,Y) = AddVertex(sf,(X-X2#)/X2#,(y-Y2#)/Y2#,0,(x/Float(X_Teilung))-(Schnitt_X#*((X-X2#)/X2#)),(-y/Float(Y_Teilung))+(Schnitt_Y#*(y-Y2#)/Y2#))
Next
Next
For x = 1 To X_Teilung
For y = 1 To Y_Teilung
AddTriangle sf,Blur_Point(X,Y),Blur_Point(X,Y-1),Blur_Point(X-1,Y)
AddTriangle sf,Blur_Point(X,Y-1),Blur_Point(X-1,Y-1),Blur_Point(X-1,Y)
Next
Next

EntityFX spr, 1+8+32

EntityOrder spr, -(2^30)
EntityBlend spr, 1
EntityAlpha spr,0
If Blend EntityBlend spr, 3

ScaleEntity spr,1.0*CameraEntfernung#,0.75*CameraEntfernung#,1.0

PositionEntity spr,-BB_to_Pixel_X#,BB_to_Pixel_Y#,CameraEntfernung#

Blur_W=(w#/2.0)
Blur_h=(h#/2.0)

EntityTexture spr, blur_texture

Blur_image_primaer = spr
Blur_surface = sf

If Weichen# <>0
Blur_image_secundaer = CopyEntity(spr,Blurcam)
Blur_image_tri = CopyEntity(spr,Blurcam)

Blur_wett#=Weichen#

PositionEntity blur_image_primaer,-BB_to_Pixel_X#+((Sin#(0)*BB_to_Pixel_X#)*Weichen#/2.0),BB_to_Pixel_y#+(Cos#(0)*BB_to_Pixel_y#*Weichen#)/2.0,CameraEntfernung#,0

PositionEntity Blur_image_secundaer,-BB_to_Pixel_X#+((Sin#(120)*BB_to_Pixel_X#)*Weichen#/2.0),BB_to_Pixel_y#+(Cos#(120)*BB_to_Pixel_y#*Weichen#)/2.0,CameraEntfernung#,0

PositionEntity Blur_image_tri,-BB_to_Pixel_X#+((Sin#(240)*BB_to_Pixel_X#)*Weichen#/2.0),BB_to_Pixel_y#+(Cos#(240)*BB_to_Pixel_y#*Weichen#)/2.0,CameraEntfernung#,0

EndIf



End Function

Function SetBlurUpdateTime(time)
Blur_Timeset = time
End Function

Function SetBlurDeform(X,Y,MoveX#,MoveY#)
Local Real_X,Real_Y
Local VX#,VY#,VZ#
Local REd,Green,Blue

Real_X=Blur_TX/Float(Blur_gw)*Float(X)
Real_Y=Blur_TY/Float(Blur_gh)*Float(Y)
VX#=(Real_X-(Blur_TX/2.0))/Float(Blur_TX/2.0) +(MoveX#/Float(Blur_TX))
VY#=(Real_Y-(Blur_TY/2.0))/Float(Blur_TY/2.0) +(MoveY#/Float(Blur_TY))
VZ#=VertexZ#(Blur_surface,Blur_Point(Real_X,Real_Y))
VertexCoords Blur_surface,Blur_Point(Real_X,Real_Y),VX#,VY#,VZ#
Red=VertexRed(Blur_surface, Blur_Point(Real_X,Real_Y))
Green=VertexGreen(Blur_surface, Blur_Point(Real_X,Real_Y))
Blue=VertexBlue(Blur_surface, Blur_Point(Real_X,Real_Y))
VertexColor Blur_surface, Blur_Point(Real_X,Real_Y), Red, Green, Blue ,1

End Function

Function InitDeform()
Local Real_X,Real_Y
Local VX#,VY#,VZ#
Local REd,Green,Blue

For Real_X=0 To Blur_TX
For Real_Y=0 To Blur_TY
VX#=(Real_X-(Blur_TX/2.0))/Float(Blur_TX/2.0)
VY#=(Real_Y-(Blur_TY/2.0))/Float(Blur_TY/2.0)
VZ#=VertexZ#(Blur_surface,Blur_Point(Real_X,Real_Y))
VertexCoords Blur_surface,Blur_Point(Real_X,Real_Y),VX#,VY#,VZ#
Red=VertexRed(Blur_surface, Blur_Point(Real_X,Real_Y))
Green=VertexGreen(Blur_surface, Blur_Point(Real_X,Real_Y))
Blue=VertexBlue(Blur_surface, Blur_Point(Real_X,Real_Y))
VertexColor Blur_surface, Blur_Point(Real_X,Real_Y), Red, Green, Blue ,0
Next
Next
Blur_def=1

End Function

Function UpdateBlur(power#)
Local Time
If power# >0.99 Then power# = 0.99

If Blur_Wett# <>0
If power# >0.48 Then power# = 0.48
EntityAlpha Blur_image_secundaer, power#
EntityColor Blur_image_secundaer,Blur_R,Blur_g,Blur_b
EntityAlpha Blur_image_tri, power#
EntityColor Blur_image_tri,Blur_R,Blur_g,Blur_b
EndIf

EntityAlpha Blur_image_primaer, power#
EntityColor Blur_image_primaer,Blur_R,Blur_g,Blur_b
time = MilliSecs()
If Blur_Time < time-Blur_Timeset
Blur_Time = time
CopyRect 0, 0, Blur_GW, Blur_gh, Blur_W, Blur_h, BackBuffer(), TextureBuffer(blur_texture)
EndIf
End Function

Function SetBlurColor(R,G,B)
If r > 255 Then r= 255
If g > 255 Then g= 255
If b > 255 Then b= 255
If r < 0 Then r= 0
If g < 0 Then g= 0
If b < 0 Then b= 0
Blur_R=R:Blur_g=G:Blur_b=B
End Function

Function SetBlurParent(Parent)
Local X#,Y#,Z#
X#=EntityX#(Blur_image_primaer,0)
Y#=EntityY#(Blur_image_primaer,0)
Z#=EntityZ#(Blur_image_primaer,0)
EntityParent Blur_image_primaer,Parent
PositionEntity Blur_image_primaer,X#,Y#,Z#,False
If Blur_Wett# <>0
X#=EntityX#(Blur_image_secundaer,0)
Y#=EntityY#(Blur_image_secundaer,0)
Z#=EntityZ#(Blur_image_secundaer,0)
EntityParent Blur_image_secundaer,Parent
PositionEntity Blur_image_secundaer,X#,Y#,Z#,False

X#=EntityX#(Blur_image_tri,0)
Y#=EntityY#(Blur_image_tri,0)
Z#=EntityZ#(Blur_image_tri,0)
EntityParent Blur_image_tri,Parent
PositionEntity Blur_image_tri,X#,Y#,Z#,False
EndIf
End Function

Function FreeBlur()
FreeEntity Blur_image_primaer
If Blur_Wett# <>0
FreeEntity Blur_image_secundaer
FreeEntity Blur_image_tri
Blur_image_secundaer=0
Blur_image_tri=0
EndIf
blur_def=0
FreeTexture blur_texture
Blur_image_primaer=0
Blur_texture=0
Blur_Wett=0
End Functionv


Ich bitte euch, was zu schreiben, damit ich meine Selbst bestätigung habe.
between angels and insects
  • Zuletzt bearbeitet von Jan_ am Mi, Sep 26, 2007 16:55, insgesamt 4-mal bearbeitet
 

Pfaff

BeitragMo, Sep 20, 2004 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde den Effekt einfach nur geil.
Fazit: gut gemacht!

Jan_

Ehemaliger Admin

BeitragDi, Sep 21, 2004 7:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, es währen die Auskommertierten Zeilen mal zu wechseln, da sind 4 effekte drin.

1. Motion Blur,
2. AA
3. DreamFilter
4. Schwarzes loch (Achtung, da sind die deformzeilen auch auskommertiert)
between angels and insects

Bigmichi

BeitragDi, Sep 21, 2004 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir wird es einfach immer nur dunkler ? woran liegt das ?

Jan_

Ehemaliger Admin

BeitragDi, Sep 21, 2004 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Drücke mal die Tasten 1,2,3-0
between angels and insects

Jan_

Ehemaliger Admin

BeitragDi, Sep 21, 2004 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, von AA, Motion Blur, Schwarzes loch, oder was?

BlitzBasic: [AUSKLAPPEN]
1-;CreateBlur(Cam);Perfektes MotionBlur, ohne verschwimmen
2-;CreateBlur(Cam,4,0.9);Bildschirm Weichen
3-;CreateBlur(Cam,4,0,0,255,255,16,3);Bildschirm Blenden



4-;CreateBlur(Cam,4,0,0,255,255,255,0,24,24);Deform Bildschirm
;InitDeform()
; For X = -90 To 90
; For Y= -90 To 90
; SetBlurDeform(Graphicswidth()/2+X,GraphicsHeight()/2+Y,-x/100.0,-y/100.0)
;Next
; Next


SetBlurUpdateTime(0) - Stellt mal bitte das ein, vielleicht läufts dann "Heller"
between angels and insects
  • Zuletzt bearbeitet von Jan_ am Mi, Aug 17, 2005 14:30, insgesamt einmal bearbeitet

Jan_

Ehemaliger Admin

BeitragDo, Sep 30, 2004 7:07
Antworten mit Zitat
Benutzer-Profile anzeigen
lol, habe ne Variable Falsche geschrieben!

Hier: http://www.fx-visions.de/files/jansblurlib.rar (1,67 mb)

Funktioniert nun!
between angels and insects
 

Edlothiol

BeitragFr, Okt 08, 2004 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht sehr gut aus!
Allerdings gibts beim AntiAlias (welches eigentlich ja auch nur normales Blur und kein AA ist) auch Motionblur, oder?
Läuft bei mir mit ca 50 FPS, was mich wundert, da CopyRect vom BackBuffer in eine Textur bei mir sonst immer extrem langsam ist Confused

Jan_

Ehemaliger Admin

BeitragMo, Okt 11, 2004 7:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Edlothiol
Naja, es ist auf MotionBlur Basis.
Aber: Es setzt 3 neue punkte pro pixel, die sich abschwächend nach ausen bewegen.
Ich bin deutlich dafür, das man es AA nennen kann.
between angels and insects

regaa

BeitragDi, Okt 12, 2004 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.computerhilfen.de/f...asing.html Wink
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net

Jan_

Ehemaliger Admin

BeitragMi, Aug 17, 2005 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
mir ist beim Gespräch mit TheProgrammer aufgefallen, das niemand, weiß, was der Deformer macht,

ich gebe mal ncoh ein Beispiel(Unterwasser):
BlitzBasic: [AUSKLAPPEN]

;Blur Lib einbinden
Include \"blur.bb\"

;Grafik initialisieren
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
cam=CreateCamera()
mesh=LoadMesh(\"Dein3DLevel.3ds\")

;Blur erstellen
CreateBlur(Cam,4,0,245,245,255,0,0,20,20)

;Deformer einrichten
initdeform()
For mx=0 To 799 ;Wasser effekt
For my=0 To 599
SetBlurDeform(mX,mY,Sin(my*500)/20.0,Sin(mx*500)/20.0)
Next
Next

;normale Hauptschleife
Repeat
If KeyDown(200) Then y#=y#+1
If KeyDown(208) Then y#=y#-1
If KeyDown(203) Then x#=x#+1
If KeyDown(205) Then x#=x#-1
If KeyDown(30) Then MoveEntity cam,0,0,2
If KeyDown(44) Then MoveEntity cam,0,0,2
RotateEntity cam,y#,x#,0
RenderWorld
updateblur(0.9) ; Updaten des Blur.
Flip 0
Until KeyHit(1)
End

between angels and insects

Jan_

Ehemaliger Admin

BeitragDo, Aug 18, 2005 7:38
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hatte auf etwas Kritik gehofft.
between angels and insects
 

GermannX

BeitragMi, Okt 01, 2008 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow!!!Das ist ja wirklich absolut genial!
Vielen Dank!
...und der Tod warf seine Sense weg und stieg auf den Mähdrescher, denn es war Krieg!
 

Heiko

BeitragFr, Okt 03, 2008 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay hab nur onboard grafik, aber nen nvidia 6150SE.
Bei Need for Speed gibts ja auch diesen netten effekt, aber dort rucklet bei mir nix.
Bei dem beispiel hier schon bei taste 2 also erste stufe blur.

Kann man das noch was verbessern?
 

Honesch

BeitragSa, Okt 04, 2008 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Effekte sind einfach ein wahnsinn Shocked

Aber was mich extremst stört ist, dass die Effekte nur auf 4:3 Bilschirmformat (800x600,1024x768,...) richtig dargestellt werden Mad kann man das nicht irgendwie beheben ?

mfg Honesch aus Wien Cool
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik !

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group