ES2255167T3 - Sistema grafico por ordenador. - Google Patents

Sistema grafico por ordenador.

Info

Publication number
ES2255167T3
ES2255167T3 ES98930966T ES98930966T ES2255167T3 ES 2255167 T3 ES2255167 T3 ES 2255167T3 ES 98930966 T ES98930966 T ES 98930966T ES 98930966 T ES98930966 T ES 98930966T ES 2255167 T3 ES2255167 T3 ES 2255167T3
Authority
ES
Spain
Prior art keywords
shader
node
scene
type
computer
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
ES98930966T
Other languages
English (en)
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
Application granted granted Critical
Publication of ES2255167T3 publication Critical patent/ES2255167T3/es
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

Abstract

Se describe un sistema gráfico informatizado en el cual un nuevo tipo de entidad, referenciado como "fenómeno", puede ser creado, instanciado y utilizado para formar una imagen de una escena. Un fenómeno es un DAG degradador encapsulado que comprende uno o más nodos, cada uno de los cuales comprende un degradador o un conjunto encapsulados de los DAG que se interconectan de forma que puedan cooperar, que se instancian y se unen a entidades de la escena que se crean durante el procedimiento de definición de la escena para definir diversos tipos de características de la escena. Los fenómenos seleccionados para su utilización por un operador en referencia a una escena pueden estar predefinidos, o pueden construirse a partir de nodos de degradadores de base, por el operador utilizando un creador de fenómenos. El editor de fenómenos permite que el operador vea los efectos producidos por las diferentes configuraciones de los valores de los parámetros que se seleccionan.

Description

Sistema gráfico por ordenador.
Campo de la invención
La invención se refiere, en general, al campo de los gráficos por ordenador, diseño asistido por ordenador y similares y, más particularmente, a sistemas y métodos para generar sistemas de shader y usar los sistemas de shader así generados para renderizar una imagen o una escena. La invención, en particular, proporciona un nuevo tipo de componente útil en un sistema de gráficos por ordenador, identificado en adelante como un "phenomenon", el cual comprende un sistema que incluye un DAG ("gráfico acíclico dirigido") de shaders empaquetado y encapsulado o conjunto de DAGs de shaders cooperadores, cada uno de los cuales puede incluir uno o más shaders, y que es generado y encapsulado para ayudar a definir, al menos, una porción de escena, de una manera que asegurará que los shaders pueden cooperar correctamente durante la renderización.
Antecedentes de la invención
En gráficos por ordenador, diseño geométrico asistido por ordenador y similares, un artista, dibujante o similar (al que de forma general se hace referencia en adelante como un "operador") trata de generar una representación tridimensional de objetos en una escena, como la mantenida por un ordenador, y más tarde renderizar las correspondientes imágenes bidimensionales de los objetos de la escena desde una o más orientaciones. Al principio, fase de generación de la representación, convencionalmente, los sistemas de gráficos por ordenador generan una representación tridimensional a partir de, por ejemplo, varios dibujos lineales bidimensionales que comprenden los contornos y/o secciones transversales de los objetos de la escena y, aplicando varias operaciones a tales líneas que darán como resultado superficies bidimensionales en un espacio tridimensional y la modificación subsiguiente de los parámetros y puntos de control de tales superficies para corregir o, de otro modo, modificar la forma de la representación resultante del objeto. Durante este proceso, el operador también define diferentes propiedades de las superficies de los objetos, la estructura y características de las fuentes de luz que iluminan la escena y la estructura y características de una o más cámaras simuladas que generan las imágenes. Después de que la estructura y las características de la escena, fuente(s) de luz y cámara(s) han sido definidas, en una segunda fase, un operador habilita al ordenador para renderizar una imagen de la escena desde una dirección de visión específica.
Los objetos de la escena, fuente(s) de luz y cámara(s) son definidos, en la primera fase de definición de la escena, mediante las correspondientes representaciones matemáticas multidimensionales que incluyen, al menos, las tres dimensiones espaciales y, posiblemente, una dimensión de tiempo. Las representaciones matemáticas están almacenadas típicamente en una estructura de datos en forma de árbol. Las propiedades de las superficies de los objetos, a su vez, son definidas mediante "árboles de shaders", cada uno de los cuales incluye uno o más shaders los cuales, durante la segunda fase de renderización de la escena, habilitan al ordenador para renderizar las correspondientes superficies, proporcionando esencialmente valores de color representativos de los colores de las respectivas superficies. Los shaders de un árbol de shaders son generados por un operador o son proporcionados a priori por un sistema de gráficos por ordenador, en un lenguaje de alto nivel tal como C o C++, y juntos habilitan al ordenador para renderizar una imagen de una superficie correspondiente en la segunda fase de renderización de la escena.
Los árboles de shaders fueron presentados por R. Cook en el artículo "Árbol de shaders", ACM Computer Graphics, vol. 18, no. 3, julio 1.984, y redefinidos en el lenguaje de shading RenderMan, presentado en "A Language for Shading and Lighting Calculations" por P. Hanrahan u otros, ACM Computer Graphics, vol. 24, no. 4, abril 1.991. Otro lenguaje y sistema de shading está descrito por B. Corrie y otros en el Computer Science Technical Report TR-CS-93-02 del Computer Sciences Laboratory of The Australian National University, titulado "Data Shader Language and Interface Specification", junio 1.993.
Varios problemas surgen de la generación y uso de shaders y árboles de shaders según se proveen actualmente en las herramientas para gráficos por ordenador. Primero, los shaders generalmente no pueden cooperar unos con otros al menos que estén programados para hacerlo. Típicamente, los valores de entrada son valores constantes, lo que limita la flexibilidad de los shaders y la capacidad para renderizar características de una manera interesante y viva. Además, generalmente es difícil establecer sistemas de shaders cooperadores que puedan obtener sus valores de entrada desde una fuente común.
La presente invención es como se reivindica en las reivindicaciones.
La invención proporciona un sistema de gráficos por ordenador nuevo y mejorado y un método que provee una cooperación aumentada entre shaders facilitando la generación de DAGs de shaders empaquetados y encapsulados, cada uno de los cuales puede incluir uno o más shaders, generados de una manera que asegura que los shaders de los DAGs de shaders pueden cooperar correctamente durante la renderización.
En un breve resumen, se proporciona un sistema de gráficos por ordenador en el cual un nuevo tipo de entidad, a la que se hará referencia como "phenomenon", puede crearse, instanciarse y usarse para renderizar una imagen de una escena. Un phenomenon es un DAG de shaders encapsulado que comprende uno o más nodos que, a su vez, comprenden cada uno un shader, o un conjunto encapsulado de DAGs de ese tipo que están interconectados de forma que cooperen, los cuales son instanciados y asignados a entidades de la escena que son creadas durante el proceso de definición de la escena para definir diversos tipos de características de una escena, incluyendo características de color y texturas de las superficies de objetos de la escena, características de volúmenes y geometrías de la escena, características de fuentes de luz que iluminan la escena, características de cámaras simuladas que serán simuladas durante la renderización y otras numerosas características que son útiles al renderizar.
Los phenomena seleccionados para su uso por un operador en relación con una escena pueden estar predefinidos o pueden ser construidos a partir de nodos de shader base por un operador que usa un creador de phenomena. El creador de phenomena asegura que los phenomena son construidos de forma que los shaders del DAG o DAGs cooperadores pueden cooperar correctamente durante la renderización de una imagen de la escena.
Antes de ser aplicado a una escena, un phenomenon es instanciado proporcionando valores, o funciones que son usadas para definir los valores, para cada uno de los parámetros del phenomenon que usa un editor de phenomena.
Después de que una representación de una escena ha sido definida y los phenomena aplicados, un generador de imágenes de escena puede generar una imagen de la escena. En esa operación, el generador de la imagen de la escena opera en una serie de fases que incluyen una fase de preprocesado, una fase de renderización y una fase opcional de postprocesado. Durante la fase de preprocesado, el generador de la imagen de la escena puede ejecutar operaciones de preprocesado tales como mapeado de sombras y fotones, resolución de herencia múltiple y similares. El generador de la imagen de la escena puede ejecutar operaciones de preprocesado si, por ejemplo, un phenomenon aplicado a la escena incluye un shader de geometría para generar la geometría definida por él para la escena. Durante la fase de renderización, el generador de la imagen de la escena renderiza la imagen. Durante la fase de postprocesado, el generador de la imagen de la escena puede ejecutar operaciones de postprocesado si, por ejemplo, un phenomenon aplicado a la escena incluye un shader que define operaciones de postprocesado, tales como cálculos de profundidad de campo o de desenfoque de movimiento que son dependientes de la información de velocidad y profundidad almacenada en relación con cada valor de pixel de la imagen renderizada.
Breve descripción de los dibujos
Esta invención está indicada con minuciosidad en las reivindicaciones anexas. Lo anterior y más ventajas de esta invención pueden ser mejor entendidas refiriéndose a la descripción siguiente tomada en conjunto con los dibujos que acompañan, en los cuales:
la Figura 1 representa un sistema de gráficos por ordenador que proporciona una cooperación aumentada entre shaders facilitando la generación de DAGs de shaders empaquetados y encapsulados, cada uno de los cuales puede incluir uno o más shaders, los cuales DAGs de shaders son generados de una manera que aseguran que los shaders del DAG de shaders pueden cooperar correctamente durante la renderización, construido de acuerdo con la invención;
la Figura 2 es un diagrama funcional de bloques del sistema de gráficos por ordenador representado en la Figura 1;
la Figura 3 representa una interfaz gráfica de usuario para una realización del creador de phenomena usado en el sistema de gráficos por ordenador cuyo diagrama funcional de bloques se representa en la Figura 2;
la Figura 4 representa gráficamente un phenomenon ilustrativo generado usando el creador de phenomena representado en las Figuras 2 y 3;
la Figura 5 representa una interfaz gráfica de usuario para una realización del editor de phenomena usado en el sistema de gráficos por ordenador cuyo diagrama funcional de bloques se representa en la Figura 2;
las Figuras 6A y 6B representan detalles de la interfaz gráfica de usuario representada en la Figura 5; y
la Figura 7 es un diagrama de flujo que representa las operaciones ejecutadas por una porción de generación de la imagen de la escena del sistema de gráficos por ordenador representado en la Figura 2 para generar una imagen de una escena.
Descripción detallada de una realización ilustrativa
La Figura 1 adjunta aquí representa elementos que comprenden un sistema 10 de gráficos por ordenador construido de acuerdo con la invención. El sistema 10 de gráficos por ordenador proporciona una cooperación aumentada entre shaders facilitando la generación de nuevos componentes de gráficos por ordenador, a los que se hará referencia aquí como "phenomenon" (en singular) o "phenomena" (en plural), que son usados para definir características de una escena para su uso en su renderización. Un phenomenon es un sistema empaquetado y encapsulado que comprende uno o más shaders, los cuales están organizados e interconectados en forma de uno o más gráficos acíclicos dirigidos ("DAGs"), con cada DAG que incluye uno o más shaders. Los phenomena generados por el sistema 10 de gráficos por ordenador son generados de tal manera que se asegura que el shader o los shaders de cada DAG de shaders pueden cooperar correctamente durante la renderización, para facilitar la renderización de efectos visuales realistas o complejos. Además, para los phenomena que comprenden múltiples DAGs de shaders que cooperan, el sistema 10 de gráficos por ordenador genera los phenomena de tal forma que los shaders de todos DAGs de shaders pueden cooperar correctamente durante la renderización para facilitar la renderización de efectos visuales progresivamente realistas o complejos.
En referencia a la Figura 1, el sistema 10 de gráficos por ordenador de la realización incluye un ordenador que, a su vez, incluye un módulo procesador 11 y elementos de interfaz de operador que comprenden componentes de entrada de datos del operador tales como un teclado 12A y/o un ratón 12B (generalmente identificados como elemento(s) de entrada de datos del operador 12) y un elemento de salida de datos para el operador tal como un dispositivo de visualización de vídeo 13. El sistema 10 de ordenador ilustrativo es de arquitectura de ordenador convencional de programa almacenado. El módulo procesador 11 incluye, por ejemplo, procesador, memoria y dispositivos de almacenamiento masivo tales como elementos de almacenamiento en disco y/o cinta (no mostrados por separado) que ejecutan las operaciones de procesado y almacenamiento en relación con los datos digitales suministrado a los mismos. El (los) elemento(s) 12 de entrada de datos del operador está(n) previsto(s) para permitir al operador introducir información para procesar. El dispositivo 13 de visualización de vídeo está previsto para mostrar visualmente al operador la información de salida generada por el módulo procesador 11 sobre una pantalla 14, incluyendo los datos que el operador puede introducir para procesar, información que el operador puede introducir para controlar el procesado, así como información generada durante el procesado. El módulo procesador 11 genera información para mostrar visualmente mediante el dispositivo de visualización de vídeo 13 usando la denominada "interfaz gráfica de usuario" ("GUI"), en la cual se visualiza información para diferentes programas de aplicación usando varias "ventanas". Aunque el sistema 10 de ordenador se muestra de forma que comprende determinados componentes, tales como el teclado 12A y el ratón 12B para recibir la información de entrada de un operador y un dispositivo de visualización de vídeo 13 para mostrar visualmente información de salida al operador, se apreciará que el sistema 10 de ordenador puede incluir una variedad de componentes añadidos a o sustitutivos de los representados en la Figura 1.
Además, el módulo procesador 11 puede incluir uno o más puertos de red, generalmente identificados por la referencia numérica 14, los cuales están conectados a enlaces de comunicaciones que conectan el sistema 10 de ordenador a una red de ordenadores. Los puertos de red habilitan al sistema 10 de ordenador para transmitir información a, y recibir información desde, otros sistemas de ordenador y otros dispositivos que estén en la red. En una red típica organizada de acuerdo con, por ejemplo, el paradigma cliente-servidor, ciertos sistemas de ordenador de la red están designados como servidores, los cuales almacenan datos y programas (en general, "información") para su procesado por los otros, sistemas de ordenador clientes, habilitando con ello a los sistemas de ordenador cliente para compartir de forma conveniente la información. Un sistema de ordenador cliente que necesita acceso a la información mantenida por un servidor concreto habilitará al servidor para descargarle la información a través de la red. Después de procesar los datos, el sistema de ordenador cliente puede también devolver los datos procesados al servidor para su almacenamiento. Además de sistemas de ordenador (que incluyen los servidores y clientes descritos más arriba), una red puede incluir también, por ejemplo, impresoras y dispositivos de fax, dispositivos de almacenamiento y distribución de audio o vídeo digitales y otros similares los cuales pueden ser compartidos entre los diferentes sistemas de ordenador conectados a la red. Los enlaces de comunicaciones que interconectan los sistemas de ordenador de la red pueden, como es convencional, comprender cualquier medio de transporte de información conveniente, incluyendo cables, fibras ópticas u otros medios para transportar señales entre los sistemas de ordenador. Los sistemas de ordenador transfieren información a través de la red por medio de mensajes transferidos a través de los enlaces de comunicaciones incluyendo, en cada mensaje, información y un identificador que identifica el dispositivo que debe recibir el
mensaje.
Como se reseñó más arriba, el sistema 10 de gráficos por ordenador proporciona una cooperación aumentada entre shaders facilitando la generación de phenomena que comprenden DAGs de shaders empaquetados y encapsulados o DAGs de shaders que cooperan, con cada uno de los DAG de shaders que comprende al menos un shader, el cual define características de una escena tridimensional. Pueden usarse phenomena para definir diversos tipos de características de una escena, incluyendo características de color y textura de las superficies de los objetos de la escena, características de volúmenes y geometrías de la escena, características de fuentes de luz que iluminan la escena, características de cámaras simuladas u otros dispositivos de grabación de imágenes que serán simulados durante la renderización y otras numerosas características que son útiles al renderizar como resultará evidente a partir de la descripción siguiente. Los phenomena son construidos de forma que aseguran que los shaders del DAG o los DAGs que cooperan pueden cooperar correctamente durante la renderización de una imagen de la escena.
La Figura 2 representa un diagrama funcional de bloques del sistema 10 de gráficos por ordenador usado en una realización de la invención. Como se representa en la Figura 2, el sistema 10 de gráficos por ordenador incluye dos porciones generales, que incluyen una porción 20 de generación de la estructura de la escena y una porción 21 de generación de la imagen de la escena. La porción 20 de generación de la estructura de la escena es usada por un artista, dibujante o similar (en general, un "operador") durante la fase de generación de entidades de escena para generar una representación de varios elementos que serán usados por la porción 21 de generación de la imagen de la escena al renderizar una imagen de la escena, lo cual puede incluir, por ejemplo, los objetos que están en la escena y las características de sus superficies, la estructura y características de la fuente o las fuentes de luz que iluminan la escena y la estructura y características de un dispositivo determinado, tal como una cámara, que será simulado al generar la imagen cuando la imagen es renderizada. La representación generada por la porción 20 de generación de la estructura de la escena está en la forma de una representación matemática que es almacenada en la base de datos 22 de objetos de la escena. La representación matemática es evaluada por la porción 21 de renderización de imagen para su visualización por el operador. La porción 20 de generación de la estructura de la escena y la porción 21 de generación de la imagen de la escena pueden residir en o formar parte del mismo ordenador, en cuyo caso la base de datos 22 de objetos de la escena puede también residir en el mismo ordenador o, alternativamente, en un servidor para el cual el ordenador 20 es un cliente. Alternativamente, las porciones 20 y 21 pueden residir en o formar parte de dos ordenadores diferentes, en cuyo caso la base de datos 22 de objetos de la escena puede residir bien en cualquiera de los ordenadores o en el servidor de ambos.
Más particularmente, la porción 20 de generación de la estructura de la escena es usada por el operador para generar una representación matemática que define, comprendiendo las estructuras geométricas de los objetos de la escena, las ubicaciones y características geométricas de las fuentes de luz que iluminan la escena, y las ubicaciones, características geométricas y ópticas de las cámaras que van a ser simuladas al generar las imágenes que van a ser renderizadas. La representación matemática, preferiblemente, define las tres dimensiones espaciales y así identifica la ubicación de los objetos en la escena y las características de los objetos. Los objetos pueden ser definidos atendiendo a sus características en una, dos o tres dimensiones, que incluyen líneas rectas o curvas insertadas en un espacio tridimensional, superficies bidimensionales insertadas en un espacio tridimensional, una o más superficies tridimensionales delimitadas y/o cerradas o cualquier combinación de ellas. Además, las representaciones matemáticas pueden definir también una dimensión temporal, la cual puede ser particularmente útil en relación con la animación por ordenador, en la cual se considera que los objetos y sus respectivas características se mueven en función del tiempo.
Además de la representación matemática de la estructura geométrica del objeto u objetos de la escena a ser renderizada, la representación matemática define, además, las una o más fuentes de luz que iluminan la escena y una cámara. La representación matemática de una fuente de luz define, en particular, la ubicación y/o la dirección de la fuente de luz con relación a la escena y las características estructurales de la fuente de luz, que incluyen si la fuente de luz es una fuente puntual, una línea recta o curva, una superficie plana o curvada o similar. La representación matemática de la cámara define, en particular, los parámetros convencionales de una cámara, que incluyen la objetivo o objetivo, la longitud focal, la orientación del plano de la imagen, etc.
La porción 20 de generación de la estructura de la escena también facilita la generación de phenomena, lo que será descrito con detalle más abajo, y la asociación de phenomena a los elementos de escena correspondientes. Los phenomena definen, en general, otra información que se requiere para completar la definición de la escena y que será usada en la renderización. Esta información incluye, pero no está limitada a, características de los colores, texturas, etc. de las superficies de las entidades geométricas definidas por la porción 20 de generación de la estructura de la escena. Un phenomenon puede incluir representaciones matemáticas u otros objetos que, cuando son evaluados durante la operación de renderización, permitirán al ordenador generar la imagen renderizada para mostrar la visualización de sus respectivas superficies de la manera deseada. La porción 20 de generación de la estructura de la escena, bajo control del operador, asocia efectivamente los phenomena a las representaciones matemáticas para los respectivos elementos (esto es, objetos, superficies, volúmenes y similares) con los cuales deben ser usados aquellos, "aplicando" efectivamente los phenomena a los elementos respectivos.
Después de que las representaciones matemáticas han sido generadas por la porción 20 de generación de la estructura de la escena y almacenadas en la base de datos 22 de representación de escena, la porción 21 de generación de la imagen de la escena es usada por un operador durante una fase de renderización para generar una imagen de la escena en, por ejemplo, la unidad 13 de visualización en vídeo (Figura 1).
La porción 20 de generación de la estructura de la escena incluye varios elementos, incluyendo un generador 23 de representación de entidad geométrica, un creador 24 de phenomena, una base de datos 25 de phenomena, un editor 26 de phenomena, una base de datos 32 de nodos de shader base, una base de datos 33 de instancias de phenomena y un ensamblador de escena 34, todos los cuales operan bajo control de la información de entrada del operador introducida a través de una interfaz 27 de operador. La interfaz 27 de operador puede incluir, generalmente, los dispositivos 12 de introducción de datos del operador y la unidad 13 de visualización de vídeo del sistema 10 de gráficos por ordenador como se describió más arriba en relación con la Figura 1. El generador 23 de representaciones de entidades geométricas, bajo el control de los datos introducidos por operador desde la interfaz 27 de operador, facilita la generación de la representación matemática de los objetos de la escena y de la o las fuente(s) de luz y la cámara descritos más arriba. El creador 24 de phenomena proporciona un mecanismo por medio del cual el operador puede, usando la interfaz 27 de operador y los nodos de shader base de la base de datos 32 de nodos de shader de base, generar phenomena que pueden ser usados en relación con la escena o de otra manera (como se describirá más abajo). Después de que se genera un phenomenon por el creador 24 de phenomena, éste (es decir, el phenomenon) será almacenado en la base de datos 25 de phenomena. Después de que un phenomenon ha sido almacenado en la base de datos 25 de phenomena, una instancia del phenomenon puede ser creada por el editor 26 de phenomena. En esa operación, el operador usará el editor 26 de phenomena para proporcionar valores para los diferentes parámetros del phenomenon (si es el caso). Por ejemplo, si el phenomenon ha sido creado para proporcionar características, tales como balance de color, granulado de textura, brillo o similar, los cuales serán establecidos, ajustados o modificados basándose en los datos de entrada del operador en el momento de la aplicación o más tarde, el editor 26 de phenomena permite al operador, a través de la interfaz 27 de operador, establecer, ajustar o modificar la característica concreta. Los valores para los parámetros o pueden ser fijos o pueden variar de acuerdo con una función de una variable (por ejemplo, tiempo). El operador, usando el ensamblador 34 de escena, puede aplicar instancias de phenomena generadas usando el editor 26 de phenomena a elementos de la escena según son generados por el generador 23 de representación de entidad geométrica.
Aunque se ha descrito que el editor 26 de phenomena recupera phenomena de la base de datos 25 de phenomena los cuales han sido generados por el creador 24 de phenomena de la porción 20 de generación de la estructura de la escena del sistema 10 de gráficos por ordenador, se apreciará que uno o más de los phenomena, quizá todos, provistos en el sistema 10 de gráficos por ordenador pueden estar predefinidos y haber sido creados por otros dispositivos (no mostrados) y almacenados en la base de datos 25 de phenomena para su uso por el editor 26 de phenomena. En tal caso, el operador, que controla el editor de phenomena a través de la interfaz 27 de operador, puede seleccionar phenomena apropiados predefinidos para su aplicación a la escena.
La porción 21 de generación de la imagen de la escena incluye varios componentes incluyendo un generador 30 de imágenes y una interfaz 31 de operador. Si la porción 21 de generación de la imagen de la escena forma parte del mismo ordenador que la porción 20 de generación de la estructura de la escena, la interfaz 31 de operador puede, pero no necesita, comprender los mismos componentes que la interfaz 27 de operador. Por otro lado, si la porción 21 de generación de la imagen de la escena forma parte de un ordenador diferente del ordenador en el que está la porción de generación de la estructura de la escena, la interfaz 31 de operador comprenderá, generalmente, componentes diferentes que los de la interfaz 27 de operador, aunque los componentes de las dos interfaces 31 y 27 de operador pueden ser similares. El generador 30 de imágenes, bajo control de la interfaz 31 de operador, recupera la representación de la escena a ser renderizada de la base de datos 22 de representaciones de escena y genera una imagen renderizada para su visualización en la unidad de visualización de vídeo de la interfaz 31 de operador.
Antes de ir más adelante, sería de ayuda describir más un "phenomenon" usado en relación con la invención. Un phenomenon proporciona información que, añadida a la representación matemática generada por el generador 23 de representaciones de entidades geométricas, se usa para completar la definición de la escena que será usada en la renderización, incluyendo, pero no limitándose a, características de los colores, las texturas y los volúmenes cerrados, etc. de las superficies de las entidades geométricas definidas por la porción 20 de generación de la estructura de la escena. Un phenomenon comprende uno o más nodos interconectados en forma de un gráfico acíclico dirigido ("DAG") o una pluralidad de DAGs que cooperan. Uno de los nodos es un nodo raíz primario que se usa para aplicando el phenomenon a una entidad de la escena o, más específicamente, a una representación matemática de la entidad. Otros tipos de nodos que pueden usarse en un phenomenon comprenden nodos raíz opcionales y nodos de shader. Los nodos de shader pueden comprender cualquiera de una pluralidad de shaders convencionales, que incluyen shader simples convencionales, así como shaders de textura, shaders de material, shaders de volumen, shaders de ambiente, shaders de sombra y shaders de desplazamiento y shaders de material que pueden usarse en relación con la generación de una representación que va a ser renderizada. Además, varios otros tipos de nodos shader pueden usarse en un phenomenon, incluyendo
(i) Shaders de geometría, que pueden usarse para añadir objetos geométricos a la escena. Los shaders de geometría comprenden, esencialmente, representaciones matemáticas estáticas o procedimentales de entidades en el espacio tridimensional, similares a las representaciones que son generadas por el generador 23 de representaciones de entidades geométricas en relación con entidades de la escena, excepto en que pueden ser proporcionadas en un momento previo al procesado para, por ejemplo, definir las respectivas regiones en las cuales van a estar delimitados otros shaders usados en el correspondiente phenomenon. Un shader de geometría, esencialmente, tiene acceso a los elementos de construcción de la escena del generador 23 de representaciones de entidades geométricas de escena de forma que puede alterar la representación de escena según ésta está almacenada en la base de datos de objetos de escena para, por ejemplo, modificar o crear nuevos elementos geométricos de la escena de manera estática o procedimental. Debe notarse que un phenomenon que conste enteramente de un DAG de shaders de geometría o de un juego de DAGs de shaders de geometría que cooperan pueden usarse para representar objetos de una escena de manera procedimental. Esto es, en contraste con el modelado típico, el cual se lleva a cabo en un sistema de modelado por un operador humano mediante la ejecución de una secuencia de operaciones de modelado para obtener la representación deseada de un objeto en el ordenador. Por lo tanto, en esencia, un phenomenon de geometría representa una operación parametrizada abstracta de modelado encapsulada y automatizada. Una instancia de un phenomenon de geometría (esto es, un phenomenon de geometría asociado a un conjunto de valores paramétricos que o bien son fijos o varían con el tiempo o con algo similar) de una manera predeterminada dará como resultado una extensión de escena geométrica específica cuando es evaluado por el generador 30 de imágenes de la escena en el tiempo de ejecución durante la fase de preprocesado.
(ii) Shaders de fotones, que pueden usarse para controlar los recorridos de fotones de la escena y las características de interacción de los fotones con las superficies de los objetos de la escena, tales como absorción, reflexión y similares. Los shader de fotones facilitan la simulación físicamente correcta de la iluminación global y los cáusticos en relación con la renderización. En una realización, los shaders de fotones son usados durante la renderización por el generador 30 de imágenes de la escena durante la operación de preprocesado.
(iii) Shaders de volumen de fotones, que son similares a los shader de fotones, excepto en que operan en relación con un volumen tridimensional del espacio de la escena en vez de sobre la superficie de un objeto. Esto permite que se extienda la simulación de cáusticos y de iluminación a volúmenes y medios participativos encerrados que los acompañan, tales como dispersión de fotones por partículas de polvo o niebla en el aire, por vapor de agua tal como en las nubes, o similares.
(iv) Shader de emisor de fotones, que son similares también a los shaders de fotones, excepto en que están relacionados con las fuentes de luz y por lo tanto a la emisión de fotones. Los fotones simulados para los cuales se simula la emisión en relación con los shaders de emisor de fotones pueden entonces ser procesados en relación con los shaders de fotones, los cuales pueden ser usados para simular recorrido y características de interacción con superficies de los fotones simulados, y con los shaders de volumen de fotones que pueden ser usados para simular recorridos y otras características en volúmenes tridimensionales, en particular, a lo largo de los correspondientes recorridos.
(v) Shaders de contorno, que son usados en relación con las líneas de generación de contornos durante la renderización. En la realización, hay tres subtipos de shaders de contorno, a saber, shaders de almacenamiento de contorno, shaders de contraste de contorno y shaders de generación de contorno. Un shader de almacenamiento de contorno se usa para recoger la información de muestreo de contorno para, por ejemplo, una superficie. Un shader de contraste de contorno se usa para comparar dos conjuntos de la información de muestreo que es recogida usando un shader de almacenamiento de contorno. Finalmente, un shader de generación de contorno se usa para generar la información de puntos de contorno, para su almacenamiento en una memoria buffer, y que es usada entonces por un shader de salida de datos (descrito más abajo) para generar líneas de contorno.
(vi) Shaders de salida de datos, que se usan para procesar la información que está en las memorias buffer generadas por el generador 30 de imágenes de escena durante la renderización. Un shader de salida de datos puede acceder a la información de pixel generada durante la renderización para, en una realización, ejecutar operaciones de composición, convoluciones complejas y dibujo de líneas de contorno a partir de la información de puntos de contorno generada por los shaders de generación de contorno como se describió más arriba.
(vii) Shaders de volumen tridimensional, que se usan para controlar cómo la luz y otros rayos visibles y similares pasan a través de parte o todo el espacio vacío tridimensional de una escena. Un shader de volumen tridimensional puede usarse para cualquiera de los varios tipos de efectos de volumen incluyendo, por ejemplo, niebla y efectos procedimentales del tipo de humo, llamas, pelaje y nubes de partículas. Además, ya que un shader de volumen tridimensional se usa en relación con la luz, también son útiles en relación con sombras que aparecerían a partir de los efectos procedimentales; y
(viii) Shaders de luz, que se usan para controlar las características de emisión de las fuentes de luz, incluyendo, por ejemplo, características de color, dirección y atenuación que pueden ser resultado de propiedades tales como las formas de las correspondientes fuentes de luz, proyección de textura, sombreado y otras propiedades de la luz.
Otros tipos de shaders, que pueden ser útiles en relación con la definición de la escena pueden también usarse en un phenomenon.
Un phenomenon está definido por
(i)una descripción de los parámetros controlables externamente del phenomenon,
(ii) un nodo raíz primario y, opcionalmente, uno o más nodos raíz opcionales,
(iii) una descripción de la estructura interna del phenomenon, que incluye la identificación de los shaders que van a usarse como nodos y cómo están interconectados para formar un DAG o una pluralidad de DAGs que cooperan, y
(iv) opcionalmente, una descripción de cajas de diálogo y similares que pueden ser definidas por el phenomenon para su uso por el editor 26 de phenomena para permitir al operador que proporcione valores para los parámetros o propiedades que se usarán en la evaluación del correspondiente phenomenon.
Además, un phenomenon puede incluir declaraciones externas y códigos ejecutables mediante enlaces desde bibliotecas, como es estándar en programación.
Como se resaltó más arriba, un phenomenon puede incluir una pluralidad de DAGs que cooperan. En un phenomenon de ese tipo, durante la renderización, la información generada a partir del procesado de uno o más nodos de un primer DAG del phenomenon puede ser usada en el procesado en relación con uno o más nodos de un segundo DAG del phenomenon. Los dos DAGs son, no obstante, procesados de forma independiente y pueden ser procesados en diferentes etapas del proceso de renderización. La información generada por un nodo correspondiente del primer DAG que puede estar "cooperando" con un nodo del segundo DAG (esto es, que puede ser usado por el nodo del segundo DAG en su procesado), puede ser transferida desde el nodo correspondiente del primer DAG al nodo del segundo DAG a través de cualquier canal de comunicación conveniente, del tipo de una memoria buffer que le puede ser asignada. Proveer todos los DAGs que pueden necesitar cooperar de esta manera en un único phenomenon asegura que todas las condiciones para la cooperación serán satisfechas, lo que puede no ser el caso si los DAGs son provistos no encapsulados o separados en phenomena distintos o en otras entidades.
Como ejemplo de un phenomenon que incluye varios DAGs que cooperan, un phenomenon puede incluir varios DAGs, que incluyen un DAG de shader de material, un DAG de shader de salida de datos e instrucciones para generar una memoria buffer de identificadores de etiquetado. El DAG de shader de material incluye, al menos, un shader de material para generar un valor de color para un material y también almacena información de etiquetado sobre los objetos que son encontrados durante el procesado del DAG de shader de material en la memoria buffer de identificadores de etiquetado que es establecida en relación con el procesado de las instrucciones de generación de la memoria buffer de identificadores de etiquetado. El DAG de shader de salida de datos, a su vez, incluye al menos un shader de salida de datos que recupera la información de etiquetado de la memoria buffer de identificadores de etiquetado para facilitar la ejecución de operaciones de composición específica de objetos. Además de las instrucciones de generación de la memoria buffer de identificadores de etiquetado, el phenomenon puede tener también instrucciones para controlar modos de operación del generador 30 de imágenes de la escena de tal forma que ambos DAGs puedan funcionar y cooperar. Por ejemplo, tales instrucciones pueden controlar la densidad de muestra mínima requerida por los dos DAGs para ser evaluada.
Como un segundo ejemplo de un phenomenon que incluye múltiples DAGs de shader que cooperan, un phenomenon de material puede representar un material que es simulado tanto por un DAG de shader de fotones, que incluye al menos un shader de fotones, como por un DAG de shader de material, que incluye al menos un shader de material. Durante la renderización, el DAG de shader de fotones será evaluado durante el preprocesado de cáusticos e iluminación global y el DAG de shader de material será evaluado más tarde durante la renderización de una imagen. Durante el procesado del DAG de shader de fotones, la información que representa los fotones simulados será almacenada de tal manera que pueda ser usada durante el procesado posterior del DAG de shader de material para añadir contribuciones de iluminación de la etapa de preprocesado de cáusticos o iluminación global. En una realización, el DAG de shader de fotones almacena la información de fotones simulados en un mapa de fotones, el cual es usado por el DAG de shader de fotones para comunicar la información de los fotones simulados al DAG de shader de material.
Como tercer ejemplo de un phenomenon que incluye múltiples DAGs de shader que cooperan, un phenomenon puede incluir un DAG de shader de contorno, que incluye al menos un shader del tipo de shader de contorno, y un DAG de shader de salida de datos, que incluye al menos un shader de salida de datos. El DAG de shader de contorno se usa para determinar cómo dibujar líneas de contorno almacenando "puntos" de un color, transparencia, anchura y otros atributos seleccionados. EL DAG de shader de salida de datos se usa para recoger todas las celdas creadas durante la renderización y, cuando se completa la renderización, unirlas en líneas de contorno. El DAG de shader de contorno incluye un shader de almacenamiento de contorno, un shader de contraste de contorno y un shader de generación de contorno. El shader de almacenamiento de contorno se usa para recoger la información de muestreo para su uso posterior por un shader de contraste de contorno. El shader de contraste de contorno, a su vez, se usa para determinar si la información de muestreo recogida por el shader de almacenamiento de contorno es tal que un punto de contorno va a ser colocado en la imagen y, si es así, el shader de generación de contorno coloca realmente el punto de contorno. Este phenomenon ejemplo ilustra una cooperación de cuatro etapas que incluye
(1) una primera etapa, en la cual se recoge la información de muestreo (por el shader de almacenamiento de contorno);
(2) una segunda etapa, en la cual la decisión sobre si una celda de contorno va a ser colocada (por el shader de contraste de contorno);
(3) una tercera etapa, en la cual se crea el punto de contorno (por el shader de generación de contorno); y
(4) una cuarta etapa, en la cual los puntos de contorno creados son creados (por el DAG de shader de salida de datos).
Ninguno de los shaders de cualquiera de las etapas hace uso de otro shader de otra etapa sino que, en cambio, son procesados y evaluados individualmente en momentos diferentes, pero cooperan para permitir la generación del resultado final.
Como cuarto ejemplo de phenomenon que incluye múltiples DAGs de shader que cooperan, un phenomenon puede incluir un DAG de shader de volumen y un DAG de shader de geometría. El DAG de shader de volumen incluye, al menos, un shader de volumen que define propiedades de un volumen confinado, por ejemplo un shader de pelaje que simula pelaje dentro del volumen confinado. El DAG de shader de geometría incluye, al menos, un shader de geometría que se usa para incluir una superficie de límite externa como una nueva geometría en la escena antes de que comience la renderización, con DAGs de shader de material y de volumen adecuados asignados a la superficie de límite externa para definir los cálculos que deben ser ejecutados en relación con el cabello en relación con el DAG de shader de volumen original. En este phenomenon ilustrativo, la cooperación es entre el DAG de shader de geometría y el DAG de shader de volumen, con el DAG de shader de geometría introduciendo una geometría procedimental en la cual el DAG de shader de geometría soporta el DAG de shader de volumen. El DAG de shader de volumen hace uso de esta geometría, pero no sería capaz de crear la geometría misma puesto que la geometría es generada usando el DAG de shader de geometría durante una operación de preprocesado antes de la renderización, en tanto que el DAG de shader de volumen se usa durante la renderización. La cooperación explicada en relación con este cuarto ejemplo ilustrativo difiere de la explicada en relación con los primero a tercero de los ejemplos ilustrativos desde que el shader o los shaders que comprenden el shader de geometría proporcionan de forma procedimental elementos que son usados por el DAG de shader de volumen, y no sólo almacenan datos, como es el caso en relación con la cooperación en relación con los primero al tercero de los ejemplos ilustrativos.
Todos estos ejemplos explican efectos de gráficos por ordenador en los cuales una imagen de una escena puede ser renderizada usando múltiples DAGs de shader que cooperan pero que son independientes y que son agrupados y encapsulados en un único phenomenon.
Con estas bases, las operaciones ejecutadas en relación con el creador 24 de phenomena y el editor 26 de phenomena se describirán en relación con las Figuras 3 y 5, respectivamente. Además, un phenomenon ilustrativo creado en relación con el creador 24 de phenomena se describirá en relación con la Figura 4 y detalles de las operaciones ejecutadas por el editor 26 de phenomena en relación con el phenomenon representado en relación con la Figura 4 serán descritos en relación con las Figuras 6A Y 6B. La Figura 3 representa una ventana 40 del creador de phenomena, que el creador 24 de phenomena habilita a la interfaz 27 de operador para que la muestre visualmente al operador, para permitir al operador definir un nuevo phenomenon y modificar la definición de un phenomenon existente. La ventana 40 del creador de phenomena incluye una pluralidad de recuadros, incluyendo un recuadro biblioteca de objetos 41, un recuadro de nodos de gráfico soportados 42, un recuadro 43 de controles y un phenomenon recuadro de superficie de dibujo de gráficos 44. El recuadro biblioteca de objetos 41 puede incluir uno o más iconos de phenomena, identificados en general por el número de referencia 45, cada uno de los cuales representa un phenomenon que ha sido, al menos parcialmente, definido para su uso en la porción 20 de generación de la estructura de la escena. El recuadro de nodos de gráfico soportados 42 incluye uno o más iconos, identificados en general por el número de referencia 46, que representan entidades, tales como interfaces, los diferentes tipos de shaders que pueden usarse en un phenomenon y otras similares, que pueden ser seleccionadas por el operador para su uso en un phenomenon. Como se describirá más abajo, los iconos representados en el recuadro de nodos de gráfico soportados 42 pueden ser usados por un operador para formar los nodos del gráfico acíclico dirigido que define un phenomenon que va a ser creado o modificado. En una realización, hay varios tipos de nodos, que incluyen:
(i) Un nodo raíz primario, que forma la raíz del gráfico acíclico dirigido y conforma la conexión con la escena y proporciona típicamente un valor de color durante la renderización.
(ii) Varios tipos de nodos raíz opcionales, que pueden usarse como puntos de anclaje de un DAG de phenomenon para soportar el nodo raíz principal (ítem (i) anterior). Tipos ilustrativos de nodos raíz opcionales incluyen:
(a)
Un nodo raíz de objetivo, que puede usarse para insertar shaders de objetivo o DAGs de shaders de objetivo en una cámara para su uso durante la renderización;
(b)
Un nodo raíz de volumen, que puede usarse para insertar un shader o DAGs de shaders de volumen global (o atmósfera) en una cámara para su uso durante la renderización;
(c)
Un nodo raíz de ambiente, que puede usarse para insertar shaders o DAGs de shader de ambiente en una cámara para su uso durante la renderización;
(d)
Un nodo raíz de geometría, que puede usarse para especificar shaders o DAGs de shader de geometría que pueden ser preprocesados durante la renderización para habilitar la geometría de soporte procedimental u otros elementos de una escena que van a ser añadidos a la base de datos de la escena;
(e)
Un nodo raíz de almacenamiento de contorno, que puede usarse para insertar un shader de almacenamiento de contorno en la estructura de datos de opciones de la escena;
(f)
Un nodo raíz de salida de datos, que puede usarse en relación con el postprocesado después de una fase de renderización, y
(g)
Un nodo raíz de contraste de contorno, que puede usarse para insertar un shader de contraste de contorno en la estructura de datos de opciones de la escena.
(iii) Un nodo de shader, que representa a un shader, esto es, una función escrita en un lenguaje de alto nivel como C o C++.
(iv) Un nodo de luz, que se usa conjuntamente con una fuente de luz. Un nodo de luz provee a la fuente de luz de un shader de luz, color, intensidad, origen y/o dirección y, opcionalmente, un shader de emisor de fotones.
(v) Un nodo de material, que se usa conjuntamente con una superficie. Un nodo de material provee a una superficie de un valor de color y tiene entradas de datos para una indicación opaca, que indica si la superficie es opaca, y para shaders de material, volumen, ambiente, sombra, desplazamiento, fotón, volumen de fotón y contorno.
(vi) Un nodo de phenomenon, que es una instancia de phenomenon.
(vii) Un nodo de constante, que proporciona un valor constante, que puede ser un dato de entrada a cualquiera de los demás nodos. El valor constante puede ser de la mayoría de los tipos de tipos de datos usados para entidades en el lenguaje de programación, tales como shaders, representados por cualquiera de los demás nodos, tales como un escalar, un vector, una lógica (un booleano), color, transformación etc.; y
(viii) Un nodo de diálogo, que representa cajas de diálogo que pueden ser mostradas visualmente por el editor 26 de phenomena al operador y que pueden ser usadas por el operador para proporcionar información de entrada para controlar el phenomenon antes de o durante la renderización. Los nodos de diálogo pueden habilitar al editor 26 de phenomena para permitir que se muestren visualmente botones, barras deslizantes, volantes, etc. para permitir al operador especificar, por ejemplo, el color u otros valores a ser usados en relación con la superficie a la cual está conectado el phenomenon que incluye el nodo de diálogo.
Como se muestra en la Figura 3, tanto el recuadro biblioteca de objetos 41 como el recuadro de nodos de gráfico soportados 42 incluyen iconos de flechas a derecha e izquierda, identificados en general por el número de referencia 47, que permiten que los iconos mostrados en los correspondientes recuadros sean desplazados a la izquierda o a la derecha (como se muestra en la Figura 3), para desplazar los iconos a ser visualizados en la ventana 40 del creador de phenomena si hay más entidades de las que pudieran visualizarse de una vez.
El recuadro 43 de controles contiene iconos (no mostrados) que representan botones que el operador puede usar para ejecutar las operaciones de control que incluyen, por ejemplo, borrar o duplicar nodos en el recuadro biblioteca de objetos 41 o el recuadro de nodos de gráfico soportados 42, comenzar la construcción de un nuevo phenomenon, arrancar un sistema de ayuda en línea, salir del creador 24 de phenomena, etc.
La superficie de dibujo de gráficos 44 del phenomenon proporciona un área en la cual un phenomenon puede ser creado o modificado por un operador. Si el operador desea modificar un phenomenon existente, el o ella puede, usando una metodología de "arrastrar y soltar" que usa un dispositivo de puntero del tipo de un ratón, seleccionar y arrastrar el icono 45 desde el recuadro biblioteca de objetos 41 que representa el phenomenon hasta la superficie de dibujo de gráficos 44 del phenomenon. Después de que el icono 45 asociado con el phenomenon que va a ser modificado ha sido arrastrado a la superficie de dibujo de gráficos 44 del phenomenon, el operador puede habilitar que el icono 45 se expanda para mostrar uno o más nodos, interconectados por flechas, que representan el gráfico que define el phenomenon. Un gráfico 50 que representa un phenomenon ilustrativo, se representa en la Figura 3. Como se muestra en la Figura 3, el gráfico 50 incluye una pluralidad de nodos de gráfico que comprenden círculos y bloques, cada uno de los cuales está asociado con una entidad que puede usarse en un phenomenon, estando los nodos interconectados por flechas para definir el gráfico asociado al phenomenon.
Después de que el gráfico asociado con el icono 45 que ha sido arrastrado a la superficie de dibujo de gráficos 44 del phenomenon ha sido expandido para mostrar el gráfico que define el phenomenon asociado con el icono 45, el operador puede modificar el gráfico que define el phenomenon. En esta operación, el operador puede, usando la correspondiente metodología de "arrastrar y soltar", seleccionar y arrastrar iconos 46 desde el recuadro de nodos de gráfico soportados 42 que representan entidades para ser añadidas al gráfico de la superficie de dibujo de gráficos 44 del phenomenon, para establecer con ello un nuevo nodo para el gráfico. Después de que el nuevo nodo ha sido establecido, el operador puede interconectarlo a un nodo del gráfico existente haciendo un clic en ambos nodos de una manera adecuada de forma que habilita que una flecha sea visualizada entre ellos. Los nodos del gráfico pueden también ser desconectados de otros nodos, borrando las flechas que se extienden entre los nodos correspondientes, y suprimidos del gráfico mediante una actuación adecuada de un botón de supresión del recuadro 43 de controles.
De forma similar, si el operador desea crear un nuevo phenomenon, el o ella puede, usando la correspondiente metodología de "arrastrar y soltar", seleccionar y arrastrar iconos 46 desde el recuadro de nodos de gráfico soportados 42 que representan las entidades para ser añadidas al gráfico de la superficie de dibujo de gráficos 44 del phenomenon, para establecer con ello un nuevo nodo del gráfico que va a ser creado. Después de que se ha establecido un nuevo nodo en la superficie de dibujo de gráficos 44 del phenomenon, el operador puede interconectarlo a un nodo del gráfico existente haciendo un clic en ambos nodos de una manera adecuada de forma que habilita que una flecha sea visualizada entre ellos. Los nodos del gráfico pueden también ser desconectados de otros nodos, borrando las flechas que se extienden entre los nodos correspondientes, y suprimidos del gráfico mediante una actuación adecuada de un botón de supresión del recuadro 43 de controles.
Después de que el operador ha especificado el DAG o conjunto de DAGs que cooperan para el phenomenon, bien para un phenomenon nuevo o bien para un phenomenon modificado, y antes de que el phenomenon representado por el gráfico sea almacenado en la base de datos 25 de phenomena, el creador 24 de phenomena examinará el gráfico del phenomenon para verificar que es coherente y puede ser procesado durante la renderización. En esta operación, el creador 24 de phenomena asegurará que las interconexiones entre nodos del gráfico no forman un ciclo, asegurando por ello que el gráfico o los gráficos asociados con el phenomenon forman gráficos acíclicos dirigidos, y que las interconexiones entre los nodos del gráfico representan los correspondientes tipos de datos de entrada y salida que son coherentes. Se apreciará que, si el creador 24 de phenomena determina que los nodos del gráfico sí forman un ciclo, el phenomenon formará esencialmente un lazo sin fin que generalmente no podrá ser procesado adecuadamente. Estas operaciones asegurarán que el phenomenon así creado o modificado puede ser procesado por la porción de generación de la imagen de la escena cuando una imagen de una escena a la que el phenomenon está aplicado está siendo renderizada.
Después de que el operador ha creado o modificado el phenomenon, éste será almacenado en la base de datos 25 de phenomena.
La Figura 4 representa un phenomenon ilustrativo creado en relación con el creador 24 de phenomena que puede ser generado usando la ventana del creador de phenomena descrita más arriba en relación con la Figura 3. El phenomenon ilustrativo representado en la Figura 4, que está identificado por el número de referencia 60, es uno que puede usarse para las características de la superficie de un material de madera. Con referencia a la Figura 4, el phenomenon 60 incluye un nodo raíz, identificado por el número de referencia 61, que se usa para aplicar el phenomenon 60 a un elemento de la escena. Otros nodos del gráfico incluyen un nodo 62 de shader de material, un nodo 63 de shader de textura de material, un nodo 64 de shader de ruido coherente, los cuales representan, respectivamente, un shader de material, un shader de textura y un shader de ruido coherente, y un nodo 65 de diálogo. El nodo 65 de diálogo representa una caja de diálogo que es mostrada visualmente por el editor 26 de phenomena para permitir al operador que proporcione la información de entrada para su uso con el phenomenon cuando la imagen es renderizada.
Los detalles de un shader de material, un shader de textura y un shader de ruido coherente son conocidos para los expertos en la técnica y no se describirán más aquí. En general, el shader de material tiene uno o más datos de salida, representados por "resultado", que son suministrados al nodo raíz 61. El shader de material, a su vez, tiene varias entradas de datos, incluyendo una entrada de "brillo", una entrada de color "ambiente", una entrada de color "difuso", una entrada de "transparencia" y una entrada de "luces", y se muestra que el nodo 62 de shader de material representado por ellos está recibiendo entradas de ellos desde el nodo 65 de diálogo (en el caso de la entrada de brillo), desde el nodo 63 de shader de textura (en el caso de las entradas de color ambiente y difuso), desde una constante dada por hardware (en el caso de la entrada de transparencia) y desde una lista de luces (en el caso de la entrada de luces). El valor de la constante dada por hardware, indicado como "0,0", suministrada en la entrada de transparencia indica que el material es opaco. La entrada de "brillo" está conectada a una salida de "brillo" suministrada por el nodo 65 de diálogo y, cuando el shader de material representado por el nodo 62 es procesado durante la renderización, éste obtendrá el valor de la entrada de brillo para él desde la caja de diálogo representada por el nodo de diálogo, como se describirá más abajo en relación con las Figuras 6A y 6B.
Las entradas de color ambiente y difuso del shader de material representado por el nodo 62 son proporcionadas por la salida del shader de textura, como se indica por la conexión de la salida "resultado" del nodo 63 a las correspondientes entradas del nodo 62. Cuando el phenomenon 60 de material de madera es procesado durante la operación de renderización y, en particular, cuando el shader de material representado por el nodo 62 es procesado, éste permitirá que el shader de textura representado por el nodo 63 sea procesado para proporcionar los valores de entrada de color ambiente y difuso. El shader de textura, a su vez, tiene tres entradas, incluyendo las entradas de color ambiente y difuso, representadas por las entradas "color 1" y "color 2" mostradas en el nodo 63, y una entrada "mezcla". Los valores para las entradas de color ambiente y difuso son proporcionados por el operador usando la caja de diálogo representada por el nodo de diálogo 65, según se representa mediante las conexiones de las respectivas salidas de color difuso y ambiente del nodo 65 de diálogo con el nodo 63 de shader de textura en la Figura 4.
Además, el valor de entrada para la entrada del shader de textura representado por el nodo 63 es proporcionado por el shader de ruido coherente representado por el nodo 64. Así, cuando el shader de textura representado por el nodo 63 es procesado durante la operación de renderización, éste permitirá que el shader de ruido coherente representado por el nodo 64 sea procesado para proporcionar el valor de entrada mezcla. El shader de ruido coherente tiene dos entradas, que incluyen una entrada de "turbulencia" y una entrada de "cilíndrico". El valor para la entrada de turbulencia es proporcionado por el operador usando la caja de diálogo representada por el nodo 65 de diálogo, como se representa por las conexiones desde la salida de turbulencia del nodo 65 de diálogo con el nodo 64 del shader de ruido coherente. El valor de entrada para la entrada cilíndrico, que se muestra como un valor lógico "VERDADERO", es dado por hardware en el phenomenon 60.
Las operaciones ejecutadas por el editor 26 de phenomena serán descritas en relación con la Figura 5. La Figura 5 representa una ventana 70 de editor de phenomena que el editor 26 de phenomena habilita para que sea mostrada visualmente por la interfaz 27 de operador para su uso por un operador en una realización de la invención para establecer y ajustar los valores de entrada para los phenomena que han sido aplicados a la escena. En particular, el operador puede usar la ventana de editor de phenomena para establecer valores para los phenomena que son suministrados por cajas de diálogo asociadas a nodos de diálogo, del tipo del nodo 65 (Figura 4), establecidos por los correspondientes phenomena durante su creación o modificación como se describió anteriormente en relación con la Figura 3. La ventana 70 de editor de phenomena incluye una pluralidad de recuadros, incluyendo una recuadro biblioteca de objetos 71 y un recuadro de controles 72, y también incluye una ventana 73 de diálogo del phenomenon y una ventana 74 de previsualización del phenomenon. El recuadro biblioteca de objetos 71 representa iconos 80 que representan los diferentes phenomena que están disponibles para su aplicación a una escena. Como con la ventana 40 del creador de phenomena (Figura 3), el recuadro biblioteca de objetos incluye iconos de flecha a izquierda y derecha, identificados en general por el número de referencia 81, que permiten que los iconos mostrados en el correspondiente recuadro sean desplazados a la izquierda o a la derecha (como se muestra en la Figura 3), para desplazar los iconos que van a ser visualizados en la ventana 790 de editor de phenomena si hay más iconos de los que pudieran ser visualizados de una vez.
El recuadro de controles 72 contiene iconos (no mostrados) que representan botones que el operador puede usar para ejecutar operaciones de control, que incluyen, por ejemplo, borrar o duplicar iconos en el recuadro biblioteca de objetos 71, arrancar un sistema de ayuda on-line, salir del editor 26 de phenomena, etc.
El operador puede seleccionar un phenomenon cuyos valores de parámetros van a ser establecidos mediante una manipulación adecuada de un dispositivo de puntero del tipo de un ratón de cara a crear una instancia de un phenomenon. (Una instancia de un phenomenon se corresponde con un phenomenon cuyos valores de parámetros han sido fijados). Después de que el operador ha seleccionado un phenomenon, el editor 26 de phenomena habilitará a la interfaz de operador 27 para que muestre visualmente la caja de diálogo asociada a su nodo de diálogo en la ventana de diálogo del phenomenon. Una caja de diálogo ilustrativa, usada en relación con una realización del phenomenon de material madera 60 descrito anteriormente en relación con la Figura 4, se describirá más adelante en relación con las Figuras 6A y 6B. Según el operador suministra y ajusta los valores de entrada que pueden ser suministrados a través de la caja de diálogo, el editor 26 de phenomena procesa efectivamente el phenomenon y muestra visualmente los datos de salida resultantes en la ventana 74 de previsualización del phenomenon. Así, el operador puede usar la ventana 70 del editor de phenomena para ver el resultado de los valores que él o ella establecen usando las entradas disponibles a través de la caja de diálogo mostrada en la ventana de diálogo del phenomenon.
Las Figuras 6A y 6B representan gráficamente detalles de un nodo de diálogo (en el caso de la Figura 6A) y una caja de diálogo ilustrativa asociada (en el caso de la Figura 6B), que se usan en relación con el phenomenon 60 de material madera representado en la Figura 4. El nodo de diálogo, que está identificado por el número de referencia 65 en la Figura 4, es definido y creado por el operador usando el creador 24 de phenomena durante el proceso de creación o modificación del phenomenon particular al cual está asociado. Con referencia a la Figura 6A, la caja de diálogo 65 incluye una pluralidad de baldosas, a saber, una baldosa 90 de color ambiente, una baldosa 91 de color difuso, una baldosa 92 de turbulencia y una baldosa 93 de brillo. Se apreciará que los respectivos baldosas 90 a 93 están asociados a los correspondientes valores de salida de color ambiente, color difuso, turbulencia y brillo proporcionados por el nodo de diálogo 65 como se describió anteriormente en relación con la Figura 4. Las baldosas de color ambiente y difuso están asociados a valores de color, que pueden ser especificados usando una especificación color/transparencia convencional rojo/verde/azul/alfa, o "RGBA", y, así, cada una de las baldosas de color estarán asociadas realmente a valores de entrada múltiples, uno para cada uno de los colores rojo, verde y azul en la representación de color y uno para transparencia (alfa). Por otro lado, cada una de las baldosas de turbulencia y brillo, 92 y 93, está asociada con un valor escalar.
La Figura 6B representa una caja de diálogo 100 ilustrativa que está asociada al nodo de diálogo 65 (Figura 6A), según se visualiza en la interfaz 27 de operador bajo control del editor 26 de phenomena. En la caja de diálogo 100, las baldosas de color ambiente y difuso 90 y 91 del nodo de diálogo 65 son visualizadas cada una por la interfaz 27 de operador como conjuntos respectivos de barras deslizantes, identificados en general por los números de referencia 101 y 102, respectivamente, cada uno de los cuales está asociado a uno de los colores de la representación de color a ser usada durante el procesado del phenomenon asociado durante la renderización. Además, las baldosas 92 y 93 de turbulencia y brillo del nodo de diálogo 65 son visualizadas cada una de ellas por la interfaz 27 de operador como barras deslizantes individuales 103 y 104. Las barras deslizantes de los respectivos conjuntos de barras deslizantes 101 y 102 pueden ser manipuladas por el operador, usando un dispositivo de puntero del tipo de un ratón, de una manera convencional para habilitar con ello al editor 26 de phenomena para que ajuste las correspondientes combinaciones de colores para los valores respectivos de color ambiente y difuso proporcionados por el nodo de diálogo 65 a los shaders asociados con los otros nodos del phenomenon 60 (Figura 4). Además, las barras deslizantes 103 y 104 asociadas a las entradas de turbulencia y brillo pueden ser manipuladas por el operador habilitando con ello al editor 26 de phenomena para que ajuste los valores respectivos de turbulencia y brillo proporcionados por el nodo de diálogo 65 a los shaders asociados a los otros nodos del phenomenon 60 de material madera.
Volviendo a la Figura 2, después de que el operador, usando el editor 26 de phenomena, ha establecido los valores para los diferentes phenomena y las instancias de phenomena asociados a una escena, esos valores son almacenados con la escena en la base de datos 22 de objetos de la escena. después de esto, una imagen de la escena puede ser renderizada por la porción 21 de generación de la imagen de la escena, en particular, mediante el generador 30 de imágenes de la escena para su visualización por la interfaz 31 de operador. Las operaciones ejecutadas por el generador 30 de imágenes de la escena se describirán en general en relación con el diagrama de flujo representado en la Figura 7. En referencia a la Figura 7, el generador 30 de imágenes de la escena opera en una serie de fases, que incluye una fase de preprocesado, una fase de renderización y una fase de postprocesado. En la fase de preprocesado, el generador 30 de imágenes de la escena examinará los phenomena que están aplicados a una escena para determinar si necesitará ejecutar operaciones de preprocesado y/o postprocesado en relación con ellos (paso 100). El generador 30 de imágenes de la escena determina entonces si las operaciones del paso 100 indicaron que se requieren operaciones de preprocesado en relación con al menos un phenomenon aplicado a la escena (paso 101) y, si es así, ejecutará las operaciones de preprocesado (paso 102). Operaciones de preprocesado ilustrativas incluyen, por ejemplo, la generación de geometría de escena, si un phenomenon aplicado a la escena incluye un shader de geometría, para generar la geometría definida por él para la escena. Otras operaciones ilustrativas de preprocesado incluyen, por ejemplo, mapeado de sombras y fotones, resolución de herencia múltiple y otras similares. Después del paso 102, o del paso 101 si el generador 30 de imágenes de la escena hace una determinación negativa en ese paso, el generador 30 de imágenes de la escena puede ejecutar más operaciones de preprocesado que pueden ser requeridas en relación con la representación de la escena antes de la renderización, las cuales no están relacionadas con los phenomena aplicados a la escena (paso 103).
Después del paso 103, el generador 30 de imágenes de la escena ejecutará la fase de renderización en la cual ejecuta las operaciones de renderización en relación con la representación de escena preprocesada para generar una imagen renderizada (paso 104). En esta operación, el generador 30 de imágenes de la escena identificará los phenomena almacenados en la base de datos 22 de objetos de escena que van a ser aplicados a los diferentes componentes de la escena, según fueron generados por el generador 23 de representación geométrica de entidades y aplicar todos los nodos raíz primarios y opcionales de los respectivos phenomena a los componentes de escena adecuados al tipo de nodo raíz. Después de esto, el generador 30 de imágenes de la escena renderizará la imagen. Además, el generador 30 de imágenes de la escena generará información, según sea necesario, que pueda ser usada en las operaciones de postprocesado durante la fase de postprocesado.
Después de la fase de renderización (paso 104), el generador 30 de imágenes de la escena ejecutará la fase de postprocesado. En esta operación, el generador 30 de imágenes de la escena determinará si las operaciones ejecutadas en el paso 100 indicaron que se requerían operaciones de postprocesado en relación con los phenomena aplicados a la escena (paso 105). Si el generador 30 de imágenes de la escena hace una determinación positiva en el paso 105, ejecutará las operaciones de postprocesado requeridas en relación con los phenomena aplicados a la escena (paso 106). Además, el generador 30 de imágenes de la escena puede ejecutar también otras operaciones de postprocesado que no están relacionadas con los phenomena del paso 106. El generador 30 de imágenes de la escena puede ejecutar operaciones de postprocesado en relación con la manipulación de los valores de pixel para corrección de color, filtrando para proporcionar diferentes efectos ópticos. Además, el generador 30 de imágenes de la escena puede ejecutar operaciones de postprocesado si, por ejemplo, un phenomenon aplicado a la escena incluye un shader de salida de datos que define operaciones de postprocesado, tales como cálculos de profundidad de campo o desenfoque de movimiento que pueden ser, en una realización, hechos enteramente en un shader de salida de datos, por ejemplo, dependiendo de la información sobre velocidad y profundidad almacenada en relación con cada valor de pixel, en relación con la imagen renderizada.
La invención proporciona varias ventajas. En particular, la invención proporciona un sistema de gráficos por ordenador que proporciona herramientas para crear (en referencia al creador 24 de phenomena) y manipular (en referencia al editor 26 de phenomena) phenomena. Los phenomena así creados son procesados por el creador 24 de phenomena para asegurar que son coherentes y que pueden ser procesados durante la renderización. Ya que los phenomena son creados antes de ser aplicados a una escena, se apreciará que pueden ser creados por programadores u otros que sean expertos en el desarrollo de programas para ordenador, aliviando con ello a otros, tales como los artistas, dibujantes y similares de la necesidad de desarrollarlos. También, los phenomena liberan al artista de la complejidad de instrumentar la escena con muchos shaders diferentes e interrelacionados separándola (esto es, la complejidad) en una tarea independiente ejecutada en adelante por un usuario experto del creador de phenomena. Con los phenomena, la instrumentación se hace ampliamente automatizada. Una vez que un phenomenon o instancia de phenomenon ha sido creado, es independiente de la escena y puede ser reutilizado en muchas escenas evitando así trabajo repetitivo.
Se apreciará que varios cambios y modificaciones pueden ser hechas a la invención. Como se señaló más arriba, ya que los phenomena pueden ser creados de forma separada de su uso en relación con una escena, el creador 24 de phenomena, usado para crear y modificar phenomena, y el editor 26 de phenomena, usado para crear instancias de phenomena, pueden ser suministrados a sistemas de gráficos por ordenador independientes. Por ejemplo, un sistema 10 de gráficos por ordenador que incluye un editor 26 de phenomena no necesita incluir un creador 24 de phenomena si, por ejemplo, la base de datos 25 de phenomena incluye los phenomena adecuados creados previamente y el operador no necesitará crear o modificar phenomena.
Además, como se señaló más arriba, los valores de parámetros de un phenomenon pueden ser fijos o pueden variar basándose en una función de una o más variables. Por ejemplo, si uno o más valores de los respectivos parámetros varían de acuerdo con el tiempo como variable, la instancia de phenomenon puede hacerse dependiente del tiempo, o "animada". Esto es discretizado normalmente en intervalos de tiempo que son etiquetados por los números de fotograma de una serie de fotogramas que comprenden una animación, pero la dependencia del tiempo puede, sin embargo, tomar la forma de cualquier función evaluada en el tiempo de parámetros de phenomenon, cada una de las cuales puede ser etiquetada con un valor de tiempo absoluto, de forma que, incluso si una imagen es renderizada en números de fotograma sucesivos, los shaders no están ligados a intervalos discretos.
A este respecto, el editor de phenomena se usa para seleccionar los valores dependientes del tiempo para uno o más parámetros de un phenomenon, creando una "instancia de phenomenon" dependiente del tiempo. La selección de valores dependientes del tiempo para los parámetros de un phenomenon se lleva a cabo, en una realización particular, mediante la asignación gráficamente interactiva de lo que será denominado en adelante como "árboles de control de propiedades del phenomenon" a un phenomenon. Un árbol de control de propiedades del phenomenon, que puede tener la forma de un árbol o un DAG, es asignado a los parámetros del phenomenon, realmente fuera del phenomenon, y es almacenado con el phenomenon en la base de datos de instancias de phenomena. Un árbol de control de propiedades del phenomenon consiste en uno o más nodos, cada uno de los cuales es un shader en el sentido de las funciones que proporciona, por ejemplo, curvas de movimiento, funciones de búsqueda de datos y similares. Un árbol de control de propiedades del phenomenon, preferiblemente, puede permanecer poco profundo y tendrá normalmente sólo muy pocos niveles de ramificación. Un árbol de control de propiedades del phenomenon puede constar de un único shader, que define una función para computar el valor para el parámetro asociado a él en el tiempo de ejecución. Un árbol de control de propiedades del phenomenon puede permanecer poco profundo porque el phenomenon permite y estimula la encapsulación de los árboles complicados de shader o DAGs, facilitando su evaluación de una manera optimizada durante el paso de renderización mediante, por ejemplo, el almacenamiento de datos para su reutilización. Permitir al operador que asigne tales árboles de control de propiedades del phenomenon para controlar los parámetros del phenomenon incrementa la flexibilidad del usuario para llevar a cabo efectos a medida basados en el uso de un phenomenon empaquetado predefinido. El número de instancias de phenomenon distintas que puede ser creado de este modo por ello se incrementa grandemente, mientras que la facilidad de uso no está comprometida gracias a la encapsulación de toda la complejidad del phenomenon.
Además, se apreciará que la apariencia y estructuras de las ventanas usadas en relación con el creador 24 de phenomena y el editor 26 de phenomena, descritas en relación con las Figuras 3 y 5, pueden diferir de las descritas aquí.
Se apreciará que un sistema de acuerdo con la invención puede ser construido en todo o en parte a partir de hardware de uso especial o de un sistema de ordenador de uso general, o cualquier combinación de ellos, cualquier porción del cual puede ser controlada mediante un programa adecuado. Cualquier programa puede, en todo o en parte, comprender parte de o estar almacenado en el sistema de manera convencional o puede, en todo o en parte, ser proporcionado al sistema a través de una red u otro mecanismo para transferir información de una manera convencional. Además, se apreciará que el sistema puede ser operado y/o controlado de otro modo por medio de información proporcionada por un operador que usa los elementos de entrada del operador (no mostrados) que pueden estar conectados directamente al sistema o que pueden transferir la información al sistema a través de una red u otro mecanismo para transferir información de manera convencional.
La descripción que antecede ha sido limitada a una realización específica de esta invención. Estará claro, sin embargo, que pueden hacerse diferentes variaciones y modificaciones a la invención con la obtención de algunas o todas las ventajas de la invención.

Claims (32)

1. Un sistema de gráficos por ordenador para generar una imagen de una escena a partir de una representación de la escena a la cual está aplicado, al menos, un shader de gráfico acíclico dirigido (DAG) que comprende una pluralidad de nodos, incluyendo al menos un nodo raíz primario para aplicar el DAG de shaders a un elemento de la representación de la escena y al menos un nodo de shader conectado a él en el DAG, comprendiendo el sistema de gráficos por ordenador:
A. un módulo preprocesador configurado para determinar si el al menos un nodo de shader es del tipo que se usa para ejecutar una operación de preprocesado en relación con dicha representación y, si es así, usar el al menos un nodo shader para ejecutar dicha operación de preprocesado para generar una representación preprocesada de la escena; y
B. un módulo renderizador configurado para generar la imagen renderizada a partir de la representación de la escena o, si el sistema de gráficos por ordenador incluye el módulo preprocesador, la representación preprocesada de la escena.
2. Un sistema de gráficos por ordenador como el definido en la reivindicación 1 en el cual el al menos un nodo shader es de un tipo de nodo shader de geometría, estando configurado el módulo de preprocesado para ejecutar dicha operación de preprocesado usando el al menos un nodo shader del tipo de nodo de shader de geometría para definir la geometría para la escena.
3. Un sistema de gráficos por ordenador como el definido en la reivindicación 1 en el cual el al menos un nodo de shader es de un tipo de nodo de shader de fotones, estando configurado el módulo preprocesador para ejecutar la operación de preprocesado usando el al menos un nodo de shader del tipo de nodo de shader de fotones para controlar el recorrido de al menos un fotón de la escena o al menos una característica de interacción de al menos un fotón con una superficie de un objeto de la escena.
4. Un sistema de gráficos por ordenador como el definido en la reivindicación 1 en el cual el al menos un nodo de shader es de un tipo de nodo de shader de emisor de fotón, estando configurado el módulo preprocesador para ejecutar dicha operación de preprocesado usando el al menos un nodo de shader del tipo de nodo de shader de emisor de fotón para simular la generación de al menos un fotón por una fuente de luz que ilumina la escena.
5. Un sistema de gráficos por ordenador como el definido en la reivindicación 1 en el cual el al menos un nodo de shader es de un tipo de nodo de shader de volumen de fotón, estando configurado el módulo preprocesador para ejecutar dicha operación de preprocesado usando el al menos un nodo de shader del tipo de nodo de shader de volumen de fotón para simular la interacción de al menos un fotón de una fuente de luz con un volumen tridimensional del espacio de la escena.
6. Un sistema de gráficos por ordenador como el definido en la reivindicación 1, incluyendo, además, el sistema de gráficos por ordenador un módulo postprocesador configurado para determinar si el al menos un nodo de shader es de un tipo que se usa en ejecutar una operación de postprocesado en relación con dicha representación y, si es así, usar el al menos un nodo de shader para ejecutar dicha operación de postprocesado en relación con una imagen renderizada.
7. Un sistema de gráficos por ordenador como el definido en la reivindicación 6 en el que el nodo de shader es de un tipo de nodo de shader de salida de datos, estando configurado el módulo postprocesador para ejecutar dicha operación de postprocesado usando el al menos un nodo de shader del tipo de nodo de shader de salida de datos.
8. Un sistema de gráficos por ordenador como el definido en la reivindicación 6 en el que la imagen renderizada comprende una pluralidad de pixeles asociado cada uno de ellos con un valor de pixel, estando configurado el módulo postprocesador para ejecutar dicha operación de postprocesado en relación con dichos valores de pixel.
9. Un sistema de gráficos por ordenador como el definido en la reivindicación 6 en el que el módulo postprocesador está configurado para usar el al menos un nodo de shader del tipo de nodo de shader de salida de datos para ejecutar al menos una de entre una operación de composición, una operación de convolución compleja o una operación de dibujado de línea de contorno.
10. Un sistema de gráficos por ordenador como el definido en la reivindicación 1 que incluye, además, un segundo DAG de shader que comprende el nodo raíz primario y al menos un nodo de shader, en el cual el al menos un nodo shader de uno de dichos DAGs, cuando es usado por al menos uno de entre el módulo preprocesador o el módulo renderizador, proporciona al menos un valor que es usado en el preprocesado del al menos un nodo de shader del otro de dichos DAGs.
11. Un sistema de gráficos por ordenador como el definido en la reivindicación 1 en el que dicho DAG de shader tiene, además, al menos un nodo raíz opcional para aplicar el DAG de shader a un segundo elemento de la representación de escena, estando conectado, además, el al menos un nodo raíz opcional al al menos un nodo de shader del DAG.
12. Un método de gráficos por ordenador para generar una imagen de una escena a partir de una representación de la escena a la que está aplicado al menos un gráfico acíclico dirigido (DAG) de shader que comprende una pluralidad de nodos, incluyendo un nodo raíz primario para aplicar el DAG de shader a un elemento de la representación de escena y al menos un nodo de shader conectado a él en el DAG, método de gráficos por ordenador que incluye:
A. un paso preprocesador para determinar si el al menos un nodo de shader es del tipo que se usa para ejecutar una operación de preprocesado en relación con dicha representación y, si es así, usar el al menos un nodo shader para ejecutar dicha operación de preprocesado para generar una representación preprocesada de la escena; y
B. un paso renderizador para generar la imagen renderizada a partir de la representación de la escena o, si el método de gráficos por ordenador incluye el paso preprocesador, la representación preprocesada de la escena.
13. Un método de gráficos por ordenador como el definido en la reivindicación 12 en el cual el al menos un nodo shader es de un tipo de nodo shader de geometría, incluyendo el paso preprocesador el paso de ejecutar dicha operación de preprocesado usando el al menos un nodo shader del tipo de nodo de shader de geometría para definir la geometría para la escena.
14. Un método de gráficos por ordenador como el definido en la reivindicación 12 en el cual el al menos un nodo de shader es de un tipo de nodo de shader de fotones, incluyendo el paso preprocesador el paso de ejecutar la operación de preprocesado usando el al menos un nodo de shader del tipo de nodo de shader de fotones para controlar el recorrido de al menos un fotón de la escena o al menos una característica de interacción de al menos un fotón con una superficie de un objeto de la escena.
15. Un método de gráficos por ordenador como el definido en la reivindicación 12 en el cual el al menos un nodo de shader es de un tipo de nodo de shader de emisor de fotón incluyendo el paso preprocesador el paso de ejecutar dicha operación de preprocesado usando el al menos un nodo de shader del tipo de nodo de shader de emisor de fotón para simular la generación de al menos un fotón por una fuente de luz que ilumina la escena.
16. Un método de gráficos por ordenador como el definido en la reivindicación 12 en el cual el al menos un nodo de shader es de un tipo de nodo de shader de volumen de fotón, incluyendo el paso preprocesador el paso de ejecutar dicha operación de preprocesado usando el al menos un nodo de shader del tipo de nodo de shader de volumen de fotón para simular la interacción de al menos un fotón de una fuente de luz con un volumen tridimensional del espacio de la escena.
17. Un método de gráficos por ordenador como el definido en la reivindicación 12, comprendiendo, además, el sistema de gráficos por ordenador un paso postprocesador para determinar si el al menos un nodo de shader es de un tipo que se usa en la ejecución de una operación de postprocesado en relación con una imagen renderizada y, si es así, usar el al menos un nodo de shader para ejecutar dicha operación de postprocesado usando el al menos un nodo de shader en relación con una imagen renderizada.
18. Un método de gráficos por ordenador como el definido en la reivindicación 17 en el que el al menos un nodo de shader es de un tipo de nodo de shader de salida de datos, incluyendo el paso postprocesador el paso de ejecutar dicha operación de postprocesado usando el al menos un nodo de shader del tipo de nodo de shader de salida de datos.
19. Un método de gráficos por ordenador como el definido en la reivindicación 17 en el que la imagen renderizada comprende una pluralidad de pixeles asociado cada uno de ellos con un valor de pixel, incluyendo el paso postprocesador el paso de ejecutar dicha operación de postprocesado en relación con dichos valores de pixel.
20. Un método de gráficos por ordenador como el definido en la reivindicación 17 en el que el paso postprocesador incluye el paso de usar el al menos un nodo de shader del tipo de nodo de shader de salida de datos para ejecutar al menos una de entre una operación de composición, una operación de convolución compleja o una operación de dibujado de línea de contorno.
21. Un método de gráficos por ordenador como el definido en la reivindicación 12 en el que el al menos un DAG de shader comprende una pluralidad de DAGs, incluyendo cada uno de dicha pluralidad de DAGs al menos un nodo de shader, en el cual el al menos un nodo shader de uno de dichos DAGs, cuando es usado por al menos uno de entre el paso preprocesador o el paso renderizador, proporciona al menos un valor que es usado en el preprocesado del al menos un nodo de shader del otro de dichos
DAGs.
22. Un producto de programa para ordenador para su uso en relación con un ordenador para proporcionar un sistema de gráficos por ordenador para generar una imagen de una escena a partir de una representación de la escena a la cual está aplicado, al menos, un gráfico acíclico dirigido (DAG) de shader que comprende una pluralidad de nodos, incluyendo al menos un nodo raíz primario para aplicar el DAG de shaders a un elemento de la representación de la escena y al menos un nodo de shader conectado a él en el DAG, comprendiendo el producto de programa de ordenador un medio legible por un ordenador en el que han sido codificados:
A. un módulo preprocesador configurado para permitir al ordenador determinar si el al menos un nodo de shader es del tipo que se usa para ejecutar una operación de preprocesado en relación con dicha representación y, si es así, usar el al menos un nodo shader para ejecutar dicha operación de preprocesado para generar una representación preprocesada de la escena; y
B. un módulo renderizador configurado para permitir al ordenador generar la imagen renderizada a partir de la representación de la escena o, si el producto de programa de ordenador incluye el módulo preprocesador, la representación preprocesada de la escena.
23. Un producto de programa para ordenador como el definido en la reivindicación 22 en el cual el al menos un nodo shader es de un tipo de nodo shader de geometría, estando configurado el módulo de preprocesado para permitir al ordenador ejecutar dicha operación de preprocesado usando el al menos un nodo shader del tipo de nodo de shader de geometría para definir la geometría para la escena.
24. Un producto de programa para ordenador como el definido en la reivindicación 22 en el cual el al menos un nodo de shader es de un tipo de nodo de shader de fotones, estando configurado el módulo preprocesador para permitir al ordenador ejecutar la operación de preprocesado usando el al menos un nodo de shader del tipo de nodo de shader de fotones para controlar el recorrido de al menos un fotón de la escena o al menos una característica de interacción de al menos un fotón con una superficie de un objeto de la escena.
25. Un producto de programa para ordenador como el definido en la reivindicación 22 en el cual el al menos un nodo de shader es de un tipo de nodo de shader de emisor de fotón, estando configurado el módulo preprocesador para permitir al ordenador ejecutar dicha operación de preprocesado usando el al menos un nodo de shader del tipo de nodo de shader de emisor de fotón para simular la generación de al menos un fotón por una fuente de luz que ilumina la escena.
26. Un producto de programa para ordenador como el definido en la reivindicación 22 en el cual el al menos un nodo de shader es de un tipo de nodo de shader de volumen de fotón, estando configurado el módulo preprocesador para permitir al ordenador ejecutar dicha operación de preprocesado usando el al menos un nodo de shader del tipo de nodo de shader de volumen de fotón para simular la interacción de al menos un fotón de una fuente de luz con un volumen tridimensional del espacio de la escena.
27. Un producto de programa para ordenador como el definido en la reivindicación 22 en el que el medio legible por ordenador tiene, además, codificado en él un módulo postprocesador configurado para permitir al ordenador determinar si el al menos un nodo de shader es de un tipo que se usa en ejecutar una operación de postprocesado en relación con dicha representación y, si es así, usar el al menos un nodo de shader para ejecutar dicha operación de postprocesado en relación con una imagen renderizada.
28. Un producto de programa para ordenador como el definido en la reivindicación 27 en el que el nodo de shader es de un tipo de nodo de shader de salida de datos, estando configurado el módulo postprocesador para permitir al ordenador ejecutar dicha operación de postprocesado usando el al menos un nodo de shader del tipo de nodo de shader de salida de datos.
29. Un producto de programa para ordenador como el definido en la reivindicación 28 en el que la imagen renderizada comprende una pluralidad de pixeles asociado cada uno de ellos con un valor de pixel, estando configurado el módulo postprocesador para permitir al ordenador ejecutar dicha operación de postprocesado en relación con dichos valores de pixel.
30. Un producto de programa para ordenador como el definido en la reivindicación 27 en el que el módulo postprocesador está configurado para permitir al ordenador usar el al menos un nodo de shader del tipo de nodo de shader de salida de datos para ejecutar al menos una de entre una operación de composición, una operación de convolución compleja o una operación de dibujado de línea de contorno.
31. Un producto de programa para ordenador como el definido en la reivindicación 22 que incluye, además, un segundo DAG de shader que comprende el nodo raíz primario y al menos un nodo de shader, en el cual el al menos un nodo shader de uno de dichos DAGs, cuando es usado por al menos uno de entre el módulo preprocesador o el módulo renderizador, proporciona al menos un valor que es usado en el preprocesado del al menos un nodo de shader del otro de dichos DAGs.
32. Un producto de programa para ordenador como el definido en la reivindicación 22 en el que dicho DAG de shader tiene, además, al menos un nodo raíz opcional para aplicar el DAG de shader a un segundo elemento de la representación de escena, estando conectado, además, el al menos un nodo raíz opcional al al menos un nodo de shader del DAG.
ES98930966T 1997-07-02 1998-07-02 Sistema grafico por ordenador. Expired - Lifetime ES2255167T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US5150797P 1997-07-02 1997-07-02
US51507P 1997-07-02

Publications (1)

Publication Number Publication Date
ES2255167T3 true ES2255167T3 (es) 2006-06-16

Family

ID=21971724

Family Applications (1)

Application Number Title Priority Date Filing Date
ES98930966T Expired - Lifetime ES2255167T3 (es) 1997-07-02 1998-07-02 Sistema grafico por ordenador.

Country Status (10)

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

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 (en) * 1999-08-25 2001-02-28 M.M. Multimedia A/S Method of rendering states of a system
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 (en) * 2000-03-08 2001-09-12 MVTec Software GmbH Method and system for developing image processing applications
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 (en) 2001-05-14 2002-11-20 Thomson Licensing S.A. Method to generate mutual photometric effects
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 (en) * 2015-06-04 2016-12-07 Samsung Electronics Co., Ltd. Method and apparatus for performing interleaving
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 (en) * 1991-08-13 1998-05-20 Xerox Corporation Electronic image generation
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
DE69832611T2 (de) 2006-08-10
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 (en) 2005-11-30
AU8123798A (en) 1999-01-25
US20030001844A1 (en) 2003-01-02
US6496190B1 (en) 2002-12-17
EP0993659A1 (en) 2000-04-19
ATE311637T1 (de) 2005-12-15
JP2001509620A (ja) 2001-07-24

Similar Documents

Publication Publication Date Title
ES2255167T3 (es) Sistema grafico por ordenador.
Wernecke The Inventor mentor: programming object-oriented 3D graphics with Open Inventor, release 2
US7548238B2 (en) Computer graphics shader systems and methods
JP2002517839A (ja) オブジェクトのルールベースグループを規定し、使用するアニメーションシステムおよび方法
Hauser et al. Two-level volume rendering-fusing MIP and DVR
AU2006265815A1 (en) Computer graphics shader systems and methods
Johnson et al. Artifact-based rendering: harnessing natural and traditional visual media for more expressive and engaging 3D visualizations
Plate et al. A flexible multi-volume shader framework for arbitrarily intersecting multi-resolution datasets
US9704290B2 (en) Deep image identifiers
Guevarra Modeling and animation using blender: blender 2.80: the rise of Eevee
US11625900B2 (en) Broker for instancing
Vergne et al. Designing gratin, a GPU-tailored node-based system
Viola et al. Tutorial 4: Illustrative Visualization
US5903274A (en) System for color and opacity transfer function specification in volume rendering
US5936639A (en) System for determining motion control of particles
Hamel et al. An approach to visualizing transparency in computer-generated line drawings
Aas TimeBender: Interactive Authoring of 3D Space-Time Narratives
Guevarra Modeling and Animation Using Blender
Smyk et al. JaTrac—an exercise in designing educational raytracer
Emsenhuber Visibility histograms in direct volume rendering
Gröhn 3D Engine Design And Implementation
McGraw et al. Fractal image editing with PhotoFrac
Grollert Two-level volume rendering—fusing MIP and DVR
Sampler The Inventor Mentor: Programming ObjectOriented 3D Graphics with Open Inventor™, Release 2
Nikishkov Introduction to Java 3D™