Speed-Gewinn durch HideEntity..?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

x-pressive

Betreff: Speed-Gewinn durch HideEntity..?

BeitragSa, Feb 07, 2004 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe gerade einen Artikel bei Blitzcoder gelesen, in dem jemand schreibt, eine gute Methode, um Speed zu gewinnen, ist, VOR RenderWorld alle Objekte, die nicht 'InView' sind, mittels HideEntity auszublenden.

Ist das wirklich nötig? Question Wenn ich mit TrisRendered() checke, wie viele Polygone gerendert werden, sehe ich klar, das Blitz3D eigentlich selbst so schlau ist, und Objekte, die sich nicht im Sichtfeld befinden, gar nicht erst rendert.

Wo also soll hier der Nutzen liegen?
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragSa, Feb 07, 2004 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Das zusätzliche Hiden bringt nochmals viel Speed. Klar, BB rendert die Objekte auch nicht wenn sie nicht im Sichtberreich sind, aber es bezieht sie trotzdem in alle möglichen anderen Berechnungen mit ein. z.B. Kollisionen etc. Wenn du sie hidest entfallen diese Berechnungen.
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com

TheShadow

Moderator

BeitragSa, Feb 07, 2004 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
eine frage: woher soll BB wissen ob es im sichtbereich liegt???

Dazu müssen erstmal alle polygone des objekts ausgerechnet werden ob da was zu sehen ist oder nicht - das kostet etwas speed - mit hideentity wird dieser vorgang übersprungen...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

x-pressive

BeitragSa, Feb 07, 2004 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso rendert Blitz dann ein Mesh nicht, wenn es nicht sichtbar ist?

Beispiel:

Code: [AUSKLAPPEN]

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

Global camPitch#
Global camYaw#

Global Mesh = CreateSphere(32)

Global Light = CreateLight(2)
PositionEntity Light,0,15,0
PointEntity    Light,Mesh

Global Cam = createCamera()
CameraZoom      Cam,1.5
PositionEntity  Cam,0,5,-5
PointEntity     Cam,Mesh

Hidepointer

;MAIN LOOP -----------------------------------
While Not KeyHit(1)

   Local xs# = MouseXSpeed() * 0.25
   Local ys# = MouseYSpeed() * 0.25
   MoveMouse 640/2,480/2
   camPitch = camPitch + ys
   camYaw   = camYaw   - xs
   If camPitch < -85 Then camPitch = -85
   If camPitch > 85  Then camPitch =  85
   RotateEntity Cam,camPitch,camYaw,0
   
   UpdateWorld
   RenderWorld
   Text 10,10,"TRIS RENDERED: " + TrisRendered()
   Flip

Wend

End


Die Kamera mit der Maus soweit drehen, bis das Objekt aus dem Bild ist...
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

TheShadow

Moderator

BeitragSa, Feb 07, 2004 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Lexikon sagt:

http://www.blitzbase.de/lexikon/3dpipeline.htm
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

tft

BeitragSa, Feb 07, 2004 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi......

grundsätzlich must du davon ausgehen ,das BB die Daten nur für DirectX vorbereitet und in eine dafür gebräuchliche Vorm bringt. BB selber Rendert nicht. Daher kann es imens wichtig sein, ewentuell for RenderWorld noch mal selber alle objecte auf sichtbarkeit zu prüfen, und gegebenenfals auszuschalten. Denn es macht für Dirext X schon einen unterschied ob 1000 Objecte Berechnet, davon fileicht nur 100 angezeigt werden. Wovon 800 garnicht oder niemals gesehen werden könten.
Triesrendered gibt dabei immer nur die anzahl wirklich gerenderter Dreiecke wieder.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

x-pressive

BeitragSa, Feb 07, 2004 23:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, jetzt hab' ich den Durchblick. Die Frage ist nur, wie Zeitaufwendig der Sichtbarkeitstest mit EntityInView ist -wenn der z.B. recht aufwendig ist, lohnt es sich wohl nur, wenn man weiß, das wirklich viele Objekte existieren. Was sagt die Erfahrung? Kann man diese Methode getrost anwenden oder muß man hier immer wieder abwägen?
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

TheShadow

Moderator

BeitragSo, Feb 08, 2004 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
@tft - tauschst du absichtlich F und V in deinen posts?

mach einfach ATAN2-Winkelberechnung relativ zur Kamera - und wenn es +-45° außerhalb des winkels liegt, dann kannst du es verstecken, sonst anzeigen...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Vincent

BeitragSo, Feb 08, 2004 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
eine ATAN2 berechnung dauert ewig ... da würd ich lieber die von BB vorgefertigten befehle nehmen, um zu schauen, ob sich etwas im sichtbereich befindet.
Gott ist nicht mit uns ... weil er mit Idioten keine Gnade kennt !

TheShadow

Moderator

BeitragSo, Feb 08, 2004 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ATAN2 ist schnell

er reicht doch nur mittelpunkt von objekt auf einer ebene (x+z) zu beachten und nicht jeden vertex - etwas einfacheres+schnelleres gibt es nicht

wenn du natürlich irg. wahnsinnige kameraschwenks macht, dann wird das wohl eher nix damit - kommt auf das spiel an...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

x-pressive

BeitragSo, Feb 08, 2004 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du ein Beispiel parat (Einzeiler)? Habe schon seit einiger Zeit nicht mehr mit ATAN & Co. herumhantiert... Confused
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group