Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Texturización (4x512 o 1x2048)

Iniciado por Totemalf, 03 de Enero de 2012, 06:49:49 PM

« anterior - próximo »

Totemalf

Buenas una vez más,
me surge una duda sobre texturización, aunque tiene que ver con programación por lo que no se si debía postear aquí o en el foro de nuestros queridos coders.
Bueno, la duda es la siguiente:
Qué es mejor, crear una textura de 512x512 y repetirla cuatro veces, o bien hacer una sola de 2048x2048? que es mejor?, que le cuestá más mover al motor?

Un saludo, y como siempre, mil gracias.

P.D Feliz último año

[EX3]

Salvo que me equivoque sera menos costoso dibujar una textura una sola vez, tenga el tamaño que tenga, que dibujarala varias veces aun siendo la misma (que no haya cambio de textura en la operacion de dibujo).

El asunto de las texturas viene mas que de programacion por la limitacion de las tarjetas graficas. Si no recuerdo mal, ahora mismo la limitacion "estandar" para asegurar compatibilidad esta en un maximo de 2048x2048 (XNA aplica esta limitacion en PC y XBox360 con el perfil Reach o en el propio Windows Phone por ejemplo).

Otra cosa a tener en cuenta, creo yo, si la textura que vas a dibujar es una repeticion de un patron mas pequeño, mas que preocuparte por si es mas costoso dibujar una megatextura frente a una pequeña varias veces es lo que va a ocupar la textura grandre frente a la textura pequeña que compone el patron minimo de repeticion. En verdad, si fueras a dibujar eso, un tileado con el mismo patron, la tarjeta tiene tecnicas para pintar una textura y hacer que se repita sobre un poligono tantas repeticiones como necesites. Esto lo puedes ver en cualquier juego 3D donde utilizan patrones pequeños, cesped por ejemplo, para representar grandes extensiones de terreno. Ahi no estan dibujando una macrotextura enorme si no una textura pequeña aplicando repeticion. Esto no estoy seguro pero creo que era jugando con las coordenadas de la textura al dibujarla (desde que deje de programar mi libreria en DirectX estoy empezando a olvidar estos conceptos).

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Mr. Sandman

Añadiría que es bueno estudiar si puedes repartir mejor el espacio de UVs en una de 2048x2048 o por lo contrario, si lo pones todo junto puede que no utilizes mucho del espacio del que dispones.
También ten en cuenta que una textura de 2048x2048 no son 4 veces una de 512x512, sino 4 veces una de 1024x1024 ;)

Totemalf

Ok, gracias, eso me aclara un poco las cosas.
Yo en realidad lo que habia hecho era seccionar una pared en cuadrados simetricos, y aplicado sobre ella una textura tileable de 512x512 repitiendose en cada cuadrado, quedando asi la textura con bastante calidad. Pero era eso, no sabía si iría peor para el motor o no. Imagino que lo que he hecho es un poco como lo que comentas del cesped pero a pequeña escala.
Vaya, pense que era 512x4... menuda texturaca entonces :P.

Un saludo

Mars Attacks

Como en tantas otras cosas de la vida, cuanto más grande, mejor :) Por pintado, por tiempo de cargas, por caché, por mil cosas.

AgeR

En realidad depende de muchas cosas, aunque si el motor está bien implementado, mejor una textura grande.

Dependiendo de cómo esté particionado el espacio/objetos y demás, puede darse el caso de que no consigas ninguna mejora dado que se esté cambiando contínuamente de textura para renderizar diferentes nodos con diferentes texturas.

Pero vamos, como norma, mejor una textura grande si el motor y la plataforma lo soportan.






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.