ShadowEngine
Übersicht
BlitzBasic
Codearchiv|
|
StepTigerBetreff: ShadowEngine |
Antworten mit Zitat |
|---|---|---|
|
Also: Da es ja hier sonst kaum noch irgendwo eine freie Schattenengine gibt, hab ich mich mal an eine gesetzt!
PROBLEM: Es läuft bei meinen 2,1Ghz mit einer ATI Radeon 9800 Pro und 512MB DDR Ram gerade mal mit 17Hz/s Und das bei sehr niedrigen Schattendetails! Dürfte am CameraPick liegen. Soweit sogut! Wer das verbessern könnte bitte mal einen Vorschlag posten!! Dankeschön! Code: [AUSKLAPPEN] ;Shadows Code by StepTiger
Graphics3D 800,600,32,2 Global world=CreateTerrain(256) Global shadowtex=CreateTexture(64,64) RotateTexture shadowtex,0 ScaleTexture shadowtex,256,256 EntityFX world,1 EntityTexture world,shadowtex PositionEntity world,-128,0,-128 light=CreateLight(3) lkreis=CreateSphere() ScaleEntity lkreis,.5,.5,.5 TurnEntity light,90,0,0 PositionEntity light,0,20,0 EntityRadius light,.2 EntityPickMode light,1 cam=CreateCamera() camwink#=0 camdist#=20 camheight#=5 Global nx#,ny#,nz# shadowcam=CreateCamera() CameraProjMode shadowcam,0 CameraViewport shadowcam,1,1,100,100 lx#=0 lz#=0 ly#=20 cube1=CreateCube() EntityPickMode cube1,2 ScaleEntity cube1,2,2,2 PositionEntity cube1,0,5,0 EntityColor cube1,255,0,0 For set=1 To 2 cube=CreateCube() EntityPickMode cube,2 ScaleEntity cube,2,2,2 PositionEntity cube,Rnd(256)-128,2+Rnd(7),Rnd(256)-128 EntityColor cube,255,0,0 Next fps#=30 fpstime=1000./fps# nextframe=MilliSecs() camheight#=5 x=0 While Not KeyDown(1) SetBuffer BackBuffer() Repeat:Until MilliSecs()>nextframe nextframe=MilliSecs()+fpstime x=x+1 If shad<>0 Then FreeEntity shad shad=0 PositionEntity cam,Sin(camwink#)*camdist#,camheight#,Cos(camwink#)*camdist# If KeyDown(203) Then camwink#=camwink#-1 If KeyDown(205) Then camwink#=camwink#+1 If KeyDown(200) Then camdist#=camdist#+.1 If KeyDown(208) Then camdist#=camdist#-.1 If KeyDown(75) Then camheight#=camheight#+.1 If KeyDown(79) Then camheight#=camheight#-.1 If KeyDown(17) Then lz#=lz#-.1 If KeyDown(31) Then lz#=lz#+.1 If KeyDown(30) Then lx#=lx#+.1 If KeyDown(32) Then lx#=lx#-.1 If KeyDown(16) Then ly#=ly#-.1 If KeyDown(18) Then ly=ly#+.1 PointEntity cam,cube1 SetBuffer TextureBuffer(shadowtex) ClsColor 255,255,255 Cls SetBuffer BackBuffer() shadow(light,shadowcam,64,4) PositionEntity light,lx#,ly#,lz# PositionEntity lkreis,lx#,ly#,lz# UpdateWorld RenderWorld Text 1,1,fps# Text 1,20,camwink# Text 1,40,"X "+EntityX(cam)+" Y "+EntityY(cam)+" Z "+EntityZ(cam) Text 1,60,x Text 1,80,nx#+" "+ny#+" "+nz# endt#=MilliSecs()-oldframe# calcfps#=calcfps#*19.+1000./endt# calcfps#=calcfps#/20. Text 1,100,calcfps# oldframe#=MilliSecs() Flip Wend Function shadow(tlight,shadowcam,shadowx#,shadowscale#) LockBuffer BackBuffer() LockBuffer TextureBuffer(shadowtex) CameraProjMode shadowcam,1 For x=1 To shadowx# For y=1 To shadowx# PositionEntity shadowcam,x*shadowscale#-128,1,y*shadowscale#-128 PointEntity shadowcam,tlight If CameraPick(shadowcam,50,50)<>tlight r=120 g=120 b=120 argb=0 WritePixelFast x,shadowx#-y,argb,TextureBuffer(shadowtex) EndIf Next Next CameraProjMode shadowcam,0 UnlockBuffer BackBuffer() UnlockBuffer TextureBuffer(shadowtex) End Function Habs nochmal leicht verändert! Nun hab ich noch veränderte Schatten rein gemacht! Hier: Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
SeedRnd MilliSecs() Global world=CreateTerrain(256) Global shadowtex=CreateTexture(64,64) RotateTexture shadowtex,0 ScaleTexture shadowtex,256,256 EntityFX world,1 EntityTexture world,shadowtex PositionEntity world,-128,0,-128 light=CreateLight(3) lkreis=CreateSphere() ScaleEntity lkreis,.5,.5,.5 TurnEntity light,90,0,0 PositionEntity light,0,20,0 EntityRadius light,.2 EntityPickMode light,1 cam=CreateCamera() camwink#=135 camdist#=20 camheight#=15 Global nx#,ny#,nz# shadowcam=CreateCamera() CameraProjMode shadowcam,0 CameraViewport shadowcam,1,1,800,600 lx#=0 lz#=0 ly#=20 cube1=CreateCube() EntityPickMode cube1,2 ScaleEntity cube1,2,2,2 PositionEntity cube1,0,5,0 EntityColor cube1,255,0,0 For set=1 To 2 cube=CreateCube() EntityPickMode cube,2 ScaleEntity cube,2,2,2 PositionEntity cube,Rnd(256)-128,2+Rnd(7),Rnd(256)-128 EntityColor cube,255,0,0 Next fps#=30 fpstime=1000./fps# nextframe=MilliSecs() x=0 While Not KeyDown(1) SetBuffer BackBuffer() Repeat:Until MilliSecs()>nextframe nextframe=MilliSecs()+fpstime x=x+1 If shad<>0 Then FreeEntity shad shad=0 PositionEntity cam,Sin(camwink#)*camdist#,camheight#,Cos(camwink#)*camdist# If KeyDown(203) Then camwink#=camwink#-1 If KeyDown(205) Then camwink#=camwink#+1 If KeyDown(200) Then camdist#=camdist#+.1 If KeyDown(208) Then camdist#=camdist#-.1 If KeyDown(75) Then camheight#=camheight#+.1 If KeyDown(79) Then camheight#=camheight#-.1 If KeyDown(17) Then lz#=lz#-.1 If KeyDown(31) Then lz#=lz#+.1 If KeyDown(30) Then lx#=lx#+.1 If KeyDown(32) Then lx#=lx#-.1 If KeyDown(16) Then ly#=ly#-.1 If KeyDown(18) Then ly=ly#+.1 PointEntity cam,cube1 SetBuffer TextureBuffer(shadowtex) ClsColor 255,255,255 Cls SetBuffer BackBuffer() shadow(light,shadowcam,64,4) PositionEntity light,lx#,ly#,lz# PositionEntity lkreis,lx#,ly#,lz# UpdateWorld RenderWorld Text 1,1,fps# Text 1,20,camwink# Text 1,40,"X "+EntityX(cam)+" Y "+EntityY(cam)+" Z "+EntityZ(cam) Text 1,60,x Text 1,80,nx#+" "+ny#+" "+nz# endt#=MilliSecs()-oldframe# calcfps#=calcfps#*19.+1000./endt# calcfps#=calcfps#/20. Text 1,100,calcfps# oldframe#=MilliSecs() Flip Wend Function shadow(tlight,shadowcam,shadowx#,shadowscale#) LockBuffer BackBuffer() CameraProjMode shadowcam,1 For x=1 To shadowx# For y=1 To shadowx# LockBuffer TextureBuffer(shadowtex) PositionEntity shadowcam,x*shadowscale#-128,1,y*shadowscale#-128 PointEntity shadowcam,tlight If CameraPick(shadowcam,400,300)<>tlight oldcol=ReadPixelFast(x,y,TextureBuffer(shadowtex)) oldr=oldcol Shr 16 And 255 Shl 0 oldg=oldcol Shr 8 And 255 Shl 0 oldb=oldcol Shr 0 And 255 Shl 0 nr=oldr*.1 ng=oldg*.1 nb=oldb*.1 argb=(nb Or (ng Shl 8) Or (nr Shl 16) Or ($FF000000)) WritePixelFast x,shadowx#-y,argb,TextureBuffer(shadowtex) EndIf UnlockBuffer TextureBuffer(shadowtex) Next Next CameraProjMode shadowcam,0 UnlockBuffer BackBuffer() End Function |
||
|
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 Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
||
|
|
Mr.Keks |
Antworten mit Zitat |
|---|---|---|
|
Zitat: PROBLEM: Es läuft bei meinen 2,1Ghz mit einer ATI Radeon 9800 Pro und 512MB DDR Ram gerade mal mit 17Hz/s
1. Hz/s ist eine schwachsinnige Einheit, frag mal deinen Physiklehrer! Und das bei sehr niedrigen Schattendetails! Dürfte am CameraPick liegen. 2. Stimmt, das ist arschlahm so. CameraPick ist nicht für soetwas geeignet. 3. Besser einfach die Schattenwerfer auf das Terrain rendern wie gezeigt unter: http://www.blitz.inarie.de/viewtopic.php?t=226 |
||
| MrKeks.net | ||
|
|
StepTiger |
Antworten mit Zitat |
|---|---|---|
|
na ich bin doof
Hz/s ^^ Hz oder f/s oder 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 Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
||
Übersicht
BlitzBasic
Codearchiv
Powered by phpBB © 2001 - 2006, phpBB Group
