DE69832611T2 - Computergrafiksystem - Google Patents

Computergrafiksystem Download PDF

Info

Publication number
DE69832611T2
DE69832611T2 DE69832611T DE69832611T DE69832611T2 DE 69832611 T2 DE69832611 T2 DE 69832611T2 DE 69832611 T DE69832611 T DE 69832611T DE 69832611 T DE69832611 T DE 69832611T DE 69832611 T2 DE69832611 T2 DE 69832611T2
Authority
DE
Germany
Prior art keywords
shader
scene
node
shader node
phenomenon
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 - Lifetime
Application number
DE69832611T
Other languages
English (en)
Other versions
DE69832611D1 (de
Inventor
Thomas Driemeyer
Rolf Herken
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.)
Nvidia ARC GmbH
Original Assignee
Mental Images GmbH
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 Mental Images GmbH filed Critical Mental Images GmbH
Publication of DE69832611D1 publication Critical patent/DE69832611D1/de
Application granted granted Critical
Publication of DE69832611T2 publication Critical patent/DE69832611T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • 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

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung bezieht sich im Allgemeinen auf das Gebiet der Computergraphik, des computergestützten Entwerfens und dergleichen, und genauer gesagt auf Systeme und Verfahren zum Erzeugen von Shader-Systemen und zum Verwenden der so der erzeugten Shader-Systeme beim Rendering eines Bilds einer Szene. Die Erfindung stellt insbesondere eine neue Art von Komponente bereit, die bei einem Computergraphiksystem nützlich ist, die hier als ein "Phänomen" gekennzeichnet wird, das ein System mit einem verpackten und verkapselten Shader-DAG (shader "directed acyclic graph") oder einen Satz kooperierender Shader-DAGs umfasst, von denen jeder einen oder mehrere Shader umfassen kann, der erzeugt und verkapselt wird, um beim Definieren mindestens eines Abschnitts einer Szene auf eine Art und Weise zu helfen, die sicherstellen wird, dass die Shader während des Renderings ordnungsgemäß kooperieren können.
  • HINTERGRUND DER ERFINDUNG
  • Bei der Computergraphik, dem computergestütztem Entwerfen und dergleichen versucht ein Künstler, Zeichner oder dergleichen (die hier allgemein als "Operator" bezeichnet werden) eine dreidimensionale Darstellung von Objekten in einer Szene zu erzeugen, wie sie durch einen Computer aufrechterhalten wird, und danach jeweilige zweidimensionale Bilder der Objekte in der Szene aus einer oder mehreren Orientierungen zu rendern. Bei der ersten Darstellungserzeugungsphase erzeugen Computergraphiksysteme herkömmlicherweise eine dreidimensionale Darstellung beispielsweise aus verschiedenen zweidimensionalen Strichzeichnungen, die Konturen und/oder Querschnitte der Objekte in der Szene umfassen, und durch Anwenden einer Anzahl von Vorgängen auf derartige Striche, die zu zweidimensionalen Oberflächen im dreidimensionalen Raum führen werden, und anschließender Modifikation von Parametern und Steuerpunkten derartiger Oberflächen, um die Form der resultierenden Darstellung des Objekts zu kor rigieren oder anderweitig zu modifizieren. Während dieses Prozesses definiert der Operator ebenfalls verschiedene Eigenschaften der Oberflächen der Objekte, der Struktur und der Charakteristika von Lichtquellen, die die Szene beleuchten, und die Struktur und Charakteristika einer oder mehrerer simulierter Kameras, die das Bild erzeugen. Nachdem die Struktur und Eigenschaften der Szene, Lichtquelle(n) und Kamera(s) definiert wurden, ermöglicht bei der zweiten Phase ein Operator dem Computer, ein Bild der Szene aus einer bestimmten Betrachtungsrichtung zu rendern.
  • Die Objekte in der Szene, Lichtquelle(n) und Kamera(s) werden in der ersten Phase, der Szenendefinition, durch jeweilige mehrdimensionale mathematische Darstellungen mit zumindest der drei räumlichen Dimensionen und möglicherweise einer Zeitdimension definiert. Die mathematischen Darstellungen werden typischerweise in einer baumstrukturierten Datenstruktur gespeichert. Die Eigenschaften und Oberflächen der Objekte werden ihrerseits durch "Shade-Bäume" definiert, von denen jeder einen oder mehrere Shader umfasst, die während der zweiten Phase, dem Szenen-Rendering, dem Computer ermöglichen, die jeweiligen Oberflächen zu rendern, wobei im Wesentlichen Farbwerte bereitgestellt werden, die für Farben der jeweiligen Oberflächen repräsentativ sind. Die Shader eines Shade-Baums werden durch einen Operator erzeugt oder a priori durch ein Computergraphiksystem in einer Sprache höherer Ebene, wie beispielsweise C oder C++, bereitgestellt, die zusammen den Computer befähigen, ein Bild einer jeweiligen Oberfläche in der zweiten Phase, dem Szenen-Rendering, zu rendern.
  • Shade-Bäume wurden durch R. Cook in dem Artikel "Shade trees", ACM Computer Graphics, Bd. 18, Nr. 3, Juli 1984, eingeführt und in der von P. Hanrahan u.a. in "A Language for Shading and Lighting Calculations", ACM Computer Graphics, Bd. 24, Nr. 4, April 1991, eingeführten RenderMan-Shading-Sprache neu definiert. Eine weitere Shading-Sprache bzw. -System wird durch B. Corrie u.a. in dem Computer Science Technical Report TR-CS-93-02 des Computer Science Laboratory der The Australian National University mit dem Titel "Data Shader Language and Interface Specification", Juni 1993, beschrieben.
  • Eine Anzahl von Problemen entsteht aus der Erzeugung und Verwendung von Shader und Shade-Bäumen, wie sie gegenwärtig bei Computergraphik-Anordnungen bereitgestellt werden. Zuerst können Shader im Allgemeinen nicht miteinander kooperieren, es sei denn, dass sie programmiert sind, es zu tun. Typischerweise sind den Shadern zur Verfügung gestellte Eingangswerte konstante Werte, was die Flexibilität und Fähigkeit des Shaders begrenzt, Merkmale in einer interessanten und lebensähnlichen Art und Weise zu rendern. Außerdem ist es im Allgemeinen schwierig, Systeme von kooperierenden Shadern einzurichten, die ihre Eingangswerte von einer gemeinsamen Quelle erhalten können.
  • Die vorliegende Erfindung ist, wie sie in den Ansprüchen beansprucht wird.
  • Die Erfindung stellt ein neues und verbessertes Computergraphiksystem und -verfahren bereit, das eine erhöhte Kooperation zwischen Shadern durch Erleichtern der Erzeugung verpackter und verkapselter Shader-DAGs vorsieht, von denen jeder einen oder mehrere Shader umfassen können, die auf eine Art und Weise erzeugt werden, um sicherzustellen, dass die Shader in den Shader-DAGs während des Renderings ordungsgemäß kooperieren können.
  • Kurz gesagt wird ein Computergraphiksystem bereitgestellt, bei dem eine neue Art von Entität, die als ein "Phänomen" bezeichnet wird, erzeugt, instantiiert und beim Rendering eines Bilds einer Szene verwendet werden kann. Ein Phänomen ist ein verkapselter Shader-DAG, der umfasst: einen oder mehrere Knoten, die jeweils einen Shader oder einen verkapselter Satz derartiger DAGs umfassen, die untereinander verbunden sind, um zu kooperieren, die instantiiert und an Entitäten in der Szene angebracht sind, die während des Szenendefinitionsprozesses erzeugt werden, um diverse Arten von Merkmalen einer Szene, einschließlich Farb- und Texturmerkmale der Oberflächen der Objekte in der Szene, Charakteristika von Volumen und Geometrien in der Szene, Merkmale von Lichtquellen, die die Szene beleuchten, Merkmale von simulierten Kameras, die während des Renderings simuliert werden, und zahlreiche andere Merkmale, die beim Rendering nützlich sind, zu definieren.
  • Phänomene, die zur Verwendung durch einen Operator in Verbindung mit einer Szene ausgewählt werden, können vordefiniert sein oder aus Basis-Shader-Knoten durch einen Operator mit einem Phänomenerzeuger aufgebaut werden. Der Phänomenerzeuger stellt sicher, dass Phänomene aufgebaut werden, so dass die Shader in dem DAG oder kooperierenden DAGs während des Renderings eines Bilds einer Szene ordungsgemäß kooperieren können.
  • Bevor es an eine Szene angebracht wird, wird ein Phänomen durch Bereitstellen von Werten oder Funktionen instantiiert, die verwendet werden, um die Werte für jeden Parameter des Phänomens mit einem Phänomeneditor zu definieren.
  • Nachdem eine Darstellung einer Szene definiert wurde und Phänomene angebracht wurden, kann ein Szenenbildgenerator ein Bild der Szene erzeugen. Bei diesem Vorgang arbeitet der Szenenbildgenerator in einer Reihe von Phasen, einschließlich einer Vorverarbeitungsphase, einer Rendering-Phase und einer optionalen Nachverarbeitungsphase. Während einer Vorverarbeitungsphase kann der Szenenbildgenerator Vorverarbeitungsvorgänge, wie beispielsweise eine Schatten- und Photonenabbildung, mehrfache Vererbungsauflösung und dergleichen durchführen. Der Szenenbildgenerator kann Vorverarbeitungsvorgänge durchführen, wenn beispielsweise ein an der Szene angebrachtes Phänomen einen Geometrie-Shader umfasst, um Geometrie zu erzeugen, die dadurch für die Szene definiert wird. Während der Rendering-Phase rendert der Szenenbildgenerator das Bild. Während der Nachverarbeitungsphase kann der Szenenbildgenerator Nachverarbeitungsvorgänge durchführen, wenn beispielsweise ein an der Szene angebrachtes Phänomen einen Shader umfasst, der Nachverarbeitungsvorgänge und beispielsweise Tiefe des Feldes oder Bewegungsunschärfeberechungen definiert, die von der Geschwindigkeit und Tiefeninformation, die in Verbindung mit jedem Pixelwert in dem gerenderten Bild gespeichert sind, abhängen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Diese Erfindung wird insbesondere in den beigefügten Ansprüchen dargelegt. Die obigen und weitere Vorteile dieser Erfindung können besser mit Bezug auf die folgende Beschreibung in Verbindung mit den begleitenden Zeichnungen verstanden werden, in denen zeigen:
  • 1 ein Computergraphiksystem, das eine verbesserte Kooperation zwischen Shadern durch Erleichtern der Erzeugung von verpackten und verkapselten Shader-DAGs bereitstellt, von denen jeder einen oder mehrere Shader aufweisen kann, wobei die Shader-DAGs auf eine Art und Weise erzeugt werden, um sicherzustellen, dass die Shader in dem Shader-DAG während des Renderings ordungsgemäß kooperieren können, die in Übereinstimmung mit der Erfindung aufgebaut sind;
  • 2 ein Funktionsblockdiagramm des in 1 dargestellten Computergraphiksystem;
  • 3 eine graphische Benutzerschnittstelle für eine Ausführungsform des bei dem Computergraphiksystem verwendeten Phänomenerzeugers, dessen Funktionsblockdiagramm in 2 dargestellt ist;
  • 4 graphisch ein veranschaulichendes Phänomen dar, das mit dem in 2 und 3 dargestellten Phänomenerzeuger erzeugt wurde;
  • 5 eine graphische Benutzerschnittstelle für eine Ausführungsform des Phänomeneditors dar, der bei dem Computergraphiksystem verwendet wird, dessen Funktionsblockdiagramm in 2 dargestellt wird;
  • 6A und 6B Einzelheiten der in 5 dargestellten graphischen Benutzerschnittstelle; und
  • 7 ein Ablaufdiagramm, das Vorgänge darstellt, die durch einen Szenenbild-Erzeugungsabschnitt des in 2 dargestellten Computergraphiksystems beim Erzeugen eines Bilds einer Szene durchgeführt werden.
  • AUSFÜHRLICHE BESCHREIBUNG EINER
  • VERANSCHAULICHENDEN AUSFÜHRUNGSFORM
  • Die hier angefügte 1 stellt Elemente dar, die ein in Übereinstimmung mit der Erfindung aufgebautes Computergraphiksystem 10 bilden. Das Computergraphiksystem 10 ermöglicht eine verbesserte Kooperation zwischen Shadern durch Erleichtern der Erzeugung von neuen Computergraphikkomponenten, die hier als "Phänomen (im Singular) oder "Phänomene" (im Plural)" bezeichnet werden, die verwendet werden, um Merkmale einer Szene zur Verwendung beim Rendering zu definieren. Ein Phänomen ist ein verpacktes und verkapseltes System, das einen oder mehrere Shader umfasst, die in der Form eines oder mehrerer gerichteter azyklischer Graphen ("DAGs") organisiert und untereinander verbunden sind, wobei jeder DAG einen oder mehrere Shader aufweist. Die durch das Computergaphiksystem 10 erzeugten Phänomene werden auf eine solche Art und Weise erzeugt, um sicherzustellen, dass der Shader oder die Shader bei jedem Shader-DAG ordnungsgemäß während des Renderings kooperieren können, um das Rendering realistischer zu machen oder komplexe visuelle Effekte zu erleichtern. Außerdem erzeugt für Phänomene, die mehrere kooperierende Shader-DAGs umfassen, das Computergraphiksystem 10 das Phänomen, so dass die Shader in allen Shader-DAGs ordnungsgemäß während des Renderings kooperieren können, und das Rendering von progressiv realistischen oder komplex visuellen Effekten zu erleichtern.
  • Mit Bezug auf 1 umfasst das Computergraphiksystem 10 bei einer Ausführungsform einen Computer mit einem Prozessormodul 11 und Operatorschnittstellenelemente, die Operator-Eingangskomponenten, wie beispielsweise eine Tastatur 12A und/oder eine Maus 12B (im Allgemeinen als Operator-Eingangselement(e) 12 bezeichnet) und ein Operator-Ausgangselement, wie beispielsweise eine Videoanzeigevorrichtung 13 umfassen. Das veranschaulichende Computersystem 10 ist von der herkömmlichen Computerarchitektur mit gespeicherten Programm. Das Prozessormodul 11 umfasst beispielsweise einen Prozessor, Speicher und Massenspeichervorrichtungen, wie beispielsweise Platten und/oder Bandspeicherelemente (nicht getrennt gezeigt), die Verarbeitungs- und Speicherinformationen in Verbindung mit dazu bereitgestellten Digitaldaten durchführen. Die Operator-Eingangselemente 12 werden bereitgestellt, um es einem Operator zu ermöglichen, Information für die Verarbeitung einzugeben. Die Videoanzeigevorrichtung 13 wird bereitgestellt, um dem Operator durch das Prozessormodul 11 erzeugte Anzeigeausgangsinformation auf einem Schirm 14, mit Daten, die der Operator zur Verarbeitung eingeben kann, Information, die der Operator eingeben kann, um die Verarbeitung zu steuern, sowie auch während der Verarbeitung erzeugte Information anzuzeigen. Das Prozessormodul 11 erzeugt Information für die Anzeige durch die Videoanzeigevorrichtung 13 mit einer sogenannten "graphischen Benutzerschnittstelle" ("GUI" = Graphical User Interface), bei der Information für verschiedene Anwendungsprogramme mit verschiedenartigen "Fenstern" angezeigt wird. Obwohl das Computersystem 10 gezeigt wird, wie es bestimmte Komponenten, wie beispielsweise die Tastatur 12A und Maus 12B zum Empfangen von Eingangsinformation von einem Operator und eine Videoanzeigevorrichtung 13 zum Anzeigen von Ausgangsinformation an den Operator umfasst, ist es ersichtlich, dass das Computersystem 10 eine Vielzahl von Komponenten zusätzlich oder anstatt der in 1 dargestellten umfassen kann.
  • Außerdem kann das Prozessormodul 11 einen oder mehrere Netzwerkports, die im Allgemeinen durch die Bezugsziffer 14 gekennzeichnet werden, die mit Kommunikationsverbindungen, die den Computer 10 in einem Computer- Netzwerk verbinden, umfassen. Die Netzwerkports befähigen das Computersystem 10, Information an andere Computersysteme und andere Vorrichtungen in dem Netzwerk zu übertragen und Information von diesen zu empfangen. Bei einem typischen Netzwerk, das beispielsweise gemäß dem Client-Server-Paradigma organisiert ist, werden bestimmte Computersysteme im Netzwerk als Server gekennzeichnet, die Daten und Programme (im Allgemeinen "Information") zur Verarbeitung durch die anderen Client-Computersysteme speichern, um dadurch die Client-Computersysteme zu befähigen, die Information zweckmäßigerweise gemeinsam zu benutzen. Ein Client-Computersystem, das Zugriff auf einen durch einen bestimmten Server aufrechterhaltene Information benötigt, wird dem Server ermöglichen, die Information zu ihm über das Netzwerk herunterzuladen. Nach Verarbeitung der Daten kann das Client-Computersystem ebenfalls die verarbeiteten Daten an den Server zur Speicherung zurückgeben. Zusätzlich zu Computersystemen (einschließlich der oben beschriebenen Server und Clients) kann ein Netzwerk beispielsweise ebenfalls Drucker und Faxgeräte, digitale Audio- oder Videospeicher- und -verteilungsvorrichtungen und dergleichen umfassen, die zwischen den verschiedenen in dem Netzwerk verbundenen Computersystemen gemeinsam benutzt werden können. Die die Computersysteme in dem Netzwerk untereinander verbindenden Kommunikationsverbindungen umfassen, wie es herkömmlich ist, ein zweckmäßiges Informations-beförderndes Medium, einschließlich Drähten, optischen Fasern oder andere Medien zum Befördern von Signalen zwischen den Computersystemen. Computersysteme transferieren Information über das Netzwerk mittels über die Kommunikationsverbindungen transferierte Nachrichten, wobei jede Nachricht Information und einen Identifizierer umfasst, der die Vorrichtung identifiziert, um die Nachricht zu empfangen.
  • Wie oben angemerkt ist, sorgt das Computergraphiksystem 10 für eine verbesserte Kooperation zwischen Shadern durch Ermöglichen der Erzeugung von Phänomena, die verpackte und verkapselte Shader-DAGs oder kooperierende Shader-DAGs umfassen, wobei jeder Shader-DAG mindestens einen Shader umfasst, der die Merkmale einer dreidimensionalen Szene definiert. Phänomena können verwendet werden, um verschiedene Arten von Merkmalen einer Szene, einschließlich Farbe und Texturmerkmale von Oberflächen von Objekten in der Szene, Eigenschaften von Volumen und Geometrie in der Szene, Merkmale von Lichtquellen, die die Szene beleuchten, Merkmale von simulierten Kameras oder anderen Bildaufzeichnungsvorrichtungen, die während des Renderings simuliert werden, und zahlreiche andere Merkmale, die beim Rendering nützlich sind, zu definieren, wie es aus der folgenden Beschreibung offensichtlich ist. Die Phänomene sind aufgebaut, um sicherzustellen, dass die Shader in dem DAG oder kooperierenden DAGs während des Renderings eines Bilds der Szene ordungsgemäß kooperieren können.
  • 2 stellt ein Funktionsblockdiagramm des bei einer Ausführungsform der Erfindung verwendeten Computergraphiksystems 10 dar. Wie in 2 dargestellt ist, umfasst das Computergraphiksystem 10 zwei allgemeine Abschnitte, die einen Szenenstruktur-Erzeugungsabschnitt 20 und einen Szenenbild-Erzeugungsabschnitt 21 aufweist. Der Szenenstruktur-Erzeugungsabschnitt 20 wird von einem Künstler, Zeichner oder dergleichen (im Allgemeinen "Operator") während einer Szenen-Entitätserzeugungsphase verwendet, um eine Darstellung verschiedenartiger Elemente zu erzeugen, die durch den Szenenbild-Erzeugungsabschnitt 21 beim Rendering eines Bilds der Szene verwendet werden, wie beispielsweise die Objekte in der Szene und ihre Oberflächeneigenschaften, die Struktur und Eigenschaften der Lichtquellen oder anderen, die Szene beleuchtenden Quellen und die Struktur und Eigenschaften einer bestimmten Vorrichtung, wie beispielsweise einer Kamera, die beim Erzeugen des Bildes simuliert wird, wenn das Bild gerendert wird, umfassen kann. Die durch den Szenenstruktur-Erzeugungsabschnitt 20 erzeugte Darstellung ist in der Form einer mathematischen Darstellung, die in der Szenen-Objektdatenbank 22 gespeichert wird. Die mathematische Darstellung wird durch den Bildrenderingabschnitt 21 ausgebildet, um diese dem Operator anzuzeigen. Der Szenenstruktur-Erzeugungsabschnitt 20 und der Szenenbild-Erzeugungsabschnitt 21 können sich auf dem gleichen Computer befinden und einen Teil desselben bilden, wobei sich in diesem Fall die Szenen-Objektdatenbank 22 ebenfalls auf dem gleichen Computer liegen kann oder alternativ auf einem Server, für den der Computer 20 ein Client ist, befinden kann. Alternativ können sich die Abschnitte 20 und 21 auf unterschiedlichen Computern befinden und Teile derselben bilden, wobei in diesem Fall die Szenen-Objektdatenbank 22 auf einen der beiden Computer oder einem Server für beide Computer liegen kann.
  • Genauer gesagt wird der Szenenstruktur-Erzeugungsabschnitt 20 durch den Operator verwendet, um eine mathematische Darstellung zu erzeugen, die die geometrischen Strukturen der Objekte in der Szene, die Positionen und geometrischen Eigenschaften von Lichtquellen, die die Szene beleuchten, und die Positionen, geometrischen optischen Eigenschaften der Kameras, die beim Erzeugen der Bilder zu simulieren sind, die zu rendern sind, umfassen. Die mathematische Darstellung definiert vorzugsweise die drei räumlichen Abmessungen und kennzeichnet somit die Position des Objekts in der Szene und die Merkmale des Objekts. Die Objekte können hinsichtlich ihrer ein-, zwei- oder dreidimensionalen Merkmale, einschließlich gerader oder gekrümmter Linien, die in einem dreidimensionalen Raum eingebettet sind, zweidimensionaler Oberflächen, die in einem dreidimensionalen Raum eingebettet sind, eine oder mehrere begrenzte und/oder geschlossene dreidimensionale Oberflächen oder jede Kombination davon, definiert werden. Außerdem können die mathematischen Darstellungen ebenfalls eine zeitliche Dimension definieren, die insbesondere in Verbindung mit der Computeranimation nützlich sein kann, bei der die Objekte und ihre jeweiligen Merkmale betrachtet werden, sich gemäß einer Funktion der Zeit zu bewegen.
  • Zusätzlich zu der mathematischen Darstellung der geometrischen Struktur des/der Objekts(e) in der zu rendernden Szene definiert die mathematische Darstellung ferner eine oder mehrere Lichtquellen, die die Szene beleuchten, und eine Kamera. Die mathematische Darstellung einer Lichtquelle definiert insbesondere die Position und/oder die Richtung der Lichtquelle bezogen auf die Szene und die strukturellen Eigenschaften der Lichtquelle, einschließlich, ob die Lichtquelle eine Punktquelle, eine gerade oder gekrümmte Linie, eine flache oder gekrümmte Oberfläche oder dergleichen ist. Die mathematische Darstellung der Kamera definiert insbesondere die herkömmlichen Kameraparameter, einschließlich der Linse oder Linsen, der Brennweite, der Orientierung der Bildebene usw.
  • Der Szenenstruktur-Erzeugungsabschnitt 20 erleichtert ebenfalls die Erzeugung der Phänomene, die ausführlich nachstehend beschrieben werden, und die Zuordnung der Phänomene zu jeweiligen Elementen der Szene. Phänomene definieren im Allgemeinen andere Information, die für die Vervollständigung der Definition der Szene erforderlich ist, die beim Rendering verwendet wird. Diese Information umfasst Eigenschaften der Farbe, Texturen usw., und der Oberflächen der geometrischen Entitäten, die durch den Szenenstrukturerzeugungsabschnitt 20 definiert sind, wobei sie jedoch nicht darauf begrenzt ist. Ein Phänomen kann mathematische Darstellungen oder andere Objekte umfassen, die, wenn sie während des Renderingvorgangs ausgewertet werden, den das gerenderte Bild erzeugenden Computer befähigen werden, die jeweiligen Oberflächen auf die gewünschte Art und Weise anzuzeigen. Der Szenenstruktur-Erzeugungsabschnitt 20 ordnet unter der Steuerung des Operators die Phänomene den mathematischen Darstellungen für die jeweiligen Elemente (d.h., Objekte vom Oberflächenvolumen und dergleichen) wirksam zu, mit denen sie zu verwenden sind, wobei die Phänomene an den jeweiligen Elementen wirksam "angebracht" werden.
  • Nachdem die mathematischen Darstellungen durch den Szenenstruktur-Erzeugungsabschnitt 20 erzeugt und in der Szenendarstellungsdatenbank 22 gespeichert wurden, wird der Szenenbild-Erzeugungsabschnitt 21 von einem Operator während einer Renderingphase verwendet, um ein Bild der Szene auf beispielsweise der Videoanzeigeeinheit 13 zu erzeugen (1).
  • Der Szenenstruktur-Erzeugungsabschnitt 20 umfasst mehrere Elemente, die einen Geometrische-Darstellung-Generator für Entitäten 23, einen Phänomenerzeuger 24, eine Phänomendatenbank 25, einen Phänomeneditor 26, eine Basis-Shader-Knotendatenbank 32, eine Phänomen-Instanzen-Datenbank 33 und einen Szenenassembler 34 umfassen, die alle unter der Steuerung der durch eine Operatorschnittstelle 27 eingegebenen Operator-Eingangsinformation arbeiten. Die Operatorschnittstelle 22 kann im Allgemeinen die Operatoreingabevorrichtung 12 und die Videoanzeigeeinheit 13 des Computergraphiksystems 10 umfassen, wie oben in Verbindung mit 1 beschrieben ist. Der Geometrische-Darstellung-Generator für Entitäten 23 erleichtert unter der Steuerung der Operatoreingabe von der Operatorschnittstelle 27 die Erzeugung der mathematischen Darstellung der Objekte in der Szene und der Lichtquelle(n) und der Kamera, wie oben beschrieben ist. Der Phänomenerzeuger 24 stellt einen Mechanismus bereit, wodurch der Operator mit der Operatorschnittstelle 27 und den Basis-Shader-Knoten von der Basis-Shader-Knotendatenbank 23 Phänomene erzeugen kann, die in Verbindung mit der Szene oder anderweitig verwendet werden können (wie nachstehend beschrieben wird). Nachdem ein Phänomen durch den Phänomenerzeuger 24 erzeugt ist, wird es (d.h. das Phänomen) in der Phänomendatenbank 25 gespeichert. Nachdem ein Phänomen in der Phänomendatenbank 25 gespeichert wurde, kann eine Instanz des Phänomens durch den Phänomeneditor 26 erzeugt werden. Bei diesem Vorgang wird der Operator den Phänomeneditor 26 verwenden, um Werte für die verschiedenen Parameter (falls vorhanden) des Phänomens bereitzu stellen. Wenn das Phänomen beispielsweise erzeugt wurde, um Merkmale, wie beispielsweise Farbgleichgewicht, Texturkörnigkeit, Glanz oder dergleichen bereitzustellen, die basierend auf der Eingabe von dem Operator zur Anbringungszeit oder danach eingerichtet, eingestellt oder modifiziert werden können, wobei der Phänomeneditor 26 dem Operator durch die Operatorschnittstelle 27 ermöglicht, das bestimmte Merkmal einzurichten, einzustellen oder zu modifizieren. Die Werte für die Parameter können entweder fest sein oder sich gemäß einer Funktion einer Variablen (veranschaulichenderweise Zeit) verändern. Der Operator kann mit dem Szenenassembler 34 Phänomeninstanzen, die mit dem Phänomeneditor 26 erzeugt wurden, an Elementen der Szene anbringen, wie sie durch den Geometrische-Darstellung-Generator für Entitäten 23 erzeugt wurden.
  • Obwohl der Phänomeneditor 26 beschrieben wurde, wie er Phänomene von der Phänomendatenbank 25 wiederherstellt, die durch den Phänomenerzeuger 24 des Szenenstruktur-Erzeugungsabschnitts 20 des Computergraphiksystems 10 erzeugt wurden, ist ersichtlich, dass ein oder mehrere und möglicherweise alle in dem Computergraphiksystem 10 bereitgestellten Phänomene vordefiniert und durch andere Vorrichtungen (nicht gezeigt) erzeugt und in der Phänomendatenbank 25 zur Verwendung durch den Phänomeneditor 26 gespeichert sein können. In einem derartigen Fall kann der Operator, der den Phänomeneditor durch die Operatorschnittstelle 27 steuert, geeignete vordefinierte Phänomene zur Anbringung an die Szene auswählen.
  • Der Szenenbild-Erzeugungsabschnitt 21 umfasst mehrere Komponenten einschließlich eines Bildgenerators 30 und einer Operatorschnittstelle 31. Wenn der Szenenbild-Erzeugungsabschnitt 21 einen Teil des gleichen Computers wie der Szenenstruktur-Erzeugungsabschnitt 20 bildet, kann die Operatorschnittstelle 31 die gleichen Komponenten wie die Operatorschnittstelle 27 umfassen, muss sie jedoch nicht. Wenn der Szenenbild-Erzeugungsabschnitt 21 andererseits einen Teil eines von dem Computer unterschiedlichen Computers bildet, von dem der Szenenstruktur-Erzeugungsabschnitt ist, wird die Operatorschnittstelle 31 im Allgemeinen unterschiedliche Komponenten als die Operatorschnittstelle 27 umfassen, obwohl die Komponenten der beiden Operatorschnittstellen 31 und 27 ähnlich sein können. Der Bildgenerator 30 stellt unter der Steuerung der Operatorschnittstelle 31 die Darstellung der Szene wieder her, die von der Szenendarstel lungsdatenbank 22 zu rendern ist, und erzeugt ein gerendertes Bild für die Anzeige auf der Videodisplayeinheit der Operatorschnittstelle 31.
  • Bevor weiter fortgefahren wird, würde es hilfreich sein, ein in Verbindung mit der Erfindung verwendetes "Phänomen" weiter zu beschreiben. Ein Phänomen liefert Information, die zusätzlich zu der durch den Geometrische-Darstellung-Generator für Entitäten 23 erzeugten mathematischen Darstellung verwendet wird, um die Definition der Szene, die beim Rendering verwendet wird, einschließlich, jedoch nicht begrenzt auf Eigenschaften der Farben, Texturen und geschlossenen Volumen usw., der Oberflächen der durch den Szenenstruktur-Erzeugungsabschnitt 20 definierten geometrischen Entitäten zu vervollständigen. Ein Phänomen erfasst einen oder mehrere Knoten, die in der Form eines gerichteten azyklischen Graphs ("DAG") oder einer Mehrzahl von kooperierenden DAGs untereinander verbunden sind. Einer der Knoten ist ein primärer Wurzelknoten, der verwendet wird, um das Phänomen an einer Entität in einer Szene oder genauer gesagt an einer mathematischen Darstellung der Entität anzubringen. Andere Arten von Knoten, die bei einem Phänomen verwendet werden können, umfassen optionale Wurzelknoten und Shader-Knoten. Die Shader-Knoten können jeden einer Mehrzahl von herkömmlichen Shadern, einschließlich herkömmliche einfache Shader, sowie auch Textur-Shader, Material-Shader, Volumen-Shader, Umgebungs-Shader, Schatten-Shader und Verschiebungs-Shader und Material-Shader umfassen, die in Verbindung mit der Erzeugung einer zu rendernden Darstellung verwendet werden können. Außerdem kann eine Anzahl von anderen Arten von Shader-Knoten in einem Phänomen verwendet werden, umfassend
    • (i) Geometrie-Shader, die verwendet werden können, um geometrische Objekte zu der Szene hinzuzufügen. Geometrie-Shader umfassen im Wesentlichen vordefinierte statische oder prozedurale mathematische Darstellungen von Entitäten im dreidimensionalen Raum, die Darstellungen, die durch den Geometrische-Darstellung-Generator für Entitäten 23 in Verbindung mit Entitäten in der Szene erzeugt werden, mit der Ausnahme ähnlich sind, dass sie zur Vorverarbeitungszeit bereitgestellt werden können, um beispielsweise jeweilige Regionen zu definieren, in denen das jeweilige Phänomen zu begrenzen ist. Ein Geometrie-Shader hat im Wesentlichen Zugriff auf die Szenenaufbauelemente des Geometrische-Darstellung-Generator für Entitäten 23, so dass er die Szenendarstellung ändern kann, wie sie in der Szenenobjektdatenbank gespeichert ist, um beispielsweise neue geometrische Elemente der Szene in entweder einer statischen oder prozeduralen Art und Weise zu modifizieren oder zu erzeugen. Es sei bemerkt, dass ein Phänomen, das vollständig aus einem Geometrie-Shader-DAG oder einem Satz von kooperierenden Geometrie-Shader-DAGs aufgebaut ist, verwendet werden kann, um Objekte in einer Szene auf eine prozedurale Art und Weise darzustellen. Dies ist im Gegensatz zum typischen Modellieren, das bei dem einem Modellierungssystem von einem menschlichen Operator durch Durchführen einer Sequenz von Modulierungsvorgängen erzielt wird, um die gewünschte Darstellung eines Objekts in dem Computer zu erhalten. Hier stellt im Wesentlichen ein Geometriephänomen einen verkapselten und automatisierten, parameterisierten abstrakten Modellierungsvorgang dar. Ein Beispiel eines Geometriephänomens (d.h. eines Geometriephänomens, das einem Satz von Parameterwerten zugeordnet ist, die entweder fest sind oder sich auf eine vorbestimmte Art und Weise mit Zeit oder dergleichen zu verändern) wird zu einer spezifischen geometrischen Szenenerweiterung führen, wenn es durch den Szenenbildgenerator 30 zur Laufzeit während einer Vorverarbeitungsphase ausgewertet wird.
    • (ii) Photonen-Shader, die verwendet werden können, um die Wege von Photonen in der Szene und die Eigenschaften der Wechselwirkung von Photonen mit Oberflächen von Objekten in der Szene, wie beispielsweise Absorption, Reflexion und dergleichen, zu steuern. Photonen-Shader erleichtern die physikalisch korrekte Simulation globaler Beleuchtung und von Kaustiks in Verbindung mit dem Rendering. Bei einer Ausführungsform werden Photonen-Shader während des Renderings durch den Szenenbildgenerator 30 während eines Vorverarbeitungsvorgangs verwendet.
    • (iii) Photonen-Volumen-Shader, die Photonen-Shadern mit der Ausnahme ähnlich sind, dass sie in Verbindung mit einem dreidimensionalen Raumvolumen in der Szene anstatt auf der Oberfläche eines Objekts arbeiten. Dies ermöglicht, dass die Simulation von Kaustiks und globaler Beleuchtung auf Volumen und begleitende eingeschlossene teilnehmende Medien, wie beispielsweise das Streuen von Photonen durch Staub oder Nebelteilchen in der Luft, durch Wasserdampf wie beispielsweise in Wolken oder dergleichen, erweitert werden kann.
    • (iv) Photonen-Emitter-Shader, die ebenfalls Photonen-Shadern mit der Ausnahme ähnlich sind, dass sie sich auf Lichtquellen und somit auf die Emission von Photonen beziehen. Die simulierten Photonen, für die Emission in Verbindung mit Photonen-Emitter-Shadern simuliert wird, können dann in Verbindung mit den Photonen-Shadern, die verwendet werden können, um Weg- und Oberflächenwechselwirkungscharakteristika der simulierten Photonen zu simulieren, und Photonenvolumen-Shadern, die verwendet werden können, um Weg- und andere Charakteristika in dreidimensionalem Volumen insbesondere entlang der jeweiligen Wege zu simulieren, verarbeitet werden.
    • (v) Kontur-Shader, die in Verbindung mit der Erzeugung von Konturlinien während des Renderings verwendet werden. Bei einer Ausführungsform gibt es drei Subarten von Kontur-Shadern, nämlich Konturspeicher-Shader, Konturkontrast-Shader und Konturerzeugungs-Shader. Ein Konturspeicher-Shader wird verwendet, um Konturabtastinformationen beispielsweise für eine Oberfläche zu sammeln. Ein Konturkontrast-Shader wird verwendet, um zwei Sätze der Abtastinformation zu vergleichen, die mittels eines Konturspeicher-Shaders gesammelt werden. Schließlich wird ein Konturerzeugungs-Shader verwendet, um Konturpunktinformation zur Speicherung in einem Puffer zu erzeugen, die dann durch einen Ausgangs-Shader (nachstehend beschrieben) beim Erzeugen von Konturlinien verwendet wird.
    • (vi) Ausgangs-Shader, die verwendet werden, um Information in Puffern zu verarbeiten, die durch den Szenenbildgenerator 30 während des Renderings erzeugt werden. Ein Ausgangs-Shader kann auf Pixel-Information zugreifen, die während des Renderings erzeugt wurde, um bei einer Ausführungsform Compositing-Vorgänge, komplexe Faltungen und eine Konturlinienzeichnung aus Konturpunktinformation, die durch Konturerzeugungs-Shader erzeugt wurden, wie oben beschrieben, durchzuführen.
    • (vii) Dreidimensionale Volumen-Shader, die verwendet werden, um zu steuern, wie Licht, andere sichtbare Strahlen und dergleichen durch einen Teil oder dem gesamten leeren dreidimensionalen Raum in einer Szene läuft/laufen. Ein dreidimensionaler Volumen-Shader kann für jeden einer Anzahl von Volumeneffekten, einschließlich beispielsweise Nebel, und prozeduralen Effekte, wie beispielsweise Rauch, Flammen, Pelz und Teilchenwolken, verwendet werden. Da ein dreidimensionaler Volumen-Shader in Verbindung mit Licht verwendet wird, sind sie außerdem ebenfalls in Verbindung mit Schatten nützlich, die aus den prozeduralen Effekten entstehen würden; und
    • (viii) Licht-Shader, die verwendet werden, um Emissionseigenschaften von Lichtquellen, einschließlich beispielsweise Farbe, Richtung und Dämpfungscharakteristika zu steuern, die aus Eigenschaften, wie beispielsweise den Formen jeweiligen Lichtquellen, der Texturprojektion, der Schattenbildung und anderen Lichteigenschaften resultieren können.
  • Weitere Arten von Shadern, die in Verbindung mit der Definition einer Szene nützlich sein können, können ebenfalls bei einem Phänomen verwendet werden.
  • Ein Phänomen wird definiert durch
    • (i) eine Beschreibung der extern steuerbaren Parameter eines Phänomens,
    • (ii) einen primären Wurzelknoten und optional einen oder mehrere optionale Wurzelknoten,
    • (iii) eine Beschreibung der internen Struktur des Phänomens einschließlich der Identifikation der Shader, die als Knoten zu verwenden sind, und wie sie untereinander verbunden sind, um einen DAG oder eine Mehrzahl von kooperierenden DAGs zu bilden, und
    • (iv) optional eine Beschreibung von Dialogfeldern und dergleichen, die durch das Phänomen zur Verwendung durch den Phänomeneditor 26 definiert werden können, um dem Operator zu ermöglichen, Werte für Parameter oder Eigenschaften bereitzustellen, die bei der Auswertung des jeweiligen Phänomens verwendet werden.
  • Außerdem kann ein Phänomen externe Deklarationen und einen Verbindungs-ausführbaren Code von Bibliotheken aufweisen, wie es bei der Programmierung Standard ist.
  • Wie oben bemerkt, kann ein Phänomen eine Mehrzahl von kooperierenden DAGs aufweisen. Bei einem derartigen Phänomen kann während des Renderings Information, die aus der Verarbeitung einer oder mehrerer Knoten eines ersten DAGs in dem Phänomen erzeugt wurde, bei der Verarbeitung in Verbindung mit einem oder mehreren Knoten eines zweiten DAGs in dem Phänomen verwendet werden. Die beiden DAGs werden nichtsdestotrotz unabhängig verarbeitet und können bei unterschiedlichen Stufen bei dem Rendering-Prozess verarbeitet werden. Die durch einen jeweiligen Knoten in dem ersten DAG erzeugte Information, die mit einem Knoten in dem zweiten DAG "kooperieren" kann (d.h., die durch den Knoten bei dem zweiten DAG bei seiner Verarbeitung verwendet werden kann), kann von dem jeweiligen Knoten in dem ersten DAG zu dem Knoten in dem zweiten DAG über jeden geeigneten Kommunikationskanal, wie beispielsweise ein Puffer, der dafür zugeteilt sein kann, transferiert werden. Das Bereitstellen aller DAGs, die auf dieses Art und Weise kooperieren müssen, in einem einzigen Phänomen stellt sicher, dass sämtliche Bedingungen für die Kooperation erfüllt werden, was nicht der Fall sein kann, wenn die DAGs nicht verkapselt oder in getrennten Phänomenen oder anderen Entitäten getrennt bereitgestellt werden.
  • Als ein Beispiel eines Phänomens mit mehreren kooperierenden DAGs kann ein Phänomen mehrere DAGs einschließlich eines Material-Shader-DAG, eines Ausgangs-Shader-DAG und Anweisungen zum Erzeugen eines Bezeichner-Frame-Puffers umfassen. Der Material-Shader-DAG umfasst mindestens einen Material-Shader zum Erzeugen eines Farbwerts für ein Material und speichert ebenfalls Bezeichnerinformation über die Objekte, die während der Verarbeitung des Material-Shader-DAGs angetroffen werden, in dem Bezeichner-Frame-Puffer, der in Verbindung mit der Verarbeitung der Bezeichner-Frame-Puffererzeugungsanweisungen eingerichtet wird. Der Ausgangs-Shader-DAG umfasst seinerseits mindestens einen Ausgangs-Shader, der die Bezeichnerinformation aus dem Bezeichner-Frame-Puffer wiederherstellt, um das Durchführen objektspezifischer Compositing-Vorgänge zu erleichtern. Zusätzlich zu den Bezeichner-Frame-Puffererzeugungsanweisungen kann das Phänomen ebenfalls Anweisungen zum Steuern von Betriebsarten des Szenenbildgenerators 30 umfassen, so dass beide DAGs arbeiten und kooperieren können. Beispielsweise können derartige Anweisungen die Mindestprobendichte steuern, die erforderlich ist, damit die beiden DAGs ausgewertet werden können.
  • Als ein zweites Beispiel eines Phänomens mit mehreren kooperierenden Shader-DAGs kann ein Materialphänomen, das ein Material darstellt, das sowohl durch einen Photonen-Shader-DAG, der mindestens einen Photonen-Shader, als auch einen Material-Shader-DAG, der mindestens einen Material-Shader aufweist, umfasst. Während des Renderings wird der Photonen-Shader-DAG während Kaustiks und globaler Beleuchtungsvorverarbeitung ausgewertet, und der Material-Shader-DAG wird später während des Renderings eines Bildes ausgewertet. Während der Verarbeitung des Photonen-Shader-DAGs wird simulierte Photonen-darstellende Information auf eine solche Art und Weise gespeichert, dass sie während späterer Verarbeitung des Material-Shader-DAGs verwendet werden kann, um Beleuchtungsbeiträge von dem Kaustik oder der globalen Beleuchtungsvorverarbeitungsstufe hinzuzufügen. Bei einer Ausführungsform speichert der Photonen-Shader-DAG die simulierte Photoneninformation in einer Photonenmap, die durch den Photonen-Shader-DAG verwendet wird, um die simulierte Photoneninformation dem Material-Shader-DAG mitzuteilen.
  • Als ein drittes Beispiel eines Phänomens, das mehrere kooperierende Shader-DAGs aufweist, kann ein Phänomen einen Kontur-Shader-DAG, der mindestens einen Shader des Kontur-Shader-Typs aufweist, und einen Ausgangs-Shader-DAG, der mindestens einen Ausgangs-Shader aufweist, umfassen. Der Kontur-Shader-DAG wird verwendet, um zu bestimmen, wie Konturlinien durch Speichern von "Punkten" einer ausgewählten Farbe, Transparenz, Breite und anderen Attributen zu zeichnen sind. Der Ausgangs-Shader-DAG wird verwendet, um alle Zellen zu sammeln, die während des Renderings erzeugt wurden, und um sie, wenn das Rendering abgeschlossen ist, in Konturlinien zusammenzufügen. Der Kontur-Shader-DAG umfasst einen Konturspeicher-Shader, einen Konturkontrast-Shader und einen Konturerzeugungs-Shader. Der Konturspeicher-Shader wird verwendet, um Abtastinformation zur späteren Verwendung durch einen Konturkontrast-Shader zu sammeln. Der Konturkontrast-Shader wird seinerseits verwendet, um zu bestimmen, ob die durch den Konturspeicher-Shader gesammelte Abtastinformation derart ist, dass ein Konturpunkt in dem Bild anzuordnen ist, und falls so, ordnet der Konturerzeugungs-Shader tatsächlich den Konturpunkt an. Dieses veranschaulichende Phänomen veranschaulicht eine Vier-Stufen-Kooperation, mit
    • (1) einer ersten Stufe, bei der Abtastinformation (durch den Konturspeicher-Shader) gesammelt wird;
    • (2) einer zweiten Stufe, bei der die Entscheidung (durch den Konturkontrast-Shader) getroffen wird, ob eine Konturzelle anzuordnen ist;
    • (3) einer dritten Stufe, bei der der Konturpunkt (durch den Konturerzeugungs-Shader) erzeugt wird; und
    • (4) einer vierten Stufe, bei der erzeugte Konturpunkte (durch den Ausgangs-Shader-DAG) erzeugt werden.
  • Keiner der Shader Stufe macht in irgendeiner Gebrauch von einem anderen Shader in einer anderen Stufe, wobei sie stattdessen einzeln zu unterschiedli chen Zeiten verarbeitet und ausgewertet werden, wobei sie jedoch kooperieren, um die Erzeugung des Endergebnisses zu ermöglichen.
  • Als ein viertes Beispiel eines Phänomens mit mehreren kooperierenden Shader-DAGs kann ein Phänomen einen Volumen-Shader-DAG und einen Geometrie-Shader-DAG umfassen. Der Volumen-Shader-DAG umfasst mindestens einen Volumen-Shader, der Eigenschaften eines begrenzten Volumens, beispielsweise einen Pelz-Shader, der Pelz innerhalb des begrenzten Volumens simuliert, definiert. Der Geometrie-Shader-DAG umfasst mindestens einen Geometrie-Shader, der verwendet wird, um eine äußere Grenzoberfläche als eine neue Geometrie in die Szene aufzunehmen, bevor das Rendering beginnt, wobei geeignete Material- und Volumen-Shader-DAGs an der äußeren Grenzoberfläche angebracht sind, um die Berechnungen zu definieren, die in Verbindung mit Haar in Verbindung mit dem ursprünglichen Volumen-Shader-DAG durchzuführen sind. Bei diesem veranschaulichenden Phänomen findet die Kooperation zwischen dem Geometrie-Shader-DAG und dem Volumen-Shader-DAG statt, wobei der Geometrie-Shader-DAG eine prozedurale Geometrie einführt, bei der der Geometrie-Shader-DAG den Volumen-Shader-DAG unterstützt. Der Volumen-Shader-DAG macht von dieser Geometrie Gebrauch, wobei er jedoch nicht imstande sein würde, die Geometrie selbst zu erzeugen, da die Geometrie mit dem Geometrie-Shader-DAG während eines Vorverarbeitungsvorgangs vor dem Rendering erzeugt wird, wohingegen der Volumen-Shader-DAG während des Renderings verwendet wird. Die in Verbindung mit diesem vierten veranschaulichenden vierten Beispiel dargestellten Kooperation unterscheidet sich von der, die in Verbindung mit dem ersten bis dritten veranschaulichten Beispielen dargestellt ist, da der oder die Shader, die den Geometrie-Shader bilden, prozedural Elemente bereitstellen, die durch den Volumen-Shader-DAG verwendet werden, und nicht nur Daten speichern, wie es der Fall in Verbindung mit der Kooperation in Verbindung mit dem ersten bis dritten veranschaulichenden Beispielen ist.
  • Alle diese Beispiele veranschaulichen Computergraphikeffekte, bei denen ein Bild einer Szene mit mehreren kooperierenden, jedoch unabhängigen Shader-DAGs gerendert werden kann, die in ein einziges Phänomen gebündelt und verkapselt werden.
  • Mit diesem Hintergrund werden die in Verbindung mit dem Phänomenerzeuger 24 und dem Phänomeneditor 26 durchgeführten Vorgänge in Verbin dung mit 3 bzw. 5 beschrieben. Außerdem wird ein in Verbindung mit dem Phänomenerzeuger 24 erzeugtes veranschaulichendes Phänomen in Verbindung mit 4 beschrieben, und Einzelheiten der durch den Phänomeneditor 26 in Verbindung mit den in Verbindung mit 4 dargestellten Phänomen durchgeführten Vorgänge werden in Verbindung mit 6A und 6B beschrieben. 3 stellt ein Phänomenerzeugerfenster dar, das dem Phänomenerzeuger 24 ermöglicht, dem Operator die Operatorschnittstelle 27 anzuzeigen, um dem Operator zu ermöglichen, ein neues Phänomen zu definieren und die Definition eines existierenden Phänomens zu modifizieren. Das Phänomenerzeugerfenster 40 umfasst eine Mehrzahl von Frames, einschließlich eines Regal-Frames 41, eines unterstützten Graphikknoten-Frames 42, eines Steuer-Frames 43 und eines Phänomengraph-Leinwand-Frames 44. Der Regal-Frame 41 kann ein oder mehrere Phänomen-Icons umfassen, die im Allgemeinen durch die Bezugsziffer 45 gekennzeichnet werden, wobei jedes von ihnen ein Phänomen darstellt, das mindestens teilweise zur Verwendung bei dem Szenenstruktur-Erzeugungsabschnitt 20 definiert wurde. Der unterstützte Graphknoten-Frame 42 umfasst ein oder mehrere Icons, die im Allgemeinen durch die Bezugsziffer 46 gekennzeichnet werden, die Entitäten, wie beispielsweise Schnittstellen, der verschiedenen Arten von Shaders, die bei einem Phänomen verwendet werden können, und dergleichen darstellen, die der Operator zur Verwendung bei einem Phänomen auswählen kann. Wie nachstehend beschrieben wird, können die in dem unterstützten Graphknoten-Frame 42 dargestellten Icons von einem Operator verwendet werden, um die Knoten des gerichteten azyklischen Graphs zu bilden, der ein Phänomen definiert, das zu erzeugen oder zu modifizieren ist. Bei einer Ausführungsform gibt es eine Anzahl von Arten von Knoten, umfassend:
    • (i) Einen primären Wurzelknoten, der die Wurzel des gerichteten azyklischen Graphs und die Verbindung mit der Szene bildet, und typischerweise einen Farbwert während des Renderings bereitstellt.
    • (ii) Verschiedene Arten von optionalen Wurzelknoten, die als Ankerpunkte in einem Phänomen-DAG verwendet werden können, um den Hauptwurzelknoten zu unterstützen (obiger Punkt (i)). Veranschaulichende Arten von optionalen Wurzelknoten umfassen:
    • (a) einen Linsenwurzelknoten, der verwendet werden kann, um Linsen-Shader oder Linsen-Shader-DAG in eine Kamera zur Verwendung während des Renderings einzuführen;
    • (b) einen Volumenwurzelknoten, der verwendet werden kann, um globale Volumen (oder Atmosphären)-Shaders oder Shader-DAGs in eine Kamera zur Verwendung während des Renderings einzuführen;
    • (c) einen Umgebungswurzelknoten, der verwendet werden kann, um einen globalen Umgebungs-Shader oder Shader-DAGs in eine Kamera zur Verwendung während des Renderings einzuführen;
    • (d) einen Geometriewurzelknoten, der verwendet werden kann, um Geometrie-Shader oder Shader-DAGs zu spezifizieren, die während des Renderings vorverarbeitet werden können, um eine prozedurale unterstützende Geometrie oder andere Elemente einer Szene, die zu der Szenendatenbank hinzuzufügen sind, zu ermöglichen;
    • (e) einen Konturspeicherwurzelknoten, der verwendet werden kann, um einen Konturspeicher-Shader in eine Szenenoptionen-Datenstruktur einzuführen;
    • (f) einen Ausgangswurzelknoten, der in Verbindung mit einer Nachverarbeitung nach einer Rendering-Phase verwendet werden kann; und
    • (g) eine Konturkontrastwurzel, die verwendet werden kann, um einen Konturkontrast-Shader in die Szenenoptionen-Datenstruktur einzufügen.
    • (iii) Einen Shader-Knoten, der einen Shader darstellt, d.h. eine Funktion, die in einer Sprache höherer Ebene, wie beispielsweise C oder C++, geschrieben ist.
    • (iv) Einen Lichtknoten, der in Verbindung mit einer Lichtquelle verwendet wird. Ein Lichtknoten stellt der Lichtquelle einen Licht-Shader, Farbe, Intensität, Ursprung und/oder Richtung und optional einen Photonen-Emitter-Shader zur Verfügung.
    • (v) Einen Materialknoten, der in Verbindung mit einer Oberfläche verwendet wird. Ein Materialknoten stellt eine Oberfläche mit einem Farbwert bereit und umfasst Eingänge für eine lichtundurchlässige Angabe, die angibt, ob die Oberfläche lichtundurchlässig ist, und für Material-, Volumen-, Umgebungs-, Schatten-, Verschiebungs-, Photonen-, Photonen-Volumen- und Kontur-Shader.
    • (vi) Einen Phänomenknoten, der eine Phänomeninstanz ist.
    • (vii) Einen konstanten Knoten, der einen konstanten Wert bereitstellt, der eine Eingabe in irgendeinen der anderen Knoten sein kann. Der konstante Wert kann aus den meisten Arten von Datentypen in der für die Entitäten verwendeten Programmiersprache sein, wie beispielsweise Shader, die durch irgendeinen der anderen Knoten, wie beispielsweise Skalar, Vektor, logisch (Boolesch), Farbe, Transformation und so weiter dargestellt werden; und
    • (viii) Einen Dialogknoten, der Dialogfelder darstellt, die dem Operator durch den Phänomen-Editor 26 angezeigt und die von dem Operator verwendet werden können, um Eingangsinformation bereitzustellen, um das Phänomen vor oder während des Renderings zu steuern. Die Dialogknoten können den Phänomen-Editor 26 aktivieren, um Schaltflächen, Schieber, Räder usw. zu aktivieren, um angezeigt zu werden, um dem Operator zu ermöglichen, beispielsweise Farbe und andere Werte zu spezifizieren, die in Verbindung mit der Oberfläche zu verwenden sind, mit der das Phänomen mit dem Dialogknoten verbunden ist.
  • Wie in 3 gezeigt ist, umfassen der Regal-Frame 41 und der unterstützte Graphknoten-Frame 42 sowohl linke als auch rechte Pfeil-Icons, die im Allgemeinen durch die Bezugsziffer 47 identifiziert werden, die ermöglichen, dass die in dem jeweiligen Frame gezeigten Icons nach links oder rechts verschoben werden können (wie in 3 gezeigt ist), um anzuzeigende Icons in dem Phänomenerzeugerfenster 40 zu verschieben, wenn es mehr Entitäten gibt, als auf einmal angezeigt werden können.
  • Der Steuer-Frame 43 enthält Icons (nicht gezeigt), die Schaltflächen darstellen, die der Operator verwenden kann, um Steuervorgänge, einschließlich beispielsweise Löschen oder Duplizieren von Knoten in dem Regal-Frame 41 oder unterstützten Graphknoten-Frame 42, beginnenden Aufbau eines neuen Phänomens, Starten eines Online-Hilfesystems, Verlassen des Phänomen-Erzeugers 24 usw. durchzuführen.
  • Die Phänomen-Graphleinwand 44 stellt einen Bereich zur Verfügung, bei dem ein Phänomen durch ein Operator erzeugt oder modifiziert werden kann. Wenn der Operator wünscht, ein existierendes Phänomen zu modifizieren, kann er oder sie mit einer „Ziehen- und Ablegen (drag and drop)"-Methodik mit einer Zeigevorrichtung, wie beispielsweise einer Maus, das Icon 45 von dem das Phänomen darstellende Regal-Frame 41 auswählen und zu der Phänomen-Graphleinwand 44 ziehen. Nachdem das ausgewählte Icon 45, das dem zu modifizierenden Phänomen zugeordnet ist, zu der Phänomen-Grapheinwand 44 gezogen wurde, kann der Operator das Icon 45 aktivieren, damit es expandiert wird, um ein oder mehrere, durch Pfeile untereinander verbundene Knoten zu zeigen, die den Graph darstellen, der das Phänomen definiert. Ein Graph 50, der ein veranschaulichendes Phänomen darstellt, wird in 3 dargestellt. Wie in 3 gezeigt ist, umfasst der Graph 50 eine Mehrzahl von Graph-Knoten, die Kreise und Blöcke umfassen, wobei jeder von diesen einer Entität zugeordnet ist, die bei einem Phänomen verwendet werden kann, wobei die Knoten durch Pfeile untereinander verbunden sind, um den dem Phänomen zugeordneten Graph zu definieren.
  • Nachdem der dem Icon 45 zugeordnete Graph, der zu der Phänomen-Graphleinwand 44 gezogen wurde, expandiert wurde, um den Graph zu zeigen, der das dem Icon 45 zugeordnete Phänomen definiert, kann der Operator den das Phänomen definierenden Graph modifizieren. Bei diesem Vorgang kann der Operator mit einer entsprechenden „Ziehen- und Ablegen"-Methodik Icons 46 auswählen und von den unterstützten Graphknoten-Frames 42, die die Entitäten darstellen, ziehen, um zu dem Graph an der Phänomen-Graphleinwand 44 hinzugefügt zu werden, um dadurch einen neuen Knoten für den Graph einzurichten. Nachdem der neue Knoten eingerichtet wurde, kann der Operator ihn mit einem Knoten in dem existierenden Graph durch Klicken auf beide Knoten auf eine geeignete Art und Weise untereinander verbinden, um zu ermöglichen, dass ein Pfeil dazwischen angezeigt werden kann. Knoten in dem Graph können ebenfalls von anderen Knoten durch Löschen der Pfeile getrennt werden, die sich zwischen den jeweiligen Knoten erstrecken, und von dem Graph durch geeignete Betätigung einer Löschschaltfläche in dem Steuer-Frame 43 gelöscht werden.
  • Auf ähnliche Weise kann er oder sie, wenn der Operator wünscht, ein neues Phänomen zu erzeugen, mit der entsprechenden „Ziehen- und Ablegen"-Methodik Icons 46 auswählen und von dem unterstützten Graphknoten-Frames 42, die die zu dem Graph hinzuzufügenden Entitäten darstellen, zu der Phänomen-Graphleinwand 44 ziehen, um dadurch einen neuen Knoten für den zu erzeugenden Graph festzulegen. Nachdem der neue Knoten in der Phänomen-Graphleinwand 44 eingerichtet wurde, kann der Operator ihn mit einem Knoten in dem existierenden Graph durch Klicken auf beide Knoten auf eine geeignete Art und Weise verbinden, um zu ermöglichen, dass ein Pfeil dazwischen angezeigt wird. Knoten in dem Graph können ebenfalls von anderen Knoten durch Löschen von Pfeilen, die sich zwischen den jeweiligen Knoten erstrecken, getrennt werden, und von dem Graph durch eine geeignete Betätigung einer Löschschaltfläche in dem Steuer-Frame 43 gelöscht werden.
  • Nachdem der Operator den DAG oder einen Satz von kooperierenden DAGs für das Phänomen, entweder für ein neues Phänomen oder für ein modifiziertes Phänomen, spezifiziert hat, und bevor das durch den Graph dargestellte Phänomen in der Phänomen-Datenbank 25 gespeichert ist, wird der Phänomen-Erzeuger 24 den Phänomen-Graph untersuchen, um zu verifizieren, dass er konform ist und während des Renderings verarbeitet werden kann. Bei diesem Vorgang wird der Phänomen-Erzeuger 24 sicherstellen, dass die Zwischenverbindungen zwischen den Graph-Knoten keinen Zyklus bilden, um dadurch sicherzustellen, dass der Graph oder die Graphen, die dem Phänomen zugeordnet sind, gerichtete azyklische Graphen bilden, und dass Zwischenverbindungen zwischen Graph-Knoten jeweilige Eingangs- und Ausgangsdatentypen darstellen, die konform sind. Es ist ersichtlich, dass, wenn der Phänomen-Erzeuger 24 bestimmt, dass die Graph-Knoten einen Zyklus bilden, das Phänomen im Wesentlichen eine endlose Schleife bilden wird, die im Allgemeinen nicht ordnungsgemäß verarbeitet werden kann. Diese Vorgänge werden sicherstellen, dass das so erzeugte oder modifizierte Phänomen durch den Szenenbild-Erzeugungsabschnitt verarbeitet werden kann, wenn ein Bild einer Szene, an der das Phänomen angebracht ist, gerendert wird.
  • Nachdem der Operator ein Phänomen erzeugt oder modifiziert hat, wird es in der Phänomen-Datenbank 25 gespeichert.
  • 4 stellt ein in Verbindung mit dem Phänomen-Erzeuger 24 erzeugtes, veranschaulichendes Phänomen dar, das mit dem oben in Verbindung mit 3 beschriebenen Phänomen-Erzeugerfenster erzeugt werden kann. Das in 4 dargestellte veranschaulichende Phänomen, das durch die Bezugsziffer 60 ge kennzeichnet wird, ist eines, das für Oberflächenmerkmale eines Holzmaterials verwendet werden kann. Mit Bezug auf 4 umfasst das Phänomen 60 einen Wurzelknoten, der durch die Bezugsziffer 61 gekennzeichnet wird, der verwendet wird, um das Phänomen 60 an einem Element einer Szene anzubringen. Weitere Knoten in dem Graph umfassen einen Material-Shader-Knoten 62, einen Textur-Shader-Knoten 63, einen Kohärentes-Rauschen-Shader-Knoten 64, der einen Material-Shader darstellt, einen Textur-Shader bzw. einen Kohärentes-Rauschen-Shader und einen Dialogknoten 65. Der Dialogknoten 65 stellt ein Dialogfeld dar, das durch den Phänomen-Editor 26 angezeigt wird, um dem Operator zu ermöglichen, Eingangsinformation zur Verwendung mit dem Phänomen bereitzustellen, wenn das Bild gerendert wird.
  • Einzelheiten eines Material-Shaders, eines Textur-Shaders und eines Kohärentes-Rauschen-Shaders sind einem Fachmann bekannt und werden hier nicht weiter beschrieben. Im Allgemeinen umfasst der Material-Shader einen oder mehrere durch „Ergebnis" dargestellte Ausgänge, die dem Wurzelknoten 61 zur Verfügung gestellt werden. Der Material-Shader umfasst seinerseits mehrere Eingänge, die einen „Glanz"-Eingang, „Umgebungs"-Farbeneingang, einen „diffusen" Farbeneingang, einen „Transparenz"-Eingang, und einen „Lichter"-Eingang umfassen, und der dadurch dargestellte Material-Shader-Knoten 62 wird gezeigt, wie er Eingaben dafür von dem Dialogknoten 65 (im Fall der Glanz-Eingabe), von dem Textur-Shader-Knoten 63 (im Fall der Umgebungs- und diffusen Farbeingänge), von einer fest verdrahteten Konstanten (im Fall des Transparenz-Eingangs) und von einer Lichterliste (im Fall des Lichter-Eingangs) empfängt. Der als „0,0" angegebene, fest verdrahtete konstante Wert, der dem Transparenz-Eingang bereitgestellt wird, gibt an, dass das Material lichtundurchlässig ist. Der „Glanz"-Lichter-Eingang ist mit einem „Glanz"-Ausgang verbunden, der durch den Dialogknoten 65 bereitgestellt wird, und wenn der durch den Knoten 62 dargestellte Material-Shader während des Renderings verarbeitet wird, wird er den Glanz-Eingangswert dafür von dem durch den Dialogknoten dargestellten Dialogfeld erhalten, wie nachstehend in Verbindung mit 6A und 6B beschrieben wird.
  • Die Umgebungs- und diffusen Eingänge des durch den Knoten 62 dargestellten Material-Shaders werden durch die Ausgabe des Textur-Shaders bereitgestellt, wie durch die Verbindung des „Ergebnis"-Ausgangs des Knoten 63 mit den jeweiligen Eingängen des Knotens 62 angegeben wird. Wenn das Holzmaterial-Phänomen 60 während des Renderingvorgangs verarbeitet wird, und insbesondere, wenn der durch den Knoten 62 dargestellte Material-Shader verarbeitet wird, wird ermöglicht, dass der durch den Knoten 63 dargestellte Textur-Shader verarbeitet werden kann, um die Umgebungs- und diffusen Farbeingangswerte bereitzustellen. Der Textur-Shader umfasst seinerseits drei Eingänge, die Umgebungs- und diffuse Farbeingänge, die durch an dem Knoten 63 gezeigte „Farbe1"- und „Farbe2"-Eingänge und einen „Misch"-Eingang dargestellt werden. Die Werte für die Umgebungs- und diffusen Farbeingänge werden durch den Operator mit dem durch den Dialogknoten 65 dargestellten Dialogfeld bereitgestellt, wie durch die Verbindungen von den jeweiligen diffusen und Umgebungs-Farbausgängen von dem Dialogfeld 65 zu dem Textur-Shader-Knoten 63 in 4 dargestellt wird.
  • Außerdem wird der Eingangswert für den Eingang des durch den Knoten 63 dargestellten Textur-Shaders durch den durch den Knoten 64 dargestellten Kohärentes-Rauschen-Shader bereitgestellt. Wenn somit der durch den Knoten 63 dargestellte Textur-Shader während des Renderingvorgangs verarbeitet wird, wird er ermöglichen, dass der durch den Knoten 64 dargestellte Kohärentes-Rauschen-Shader verarbeitet werden kann, um den Misch-Eingangswert bereitzustellen. Der Kohärentes-Rauschen-Shader umfasst zwei Eingänge, die einen „Turbulenz"-Eingang und einen „zylindrischen" Eingang umfassen. Der Wert für den Turbulenz-Eingang wird dem Operator mit dem durch den Dialogknoten 65 dargestellten Dialogfeld bereitgestellt, wie es durch die Verbindungen von dem Turbulenz-Ausgang von dem Dialogknoten 65 zu dem Kohärentes-Rauschen-Shader-Knoten 64 dargestellt ist. Der Eingangswert für den zylindrischen Eingang, der als ein logischer Wert „WAHR" gezeigt wird, ist in dem Phänomen 60 fest verdrahtet.
  • Durch den Phänomen-Editor 26 durchgeführte Vorgänge werden in Verbindung mit 5 beschrieben. 5 stellt ein Phänomen-Editorfenster 70 dar, das den Phänomen-Editor 26 in die Lage versetzt, durch die Operator-Schnittstelle 27 zur Verwendung durch einen Operator bei einer Ausführungsform der Erfindung angezeigt zu werden, um Eingangswerte für Phänomene festzulegen und einzustellen, die an einer Szene angebracht wurden. Insbesondere kann der Operator das Phänomen-Editorfenster verwenden, um Werte für Phänomene festzulegen, die durch Dialogknoten, wie beispielsweise dem Dialogknoten 65, zugeordnete Dialogfelder bereitgestellt werden (4), die für die jeweiligen Phänomene während der Erzeugung oder Modifikation eingerichtet wurden, wie oben in Verbindung mit 3 beschrieben ist. Das Phänomen-Editorfenster 70 umfasst eine Mehrzahl von Frames, die ein Regal-Frame 71 und ein Steuer-Frame 72 umfassen, und umfasst ebenfalls ein Phänomen-Dialogfenster 73 und ein Phänomen-Vorausschaufenster 74. Der Regal-Frame 71 stellt Icons 80 dar, die die verschiedenen Phänomene darstellen, die zur Anbringung an einer Szene verfügbar sind. Wie bei dem Phänomenerzeugerfenster 40 (3) umfasst der Regal-Frame linke und rechte Pfeil-Icons, die im Allgemeinen durch die Bezugsziffer 81 gekennzeichnet werden, die es den in den jeweiligen Frame gezeigten Icons ermöglicht, nach links und rechts verschoben zu werden (wie in 3 gezeigt ist), um in dem Phänomen-Editorfenster 70 anzuzeigende Icons zu verschieben, wenn es mehr Icons gibt, als auf einmal angezeigt werden können.
  • Der Steuer-Frame 71 enthält Icons (nicht gezeigt), die Schaltflächen darstellen, die der Operator benutzen kann, um Steuervorgänge, einschließlich beispielsweise Löschen oder Duplizieren von Icons in dem Regal-Frame 71, Starten eines Online-Hilfesystems, Verlassen des Phänomen-Editors 26 usw. durchzuführen.
  • Der Operator kann ein Phänomen auswählen, dessen Parameterwerte durch geeignete Manipulation einer Zeigervorrichtung, wie beispielsweise einer Maus, festzulegen sind, um eine Instanz eines Phänomens zu erzeugen. (Eine Instanz eines Phänomens entspricht einem Phänomen, dessen Parameterwerte festgelegt wurden.) Nachdem der Operator ein Phänomen ausgewählt hat, wird der Phänomen-Editor 26 der Operator-Schnittstelle 27 ermöglichen, das seinem Dialogknoten zugeordnete Dialogfeld in dem Phänomen-Dialogfenster anzuzeigen. Ein veranschaulichendes Dialogfeld, das in Verbindung mit einer Ausführungsform des oben in Verbindung mit 4 beschriebenen Holzmaterial-Phänomens 60 verwendet wird, wird nachstehend in Verbindung mit 6A und 6B beschrieben. Wenn der Operator die Eingangswerte bereitstellt und einstellt, die durch das Dialogfeld bereitgestellt werden können, verarbeitet der Phänomen-Editor 26 effektiv das Phänomen und zeigt die resultierende Ausgabe in dem Phänomen-Vorausschaufenster 74 an. Somit kann der Operator das Phänomen-Editorfenster 70 verwenden, um das Ergebnis der Werte zu betrachten, die er oder sie mit den Eingänge festlegt, die durch das in dem Phänomen-Dialogfenster angezeigte Dialogfeld verfügbar sind.
  • 6A und 6B stellen graphisch Einzelheiten eines Dialogknotens (im Fall von 6A) und eines veranschaulichenden zugeordneten Dialogfeldes (im Fall von 6B) dar, die in Verbindung mit dem in 4 dargestellten Holzmaterial-Phänomen 60 verwendet werden. Der Dialogknoten, der durch die Bezugsziffer 65 in 4 gekennzeichnet wird, wird definiert und durch den Operator mit dem Phänomen-Erzeuger 24 während des Prozesses des Erzeugens oder Modifizierens des bestimmten Phänomens erzeugt, dem er zugeordnet ist. Mit Bezug auf 6A umfasst das Dialogfeld 65 eine Mehrzahl von Kacheln, nämlich eine Umgebungs-Farbenkachel 90, eine diffuse Farbenkachel 91, eine Turbulenz-Kachel 92 und eine Glanz-Kachel 93. Es ist ersichtlich, dass die jeweiligen Kacheln 90 bis 93 den jeweiligen Umgebungs-, diffusen, Turbulenz- und Glanz-Ausgangswerten zugeordnet sind, die durch den Dialogknoten 65 bereitgestellt werden, wie es oben in Verbindung mit 4 beschrieben ist. Den Umgebungs- und diffusen Farbkacheln sind Farbwerte zugeordnet, die mit der herkömmlichen Rot/Grün/Blau/Alpha- oder „RGBA"-Farb-Transparenz-Spezifikation spezifiziert werden können, und somit wird jede Farbkachel tatsächlich mehreren Eingangswerten, einen für jeweils die rote, grüne und blaue Farbe in der Farbdarstellung und eine für Transparenz (Alpha), zugeordnet sein. Andererseits ist jede der Turbulenz- und Glanz-Kacheln 92 und 93 einem skalaren Wert zugeordnet.
  • 6B stellt ein veranschaulichendes Dialogfeld 100 dar, das dem Dialogknoten 65 zugeordnet ist (6A), wie es durch die Operator-Schnittstelle 27 unter der Steuerung des Phänomen-Editors 26 angezeigt wird. In dem Dialogfeld 100 werden die Umgebungs- und diffusen Farbkacheln 90 und 91 des Dialogknotens 65 jeweils durch die Operator-Schnittstelle 27 als jeweilige Sätze von Schiebern angezeigt, die im Allgemeinen durch die Bezugsziffern 101 bzw. 102 gekennzeichnet werden, von denen jeder einer der Farben in der Farbdarstellung zugeordnet ist, die während der Verarbeitung des zugeordneten Phänomens während des Renderings zu verwenden ist. Außerdem werden die Turbulenz- und Glanz-Kacheln 92 und 93 des Dialogknotens 65 durch die Operator-Schnittstelle jeweils als einzelne Schieber 103 und 104 angezeigt. Die Schieber in den jeweiligen Sätzen von Schiebern 101 und 102 können durch den Operator mit einer Zeigevorrichtung, wie beispielsweise einer Maus, auf eine herkömmliche Art und Weise manipuliert werden, um dadurch den Phänomen-Editor 26 zu aktivieren, um die jeweiligen Kombinationen von Farben für die jeweiligen Umgebungs- und diffusen Farbwerte einzustellen, die durch den Dialogknoten 65 den Shadern bereitgestellt werden, die den anderen Knoten des Phänomens 60 zugeordnet sind (4). Außerdem können die den Turbulenz- und Glanz-Eingängen zugeordnete Schieber 103 und 104 durch den Operator manipuliert werden, um dadurch dem Phänomen-Editor 26 zu aktivieren, die jeweiligen Turbulenz- und Glanz-Werte einzustellen, die durch den Dialogknoten 65 mit den anderen Knoten des Holzmaterial-Phänomens 60 zugeordneten Shadern bereitgestellt werden.
  • In 2 werden, nachdem der Operator mit dem Phänomen-Editor 26 die Werte für die verschiedenen Phänomene und Phänomen-Instanzen, die einer Szene zugeordnet sind, festgelegt hat, diese Werte mit der Szene in der Szenen-Objektdatenbank 22 gespeichert. Danach kann ein Bild einer Szene durch den Szenenbild-Erzeugungsabschnitt 21 insbesondere durch den Szenenbild-Generator 30 zur Anzeige durch die Operator-Schnittstelle 31 gerendert werden. Durch den Szenenbild-Generator 30 durchgeführte Vorgänge werden im Allgemeinen in Verbindung mit dem in 7 dargestellten Ablaufdiagramm beschrieben. Mit Bezug auf 7 arbeitet der Szenenbild-Generator 30 in einer Reihe von Phasen, die eine Vorverarbeitungsphase, eine Rendering-Phase und eine Nachverarbeitungsphase umfassen. Bei der Vorverarbeitungsphase wird der Szenenbild-Generator 30 die Phänomene untersuchen, die an einer Szene angebracht sind, um zu bestimmen, ob er die Vorverarbeitungs- und/oder Nachverarbeitungsvorgänge in Verbindung damit durchzuführen muss (Schritt 100). Der Szenenbild-Generator 30 bestimmt dann, ob die Vorgänge bei Schritt 100 angaben, dass Vorverarbeitungsgänge in Verbindung mit mindestens einem an der Szene angebrachten Phänomen erforderlich sind (Schritt 101), und falls so, wird die Vorverarbeitungsvorgänge durchführen (Schritt 102). Veranschaulichende Vorverarbeitungsvorgänge umfassen beispielsweise die Erzeugung der Geometrie für die Szene, wenn ein an der Szene angebrachtes Phänomen einen Geometrie-Shader umfasst, um die dadurch für die Szene definierte Geometrie zu erzeugen. Weitere veranschaulichende Vorverarbeitungsvorgänge umfassen beispielsweise Schatten- und Photonenabbildung, mehrfache Vererbungsauflösung und dergleichen. Nach Schritt 102 oder Schritt 101, kann, wenn der Szenenbild-Generator 30 eine negative Bestimmung bei diesem Schritt durchführt, der Szenenbild-Generator weitere Vorverarbeitungsvorgänge durchführen, die in Verbindung mit der Szenendarstel- lung vor dem Rendering erforderlich sein können, die nicht mit den a der Szene angebrachten Phänomenen in Beziehung stehen (Schritt 103).
  • Nach Schritt 103 wird der Szenenbild-Generator 30 die Rendering-Phase durchführen, bei der er Rendering-Vorgänge in Verbindung mit der vorverarbeiteten Szenendarstellung durchführt, um ein gerendertes Bild zu erzeugen (Schritt 104). Bei diesem Vorgang wird der Szenenbild-Generator 30 die in der Szenen-Objektdatenbank 22 gespeicherten Phänomene identifizieren, die an die verschiedenen Komponenten der Szene anzubringen sind, wie sie durch den Geometrische-Darstellung-Generator für Entitäten 23 erzeugt wurden, und alle primären und optionalen Wurzelknoten der jeweiligen Phänomene an den Szenenkomponenten anbringen, die der Art des Wurzelknotens entsprechen. Danach wird der Szenenbild-Generator 30 das Bild rendern. Außerdem wird der Szenenbild-Generator 30 Information nach Bedarf erzeugen, die bei Nachverarbeitungsvorgängen während der Nachverarbeitungsphase verwendet werden können.
  • Nach der Rendering-Phase (Schritt 104) wird der Szenenbild-Generator 30 die Nachverarbeitungsphase durchführen. Bei diesem Vorgang wird der Szenenbild-Generator 30 bestimmen, ob bei Schritt 100 durchgeführte Vorgänge angaben, dass Nachverarbeitungsvorgänge in Verbindung mit an der Szene angebrachten Phänomenen erforderlich sind (Schritt 105). Wenn der Szenenbild-Generator 30 eine positive Bestimmung bei Schritt 105 durchführt, wird er die Nachverarbeitungsvorgänge durchführen, die in Verbindung mit den an der Szene angebrachten Phänomenen erforderlich sind (Schritt 106). Außerdem kann der Szenenbild-Generator 30 ebenfalls weitere Nachverarbeitungsvorgänge durchführen, die nicht mit den Phänomenen bei Schritt 106 in Beziehung stehen. Der Szenenbild-Generator 30 kann Nachverarbeitungsvorgänge in Verbindung mit dem Manipulieren von Pixelwerten zur Farbkorrektur und einer Filterung, um verschiedene optische Effekte bereitzustellen, durchführen. Außerdem kann der Szenenbild-Generator 30 Nachverarbeitungsvorgänge durchführen, wenn beispielsweise ein an der Szene angebrachtes Phänomen einen Ausgangs-Shader umfasst, der Nachverarbeitungsvorgänge, wie beispielsweise Tiefe eines Feldes oder Bewegungs-Unschärfeberechnung definiert, die bei einer Ausführungsform vollständig in einem Ausgangs-Shader beispielsweise abhängig von der Geschwindigkeit und Tiefeninformation, die in Verbindung mit jedem Pixelwert gespeichert ist, in Verbindung mit dem gerenderten Bild durchgeführt werden können.
  • Die Erfindung stellt eine Anzahl von Vorteilen bereit. Insbesondere liefert die Erfindung ein Computer-Graphiksystem, das Anordnungen zum Erzeugen (siehe Phänomen-Erzeuger 24) und Manipulieren (siehe Phänomen-Editor 26) von Phänomenen bereitstellt. Die so erzeugten Phänomene werden durch den Phänomen-Erzeuger 24 verarbeitet, um sicherzustellen, dass sie konform sind und während des Renderings verarbeitet werden können. Da die Phänomene erzeugt werden, bevor sie an einer Szene angebracht werden, ist ersichtlich, dass sie durch Programmierer oder andere erzeugt werden können, die Fachleute bei der Entwicklung von Computerprogrammen sind, wodurch andere, wie beispielsweise Künstler, Zeichner oder dergleichen, von der Notwendigkeit befreit werden, sie zu entwickeln. Phänomene befreien ebenfalls den Künstler von der Komplexität des Instrumentierens der Szene mit vielen unterschiedlichen und untereinander in Beziehung stehenden Shadern, indem sie (d.h. die Komplexität) in eine unabhängige Aufgabe getrennt wird, die durch einen Expert-Benutzer des Phänomen-Erzeugers im Voraus durchgeführt wird. Mit den Phänomenen wird die Instrumentation größtenteils automatisiert. Sobald ein Phänomen oder eine Phänomen-Instanz erzeugt wurde, ist es/sie szenenunabhängig und kann in vielen Szenen erneut verwendet werden, wodurch sich wiederholende Arbeit vermieden wird.
  • Es ist ersichtlich, dass eine Anzahl von Änderungen und Modifikationen an der Erfindung durchgeführt werden können. Wie oben bemerkt ist, kann, da Phänomene getrennt von ihrer Verwendung in Verbindung mit einer Szene erzeugt werden können, der Phänomen-Erzeuger 24, der verwendet wird, um Phänomene zu erzeugen und zu modifizieren, der Phänomen-Editor 26, der verwendet wird, um Phänomen-Instanzen zu erzeugen, in getrennten Computer-Graphiksystemen bereitgestellt werden. Beispielsweise ist es für ein Computer-Graphiksystem 10, das einen Phänomen-Editor 26 umfasst, nicht notwendig, Phänomen-Erzeuger 24 aufweisen, wenn die Phänomen-Datenbank 25 geeignete zuvor erzeugte Phänomene aufweist, und der Operator Phänomene weder erzeugen noch modifizieren muss.
  • Außerdem können, wie oben angemerkt ist, die Werte von Parametern eines Phänomens fest sein, oder sich basierend auf einer Funktion einer oder mehrerer Variablen verändern. Beispielsweise kann, wenn sich ein oder mehrere Werte jeweiliger Parameter in Übereinstimmung mit der Zeit als eine Variable verändern, die Phänomen-Instanz zeitunabhängig oder „animiert" gemacht werden.
  • Dies wird normalerweise in Zeitintervallen diskretisiert, die durch die Frame-Nummern einer Reihe von Frames bezeichnet werden, die eine Animation umfassen, wobei jedoch die Zeitabhängigkeit nichtsdestotrotz die Form irgendeiner parameterwertigen Funktion über die Zeit annehmen kann, wobei jede davon mit einem absoluten Zeitwert markiert werden kann, sodass, sogar wenn ein Bild bei aufeinander folgenden Frame-Nummern gerendert wird, die Shader nicht auf diskrete Intervalle begrenzt sind.
  • In diesem Zusammenhang wird der Phänomen-Editor verwendet, um zeitabhängige Werte für einen oder mehrere Parameter eines Phänomens auszuwählen, wobei eine zeitabhängige „Phänomen-Instanz" erzeugt wird. Die Auswahl von zeitabhängigen Werten für die Parameter eines Phänomens wird bei einer bestimmten Ausführungsform durch die graphische interaktive Anbringung von dem, was hier als „Phänomen-Eigenschafts-Steuerbäume" bezeichnet wird, an einem Phänomen erreicht. Ein Phänomen-Eigenschaften-Steuerbaum, der in der Form eines Baums oder DAG sein kann, wird an Phänomen-Parametern effektiv außerhalb des Phänomens angebracht und mit dem Phänomen in der Phänomen-Instanzendatenbank gespeichert. Ein Phänomen-Eigenschafts-Steuerbaum ist aus einem oder mehreren Knoten aufgebaut, von denen jeder ein Shader im Sinne der Funktionen ist, wie beispielsweise Bewegungskurven, Datennachschlagefunktion und dergleichen, die er bereitstellt. Ein Phänomen-Eigenschafts-Steuerbaum kann vorzugsweise flach bleiben und wird normalerweise nur sehr wenige Verzweigungsebenen aufweisen. Ein Phänomen-Eigenschafts-Steuerbaum kann aus lediglich einem Shader aufgebaut sein, der eine Funktion definiert, um den Wert für den Parameter zu berechnen, der damit zur Laufzeit zugeordnet wird. Ein Phänomen-Eigenschafts-Steuerbaum kann flach bleiben, weil das Phänomen die Verkapselung der komplizierten Shader-Bäume oder DAGs ermöglicht und fördert, wobei eine Auswertung auf eine optimierte Art und Weise während des Rendering-Schritts beispielsweise durch Speichern von Daten zur Wiederverwendung erleichtert wird. Wenn es einem Operator ermöglicht wird, derartige Phänomen-Eigenschafts-Steuerbäume anzubringen, um die Parameter eines Phänomens zu steuern, wird die Flexibilität des Benutzers sehr erhöht, um kundenspezifische Effekte basierend auf seiner Verwendung eines vordefinierten und verpackten Phänomens zu erreichen. Die Anzahl getrennter Phänomen-Instanzen, die auf diese Art und Weise erzeugt werden können, wird daher sehr erhöht, während die Einfachheit der Verwendung dank der Verkapselung der gesamten Komplexität in dem Phänomen nicht gefährdet wird.
  • Außerdem ist ersichtlich, dass die äußere Erscheinung und die Strukturen der Fenster, die in Verbindung mit dem Phänomen-Erzeuger 24 und dem Phänomen-Editor 26 verwendet werden, die in Verbindung mit 3 und 5 beschrieben sind, sich von den hier beschriebenen unterscheiden können.
  • Es ist ersichtlich, dass ein System in Übereinstimmung mit der Erfindung vollständig oder teilweise aus Spezialzweck-Hardware oder einem Allzweck-Computersystem oder jeder Kombination davon aufgebaut sein kann, wobei ein beliebiges Teil davon durch ein geeignetes Programm gesteuert werden kann. Jedes Programm kann vollständig oder teilweise ein Teil von dem System sein oder auf diesem auf eine herkömmlichen Art und Weise gespeichert sein, oder es kann vollständig oder teilweise dem System über ein Netzwerk oder anderen Mechanismus zum Transferieren von Information auf eine herkömmliche Art und Weise bereitgestellt werden. Außerdem ist ersichtlich, dass das System mittels Information betrieben und/oder anderweitig gesteuert werden kann, die durch einen Operator mit Operator-Eingabeelementen (nicht gezeigt) bereitgestellt wird, die direkt mit dem System verbunden sein können oder die die Information an das System über ein Netzwerk oder anderen Mechanismus zum Transferieren von Information auf eine herkömmliche Art und Weise transferieren können.
  • Die vorhergehende Beschreibung wurde auf eine spezifische Ausführungsform dieser Erfindung begrenzt. Es ist jedoch offensichtlich, dass verschiedene Variationen und Modifikationen an der Erfindung durchgeführt werden können, wobei einige oder alle der Vorteile der Erfindung erzielt werden.

Claims (32)

  1. Computergraphiksystem zum Erzeugen eines Bildes einer Szene aus einer Darstellung der Szene, an der mindestens ein Shader-DAG (shader directed acyclic graph), der eine Mehrzahl von Knoten umfasst, angebracht ist, umfassend mindestens einen primären Wurzelknoten zum Anbringen des Shader-DAG an einem Element der Szenendarstellung und mindestens einen damit verbundenen Shader-Knoten in dem DAG, wobei das Computergraphiksystem umfasst: A. ein Vorprozessormodul, das konfiguriert ist, um zu bestimmen, ob der mindestens eine Shader-Knoten von einem Typ ist, der beim Durchführen eines Vorverarbeitungsvorgangs in Verbindung mit der Darstellung verwendet wird, und wenn ja, Verwenden des mindestens einen Shader-Knotens, um den Vorverarbeitungsvorgang durchzuführen, um eine vorverarbeitete Darstellung der Szene zu erzeugen; und B. ein Renderer-Modul, das konfiguriert ist, um das gerenderte Bild aus einer der Darstellung der Szene oder, wenn das Computergraphiksystem das Vorprozessormodul aufweist, der vorverarbeiteten Darstellung der Szene zu erzeugen.
  2. Computergraphiksystem gemäß Anspruch 1, bei dem der mindestens eine Shader-Knoten von einem Geometrie-Shader-Knotentyp ist, wobei das Vorprozessormodul konfiguriert ist, um den Vorverarbeitungsvorgang mit dem mindesten einen Shader-Knoten vom Geometrie-Shader-Knotentyp durchzuführen, um die Geometrie für die Szene zu definieren.
  3. Computergraphiksystem gemäß Anspruch 1, bei dem der mindestens eine Shader-Knoten von einem Photonen-Shader-Knotentyp ist, wobei das Vorprozessormodul konfiguriert ist, um den Vorverarbeitungsvorgang mit dem mindestens einen Shader-Knoten vom Photonen-Shader-Knotentyp durchzuführen, um den Pfad von mindestens einem Photon in der Szene oder mindestens einer Eigen schaft der Wechselwirkung von mindestens einem Photonen mit einer Oberfläche eines Objekts in der Szene zu steuern.
  4. Computergraphiksystem gemäß Anspruch 1, bei dem der mindestens eine Shader-Knoten von einem Photonen-Emitter-Shader-Knotentyp ist, wobei das Vorprozessormodul konfiguriert ist, um den Vorverarbeitungsvorgang mit dem mindestens einen Shader-Knoten vom Photonen-Emitter-Shader-Knotentyp durchzuführen, um die Erzeugung von mindestens einem Photon durch eine die Szene beleuchtende Lichtquelle zu simulieren.
  5. Computergraphiksystem gemäß Anspruch 1, bei dem der mindestens eine Shader-Knoten von einem Photonenvolumen-Shader-Knotentyp ist, wobei das Vorprozessormodul konfiguriert ist, um den Vorverarbeitungsvorgang mit dem mindesten einen Shader-Knoten vom Photonenvolumen-Shader-Knotentyp durchzuführen, um die Wechselwirkung von mindestens einem Photon von einer Lichtquelle mit einem dreidimensionalen Volumen des Raums in der Szene zu simulieren.
  6. Computergraphiksystem gemäß Anspruch 1, bei dem das Computergraphiksystem ferner ein Nachprozessormodul aufweist, das konfiguriert ist, um zu bestimmen, ob der mindestens eine Shader-Knoten von einem Typ ist, der beim Durchführen eines Nachverarbeitungsvorgangs in Verbindung mit der Darstellung verwendet wird, und falls ja, Verwenden des mindestens einen Shader-Knotens, um die Nachverarbeitung in Verbindung mit einem gerenderten Bild durchzuführen.
  7. Computergraphiksystem gemäß Anspruch 6, bei dem der Shader-Knoten von einem Ausgangs-Shader-Knotentyp ist, wobei das Nachprozessormodul konfiguriert ist, um den Nachverarbeitungsvorgang mit dem mindestens einen Shader-Knoten vom Ausgangs-Shader-Knotentyp durchzuführen.
  8. Computergraphiksystem gemäß Anspruch 6, bei dem das gerenderte Bild eine Mehrzahl von Pixeln umfasst, die jeweils einem Pixelwert zugeordnet sind, wobei das Nachprozessormodul konfiguriert ist, um den Nachverarbeitungsvorgang in Verbindung mit den Pixelwerten durchzuführen.
  9. Computergraphiksystem gemäß Anspruch 6, bei dem das Nachprozessormodul konfiguriert ist, um den mindestens einen Shader-Knoten vom Ausgangs-Shader-Knotentyp zu verwenden, um mindestens entweder einen Compositing-Vorgang, einen komplexen Faltungsvorgang oder einen Konturlinienzeichenvorgang durchzuführen.
  10. Computergraphiksystem gemäß Anspruch 1, ferner mit einem zweiten Shader-DAG, der den primären Wurzelknoten und mindestens einen Shader-Knoten umfasst, bei dem der mindestens eine Shader-Knoten eines der DAG, wenn er von mindestens dem Vorprozessormodul und/oder dem Renderer-Modul verwendet wird, mindestens einen Wert liefert, der bei der Verarbeitung des mindestens einen Shader-Knoten des anderen der DAGs verwendet wird.
  11. Computergraphiksystem gemäß Anspruch 1, bei dem der Shader-DAG ferner mindestens einen optionalen Wurzelknoten zum Anbringen des Shader-DAG an einem zweiten Element der Szenendarstellung aufweist, wobei der mindestens eine optionale Shader-Knoten ferner mit dem mindestens einen Shader-Knoten in dem DAG verbunden ist.
  12. Computergraphikverfahren zum Erzeugen eines Bildes einer Szene aus einer Darstellung der Szene an dem mindestens einen Shader-DAG (shader directed acyclic graph), der eine Mehrzahl von Knoten umfasst, einschließlich mindestens eines primären Wurzelknotens zum Anbringen des Shader-DAG an einem Element der Szenendarstellung und mindestens eines damit verbundenen Shader-Knotens in dem DAG, wobei das Computergraphikverfahren umfasst: A. einen Vorprozessorschritt zum Bestimmen, ob der mindestens eine Shader-Knoten von einem Typ ist, der beim Durchführen eines Vorverarbeitungsvorgangs in Verbindung mit der Darstellung verwendet wird, und wenn ja, Verwenden des mindestens einen Shader-Knotens, um den Vorverarbeitungsvorgang mit dem mindestens einen Shader-Knoten durchzuführen, um eine vorverarbeitete Darstellung der Szene zu erzeugen; und B. einen Rendering-Schritt zum Erzeugen des gerenderten Bilds aus einer der Darstellung der Szene oder, wenn das Computergraphikverfahren den Vorprozessorschritt aufweist, der vorverarbeiteten Darstellung der Szene.
  13. Computergraphikverfahren gemäß Anspruch 12, bei dem der mindestens eine Shader-Knoten von einem Geometrie-Shader-Knotentyp ist, wobei der Vorprozessorschritt den Schritt des Durchführens des Vorverarbeitungsvorgangs mit dem mindesten einen Shader-Knoten vom Geometrie-Shader-Knotentyp aufweist, um die Geometrie für die Szene zu definieren.
  14. Computergraphikverfahren gemäß Anspruch 12, bei dem der mindestens eine Shader-Knoten von einem Photonen-Shader-Knotentyp ist, wobei der Vorprozessorschritt den Schritt des Durchführens des Vorverarbeitungsvorgangs mit dem mindestens einen Shader-Knoten vom Photonen-Shader-Knotentyp aufweist, um den Pfad von mindestens einem Photon in der Szene oder mindestens einer Eigenschaft der Wechselwirkung von mindestens einem Photonen mit einer Oberfläche eines Objekts in der Szene zu steuern.
  15. Computergraphikverfahren gemäß Anspruch 12, bei dem der mindestens eine Shader-Knoten von einem Photonen-Emitter-Shader-Knotentyp ist, wobei der Vorprozessorschritt den Schritt des Durchführens des Vorverarbeitungsvorgangs mit dem mindestens einen Shader-Knoten vom Photonen-Emitter-Shader-Knotentyp aufweist, um die Erzeugung von mindestens einem Photon durch eine die Szene beleuchtende Lichtquelle zu simulieren.
  16. Computergraphikverfahren gemäß Anspruch 12, bei dem der mindestens eine Shader-Knoten von einem Photonenvolumen-Shader-Knotentyp ist, wobei der Vorprozessorschritt den Schritt des Durchführens des Vorverarbeitungsvorgangs mit dem mindesten einen Shader-Knoten vom Photonenvolumen-Shader-Knotentyp aufweist, um die Wechselwirkung von mindestens einem Photon von einer Lichtquelle mit einem dreidimensionalen Volumen des Raum in der Szene zu simulieren.
  17. Computergraphikverfahren gemäß Anspruch 12, bei dem das Computergraphikverfahren ferner einen Nachprozessorschritt zum Bestimmen aufweist, ob der mindestens eine Shader-Knoten von einem Typ ist, der beim Durchführen eines Nachverarbeitungsvorgangs in Verbindung mit einem gerenderten Bild verwendet wird, und falls ja, Verwenden des mindestens einen Shader-Knotens, um die Nachverarbeitung in Verbindung mit einem gerenderten Bild durchzuführen.
  18. Computergraphikverfahren gemäß Anspruch 17, bei dem der Shader-Knoten von einem Ausgangs-Shader-Knotentyp ist, wobei der Nachprozessorschritt den Schritt des Durchführens des Nachverarbeitungsvorgangs mit dem mindestens einen Shader-Knoten vom Ausgangs-Shader-Knotentyp aufweist.
  19. Computergraphikverfahren gemäß Anspruch 17, bei dem das gerenderte Bild eine Mehrzahl von Pixeln umfasst, die jeweils einem Pixelwert zugeordnet sind, wobei der Nachprozessorschritt den Schritt des Durchführens des Nachverarbeitungsvorgangs in Verbindung mit den Pixelwerten aufweist.
  20. Computergraphikverfahren gemäß Anspruch 17, bei dem der Nachprozessorschritt den schritt des Verwendens des mindestens einen Shader-Knotens vom Ausgangs-Shader-Knotentyp aufweist, um mindestens entweder einen Compositing-Vorgang, einen komplexen Faltungsvorgang oder einen Konturlinienzeichenvorgang durchzuführen.
  21. Computergraphikverfahren gemäß Anspruch 12, bei dem der mindestens eine Shader-Knoten eine Mehrzahl von DAGs umfasst, wobei jeder der Mehrzahl von DAGs mindestens Shader-Knoten aufweist, bei dem der mindestens eine Shader-Knoten in einem der DAGs, wenn er mindestens von dem Vorprozessorschritt und/oder dem Renderer-Schritt verwendet wird, mindestens einen Wert liefert, der bei der Verarbeitung des mindestens einen Shader-Knotens des anderen der DAGs verwendet wird.
  22. Computerprogrammprodukt zur Verwendung in Verbindung mit einem Computer, um ein Computergraphiksystem zum Erzeugen eines Bildes einer Szene aus einer Darstellung der Szene an dem mindestens einen Shader-DAG (shader directed acyclic graph) bereitzustellen, der eine Mehrzahl von Knoten umfasst, einschließlich mindestens eines primären Wurzelknotens zum Anbringen des Shader-DAG an einem Element der Szenendarstellung und mindestens eines damit in dem DAG verbundenen Shader-Knotens, wobei das Computerprogrammprodukt ein computerlesbares Medium umfasst, das darauf codiert hat: A. ein Vorprozessormodul, das konfiguriert ist, um dem Computer zu ermöglichen, zu bestimmen, ob der mindestens eine Shader-Knoten von einem Typ ist, der beim Durchführen eines Vorverarbeitungsvorgangs in Verbindung mit der Darstellung verwendet wird, und wenn ja, Verwenden des mindestens einen Shader-Knotens, um den Vorverarbeitungsvorgang durchzuführen, um eine vorverarbeitete Darstellung der Szene zu erzeugen; und B. ein Renderer-Modul, das konfiguriert ist, um um dem Computer zu ermöglichen, das gerenderte Bild aus einer der Darstellung der Szene oder, wenn das Computerprogrammprodukt das Vorprozessormodul aufweist, der vorverarbeiteten Darstellung der Szene zu erzeugen.
  23. Computerprogrammprodukt gemäß Anspruch 22, bei dem der mindestens eine Shader-Knoten von einem Geometrie-Shader-Knotentyp ist, wobei das Vorprozessormodul konfiguriert ist, um dem Computer zu ermöglichen, den Vorverarbeitungsvorgang mit dem mindesten einen Shader-Knoten vom Geometrie-Shader-Knotentyp durchzuführen, um die Geometrie für die Szene zu definieren.
  24. Computerprogrammprodukt gemäß Anspruch 22, bei dem der mindestens eine Shader-Knoten von einem Photonen-Shader-Knotentyp ist, wobei das Vorprozessormodul konfiguriert ist, um dem Computer zu ermöglichen, den Vorverarbeitungsvorgang mit dem mindestens einen Shader-Knoten vom Photonen-Shader-Knotentyp durchzuführen, um den Pfad von mindestens einem Photon in der Szene oder mindestens einer Eigenschaft der Wechselwirkung von mindestens einem Photonen mit einer Oberfläche eines Objekts in der Szene zu steuern.
  25. Computerprogrammprodukt gemäß Anspruch 22, bei dem der mindestens eine Shader-Knoten von einem Photonen-Emitter-Shader-Knotentyp ist, wobei das Vorprozessormodul konfiguriert ist, um dem Computer zu ermöglichen, den Vorverarbeitungsvorgang mit dem mindestens einen Shader-Knoten vom Photonen-Emitter-Shader-Knotentyp durchzuführen, um die Erzeugung von mindestens einem Photon durch eine die Szene beleuchtende Lichtquelle zu simulieren.
  26. Computerprogrammprodukt gemäß Anspruch 22, bei dem der mindestens eine Shader-Knoten von einem Photonenvolumen-Shader-Knotentyp ist, wobei das Vorprozessormodul konfiguriert ist, um dem Computer zu ermöglichen, den Vorverarbeitungsvorgang mit dem mindesten einen Shader-Knoten vom Photonenvolumen-Shader-Knotentyp durchzuführen, um die Wechselwirkung von mindestens einem Photon von einer Lichtquelle mit einem dreidimensionalen Volumen des Raums in der Szene zu simulieren.
  27. Computerprogrammprodukt gemäß Anspruch 22, bei dem das Computerprogrammprodukt ferner ein Nachprozessormodul aufweist, das konfiguriert ist, um dem Computer zu ermöglichen, zu bestimmen, ob der mindestens eine Shader-Knoten von einem Typ ist, der beim Durchführen eines Nachverarbeitungsvorgangs in Verbindung mit der Darstellung verwendet wird, und falls ja, Verwenden des mindestens einen Shader-Knotens, um die Nachverarbeitung in Verbindung mit einem gerenderten Bild durchzuführen.
  28. Computerprogrammprodukt gemäß Anspruch 27, bei dem der Shader-Knoten von einem Ausgangs-Shader-Knotentyp ist, wobei das Nachprozessormodul konfiguriert ist, um dem Computer zu ermöglichen, den Nachverarbeitungsvorgang mit dem mindestens einen Shader-Knoten vom Ausgangs-Shader-Knotentyp durchzuführen.
  29. Computerprogrammprodukt gemäß Anspruch 28, bei dem das gerenderte Bild eine Mehrzahl von Pixeln umfasst, die jeweils einem Pixelwert zugeordnet sind, wobei das Nachprozessormodul konfiguriert ist, um dem Computer zu er möglichen, den Nachverarbeitungsvorgang in Verbindung mit den Pixelwerten durchzuführen.
  30. Computerprogrammprodukt gemäß Anspruch 27, bei dem das Nachprozessormodul konfiguriert ist, um den mindestens einen Shader-Knoten vom Ausgangs-Shader-Knotentyp zu verwenden, um dem Computer zu ermöglichen, mindestens entweder einen Compositing-Vorgang, einen komplexen Faltungsvorgang oder einen Konturlinienzeichenvorgang durchzuführen.
  31. Computerprogrammprodukt gemäß Anspruch 22, ferner mit einem zweiten Shader-DAG, der den primären Wurzelknoten und mindestens einen Shader-Knoten umfasst, bei dem der mindestens eine Shader-Knoten eines der DAG, wenn er von mindestens dem Vorprozessormodul und/oder dem Renderer-Modul verwendet wird, mindestens einen Wert liefert, der bei der Verarbeitung vom mindestens einen Shader-Knoten des anderen der DAGs verwendet wird.
  32. Computerprogrammprodukt gemäß Anspruch 22, bei dem der Shader-DAG ferner mindestens einen optionalen Wurzelknoten zum Anbringen des Shader-DAG an einem zweiten Element der Szenendarstellung aufweist, wobei der mindestens eine optionale Shader-Knoten ferner mit dem mindestens einen Shader-Knoten in dem DAG verbunden ist.
DE69832611T 1997-07-02 1998-07-02 Computergrafiksystem Expired - Lifetime DE69832611T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US5150797P 1997-07-02 1997-07-02
US51507P 1997-07-02
PCT/IB1998/001073 WO1999001846A1 (en) 1997-07-02 1998-07-02 A computer graphics system

Publications (2)

Publication Number Publication Date
DE69832611D1 DE69832611D1 (de) 2006-01-05
DE69832611T2 true DE69832611T2 (de) 2006-08-10

Family

ID=21971724

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69832611T Expired - Lifetime DE69832611T2 (de) 1997-07-02 1998-07-02 Computergrafiksystem

Country Status (10)

Country Link
US (3) US6496190B1 (de)
EP (1) EP0993659B1 (de)
JP (1) JP2001509620A (de)
AT (1) ATE311637T1 (de)
AU (1) AU752048B2 (de)
CA (1) CA2294233C (de)
DE (1) DE69832611T2 (de)
DK (1) DK0993659T3 (de)
ES (1) ES2255167T3 (de)
WO (1) WO1999001846A1 (de)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496190B1 (en) * 1997-07-02 2002-12-17 Mental Images Gmbh & Co Kg. System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system
US9007393B2 (en) * 1997-07-02 2015-04-14 Mental Images Gmbh Accurate transparency and local volume rendering
US7548238B2 (en) * 1997-07-02 2009-06-16 Nvidia Corporation Computer graphics shader systems and methods
US7092860B1 (en) * 1999-02-03 2006-08-15 Mitutoyo Corporation Hardware simulation systems and methods for vision inspection systems
EP1079332A1 (de) * 1999-08-25 2001-02-28 M.M. Multimedia A/S Verfahren zur Wiedergabe von Staten eines Systems
US7165060B2 (en) * 2000-02-14 2007-01-16 Lockheed Martin Corporation Information access, collaboration and integration system and method
US7437408B2 (en) * 2000-02-14 2008-10-14 Lockheed Martin Corporation Information aggregation, processing and distribution system
EP1132863A1 (de) * 2000-03-08 2001-09-12 MVTec Software GmbH Verfahren und System zur Entwicklung von Bildverarbeitungsanwendungen
CN102289832B (zh) * 2000-06-09 2014-08-20 精工爱普生株式会社 图像指定文件的制作和使用了该文件的图像的播放
US7034828B1 (en) * 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
JP4740476B2 (ja) * 2000-08-23 2011-08-03 任天堂株式会社 グラフィックスシステム内におけるn個のアルファ演算の論理結合を提供する方法および装置
US6683619B1 (en) * 2000-10-18 2004-01-27 Sony Corporation System and method for increasing performance when compositing images
US6897880B2 (en) 2001-02-22 2005-05-24 Sony Corporation User interface for generating parameter values in media presentations based on selected presentation instances
EP1258837A1 (de) 2001-05-14 2002-11-20 Thomson Licensing S.A. Verfahren zur Erzeugung eines gegenseitigen fotometrischen Effektes
US7564460B2 (en) * 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US20030090530A1 (en) * 2001-09-07 2003-05-15 Karthik Ramani Systems and methods for collaborative shape design
US7337093B2 (en) * 2001-09-07 2008-02-26 Purdue Research Foundation Systems and methods for collaborative shape and design
US20030076320A1 (en) * 2001-10-18 2003-04-24 David Collodi Programmable per-pixel shader with lighting support
US20040103147A1 (en) * 2001-11-13 2004-05-27 Flesher Kevin E. System for enabling collaboration and protecting sensitive data
US7176917B1 (en) * 2002-08-09 2007-02-13 Avid Technology, Inc. Visual programming interface for a three-dimensional animation system for defining real time shaders using a real-time rendering engine application programming interface
US20040095348A1 (en) * 2002-11-19 2004-05-20 Bleiweiss Avi I. Shading language interface and method
US7928997B2 (en) * 2003-02-06 2011-04-19 Nvidia Corporation Digital image compositing using a programmable graphics processor
US20050140672A1 (en) * 2003-02-18 2005-06-30 Jeremy Hubbell Shader editor and compiler
US7523406B2 (en) * 2003-07-22 2009-04-21 Autodesk Inc. Dynamic parameter interface
US20070165045A1 (en) * 2004-01-12 2007-07-19 Allegorithmic Method and tool for modifying a procedural map
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7671862B1 (en) 2004-05-03 2010-03-02 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7441206B2 (en) * 2004-06-14 2008-10-21 Medical Simulation Corporation 3D visual effect creation system and method
WO2006020001A2 (en) * 2004-07-15 2006-02-23 The Regents Of The University Of California Fast multi-pass partitioning via priority based scheduling
US7392506B2 (en) * 2004-07-29 2008-06-24 International Business Machines Corporation Method, system and article of manufacture for testing a software application having a text-based screen with a test tool for a software application having a graphical user interface which uses objects
US20060082577A1 (en) * 2004-10-20 2006-04-20 Ugs Corp. System, method, and computer program product for dynamic shader generation
US7710418B2 (en) * 2005-02-04 2010-05-04 Linden Acquisition Corporation Systems and methods for the real-time and realistic simulation of natural atmospheric lighting phenomenon
US7280107B2 (en) * 2005-06-29 2007-10-09 Microsoft Corporation Procedural graphics architectures and techniques
US7414623B2 (en) * 2005-06-29 2008-08-19 Microsoft Corporation Adaptive sampling for procedural graphics
AU2006265815A1 (en) * 2005-07-01 2007-01-11 Mental Images Gmbh Computer graphics shader systems and methods
US7496416B2 (en) * 2005-08-01 2009-02-24 Luxology, Llc Input/output curve editor
US8743116B1 (en) * 2006-02-24 2014-06-03 Microsoft Corporation Shader network
US7595963B1 (en) 2006-06-07 2009-09-29 Western Digital Technologies, Inc. Head gimbal assembly including a flexure with a first conductive trace disposed between a slider and a dielectric layer
US8203563B2 (en) * 2006-06-16 2012-06-19 Nvidia Corporation System, method, and computer program product for adjusting a programmable graphics/audio processor based on input and output parameters
US8493388B2 (en) * 2006-08-09 2013-07-23 Siemens Medical Solutions Usa, Inc. Modular volume rendering using visual programming
US7663621B1 (en) * 2006-11-03 2010-02-16 Nvidia Corporation Cylindrical wrapping using shader hardware
KR100898991B1 (ko) * 2006-12-02 2009-05-27 한국전자통신연구원 3차원 그래픽 시스템의 쉐이더 제공 및 변환 장치
US8355021B2 (en) * 2007-05-17 2013-01-15 Siemens Aktiengesellschaft Fused volume rendering
FR2917199B1 (fr) * 2007-06-05 2011-08-19 Thales Sa Generateur de code source pour une carte graphique
US20100259537A1 (en) * 2007-10-12 2010-10-14 Mvtec Software Gmbh Computer vision cad models
US9321281B2 (en) * 2009-03-27 2016-04-26 Electronics For Imaging, Inc. Selective ink cure
KR20110066011A (ko) * 2009-12-10 2011-06-16 한국전자통신연구원 이미지 특성 추출을 이용한 유사 쉐이더 검색장치 및 방법
JP5123353B2 (ja) 2010-05-06 2013-01-23 株式会社スクウェア・エニックス リアルタイムシーンを照明し,発見するバーチャルフラッシュライト
US20130063460A1 (en) * 2011-09-08 2013-03-14 Microsoft Corporation Visual shader designer
US9224239B2 (en) 2013-03-14 2015-12-29 Dreamworks Animation Llc Look-based selection for rendering a computer-generated animation
US9171401B2 (en) 2013-03-14 2015-10-27 Dreamworks Animation Llc Conservative partitioning for rendering a computer-generated animation
US9659398B2 (en) 2013-03-15 2017-05-23 Dreamworks Animation Llc Multiple visual representations of lighting effects in a computer animation scene
US9626787B2 (en) 2013-03-15 2017-04-18 Dreamworks Animation Llc For node in render setup graph
US9230294B2 (en) 2013-03-15 2016-01-05 Dreamworks Animation Llc Preserving and reusing intermediate data
US9811936B2 (en) 2013-03-15 2017-11-07 Dreamworks Animation L.L.C. Level-based data sharing for digital content production
US9208597B2 (en) 2013-03-15 2015-12-08 Dreamworks Animation Llc Generalized instancing for three-dimensional scene data
US9514562B2 (en) 2013-03-15 2016-12-06 Dreamworks Animation Llc Procedural partitioning of a scene
US9589382B2 (en) 2013-03-15 2017-03-07 Dreamworks Animation Llc Render setup graph
US9218785B2 (en) 2013-03-15 2015-12-22 Dreamworks Animation Llc Lighting correction filters
US20140354658A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Shader Function Linking Graph
WO2016137974A1 (en) 2015-02-23 2016-09-01 Wabash National, L.P. Composite refrigerated truck body and method of making the same
US10403025B2 (en) 2015-06-04 2019-09-03 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
EP3101650A1 (de) * 2015-06-04 2016-12-07 Samsung Electronics Co., Ltd. Verfahren und vorrichtung zur verschachtelung
US10089775B2 (en) * 2015-06-04 2018-10-02 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
US10549789B2 (en) 2015-09-08 2020-02-04 Wabash National, L.P. Joining a rail member to a composite trailer structure
MX2018002939A (es) 2015-09-08 2018-06-18 Wabash National Lp Union de ensamble de suspension a una estructura de remolque compuesta.
MX2016013715A (es) 2015-10-23 2017-12-20 Wabash National Lp Moldes extruidos y metodos para fabricar paneles de camion compuestos.
US10479419B2 (en) 2016-02-24 2019-11-19 Wabash National, L.P. Composite refrigerated semi-trailer and method of making the same
US10329763B2 (en) 2016-02-24 2019-06-25 Wabash National, L.P. Composite floor structure and method of making the same
US10239566B2 (en) 2016-02-24 2019-03-26 Wabash National, L.P. Composite floor for a dry truck body
US10478720B2 (en) * 2016-03-15 2019-11-19 Unity IPR ApS Dynamic assets for creating game experiences
US10479405B2 (en) 2016-08-31 2019-11-19 Wabash National, L.P. Mounting bracket for a composite truck body floor
US10407103B2 (en) 2017-01-11 2019-09-10 Wabash National, L.P. Mounting bracket for a truck body and method for mounting a composite truck body to a chassis
US10445319B2 (en) * 2017-05-10 2019-10-15 Oracle International Corporation Defining subgraphs declaratively with vertex and edge filters
CA3013741C (en) 2017-08-10 2023-09-12 Wabash National, L.P. Transverse beam for composite floor structure and method of making the same
CA3213679A1 (en) 2017-08-25 2019-02-25 Wabash National, L.P. Composite floor structure with embedded hardpoint connector and method of making the same
US10475151B2 (en) * 2017-11-06 2019-11-12 Basemark Oy Graphics engine resource management and allocation system
US10467722B2 (en) * 2017-11-06 2019-11-05 Basemark Oy Combined rendering and computing resource allocation management system
US11400987B2 (en) 2018-08-15 2022-08-02 Wabash National, L.P. Slide rail assembly and landing gear assembly with embedded hardpoint connectors
CA3052934C (en) 2018-08-31 2023-07-04 Wabash National, L.P. Low-profile slide rail assembly with embedded or laminated hardpoint connectors
US11358652B2 (en) 2018-10-22 2022-06-14 Wabash National, L.P. Composite floor with integrated conduit

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4679077A (en) * 1984-11-10 1987-07-07 Matsushita Electric Works, Ltd. Visual Image sensor system
EP0528631B1 (de) * 1991-08-13 1998-05-20 Xerox Corporation Elektronische Bilderzeugung
AU6665194A (en) * 1993-08-24 1995-03-21 Taligent, Inc. Object oriented shading
US5978497A (en) * 1994-09-20 1999-11-02 Neopath, Inc. Apparatus for the identification of free-lying cells
JP3015262B2 (ja) * 1994-09-27 2000-03-06 松下電器産業株式会社 3次元形状データ加工装置
US5745601A (en) * 1995-07-31 1998-04-28 Neopath, Inc. Robustness of classification measurement apparatus and method
US6057859A (en) * 1997-03-31 2000-05-02 Katrix, Inc. Limb coordination system for interactive computer animation of articulated characters with blended motion data
US6215495B1 (en) * 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
US6496190B1 (en) * 1997-07-02 2002-12-17 Mental Images Gmbh & Co Kg. System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system
US6191787B1 (en) * 1998-02-10 2001-02-20 Schlumberger Technology Corporation Interactively constructing, editing, rendering and manipulating geoscience models
US6266053B1 (en) * 1998-04-03 2001-07-24 Synapix, Inc. Time inheritance scene graph for representation of media content
US6578197B1 (en) * 1998-04-08 2003-06-10 Silicon Graphics, Inc. System and method for high-speed execution of graphics application programs including shading language instructions
US6478735B1 (en) * 1999-01-28 2002-11-12 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Physiological feedback method and system

Also Published As

Publication number Publication date
CA2294233C (en) 2007-06-05
WO1999001846A1 (en) 1999-01-14
DE69832611D1 (de) 2006-01-05
US6606092B2 (en) 2003-08-12
DK0993659T3 (da) 2006-03-27
US20030222870A1 (en) 2003-12-04
CA2294233A1 (en) 1999-01-14
AU752048B2 (en) 2002-09-05
US7173617B2 (en) 2007-02-06
EP0993659B1 (de) 2005-11-30
AU8123798A (en) 1999-01-25
ES2255167T3 (es) 2006-06-16
US20030001844A1 (en) 2003-01-02
US6496190B1 (en) 2002-12-17
EP0993659A1 (de) 2000-04-19
ATE311637T1 (de) 2005-12-15
JP2001509620A (ja) 2001-07-24

Similar Documents

Publication Publication Date Title
DE69832611T2 (de) Computergrafiksystem
DE69828974T2 (de) Verfahren und system zur veränderung und aufbereitung dreidimensionaler animationen in einer nicht-linearen editionsumgebung
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE19714101C2 (de) Verfahren und Vorrichtung zum Bearbeiten von Bilddaten
DE112007002991B4 (de) Computergraphikschattenvolumen unter Verwendung von hierarchischem Okklusions-Culling
DE69830767T2 (de) Verfahren und Vorrichtung zum Zusammensetzen geschichteter synthetischer graphischer Filter
DE19825302B4 (de) System zur Einrichtung einer dreidimensionalen Abfallmatte, welche eine vereinfachte Einstellung räumlicher Beziehungen zwischen realen und virtuellen Szeneelementen ermöglicht
DE69737780T2 (de) Verfahren und Vorrichtung zur Bildverarbeitung
US6570578B1 (en) System for automatic generation of selective partial renderings of complex scenes
DE69919497T2 (de) Verfahren und Gerät zur Volumendarstellung mit mehreren Tiefenpuffern
DE3706509A1 (de) Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem
DE102009007334A1 (de) Front-End für universelles Rendering Framework
DE19906995A1 (de) Erzeugen von Anpaßdaten für einen virtuellen Szenenaufbau
DE102017007967A1 (de) Verarbeiten und rendern eines dreidimensionalen Modells
DE602004012341T2 (de) Verfahren und System zur Bereitstellung einer Volumendarstellung eines dreidimensionalen Objektes
DE102020108358A1 (de) Wiedergeben von szenen mit einer kombination aus strahlverfolgung und rasterung
DE69732465T2 (de) Bildverarbeitungsgerät und -verfahren
DE69830766T2 (de) Verfahren und Vorrichtung zum Bestimmen des Anwendungsumfangs geschichteter synthetischer graphischer Filter
DE102022112888A1 (de) Benutzerschnittstellen und Verfahren zum Erzeugen eines neuen Artefakts auf der Grundlage vorhandener Artefakte
DE19581872B4 (de) Dreidimensionales Graphikaufbereitungssystem
DE10336492A1 (de) Vorrichtung zur Bearbeitung eines zweidimensionalen Bildes in einem dreidimensionalen Raum
DE10250602B4 (de) System zum Erzeugen einer synthetischen Szene
Hessler et al. A flexible environment for the visualization of three-dimensional biological structures
CN114140566A (zh) 一种建筑图纸设计效果实时渲染方法
DE10154794A1 (de) Synchronisierte Visualisierung von Teilszenen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: MENTAL IMAGES GMBH, 10623 BERLIN, DE