Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-01-2012, 15:59   #1 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.496
Stage3D und Auflösung (fullScreenRect)

Hi,

ich bastel gerade etwas mit Away3d herum und da ist mir folgendes aufgefallen:

Weil mir die Framerate jetzt schon fällt hab ich mir mal gedacht ich benutze stage.fullScreenRect (sollte wegen mouseLock ohnehin im Vollbild laufen) um die Fläche zu reduzieren und damit hoffentlich die Last zu verringern.

Setz ich so die Auflösung auf 800x600 runter und wende das auch auf den view an, CHAOS!
  • Mein Bildschirm von 1920x1200 wird für den 800x600 Modus links und rechts normal beschnitten.
  • DisplayObjects aus dem 800x600 rect werden auf Vollbild hochskaliert.
  • Der view, dem ich auch die Größe von 800x600 verpasst habe ist nur klein in der linken oberen Ecke. Genauer gesagt, er hat 800x600, aber eben wie 800x600 in 1920x1200; bleibt fein aufgelöst (1920x1200), während der Rest pixelig wird (800x600).
  • Ach ja, mouseLock läuft bei fullScreenRect total Amok.
Offenbar bin ich bekloppt. Wenn ich mich an ein Jahre zurückliegendes Projekt erinnere, wurde früher die Auflösung des Bildschirms wirklich geändert sofern die Grafikkarte den Modus unterstützt hat. Täusch ich mich da?

Noch kurioser: Wenn ich die Auflösung des Systems von Hand mal wirklich auf 800x600 herunterstelle ist die Performance weit schlechter als bei voller Auflösung.

Kann jemand was davon bestätigen?

mfg

sx

//"broomstick" away3d 4 alpha, FP11.2 beta
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 28-01-2012, 02:59   #2 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 109
Zum fullScreenSourceRect Problem kann ich nun nichts sagen, wenn du nur den Backbuffer beschneiden willst könnte setScissorRectangle helfen.

Läuft Stage3D im Hard- oder Softwaremode und hast du enableErrorChecking in core.managers.Stage3DProxy auf false gesetzt? Das ErrorChecking zieht auch ganz gut an der Performance, in away4 von Haus aus aktiviert :-)
Wakka ist offline   Mit Zitat antworten
Alt 28-01-2012, 11:39   #3 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.496
Zitat:
Zitat von Wakka Beitrag anzeigen
Läuft Stage3D im Hard- oder Softwaremode und hast du enableErrorChecking in core.managers.Stage3DProxy auf false gesetzt? Das ErrorChecking zieht auch ganz gut an der Performance, in away4 von Haus aus aktiviert :-)
DirectX 9 ( bringt da ein update auf die 11er auch was? ... eigentlich sollte der schon drauf sein is der 11er doppelconfused) - aber das errorChecking war tatsächlich an. Danke für den Tip. Damit hab ich nicht gerechnet. Das macht schon mal ein gutes Stück Luft nach oben.

setScissorRectangle hat bei meinen ersten Experimenten ohne Framework eigentlich kaum was gebracht. Hattest du schon einen Fall, bei dem das von Vorteil war?

Was die performance angeht hätte ich da noch ein paar Fragen. Hast du dich mit Away3D näher befasst? Ich hab zuvor noch keine Version verwendet und die Referenz ist ausgesprochen spärlich ... ich fürchte fast ich muss mich da anders ans Werk machen.
__________________

flintfabrik.de

Geändert von shin10 (28-01-2012 um 11:44 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 30-01-2012, 15:55   #4 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Ort: Hamburg
Beiträge: 77
Stage3D (auch im Fullscreen) ändert nie deine Bildschirmauflösung. Sprich du hast nie gezoomte Pixel, so wie du es vom normalen Flash Fullscreen gewohnt bist. Wenn du jetzt Stage3D auf 800x600 setzt, hast du eben nur einen Teil deines Bildschirms benutzt...

Die GPU ist auch ziehmlich mächtig, d.h. Auflösung runterschrauben bringt nur bedingt etwas. Reduzier lieber die Anzahl der Polygone, bzw. die drawCalls.
__________________
[ Blog | ND2D Engine ]
geggo ist offline   Mit Zitat antworten
Alt 30-01-2012, 16:19   #5 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.496
Hi Lars,

ja das hab ich soweit auch festgestellt. Ich wunder mich nur drüber, denn ich meine, dass ich vor ein paar Jahren bei fullScreenRect am analogen Bildschirm immer das typische "kaTSCHLUNG"-Umschalten der Auflösung hören konnte. Wahrscheinlich spielt mir da nur meine Erinnerung Streiche, aber sei es drum.

Was die drawcalls betrifft hab ich da noch keine Ahnung, wie das intern von Away3D geregelt wird. Ich weiß nur, dass ich vermutlich eher mehr als weniger brauche.

So was ich bisher gelesen habe ist es ja bspw. nicht von Haus aus möglich einzelne Objekte mit einem Glow auszustatten. Aus meiner 3DS Max-Phase vor über einem Jahrzehnt weiß ich noch, dass das alles über Postprocessing funktioniert und ich daher die Szene mehrfach rendern muss. (Nur wo hack ich mich da am geschicktesten rein? )

Dann sind da noch andere Sachen - wie siehts zum Bsp. mit Lens Flare und Streak etc. aus.

Cockpit Scheibe mit Staub, Kratzern und Dreck nur im Gegenlicht?

Render ich ein HUD über GPU oder der Einfachheit halber besser über die normale DisplayList?

Dann sind da noch viel simplere Sachen. Erwähnt seien da mal animierte Texturen z. B. bei Explosionen. VideoMaterial ist ein voller Griff ins Klo. Ich denke mal, dass man das auch am Besten mit einem Spritemap löst. Ob AnimatedBitmapMaterial das so macht, oder auch wieder Map um Map auf die GPU lädt und damit alles zum Stocken bringt weiß ich aber gerade noch nicht. Die Refernz wie gesagt ist ja sehr mager - vielleicht kennt da einer von euch aussagekräftigere Quellen oder weiß schon Bescheid.

mfg

Michael

Hab mich schon lange gefragt ob du hier im Forum rumrennst. Tausend Dank für ND2D. Wollte ich dir schon laaaaange sagen!
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 31-01-2012, 09:24   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Ort: Hamburg
Beiträge: 77
Es gibt Filter für Away3D, schau dir mal den hier an: https://github.com/away3d/away3d-cor...oomFilter3D.as

Und: Danke! Freut mich immer, wenn die engine jemand benutzt
__________________
[ Blog | ND2D Engine ]
geggo ist offline   Mit Zitat antworten
Alt 01-02-2012, 06:06   #7 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.496
Zitat:
Zitat von geggo Beitrag anzeigen
Es gibt Filter für Away3D, schau dir mal den hier an: https://github.com/away3d/away3d-cor...oomFilter3D.as
Das schon und die sind auch alle ganz nett, aber die werden immer auf die komplette Ausgabe angewendet. Wenn ich jetzt aber nur bestimmte Objekte glühen lassen möchte - den altmodischen Weltraumlaser bspw. - dann brauch ich ja zunächst ein weiteres Bild der Szene (also z. B. nur schwarzweiß) um den Effekt einzuschränken.
Oder irgendwie die Möglichkeit den vertex shader Werte objekt/material-abhängig in ein attribut register schreiben zu lassen...

Zumindest hab ich das so verstanden, was ich bisher über AGAL gelesen habe. Aber ich versteh momentan noch nicht wirklich, wie Away3D das alles durchläuft.
__________________

flintfabrik.de

Geändert von shin10 (01-02-2012 um 06:13 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 02-02-2012, 15:19   #8 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Ort: Hamburg
Beiträge: 77
Das müsstest du in mehreren Render-Passes machen. Standardmäßig hat Away3D nur einen meine ich.

1. Schalte alle Lichter aus, alle Texturen auf schwarz, bis auf die Objekte die glühen sollen. Das ganze renderst du auf eine Textur #1.

2. Lichter wieder an, Texturen auch wieder. Szene auf eine andere Textur #2 rendern.

3. Im letzten Schritt Textur #1 und #2 in einen Shader packen und rendern. Dabei kannst du Textur #1 blurren und additiv drüberlegen.

Hier ist ein guter Artikel dazu:
Gamasutra - Features - Real-Time Glow

Away3D hat bestimmt eine renderToTexture Methode und den Shader für Step 3 müsstest du wohl schreiben.
__________________
[ Blog | ND2D Engine ]
geggo ist offline   Mit Zitat antworten
Alt 02-02-2012, 16:01   #9 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.496
Ja, so in der Art dachte ich mir das. Allerdings rechnet man so natürlich das doppelte an Geometrie (weshalb mir das mit Attribut Registern lieber wäre, sofern das überhaupt möglich ist). Naja mal sehen. Ich find mich in Away3D einfach noch nicht zurecht. renderToTexture gibt es soweit ich bisher weiß nicht direkt. Das wird auch irgendwie über die Materialien gemacht ... ansonsten müsste ich das einfach so über den Stage3DProxy machen schätze ich ...

Würde auch gar nicht so sehr hier rumnölen, aber ich bekomm keine Anmelde-mail vom Away3D Forum zurück.
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 02-02-2012, 16:08   #10 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Ort: Hamburg
Beiträge: 77
Du kannst ja mal nach Single-Pass-Glow suchen, evtl. gibt's da eine Möglichkeit. Ich kenne leider keine. Für einen ordentlichen Glow, wirst du glaube ich nicht drumherum kommen die Szene zwei mal zu rendern.

Der Schlüssel zu deinem Glow liegt in dem BloomFilter3D. Schau dir das dort mal genau an. Es werden dort auch mehrere Rendertargets benutzt.

Erst blur, dann brighten und compositing:

private var _blurTask : Filter3DBlurTask;
private var _brightPassTask : Filter3DBrightPassTask;
private var _compositeTask : Filter3DBloomCompositeTask;
__________________
[ Blog | ND2D Engine ]
geggo ist offline   Mit Zitat antworten
Alt 02-02-2012, 16:25   #11 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.496
Die hatte ich mir mal durchgesehen, aber soweit ich das verstanden habe werden da nur die pixelshader fürs post processing in Schleifen zusammengesetzt.
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
FDT5 und Stage3D Ouroborus23 Zusatzprodukte 3 21-11-2011 10:13
FlashDevelop, Flex SDK 4.5.1, Flash Player 11, Starling bzw Stage3D szylla Flex programmieren 7 03-11-2011 15:13
Flash11 (Stage3D) - 3D-Editor? PF-Consulting 3D 1 02-11-2011 09:31
playerglobal11_0.swc enthält kein Stage3D ...? Mr.Twister Flex allgemein 4 08-10-2011 19:07
auflösung ??? chriss HTML und CSS 4 10-10-2002 11:11


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele