Polls

Que API tiene más futuro?
 
Inicio arrow Noticias arrow Lo + Nuevo arrow A flexible material system in design
A flexible material system in design PDF Print E-mail
Written by Javier Loureiro   
Thursday, 28 February 2008

Seguimos leyendo las presencaciones del GDC2008. Esta vez nos toca una muy muy recomendable, sobre materiales con tarjetas modernas .

 La presentación nos desarrolla cómo deberíamos de organizar las propiedades de los materiales cuando renderizamos objetos. Los drivers modernos están pensados para que un objeto tenga definidas todas sus propiedades. Usaremos una mezcla de ordenar estados, y aprovechar de una cache de estados para no cambiar innecesariamente de estado entre objetos, que es realmente lo lento en una tarjeta. DirectX 10 tiene los state objects para precisamente esto.

 Cuando visitamos un material, tenemos un prerender y un postrender, donde activaremos la configuración del material (por ejemplo, activaremos la textura, o definiremos la cantidad de especular para ese objeto). Si hemos sido cuidadosos, no tendremos que cambiar muchas cosas entre objetos.

 Hay casos que hay que contemplar. Por ejemplo, reemplazar todos los shaders de la escena, para pintar el shadow map. O cambiar el modo de render a wireframe. 

 La presentación nos habla de modificadores del material , y nos introduce una forma flexible de manejar muchos cambios en estados globales, usando una pila de modificadores globales. Así, cada objeto mirará si hay algo que modifique el material asignado antes de pintarse. Esta pila puede modificar ligeramente, o reemplazar totalmente el material.

Tambien nos hace incapié en la creación dinámica de shaders, para optimizar el render, combinando shaders antes de compilarlos. Asi podremos por ejemplo, realizar sumas y operaciones, reducir luces que no son visibles, etc. 

 

Comentarios
AgregarnuevoBuscar
Rubén Penalva     | 195.219.143.xxx | 2008-02-28 15:07:14
Cita:
Hay casos que hay que contemplar. Por ejemplo, reemplazar todos los shaders de la escena, para pintar el shadow map. O cambiar el modo de render a wireframe.

Ultimamente estoy investigando sobre esto y me parece lo mas complicado. Todo es muy bonito cuando en tu vida solo hay materiales que afectan a un solo objeto (phong, bump map, etc..), pero cuando aparecen cosas como shadow maps, cube mapping, combinaciones de atributos de luces y materiales, etc... te caes del guindo rapidamente... :P

Estaría bastante bien saber como se lo montan motores potentes comerciales: unreal engine, el de crytek, etc..
Por ejemplo, segun ponen en su blog la gente de offset engine tienen un diseño de sistema de materiales basado en renerman.
davidnr   | 213.170.46.xxx | 2008-02-28 15:33:44
Estoy de acuerdo con Ruben en que los sistemas de materiales son de lo mas complicado y de lo que menos publicaciones hay.

En casa estoy desarrollando un sistema de materiales con definiciones de BRDFs (estilo pbrt) pero que sea "traducible" para usar tanto desde openGL como desde un raytracer. En el caso del raytracer es practicamente igual al pbrt, pero en tiempo real las cosas se complican bastante, estados, generacion de shaders, y sobre todo la flexibilidad para modificar parámetros fácilemente, sigo pensando en ello. Quizá sea mejor una arquitectura basada en shaders atómicos como comentó derethor en la charla del otro día y ciertos estados globales que "machaquen" los de los materiales.
derethor   | Super Administrator | 2008-02-28 15:53:01
soy bastante reticente a un sistema de brdf´s para tarjeta genérico.

Porque el realismo no viene del brdf en sí, si no de sus combinaciones. Como pintarias un material que fuese 10% lambert rojo, 15% orennayar azul, 35% especular blinn, y el resto una distribucion lafortune, usando pixelshaders, teniendo en cuenta que el pixel de al lado puede ser solamente orennayar?

Ya no hablamos de cómo hacemos para samplear la luz directa q nos viene de la dirección de máxima intensidad en un especular...

BRDF´s genericos y rasterizadores... es que no lo veo.
davidnr   | 213.170.46.xxx | 2008-02-28 18:09:21
Jeje, yo tampoco lo veo nada claro.

De todos modos no es tanto usar directamente brdfs como "traducir" un material representado como brdfs a un material para la tarjeta.
Rubén Penalva     | 83.49.160.xxx | 2008-02-28 20:02:06
Si teneis recursos(libros/hilos de foro/papers/etc..) que hablen del tema estaria genial que lo posteaseis. Me parece muy interesante la cuestion.

Yo tengo impresos unos cuantos hilos y journals de gamedev que estan muy chulos. Luego recopilare los enlaces y los pondre.
derethor   | Super Administrator | 2008-02-28 20:30:08
para materiales, muy interesante este curso del siggraph:

http://portal.acm.org/citation.cfm?id=1198555.1198601&coll=Portal&dl=ACM&CFID=18154466&CFTOKEN=58512631

no se si esta disponible online, quizas si...
- David Miraut - El curso de materiales   | 193.147.61.xxx | 2008-02-28 21:28:09
A mi también me gustó mucho, aquellos que no tengan acceso a las actas/cursos del ACM SIGGRAPH, pueden consultar el "material" del curso aquí:

http://www.mpi-inf.mpg.de/resources/siggraph05-course-realistic-materials/

En el SIGGRAPH Encore están los vídeos de la presentación.
- David Miraut - He metido la pata   | 193.147.61.xxx | 2008-02-28 21:34:27
En el enlace sólo están las transparencias, que es una parte pequeña del material del curso que apuntaba Javier en la web del ACM.
derethor   | Super Administrator | 2008-02-29 02:31:13
anda! no sabia eso del encore!!! que chulo (pd. si realmente quereis leer papers, os aconsejo comprar la subscripcion de siggraph, unos 200 euros anuales)
davidnr   | 213.170.46.xxx | 2008-02-29 12:21:59
Tienen buena pinta esos enlaces, lástima no tener acceso a los papers de ACM.
Escribir comentario
Nombre:
Email:
 
Website:
Título:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 
Security Image
Por favor introduce el codigo anti-spam que puedes leer en la imagen.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.



menéameDigg!Del.icio.us!Google!Technorati!Yahoo!
Last Updated ( Thursday, 28 February 2008 )
 
< Prev   Next >

Lista de Correo

visita la lista de correo de codepixel. Es una lista abierta, asi que podrás subscribirte y preguntar tus dudas de programación, compartir tus opiniones, aportar ideas, y formar parte de la comunidad codepixelera.