deferred-shading

___ tag123opengl ___ OpenGL (Open Graphics Library) ist ein Grafikstandard und eine API, die plattformunabhängig und für Desktops, Workstations und mobile Geräte verfügbar ist. Es wurde entwickelt, um hardwarebeschleunigtes Rendering bereitzustellen und bietet daher eine erheblich verbesserte Leistung gegenüber dem herkömmlichen Software-Rendering. OpenGL wird für Anwendungen wie CAD-Software und Computerspiele verwendet. Der OpenGL-Standard sowie OpenGL ES werden von der Khronos-Gruppe gesteuert. ___ qstntxt ___

BEARBEITEN: Ich bin immer noch auf der Suche nach Hilfe bei der Verwendung von OpenCL- oder Compute-Shadern. Ich würde es vorziehen, OGL 3.3 weiter zu verwenden und mich nicht mit der schlechten Treiberunterstützung für OGL 4.3 und OpenCL 1.2 zu befassen, aber ich kann mir sowieso nicht vorstellen, diese Art der Schattierung ohne einen der beiden zu machen (um Lichter und Fliesen). Ist es möglich, kachelbasiertes Culling ohne GPGPU zu implementieren?

Ich habe einen verzögerten Render in OpenGL 3.3 geschrieben. Im Moment mache ich keinen Culling für den Lichtdurchgang (ich mache nur einen Vollbildschirm-Quad für jedes Licht). Dies hat (offensichtlich) eine Menge Overdraw. (Manchmal ist es ~ 100%). Aus diesem Grund habe ich nach Möglichkeiten gesucht, die Leistung während des Lichtdurchgangs zu verbessern. Es scheint, als wäre der beste Weg (fast) jedermanns Meinung, die Szene mit Hilfe von Kacheln auf dem Bildschirm auszusortieren. Dies war die Methode, die in Frostbite 2 verwendet wurde. Ich habe die Präsentation von Andrew Lauritzen während der SIGGRAPH 2010 gelesen ( Ссылка ), und ich bin mir nicht sicher, ob ich das Konzept vollständig verstehe. (Und warum ist es besser als alles andere, und wenn es für mich besser ist)

In der Präsentation geht Laurtizen über die verzögerte Schattierung mit Lichtvolumen, Quads und Kacheln hinaus, um die Szene zu cullen. Nach seinen Angaben war der Kachel-basierte Deferred Renderer der schnellste (bei weitem). Ich verstehe nicht, warum es so ist. Ich nehme an, es hat etwas damit zu tun, dass für jedes Plättchen alle Lichter zusammengefügt werden. In der Präsentation heißt es, den G-Buffer einmal zu lesen und dann die Beleuchtung zu berechnen, aber das ergibt für mich keinen Sinn. In meinen Gedanken würde ich das folgendermaßen umsetzen:

%Vor%

Dies würde immer noch beinhalten, den G-Buffer viel zu probieren. Ich würde denken, dass dies die gleiche (wenn nicht sogar schlechtere) Leistung hätte, als wenn man für jedes Licht einen Bildschirm mit ausgerichteter Quadrate rendert. Wie es aber aussieht, scheint es so zu sein:

%Vor%

Aber ich sehe nicht, wie man das machen würde, ohne das Befehlslimit für den Fragment-Shader auf einigen GPUs zu überschreiten. Kann mir jemand dabei helfen? Es scheint auch so, als ob fast jeder Kachel-basierte Deferred-Renderer Compute-Shader oder OpenCL verwendet (um die Lichter zu chargen), warum ist das so, und wenn ich diese nicht verwenden würde, was würde passieren?

    
___ tag123lighting ___ Bezieht sich auf Computerspiele-Engines und 3D-Grafiksoftware. Für die Verwendung von Schatten und Licht in GUIs und für die Verwendung von Beleuchtung in Bezug auf Programme, die Hardware wie z. B. Kameras verwenden, erfordert dies Code zur Steuerung der Beleuchtung. Muss mit anderen relevanten Tags verwendet werden, die die verwendete Programmiersprache und das verwendete Framework unterscheiden. z.B. unity 3d Nicht mit Licht zu verwenden, wie es in der Physik mit Wellen- und Teilcheneigenschaften verwendet wird. ___ answer15994513 ___
  

Aber ich sehe nicht, wie man das machen würde, ohne das Befehlslimit für den Fragment-Shader auf einigen GPUs zu überschreiten.

Es hängt eher davon ab, wie viele Lichter Sie haben. Die "Anweisungsgrenzen" sind ziemlich hoch; Es ist im Allgemeinen nicht etwas, um das Sie sich außerhalb von degenerierten Fällen kümmern müssen. Selbst wenn mehr als 100 Lichter eine Kachel beeinflussen, sind die Chancen ziemlich gut, dass Ihre Lichtberechnungen die Anweisungsgrenzen nicht überschreiten werden.

Moderne GL 3.3-Hardware kann mindestens 65536 dynamische Anweisungen in einem Fragment-Shader ausführen und wahrscheinlich mehr. Für 100 Lichter sind das noch 655 Anweisungen pro Licht . Selbst wenn Sie 2000 Anweisungen zur Berechnung der Kameraposition verwenden, bleiben 635 Anweisungen pro Licht. Selbst wenn du Cook-Torrance direkt in der GPU machst, ist das wahrscheinlich immer noch ausreichend.

    
___ tag123deterdrendering ___ eine Screen-Space-Shading-Technik, die die Schattierung bis zum zweiten Durchlauf des Renderings vorgibt ___ qstnhdr ___ Deferred Rendering mit Tile-Based Culling Concept Probleme ___ tag123deferdedshading ___ hilf uns, dieses Wiki zu bearbeiten ___ tag123culling ___ hilf uns dieses Wiki zu bearbeiten ___
1
Antwort

Deferred Rendering mit Tile-Based Culling Concept Probleme

BEARBEITEN: Ich bin immer noch auf der Suche nach Hilfe bei der Verwendung von OpenCL- oder Compute-Shadern. Ich würde es vorziehen, OGL 3.3 weiter zu verwenden und mich nicht mit der schlechten Treiberunterstützung für OGL 4.3 und OpenCL 1.2...
14.04.2013, 00:14
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'tag' => 'deferred-shading',
];

$_SESSION = [
    '__flash' => [],
];