DE102010046891B4 - Hierarchische Netzquantisierung für speichereffizientes Raytracing - Google Patents

Hierarchische Netzquantisierung für speichereffizientes Raytracing Download PDF

Info

Publication number
DE102010046891B4
DE102010046891B4 DE102010046891.6A DE102010046891A DE102010046891B4 DE 102010046891 B4 DE102010046891 B4 DE 102010046891B4 DE 102010046891 A DE102010046891 A DE 102010046891A DE 102010046891 B4 DE102010046891 B4 DE 102010046891B4
Authority
DE
Germany
Prior art keywords
vertex
triangles
max
triangle
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102010046891.6A
Other languages
English (en)
Other versions
DE102010046891A1 (de
Inventor
Manfred Ernst
Benjamin Segovia
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102010046891A1 publication Critical patent/DE102010046891A1/de
Application granted granted Critical
Publication of DE102010046891B4 publication Critical patent/DE102010046891B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

Verfahren, umfassend: Quantisieren (110) von Dreiecken einer Szene auf einem globalen Raster, sodass angrenzende Dreiecke ineinander einrasten; Codieren (120) der Eckpunktpositionen der Dreiecke als Bitfolgen variabler Länge, wobei das Codieren von Eckpunktpositionen umfasst: für jeden Eckpunkt Berechnen (310) eines Deltavektors Di = {xi, yi, zi}, wobei jede Komponente von Di den Abstand des Eckpunktes angibt, entlang der Dimension der Komponente, von der nächsten Ebene der Bounding Box, die den Eckpunkt beinhaltet, wobei die nächste Ebene senkrecht zu der Dimension ist und entweder die Ebene ist, die den Ursprung enthält, oder die Ebene, die der Ebene gegenüberliegt, die den Ursprung enthält; über alle Eckpunkte in der Bounding Box Bestimmen (320) der grössten x-, y- und z-Komponenten aus den Deltavektoren der entsprechenden Eckpunkte max(xi), max(yi), max(zi); Bestimmen (330) der Anzahl an Bit (nx, ny, nz), die benötigt wird, um max(xi), max(yi) bzw. max(zi) zu codieren; Codieren (340) von (nx, ny, nz), wobei die Deltavektoren der Eckpunkte auf die codierten (nx, ny, nz) folgen; und Hinzufügen eines zusätzlichen Bits zu jedem xi, yi, zi, wobei das zusätzliche Bit die nächste Ebene identifiziert; Modellieren (130) der Konnektivität der Dreiecke; und Gestalten (140) einer kompakten Bounding-Volume-Hierarchie (bounding volume herarchy, BVH), die zumindest einen Teil der Szene darstellt, wobei das Verfahren von einem Prozessor durchgeführt wird, der zur Durchführung von Grafikverarbeitung konfiguriert ist.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft ein Verfahren zur hierarchischen Netzquantisierung für speichereffizientes Raytracing.
  • Raytracing wurde sowohl beim Offline Rendering als auch bei interaktiven Anwendungen zunehmend wichtiger. Seine Flexibilität und fotorealistische Bildqualität machen Raytracing zum bevorzugten Algorithmus bei der Lösung von Problemen, wie z. B. dem globalen Beleuchtungsproblem. Seine Eignung zum Echtzeit-Rendering wurde in den letzten Jahren gezeigt. Die Leistung moderner Raytracer kann mit Rasterung für viele Szenarien mithalten und kann robuster und leichter in der Anwendung sein. Mit aufkommenden voll programmierbaren Grafikarchitekturen können die verbleibenden Vorteile der klassischen, auf Rasterung basierenden Rendering-Pipelines schwinden.
  • Ein Problem des Raytracings ist jedoch, dass eine optimale Leistung nur erzielt werden kann, wenn die gesamte Szene in den Gerätespeicher passt. Die meisten interaktiven Raytracing-Implementierungen nutzen grosszügig Speicherplatz, da dieser Ansatz hohe Bildfrequenzen liefert. Dies stellt ein Problem bei praktischen Anwendungen dar, nirgendwo mehr als bei Grafikkarten mit schnellem, aber beschränktem Speicherplatz.
  • Das Zögern dabei, Datenkomprimierung für schnelles Raytracing zu verwenden, ist auf den Einfluss auf die Leistung der meisten Komprimierungsalgorithmen und die fehlende Unterstützung für Direktzugriff zurückzuführen. Sequenzielle Dekomprimierung des gesamten Datensatzes vor einem Rendering könnte keine Option sein. Kürzlich entwickelte Algorithmen machen einen Schritt in die richtige Richtung, aber entweder erzielen sie nur mässige Komprimierungsraten oder sie erfordern eine blockweise Dekomprimierung der Datenstrukturen mit Caching. Beide Einschränkungen sind beim Echtzeit-Raytracing sehr grosser Modelle auf Geräten mit eingeschränktem Speicherplatz problematisch.
  • T. Kim, B. Moon, D. Kim, and S. Yoon. RACBHs: Random-Accessible Compressed Bounding Volume Hierarchies. IEEE Transactions an Visualization and Computer Graphics, vol. 16, no. 2, March/April 2010; published online 17 June 2009, offenbart Codieren von Eckpunktpositionen von Dreiecken als Bitfolgen variabler Länge, Modellieren der Konnektivität der Dreiecke und Gestalten einer kompakten Bounding-Volume-Hierarchie, die zumindest einen Teil einer Szene darstellt. Das bekannte Verfahren wird von einem Prozessor durchgeführt, der zur Durchführung von Graphikverarbeitung konfiguriert ist.
  • Aus SHAFFER, Eric; GRALAND, Michael. Efficient adaptive simplification of massive meshes. In: Proceedings of the conference in Visualization '01. IEEE Computer Society, 2001. S. 127–134, ist Quantisieren von Dreiecken einer Szene auf einem globalen Raster, so dass angrenzende Dreiecke ineinander einrasten, bekannt.
  • Aus der US 020080192050 A1 und der US 6525722 B1 ist jeweils eine Datenstruktur für eine Boundingbox mit Deltavektoren von dessen Ursprung zu den Eckpunkten der Dreiecke bekannt, wobei die maximal benötigte Anzahl der Bits bestimmt wird, um die Deltavektoren zu kodieren, und diese Anzahl den Deltavektoren vorangestellt wird.
  • Der vorliegenden Erfindung liegt somit die Aufgabe zugrunde, für ein speichereffizientes Raytracing zu sorgen.
  • Erfindungsgemäß wird diese Aufgabe durch ein Verfahren nach Anspruch 1 sowie ein Computerprogramm-Produkt nach Anspruch 7 gelöst.
  • Die Unteransprüche betreffen vorteilhafte Weiterentwicklungen des erfindungsgemäßen Verfahrens.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN/FIGUREN
  • 1 ist ein Ablaufdiagramm, das die hierin beschriebene Gesamtverarbeitung gemäss einer Ausführungsform veranschaulicht.
  • 2 zeigt die Platzierung von Dreiecken auf einem globalen Raster gemäss einer Ausführungsform.
  • 3 ist ein Ablaufdiagramm, das die Codierung von Eckpunktpositionen als Bitfolgen gemäss einer Ausführungsform veranschaulicht.
  • 4 veranschaulicht die Codierung von Eckpunkten, wobei gemäss einer Ausführungsform die nächste Bounding Plane von einem zusätzlichen Bit angegeben werden kann.
  • 5 ist ein Ablaufdiagramm, das die Verwendung einer Nachschlagetabelle zur Modellierung der Konnektivität von Dreiecken gemäss einer Ausführungsform veranschaulicht.
  • 6 veranschaulicht die Verwendung ungerichteter Ladevorgänge zur Eckpunkt-Decodierung gemäss einer Ausführungsform.
  • 7 ist ein Ablaufdiagramm, das die Gestaltung einer kompakten Bounding-Value-Hierarchie gemäss einer Ausführungsform veranschaulicht.
  • 8 veranschaulicht das Layout einer Bounding-Value-Hierarchie, wobei Kindknoten gemäss einer Ausführungsform zu Blöcken organisiert sein können.
  • 9 veranschaulicht eine Software- oder Firmware-Implementierung der hierin beschriebenen Verarbeitung gemäss einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine bevorzugte Ausführungsform wird nun unter Bezugnahme auf die Figuren beschrieben, bei denen gleiche Bezugsnummern identische oder funktional ähnliche Elemente angeben.
  • Ebenfalls bei den Figuren entspricht die ganz linke Ziffer einer jeden Bezugsnummer der Figur, bei der die Bezugsnummer zum ersten Mal verwendet wird. Obwohl spezifische Konfigurationen und Anordnungen erörtert werden, sollte es selbstverständlich sein, dass dies lediglich zum Zwecke der Veranschaulichung erfolgt. Ein Fachmann wird erkennen, dass weitere Konfigurationen und Anordnungen verwendet werden können, ohne vom Sinn und Umfang der Beschreibung abzuweichen. Für einen Fachmann ist es selbstverständlich, dass dies ebenfalls bei vielerlei anderen Systemen und Anwendungen, die sich von dem hierin beschriebenen unterscheiden, eingesetzt werden kann.
  • Die hierin beschriebenen Verfahren und Systeme können ein Dreiecksnetz und seine Bounding-Volume-Hierarchie (bounding volume hierarchy, BVH) in einer kompakten hierarchischen Datenstruktur speichern. Die BVH kann als eine Beschleunigungsstruktur und als eine hierarchische, komprimierte Darstellung von Dreiecksnetzen verwendet werden. Dies macht sich den Umstand zunutze, dass eine BVH eine Annäherung des Dreiecksnetzes darstellen kann. Die Eckpunkte des Netzes können als quantisierte Werte innerhalb der BVH-Blatter mit wenigen Bit gespeichert werden.
  • Eine Quantisierung der Eckpunktpositionen innerhalb der Blattknoten kann jedoch zu Lücken zwischen benachbarten Dreiecken führen, wenn sie sich in unterschiedlichen Blättern befinden. Dies geschieht, da die Quantisierungspositionen innerhalb zweier Blattknoten nicht ausgerichtet sein könnten. Bei einer Ausführungsform kann dieses Problem mit einem globalen Quantisierungsraster gelöst werden, bei dem alle Blattknoten an diesem Raster ausgerichtet sein können. Die Dreieckseckpunkte können in dasselbe Raster einrasten und ihre Position kann als ein Ganzzahl-Offset zu dem Ursprung ihrer entsprechenden Bounding Box gespeichert werden. Die Ganzzahlpositionen innerhalb eines Blattknotens können typischerweise einen kleinen Bereich aufweisen und können für eine Komprimierung zugänglich sein.
  • Die Ganzzahlwerte könnten mit einem aggressiven Komprimierungsalgorithmus, wie beispielsweise Huffman-Codierung oder arithmetischer Codierung, codiert werden. Bei einer Ausführungsform können die Daten in Bitfolgen gespeichert werden. Eine optimierte Entpackfunktion kann verwendet werden, um sie kostengünstig zu decodieren.
  • Zusätzlich zu den Eckpunktpositionen kann die Eckpunkt-Konnektivität komprimiert sein. Die Dreiecke können lokal innerhalb der BVH-Knoten als Streifen oder indizierte Streifen, je nachdem welche Variante kleiner ist, gespeichert werden. Wie im Falle der quantisierten Positionen können die Eckpunktindizes einen kleinen Bereich aufweisen und können komprimiert werden.
  • Die Bonnding-Volume-Hierarchie selbst kann ebenfalls in einem kompakten Format gespeichert werden. Die BVH-Knoten können quantisiert werden. Zusätzlich können die Knoten in Cluster gespeichert werden. Auf diese Art und Weise können die Kindzeiger einen lokalen Offset in dem Cluster darstellen, der lediglich wenige Bit erfordern kann. Insgesamt kann die Grösse eines BVH-Knotens von 32 Byte auf beispielsweise 4 Byte verringert werden. Im Allgemeinen gibt es keine Beschränkungen bei einem BVH-Gestaltungsalgorithmus, sodass ein herkömmlicher Builder verwendet werden kann.
  • Eine Gesamtverarbeitung ist in 1 gemäss einer Ausführungsform veranschaulicht. Bei 110 können die Dreiecke eines Modells auf einem globalen Raster quantisiert und eingerastet sein. Dies kann auf eine Art und Weise erfolgen, die Lücken eliminiert, die ansonsten erscheinen können, wenn die Dreiecke auf entsprechenden lokalen Raster quantisiert wären. Bei 120 sind die Positionen der Eckpunkte der Dreiecke als Bitfolgen codiert. Dies wird auf eine Art und Weise durchgeführt, die die Anzahl an Bit minimiert, die erforderlich ist, um die Eckpunkte darzustellen. Bei 130 wird die Konnektivität der Dreiecke modelliert. Bei einer Ausführungsform kann dies durchgeführt werden, indem angenommen wird, die Dreiecke seien Streifen, wie nachstehend ausführlicher beschrieben wird. Bei 140 kann ein Teil des Modells oder das gesamte Modell in einer BVH dargestellt werden. Bei einer Ausführungsform kann die BVH auf eine kompakte Art und Weise gestaltet sein, was nachstehend ausführlicher beschrieben werden soll. Der Prozess kann bei 150 enden.
  • Quantisierung auf einem globalen Raster
  • Die Positionierung von Dreiecken auf einem globalen Raster ist in 2 gemäss einer Ausführungsform veranschaulicht. Wenn ein Shape als ein Satz an Dreiecken im Kontext einer Bounding-Volume-Hierarchie modelliert wird, können Spalten oder Lücken in der Geometrie erscheinen, wenn individuelle Polygone auf lokal quantisierten Raster platziert werden. Dies kann verhindert werden, indem alle Dreieckseckpunkte und Blatt-Bounding-Boxen in dasselbe globale Raster einrasten. Die Veranschaulichung 210 ganz links zeigt einen Satz angrenzender Dreiecke, bei denen die Eckpunkte unquantisiert und ohne Platzierung auf einem Raster bleiben. Die mittige Veranschaulichung 220 zeigt Dreiecke, die jeweils auf ihrem eigenen lokalen Raster platziert und quantisiert sind. Ein Mischen der Dreiecke kann zu Lücken zwischen Dreiecken führen, die verbunden sein sollen. Diese Lücken, wie z. B. Lücke 225, können Artefakte lokaler Quantisierung darstellen. Bei einer Ausführungsform kann ein globales Raster verwendet werden, bei dem Dreiecke einrasten können, sodass Lücken eliminiert werden. Dies ist bei der Veranschaulichung 230 ganz rechts gezeigt. Hier kann Lücke 225 eliminiert werden. Es ist zu beachten, dass im Kontext einer BVH die global eingerasteten Bounding Boxen nicht gespeichert werden müssen, da sie spontan zur Dekomprimierung der Eckpunkte eingerastet werden können.
  • Codierung von Eckpunktpositionen
  • Um zusätzlichen Speicherplatz zu sparen, können Bitfolgen verwendet werden, um Dreieckseckpunkte zu spezifizieren. Bei einer Ausführungsform können die Eckpunktpositionen bezüglich eines Bounding Box Ursprunges O codiert sein. Daher können die Deltavektoren (Di = {xi, yi, zi}), wenn ein Satz an Eckpunkten (Ai) zum Codieren gegeben ist, zuerst aus O für jeden entsprechenden Eckpunkt in Ai berechnet werden. Dann kann die Anzahl an Bit (nx, ny, nz), die erforderlich ist, um je max(xi), max(yi), max(zi) zu codieren, berechnet werden. (nx, ny, nz) stellt die Gesamtanzahl an Bit n bereit, die maximal für jede Koordinate eines jeden Eckpunkts erforderlich ist, und kann zu einem variablen Bit-Codierschema führen. Bei einer Ausführungsform ist die für jeden Eckpunkt erforderliche Anzahl (nx, ny, nz) an Bit in der Bitfolge codiert. Die Eckpunktdaten können anschliessend eingereiht werden.
  • Die Codierung von Eckpunkten ist in 3 gemäss einer Ausführungsform veranschaulicht. Bei 310 kann für jeden Eckpunkt ein Deltavektor Di = {xi, yi, zi} berechnet werden, wobei jede Komponente dieses Vektors den Abstand in der Dimension vom Ursprung der Bounding Box zu dem Eckpunkt beschreibt. Bei 320 können die grössten Werte für jede Dimension über alle der Eckpunkte Ai bestimmt werden. Diese Maximalwerte sind als max(xi), max(yi) und max(zi) gezeigt. Bei 330 kann die Anzahl an Bit, die zum Codieren eines jeden dieser Maximalwerte benötigt wird, bestimmt werden. Dies führt zu drei Werten (nx, ny, nz), die diese Maximalwerte darstellen. Bei 340 können diese Werte (nx, ny, nz) in einer Bitfolge, gefolgt von den Eckpunktdaten für Ai, platziert werden. Der Prozess kann bei 350 enden.
  • Eine Technik zum Codieren der Eckpunktdaten innerhalb einer Bounding Box kann darin bestehen, den ganzzahligen Deltavektor aus dem Ursprung zu berechnen. Die Blatt-Bounding-Boxen sind jedoch die derzeitigen Bounding Boxen der Eckpunkte, die sie enthalten. Da sich einige Eckpunkte an oder in der Nähe der Flächen der Bounding Boxen befinden, kann eine Berechnung der Deltawerte von der nächsten Ebene (anstatt von dem Ursprung) zu kleineren Deltavektoren führen, die mit weniger Bit dargestellt werden könnten.
  • Aus diesem Grund kann bei einer Ausführungsform ein zusätzliches Bit für jede Komponente des Deltavektors hinzugefügt werden, um die nächste Ebene, von der der Abstand gemessen wird, zu identifizieren. Dies kann die finale Grösse (d. h. Anzahl an Bit) der Eckpunktdaten verringern. Dies kann insbesondere bei Modellen nützlich sein, die viele grosse Dreiecke enthalten. Bei dem zweidimensionalen Beispiel von 4 kann ein Deltavektor für jeden Eckpunkt erzeugt werden, einschliesslich Eckpunkt D. Hier kann für jeden gegebenen Eckpunkt xmin verwendet werden, um den Abstand von dem Eckpunkt zu dem Ursprung O (als 405 gekennzeichnet) in x-Richtung zu bestimmen. Die Variable ymin kann verwendet werden, um den Abstand von dem Ursprung 405 zu D in y-Richtung zu bestimmen. Für den Eckpunkt D würde die nächste ”Ebene” in y-Dimension der oberen Grenze 410 entsprechen; die nächste ”Ebene” in x-Richtung würde der Grenze 420 ganz rechts entsprechen. Eckpunkt D würde daher als (xmax D, ymax D) codiert, wobei diese Koordinaten die Abstände von der oberen Grenze 410 bzw. von der Grenze 420 ganz rechts darstellen. Ein zusätzliches Bit kann dann für jede Koordinate hinzugefügt werden, um die nächste Grenze zu identifizieren. Im Falle der ersten Koordinate würde ihr zusätzliches Bit entweder die obere oder untere Grenze bezeichnen; im Falle der zweiten Koordinate würde ihr zusätzliches Bit entweder die rechte oder die linke Grenze bezeichnen.
  • Ein Decodieren der Eckpunktdaten kann darin bestehen, dass die Anzahl an Bit gelesen wird, die für jede Komponente erforderlich ist, und die Eckpunktdaten decodiert werden.
  • Es sollte selbstverständlich sein, dass 4 der Einfachheit halber und zur vereinfachten Veranschaulichung ein zweidimensionales Modell veranschaulicht. Dieses Beispiel könnte auf einen dreidimensionalen Fall ausgeweitet werden, bei dem die Grenzen anstelle von Liniensegmenten Ebenen wären. Zusätzlich zu den x- und y-Koordinaten wäre ebenfalls eine z-Koordinate vorhanden, um jeden gegebenen Eckpunkt zu codieren.
  • Dreiecks-Konnektivität
  • Dreiecks-Konnektivität kann ebenfalls modelliert werden. Es gibt mehrere Wege, um dies zu erreichen. Bei einem Verfahren können drei Eckpunktpositionen pro Dreieck gespeichert werden, wobei gemeinsam benutzte Eckpunkte verdoppelt werden. In Anbetracht des in 4 bereitgestellten Blattbeispiels kann die Sequenz der Eckpunktposition {ABE, EBD, CED} direkt codiert werden. Eine weitere Möglichkeit ist, ein Array von Eckpunktpositionen zu speichern und dann drei Indizes pro Dreieck zu speichern, wobei sich die Indizes auf die in dem Array identifizierten Eckpunktpositionen beziehen können. Im Fall von 4 kann {ABCDE} für die Eckpunktdaten gespeichert werden. Indizes können definiert werden, z. B. 0 für den ersten identifizierten Eckpunkt (A), 1 für den zweiten identifizierten Eckpunkt (B), etc. Demzufolge kann {[0, 1, 4], [4, 1, 3], [2, 4, 3]} verwendet werden, um die Dreiecke zu benennen. [0, 1, 4] stellt beispielsweise das Dreieck ABE dar.
  • Eine andere Art und Weise, Dreiecks-Konnektivität zu modellieren ist, angrenzende Dreiecke als Streifen zu betrachten. Durch eine Verwendung von Streifen oder indizierten Streifen kann die Möglichkeit bereitgestellt werden, Blattgrössen und Decodierzeiten zu verringern. Ein Streifensystem für ein in einem Blatt enthaltenes Dreiecksnetz wird bei einer Ausführungsform verwendet. Solch ein System kann Dreiecksnetz-Layouts bei Blättern verarbeiten, z. B. ein Streifen von vier Dreiecken gefolgt von einem Streifen von drei Dreiecken gefolgt von einem Dreieck. Dieser Ansatz kann eine Nachschlagetabelle (look-up table, LUT) verwenden, die automatisch generiert werden kann, und kann wie folgt gestaltet sein:
    • – Beschränkung der maximalen Anzahl an Dreiecken pro Blatt (beispielsweise 14);
    • – jeder Eintrag der LUT verarbeitet ein Netz-Layout. Eintrag STRIP3X3_STRIP2X3_TRIX4 verarbeitet beispielsweise ein Layout, das aus drei Streifen von drei Dreiecken besteht, dann drei Streifen von zwei Dreiecken und dann vier Dreiecke
    • – um die Anzahl an Einträgen zu beschränken, werden die Streifen nach ihrer Grösse geordnet. Daher wäre STRIP4X1_STRIP3X3 ein gültiger Eintrag, während STRIP3X3_STRIP4X1 es nicht wäre
    • – für jeden Eintrag die Anzahl an Dreiecken und die Offsets ihres ersten Eckpunkts speichern. Eintrag STRIP3X1_TRIX2 beispielsweise setzt sich aus fünf Dreiecken und den fünf Dreiecks-Offsets, {0, 1, 2, 5, 8}, zusammen
    • – Streifen wechseln Dreiecke im Uhrzeigersinn und gegen den Uhrzeigersinn ab; Speichern der Ausrichtung eines jeden Dreiecks.
  • Die LUT kann unabhängig sein von der Verwendung von Streifen oder indizierten Streifen. Wenn das Blatt Dreiecksstreifen speichert, können die von der Tabelle bereitgestellten Offsets den Offset der Eckpunktpositionen ergeben. Umgekehrt kann die Tabelle, wenn das Blatt indizierte Streifen speichert, den Offset der Eckpunktindizes bereitstellen. Während einer Komprimierung können sowohl Streifen als auch indizierte Streifen berechnet werden, und lediglich die kleinere Darstellung kann behalten werden. Die Blätter können dann mit einem zusätzlichen Bit markiert werden, um das Vorhandensein von Streifen oder indizierten Streifen anzugeben.
  • Eine der Verwendung von Streifen zur Modellierung von Dreiecks-Konnektivität verwandte Verarbeitung ist, gemäss einer Ausführungsform, in 5 veranschaulicht. Bei 510 kann eine Anzahl gewählt werden, die eine Beschränkung für die Anzahl an Dreiecken darstellt, die in einem einzelnen Blatt enthalten sein können. Bei 520 kann eine Nachschlagetabelle erzeugt werden, wobei jeder Eintrag einem einzelnen Netz-Layout entspricht. Bei 530 können Streifen, nach Grösse geordnet, in jedem Eintrag gespeichert werden. Bei 540 können die Anzahl an Dreiecken und die Offsets eines jeden ersten Eckpunkts bei jedem Eintrag gespeichert werden. Bei 550 können die Ausrichtungen der Dreiecke gespeichert werden. Der Prozess kann bei 560 enden.
  • Decodierung
  • Um den Decodierungsschritt bei bestimmten Architekturen zu beschleunigen, können bei einer Ausführungsform die Möglichkeiten eines ungerichteten Ladens einer Zielarchitektur verwendet werden. Ein Beispiel solch einer Architektur ist die ×86 Architektur. Chips wie z. B. diejenigen bei der ×86 Familie können hinsichtlich Speicherladevorgängen besonders nachsichtig sein. Hier können die 64-Bit-Quadwords unabhängig von ihrer Ausrichtung auf folgende Art und Weise geladen werden:
    Berechnung der maximalen Anzahl pn = [64/n] an Eckpunkten, die in ein Quadword passen, für eine Anzahl an Bit n, die benötigt wird, um jeden Eckpunkt darzustellen. Speichern von Eckpunkten unter Verwendung nicht ausgerichteter Sequenzen von pn Eckpunkten.
  • Der letzte Schritt ist bei der Ausführungsform von 6 veranschaulicht: hier entspricht n 44 Bit und pn entspricht 1. Ein 44-Bit-Eckpunkt kann codiert werden und vier Bit können freigelassen werden, um an einer Bytegrenze zu enden. Insgesamt werden daher 48 Bit dem Eckpunkt zugeordnet. Nach dem Beginn des Vorhergehenden, können bei dem nächsten Eckpunkt sechs Byte codiert werden (48 Bit = (8 Bit pro Byte)·(6 Byte)).
  • Da jede Sequenz von pn Eckpunkten nun auf einem neuen Byte beginnt, ist der Decodierungsschritt verbessert, wobei die zugrunde liegende Architektur schnelle ungerichtete Ladevorgänge unterstützt. Für eine schnelle Decodierung kann zuerst eine Nachschlagetabelle (look-up table, LUT) berechnet werden, wobei die LUT zwei Werte für jede Eckpunktsgrösse n ε [1 ... 64] speichert: die Anzahl an Eckpunkten pn, die innerhalb eines Quadwords gespeichert werden können, und den Offset sn in Byte relativ zu der Stelle des nächsten/der nächsten zu decodierenden Eckpunktes/Eckpunkte.
  • Der Decodierungsschritt kann wie folgt ablaufen, wobei q das Quadword ist, von dem aus eine Decodierung derzeit stattfindet:
    • 1. Decodierung von pn Eckpunkten aus q. Da alle Eckpunkte in q passen, kann diese Operation eine Sequenz von SHIFT- und UND-Befehlen erfordern
    • 2. Laden des nächsten Quadwords, das sich sn Byte nach q befindet.
  • Um den Decodierungsschritt zu verbessern, können ganzzahlige SIMD-Operationen verwendet werden. Sobald die Deltawerte von der Bitfolge erhalten werden, kann ein zweigloser Code mittels SIMD-Operationen die ganzzahligen eingerasteten Positionen abrufen und dann gemäss einer Ausführungsform die Orte der World-Space-Gleitkommazahlen mittels des Ursprungs und der Zellgrösse des Einrastrasters berechnen. Ein Beispiel von Pseudocode der Eckpunktdaten-Decodierung ist in Anhang A bereitgestellt.
  • BVH-Baum-Layout
  • Im Folgenden wird eine BVH mit zwei Ebenen beschrieben, die sowohl komprimierte als auch unkomprimierte Knoten verwenden kann; hierarchische Quantisierung, die Speicherplatzverbrauch durch Bounding Boxen verringern kann; und Blockzuordnung und Block-bezogene Indizes, die die Grösse an Referenzierungen auf Kindknoten verringern kann. Die Verarbeitung ist in 7 gemäss einer Ausführungsform veranschaulicht. Bei 710 kann hierarchische Codierung verwendet werden, um die Position von Kind-Bounding-Boxen, d. h. Kindknoten, auszudrücken. Die minimalen und maximalen Positionen der Kind-Bounding-Boxen können relativ zu ihren Elternknoten ausgedrückt werden. Offsets können verwendet werden, um die Orte von Ecken einer Kind-Bounding-Box zu definieren, wobei sich die Offsets relativ zu einem Punkt (wie z. B. dem Ursprung) der Elternbox befinden. Wenn lediglich vier Bit verwendet werden können, um jede Kind-Bounding-Box-Komponente zu codieren, entspricht der Speicherbedarf der Bounding Box 24 Bit. Bei einer Ausführungsform ermöglicht es daher die Verwendung von vier Byte (32 Bit) pro Knoten acht Bit, die Kindknoten zu indizieren und, wie im nächsten Abschnitt beschrieben, zusätzliche Information zu codieren.
  • Bei 720 können Kindknoten zu Blöcken gruppiert werden. Wie bei der Ausführungsform von 8 gezeigt, können zwei Systeme zur Indizierung verwendet werden. Innerhalb eines Blocks können wenige Bit verwendet werden, um die Kinder zu indizieren. Bei 8 können beispielsweise kleine Indizes verwendet werden, um Knoten N aus Root-Knoten R zu indizieren. Um ein Kind ausserhalb des derzeitigen Blockes zu referenzieren, kann eine 4-Byte-Ganzzahl in einem dedizierten Weiterleitknoten gespeichert werden. Bei der Veranschaulichung kann durch Bodenknoten B auf Weiterleitknoten F gezeigt werden. Weiterleitknoten F selbst können auf Block-Roots R zeigen, wobei diese Roots R Roots von entsprechenden Unterbäumen sind.
  • Unter Verwendung dieses Layouts kann ein 4-Byte-Knotenformat derart aufgebaut werden, dass:
    • – 24 Bit für die Bounding Box verwendet werden können (siehe Anhang B).
    • – 6 Bit können verwendet werden, um die Kindknoten zu indizieren
    • – 2 Bit können verwendet werden, um Blattknoten und die drei internen Knotentypen X, Y, Z, die erforderlich sein können, um die beiden Kinder zu ordnen, zu unterscheiden.
  • Bei 730 können Blattdaten mit Baumknoten verschachtelt sein. Bei einer Indizierung der Blattdaten (wie Dreiecksindizes oder Eckpunktpositionen) kann eine Verwendung von ein oder mehr 4-Byte-Indizes teuer sein. Wie bei der Ausführungsform von 8 gezeigt, können verschachtelte Blattdaten und Baumknoten Referenzierungen auf externe Arrays vermeiden. Durch Einreihen der Blattdaten nach jedem Block können die Blattdaten relativ zu dem Blattort in einem Speicher angegeben werden.
  • Bei 740 können Bodenknoten in der BVH komprimiert sein, wobei zumindest ein Teil der oberen Knoten unkomprimiert bleibt. Da die meisten Strahlen obere Knoten queren, kann dies den Einfluss auf die Leistung beschränken, während ein kleiner Speicherbedarf aufrechterhalten wird. Der Prozess kann bei 750 enden.
  • Implementierung
  • Die vorstehend beschriebene Verarbeitung kann in Hardware, Firmware oder Software oder irgendeiner Kombination davon implementiert sein. Zusätzlich können jegliche ein oder mehr hierin offenbarte Merkmale in Hardware, Software, Firmware und Kombinationen davon implementiert sein, einschliesslich separater und integrierter Schaltkreislogik, anwendungsspezifischer integrierter Schaltkreis-(application specific integrated circuit, ASIC)-Logik und Mikrocontrollern, und können als Teil eines Domainspezifischen integrierten Schaltkreisgehäuses oder einer Kombination von integrierten Schaltkreisgehäusen implementiert sein. Der Begriff Software, wie hierin verwendet, bezieht sich auf ein Computerprogramm-Produkt, einschliesslich eines computerlesbaren Mediums, in dem Computerprogrammlogik gespeichert ist, um ein Computersystem zu veranlassen, ein oder mehr Merkmale und/oder Kombinationen von Merkmalen, die hierin offenbart sind, auszuführen. Ein Computerprogramm-Produkt kann beispielsweise eine Compact Disk, Flash-Memory oder einen Festspeicher (read-only memory, ROM) oder ein anderes Permanentspeichergerät umfassen.
  • Eine Software- oder Firmwareausführungsform der vorstehend beschriebenen Verarbeitung ist in 9 veranschaulicht. System 900 kann einen Prozessor 920 und einen Speicherkörper 910 beinhalten, der ein oder mehr computerlesbare Medien beinhalten kann, die Computerprogrammlogik 940 speichern können. Speicher 910 kann als eine Festplatte und Laufwerk, ein Wechseldatenträger, wie z. B. eine Compact Disk und Compact Drive, oder beispielsweise ein ROM-Gerät implementiert sein. Prozessor 920 und Speicher 910 können mittels einer von vielen Technologien, die einem Fachmann bekannt sind, wie z. B. einem Bus, in Kommunikation stehen. In Speicher 910 enthaltene Logik kann von Prozessor 920 gelesen und ausgeführt werden. Ein oder mehr Eingabe-/Ausgabe-(I/O)-Ports und/oder Eingabe-/Ausgabe-(I/O)-Geräte, insgesamt als I/O 930 gezeigt, können ebenfalls mit Prozessor 920 und Speicher 910 verbunden sein.
  • Computerprogrammlogik kann Module 950970 gemäss einer Ausführungsform beinhalten. Rasterlogik 950 kann für eine Quantisierung von Dreiecken auf einem globalen Raster verantwortlich sein, sodass die Dreiecke einrasten. Codierte Logik 960 kann verantwortlich sein für eine Codierung der Eckpunktpositionen als Bitfolgen und für eine Codierung einer Dreiecks-Konnektivität, wie vorstehend beschrieben. BVH-Logik 970 kann verantwortlich sein für eine Gestaltung einer BVH und einer kompakten Art und Weise, wie vorstehend beschrieben.
  • Verfahren und Systeme werden hierin mithilfe funktionaler Bausteine offenbart, die deren Funktionen, Merkmale und Beziehungen veranschaulichen. Zumindest einige der Grenzen dieser funktionalen Bausteine wurden zum besseren Verständnis der Beschreibung hierin willkürlich definiert. Alternative Grenzen können definiert werden, solange deren spezifizierte Funktionen und Beziehungen angemessen durchgeführt werden. Anhang A Schnelle Decodierung von Eckpunktdaten.
    Figure DE102010046891B4_0002
    Figure DE102010046891B4_0003
    Anhang B Schnelle komprimierte Knotendecodierung
    Figure DE102010046891B4_0004
  • Figure DE102010046891B4_0005

Claims (7)

  1. Verfahren, umfassend: Quantisieren (110) von Dreiecken einer Szene auf einem globalen Raster, sodass angrenzende Dreiecke ineinander einrasten; Codieren (120) der Eckpunktpositionen der Dreiecke als Bitfolgen variabler Länge, wobei das Codieren von Eckpunktpositionen umfasst: für jeden Eckpunkt Berechnen (310) eines Deltavektors Di = {xi, yi, zi}, wobei jede Komponente von Di den Abstand des Eckpunktes angibt, entlang der Dimension der Komponente, von der nächsten Ebene der Bounding Box, die den Eckpunkt beinhaltet, wobei die nächste Ebene senkrecht zu der Dimension ist und entweder die Ebene ist, die den Ursprung enthält, oder die Ebene, die der Ebene gegenüberliegt, die den Ursprung enthält; über alle Eckpunkte in der Bounding Box Bestimmen (320) der grössten x-, y- und z-Komponenten aus den Deltavektoren der entsprechenden Eckpunkte max(xi), max(yi), max(zi); Bestimmen (330) der Anzahl an Bit (nx, ny, nz), die benötigt wird, um max(xi), max(yi) bzw. max(zi) zu codieren; Codieren (340) von (nx, ny, nz), wobei die Deltavektoren der Eckpunkte auf die codierten (nx, ny, nz) folgen; und Hinzufügen eines zusätzlichen Bits zu jedem xi, yi, zi, wobei das zusätzliche Bit die nächste Ebene identifiziert; Modellieren (130) der Konnektivität der Dreiecke; und Gestalten (140) einer kompakten Bounding-Volume-Hierarchie (bounding volume herarchy, BVH), die zumindest einen Teil der Szene darstellt, wobei das Verfahren von einem Prozessor durchgeführt wird, der zur Durchführung von Grafikverarbeitung konfiguriert ist.
  2. Das Verfahren nach Anspruch 1, wobei die Modellierung von Konnektivität umfasst, jeden Eckpunkt eines jeden Dreiecks zu identifizieren, wobei der Eckpunkt, wenn ein Eckpunkt der Dreiecke ein Eckpunkt für eine Vielzahl an Dreiecken ist, für jedes Dreieck der Vielzahl getrennt identifiziert wird.
  3. Das Verfahren nach Anspruch 1, wobei die Modellierung von Konnektivität umfasst: jeden Eckpunkt einmal zu identifizieren; einen Index mit jedem entsprechenden Eckpunkt zu verbinden; und jedes Dreieck zu identifizieren, indem die drei Indizes aufgelistet werden, die mit den drei entsprechenden Eckpunkten des Dreiecks verbunden sind.
  4. Das Verfahren nach Anspruch 1, wobei die Modellierung von Konnektivität umfasst: eine maximale Anzahl an Dreiecken pro Blatt in der BVH zu spezifizieren; eine Nachschlagetabelle (lookup table, LUT) zu gestalten, wobei jeder Eintrag der LUT mit einem Satz an Streifen verbunden ist, wobei jeder Streifen eine Sequenz von ein oder mehr angrenzenden Dreiecken umfasst, wobei kein Dreieck mehr als einmal in der LUT dargestellt ist; für jeden Eintrag die Anzahl an Dreiecken und die Offsets des ersten Eckpunkts eines jeden Dreiecks zu speichern; und die Ausrichtung eines jeden Dreiecks zu speichern.
  5. Das Verfahren nach Anspruch 1, wobei die Gestaltung einer kompakten BVH umfasst: für jeden Kindknoten ein Bounding Volume zu definieren, das relativ zu einem Bounding Volume eines verbundenen Elternknotens spezifiziert ist; Kindknoten zu Blöcken zu gruppieren; für jeden Block einen Index für jeden Kindknoten in dem Block zu definieren; für jeden Block mit Blättern nach dem Block Blattdaten aufzulisten, die mit dem Block verbunden sind; und Bodenknoten in einem komprimierten Format zu speichern und zumindest einen Teil der oberen Knoten in einem unkomprimierten Format zu speichern.
  6. Das Verfahren nach Anspruch 5, wobei ein Kindknoten in dem Block einem weiterleitenden Knoten zugeordnet ist, sodass ein weiterleitender Knoten auf einen untergeordneten Unterbaum des Kindknotens zeigt, wobei der Unterbaum in einem getrennten Block verbleibt.
  7. Das Computerprogramm-Produkt einschliesslich eines computerlesbaren Mediums, in dem Computerprogrammlogik gespeichert ist, die einen Prozessor veranlasst, das Verfahren nach einem der Ansprüche 1 bis 6 durchzuführen.
DE102010046891.6A 2009-10-01 2010-09-29 Hierarchische Netzquantisierung für speichereffizientes Raytracing Expired - Fee Related DE102010046891B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US24778109P 2009-10-01 2009-10-01
US61/247,781 2009-10-01
US12/770,212 2010-04-29
US12/770,212 US8669977B2 (en) 2009-10-01 2010-04-29 Hierarchical mesh quantization that facilitates efficient ray tracing

Publications (2)

Publication Number Publication Date
DE102010046891A1 DE102010046891A1 (de) 2011-04-07
DE102010046891B4 true DE102010046891B4 (de) 2014-11-27

Family

ID=43065205

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010046891.6A Expired - Fee Related DE102010046891B4 (de) 2009-10-01 2010-09-29 Hierarchische Netzquantisierung für speichereffizientes Raytracing

Country Status (6)

Country Link
US (1) US8669977B2 (de)
JP (1) JP5068849B2 (de)
CN (1) CN102034259B (de)
DE (1) DE102010046891B4 (de)
GB (1) GB2474102B (de)
TW (1) TWI517103B (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102696055A (zh) * 2009-10-30 2012-09-26 英特尔公司 利用分层加速结构的图形渲染
US20130033507A1 (en) * 2011-08-04 2013-02-07 Nvidia Corporation System, method, and computer program product for constructing an acceleration structure
US9965821B2 (en) 2012-03-09 2018-05-08 Nvidia Corporation Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit
US9224235B2 (en) * 2013-03-20 2015-12-29 Nvidia Corporation System, method, and computer program product for compression of a bounding volume hierarchy
US9842424B2 (en) * 2014-02-10 2017-12-12 Pixar Volume rendering using adaptive buckets
KR102230200B1 (ko) 2014-07-04 2021-03-19 삼성전자주식회사 객체에 대한 바운딩 박스의 좌표 값을 표현하는 방법 및 장치
US10235338B2 (en) * 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9552664B2 (en) 2014-09-04 2017-01-24 Nvidia Corporation Relative encoding for a block-based bounding volume hierarchy
JP5960863B1 (ja) * 2015-03-11 2016-08-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 検索装置、検索方法、プログラム、及び記録媒体
US10559125B2 (en) 2015-12-02 2020-02-11 Samsung Electronics Co., Ltd. System and method of constructing bounding volume hierarchy tree
US9928640B2 (en) * 2015-12-18 2018-03-27 Intel Corporation Decompression and traversal of a bounding volume hierarchy
KR102604737B1 (ko) * 2016-01-11 2023-11-22 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US11341110B2 (en) * 2016-03-21 2022-05-24 Imagination Technologies Limited Hierarchy merging
US10043303B2 (en) * 2016-03-30 2018-08-07 Intel IP Corporation Methods and apparatus for more efficient ray tracing of instanced geometry
US9858704B2 (en) * 2016-04-04 2018-01-02 Intel Corporation Reduced precision ray traversal with plane reuse
US10861216B2 (en) * 2017-04-07 2020-12-08 Intel Corporation Ray tracing apparatus and method for memory access and register operations
US10839475B2 (en) * 2018-04-11 2020-11-17 Intel IP Corporation Apparatus and method for compressing leaf nodes of a bounding volume hierarchy (BVH)
DE102019108046A1 (de) 2018-04-11 2019-10-17 Intel IP Corporation Vorrichtung und verfahren zum komprimieren von blattknoten einer hüllkörperhierarchie (bhv)
US10885698B2 (en) * 2018-08-10 2021-01-05 Nvidia Corporation Method for programmable timeouts of tree traversal mechanisms in hardware
US11263800B2 (en) * 2019-12-27 2022-03-01 Intel Corporation Apparatus and method for quantized convergent direction-based ray sorting
US11663777B2 (en) 2020-03-15 2023-05-30 Intel Corporation Apparatus and method for motion blur with a dynamic quantization grid
US11335061B2 (en) * 2020-07-30 2022-05-17 Apple Inc. Ray intersection data structure with many-to-many mapping between bounding regions and primitives
WO2023014086A1 (ko) * 2021-08-03 2023-02-09 엘지전자 주식회사 3d 데이터 송신 장치, 3d 데이터 송신 방법, 3d 데이터 수신 장치 및 3d 데이터 수신 방법
US20230097562A1 (en) * 2021-09-28 2023-03-30 Advanced Micro Devices, Inc. Acceleration structures with delta instances
US20230267650A1 (en) * 2022-02-21 2023-08-24 Microsoft Technology Licensing, Llc Data compression

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6525722B1 (en) * 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US20080192050A1 (en) * 2007-02-09 2008-08-14 Paul Emery Schardt Efficient and Flexible Data Organization for Acceleration Data Structure Nodes

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2812168B2 (ja) 1993-12-27 1998-10-22 松下電器産業株式会社 形状データ圧縮方法および形状データ伸長方法
US5838830A (en) 1996-09-18 1998-11-17 Sharp Laboratories Of America, Inc. Vertex-based hierarchical shape representation and coding method and apparatus
US6718290B1 (en) * 1998-12-10 2004-04-06 Georgia Tech Research Corporation Systems and methods for encoding tetrahedral meshes
SG93211A1 (en) * 1999-07-28 2002-12-17 Univ Singapore Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications
JP2002369205A (ja) 2001-06-06 2002-12-20 Matsushita Electric Ind Co Ltd 動画像生成装置
US6867778B2 (en) * 2002-02-28 2005-03-15 Sun Microsystems, Inc. End point value correction when traversing an edge using a quantized slope value
FR2873472B1 (fr) 2004-07-22 2007-02-09 Commissariat Energie Atomique Procede et systeme d'identification de zones de proximite entre plusieurs objets geometriques simules numeriquement
US7439973B2 (en) 2005-08-11 2008-10-21 International Business Machines Corporation Ray tracing with depth buffered display
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US20080122838A1 (en) * 2006-09-27 2008-05-29 Russell Dean Hoover Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index
DE112007002991B4 (de) 2006-12-08 2011-09-08 Mental Images Gmbh Computergraphikschattenvolumen unter Verwendung von hierarchischem Okklusions-Culling
JP4721072B2 (ja) 2008-02-12 2011-07-13 株式会社アクセル ポリゴンデータの圧縮システムおよび伸張システム
US8339395B2 (en) * 2008-07-08 2012-12-25 Lockheed Martin Corporation Method and apparatus for model compression

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6525722B1 (en) * 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US20080192050A1 (en) * 2007-02-09 2008-08-14 Paul Emery Schardt Efficient and Flexible Data Organization for Acceleration Data Structure Nodes

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SHAFFER, Eric; GARLAND, Michael. Efficient adaptive simplification of massive meshes. In: Proceedings of the conference on Visualization'01. IEEE Computer Society, 2001. S. 127-134 *
T. Kim, B. Moon, D. Kim, and S. Yoon. RACBVHs: Random-Accessible Compressed Bounding Volume Hierarchies. IEEE Transactions on Visualization and Computer Graphics, vol. 16, no. 2, March/April 2010; published online 17 June 2009
T. Kim, B. Moon, D. Kim, and S. Yoon. RACBVHs: Random-Accessible Compressed Bounding Volume Hierarchies. IEEE Transactions on Visualization and Computer Graphics, vol. 16, no. 2, March/April 2010; published online 17 June 2009 *

Also Published As

Publication number Publication date
JP2011081788A (ja) 2011-04-21
JP5068849B2 (ja) 2012-11-07
GB201015347D0 (en) 2010-10-27
GB2474102B (en) 2012-04-25
US8669977B2 (en) 2014-03-11
CN102034259A (zh) 2011-04-27
TW201135672A (en) 2011-10-16
TWI517103B (zh) 2016-01-11
CN102034259B (zh) 2013-11-20
GB2474102A (en) 2011-04-06
DE102010046891A1 (de) 2011-04-07
US20110080403A1 (en) 2011-04-07

Similar Documents

Publication Publication Date Title
DE102010046891B4 (de) Hierarchische Netzquantisierung für speichereffizientes Raytracing
DE112012001132B4 (de) Kompression einer tessellierten Primitivindexliste in einem kachelbasierten Rendering-System
DE102019133028A1 (de) Für neuronale netzwerke geeignetes effizientes matrixformat
DE102013204062B4 (de) Voll-Parallel-am-Platz-Konstruktion von 3D-Beschleunigungs-Strukturen in einer Grafik-Verarbeitungs-Einheit
DE69127011T2 (de) Speicherverwaltungsverfahren mit Hilfe einer Baumstruktur
DE60032689T2 (de) Verfahren und Vorrichtung zur Bildkompression
DE102018114286A1 (de) Durchführen einer Traversierungs-Stack-Komprimierung
DE69937785T2 (de) Verfahren zur Selektion von Farbblockpunkten für die Blockkodierung
DE102014006734A1 (de) Eckpunktparameter-datenkompression
DE102012213292A1 (de) System, Verfahren und Computer-Programm-Produkt zum Konstruieren einer Beschleunigungs-Struktur
DE202012013410U1 (de) Bildkompression mit SUB-Auflösungsbildern
DE112022003547T5 (de) Verschobene Mikronetz-Kompression
DE112007000137T5 (de) Verfahren und Vorrichtung zum Codieren/Decodieren von Graphikdaten
DE102016011380A1 (de) Bildsynthese unter Verwendung einer Aktivmaske
DE102008034519A1 (de) Aufgeteilte Datenstruktur, und Verfahren zum Laden einer Partikel-basierten Simulation unter Verwendung der aufgeteilten Datenstruktur in GPU, usw.
DE102018118362A1 (de) Systeme und verfahren zur effizienten und verlustfreien komprimierung von erfassten rohbilddaten
WO2019242956A1 (de) Verfahren zum erstellen eines digitalen zwillings
DE102011011947A1 (de) Kantenverarbeitungstechniken
DE19806985A1 (de) Organisationsverfahren für volumetrische Daten, das effiziente Cache-Aufbereitungsbeschleunigungen und einen effizienten Graphik-Hardwareentwurf ermöglicht
DE102022119422A1 (de) Verfahren zum Erzeugen einer hierarchischen Datenstruktur, hierarchische Datenstruktur sowie Verfahren zum Streamen von dreidimensionalen Objekten
DE102017117381A1 (de) Beschleuniger für dünnbesetzte faltende neuronale Netze
DE102010001052A1 (de) System, Verfahren und Computerprogrammprodukt zum Importance-Sampling von aufgeteilten Bereichen
EP2602591B1 (de) Verfahren zur vereinfachten Speicherung von Daten repräsentierend Formen
DE202020105558U1 (de) Encoder-Vorrichtung und Decoder-Vorrichtung
WO2002078322A1 (de) Verfahren zur komprimierung und dekomprimierung von bilddaten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee