ShadowEngine
Übersicht

![]() |
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


Powered by phpBB © 2001 - 2006, phpBB Group