Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ordenar por material o por textura

Iniciado por AgeR, 04 de Abril de 2008, 05:23:26 PM

« anterior - próximo »

AgeR

Estoy rehaciendo y ampliando algunas partes de mi motor, y me ha surgido la siguiente duda: cómo ordenaríais vosotros los polígonos a renderizar, por textura o por material?

Hasta ahora mi motor utilizaba una o dos texturas por objeto, dependiendo del tipo. Ahora quiero contener en un Material los datos de color, etc y los punteros a texturas que pueda tener un objeto.

Lo que no tengo claro es si ordenar los polígonos por su textura difusa, o directamente por material. El tema es si ordenando por textura difusa y activando/desactivando el resto de pasos (bumpmap, lightmap, etc) se ganaría algo en rendimiento, o sería preferible tener los vértices ordenados directamente segun su material y cambiar las texturas y texturestages necesarios para cada grupo de vértices.

Tres párrafos, y no se si me he logrado explicar bien  :? .

Tei

En principio, y dada mi ignorancia, diria que dibujes de golpe todos los poligonos de la misma textura. Para no tener que cambiar de una textura a otra. Aunque no se si eso es importante. Pero luego me hablas de material, y que me aspen si se lo que es eso.

senior wapo

En términos quakeros, que es lo tuyo :p, material son los "shaders" de quake3, vamos, la combinación de texturas, renderstates y blending states de una superfice determinada.

A día de hoy, con shaders propiamente dichos, suele ser mejor ordenar por pixel shader y después por textura, ya que el coste de seleccionar un shader es mucho más alto. Le supone a la GPU mucho más trabajo de inicialización que seleccionar una textura nueva.
Con la fixed pipeline sigue siendo mejor ordenar por textura.

De todas formas cada motor es un mundo, lo mejor es probar y medir tiempos.

Prompt

Yo agruparia por material. De hecho así lo hago yo en mi motor.

Llamemos material a:
- Combinación de shaders, variables y elementos ( texturas )
- Configuración de:
   - Vertex States.
   - Fragment States.
   - Material Properties.

Luego tambien hay que tener en cuenta cosas como alphas y tal. U optimizar dentro de la ordenación de material haciendolo por texturas. Puede ser una buena idea.

Como dice senior lo suyo es hacer pruebas de stress.

Un saludo.

Loover

En codepixel han puesto un par de tutos sobre motores bastante interesantes. En el segundo, "Driver gráfico" hablan sobre cómo ordenar. Creo que lo hacen por material:

http://www.codepixel.com/
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Ruben

Hi,
estoy de acuerdo con Senior Wapo.

Por si te ayuda, en la web de Tom Forsyth hay un articulo sobre el coste de los cambios de estado. Actualmente seria la ultima entrada titulada: "Renderstate change costs". La web es: http://home.comcast.net/~tom_forsyth/blog.wiki.html

Un saludo,
Rubén

derethor

muy sencillo, primero por material, despues para los del mismo material, ordenas por textura, y despues por los que esten mas próximos a cámara (para que rellenen el zbuffr lo antes posible)
Javier Loureiro
CodePixel Webmaster






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.