Compresion de texturas para que los juegos ocupen menos!

One of the most interesting talks at London’s GDC (Games Developers Conference) this week came form one of the lesser known companies called Allegorithmic, who claim they will be able to reduce texture file sizes in games by up to 70%.


The next demo was of a game that is due to come out for the XBOX Live Arcade called ‘Roboblitz’. Due to the requirement to get the game under 50MB, the developers needed to keep the textures as small in filesize as possible. Using the new texture system the overall size for all the textures was less than 280KB – watching the game (which runs on the Unreal 3 engine) I was amazed.

Confused by the fact that I hadn’t heard about this technology before, I spoke to one of the men behind it directly - Dr Sébastien Deguy. He assured me that there were no catches with his system, that if a game contained 1GB of textures he would be able to reduce that to 300MB and lose no quality. When I asked why everyone wasn’t using the program at the moment he explained it was due to people needing to be retrained in learning a new system. He was optimistic however, that soon all games companies will be using their new texture tools.



Coño! y usando Unreal Engine 3!

http://www.bit-tech.net/news/2006/10/04/Game_file_sizes_could_soon_be_70_smaller/
corpa está baneado del subforo por "No especificado"
¿pero eso es que las descomprime una vez finalizada la descarga y pasa a ejecutarse el juego o significa que habra que destinar recursos del sistema a descomprimir texturas segun necesite el juego mientras lo rulamos?
pero esto no se hacia ya desde hacia eones? (DxTC)

saludos cordiales.

pd. yo soy mas amigo de las texturas procedurales (si se trata de reducir espacio en disco ocupado por texturas).
Como dice GXY se trata de texturas procedurales. Esto es lo que uno de los miembros de la compañía ha aclarado:
Hi, I'm technical artist at Allegorithmic.
I just wanted to tell you that our technology has nothing to do with compression. Our textures are not compressed bitmaps, they are are procedural.
The texture are created within MapZone and are exported in a single file. This file (.pfx) contains all the textures of a level for exemple.

When you launch the game, the procedural textures are computed by the GPU in a very short time, then they are compressed in DXT1 or DTX5 format and stored in the video card memory.

The compute/compress time is faster than puting bitmaps textures from hard drive into the video card memory.

The 280 textures of Roboblitz are computed in 4sec in the xbox360 or on GeForce7 card serie. The pfx file weight 280Ko.

It's because textures are procedural that the file size is reduced, once in the graphic memory the textures are stored as any bitmap texture.

Nicolas

http://forums.bit-tech.net/showthread.php?t=121861&page=2&pp=20


En este hilo del foro General de X360 se comenta más acerca de esto.
es que lo que es de traca, es usar fotos (o fotoshopeos) para texturas de materiales como marmol, madera, metal, piedra, asfalto o hierba, cuando una textura procedural bien creada, ocupa mucho menos espacio y da un aspecto visual igual de bueno o mejor. (a cambio de mas tiempo de computacion).

de hecho, se sigue abusando vilmente del texturado "a lo bestia" para todo, y luego claro... falta memoria.

saludos cordiales.
A ver si alguien sabe contestarme a esto con seguridad. Es a razón de lo que dice GXY (no te estoy persiguiendo, de verdad [carcajad] ) sobre la memoria.

Una vez generada la textura a partir del patrón procedural ¿no ocupa en memoria principal un tamaño similar al de una textura estándar?
Por lo que tenía entendido, el beneficio con este tipo de texturas venía a la hora de almacenarlas, no también a la hora de que utilizarla en el juego [comor?]
Gooler escribió:A ver si alguien sabe contestarme a esto con seguridad. Es a razón de lo que dice GXY (no te estoy persiguiendo, de verdad [carcajad] ) sobre la memoria.

Una vez generada la textura a partir del patrón procedural ¿no ocupa en memoria principal un tamaño similar al de una textura estándar?


La cosa es que no se alamacenaria, sino que se generaría y se usaría "al vuelo".
Gooler escribió:A ver si alguien sabe contestarme a esto con seguridad. Es a razón de lo que dice GXY (no te estoy persiguiendo, de verdad [carcajad] ) sobre la memoria.

Una vez generada la textura a partir del patrón procedural ¿no ocupa en memoria principal un tamaño similar al de una textura estándar?
Por lo que tenía entendido, el beneficio con este tipo de texturas venía a la hora de almacenarlas, no también a la hora de que utilizarla en el juego [comor?]


Era justo lo que iba a decir, tener que generar la textura en cada fotograma puede ser bastante bestia.
las texturas procedurales siempre son muchisimo mas baratas en memoria, tienes resolucion ilimitada y posibilidad de un AA a tope con un coste de memoria muy bajo , sobre todo a la hora de crear elementos naturales ( Como a dicho GXY ), que son para lo que se utiliza.
La gracia de esto es ahorrar espacio en disco, y por tanto, aumentar la cantidad de texturas totales que se pueden tener en un juego.

La "desgracia" sería saber cuanto tarda una gráfica en descomprimir unas pocas texturas desde el disco para volcarlas a memoria (almacenadas a su vez, en un formato comprimido).

Quizas estos chicos, deberían permitir descomprimir tb las texturas procedurales desde la cpu, sobre todo pensando en consolas con esas cacho cpus.
Aquí es donde me viene la cabeza una cosa que no puedo reprimir...

Y entonces para que puta mierda queremos BR? Para nada, no es necesario, nos la meten doblada y punto. Los videos pueden comprimirse, el audio tb, las texturas tb, y si te gastas un dvd en todas estas cosas la maquina no tira ni patrás...

Está claro que algo bien programado ocupará menos.

Sobre lo de las texturas chupando recursos, esto puede hacerse en el momento de la carga, en ese proceso se decomprimen y se dajan así y se usan.

Y como han dicho por ahí, aunq sea para usarlas al vuelo deben almacenarse en memoria principal (al menos).

Manda huevos...
pero bueno , la discursion de BR , no creo que exista a estas alturas no?

Es por meter a la vez su formato para peliculas HD ( cosa que me parece inteligente por parte de sony ) ;-)

Ahora tener espacio extra siempre ayuda XD
Maxtorete escribió:Era justo lo que iba a decir, tener que generar la textura en cada fotograma puede ser bastante bestia.
No, no. Esto no consiste en "generar" la textura a cada fotograma, sino generar la textura durante el "loading" y cargarla en memoria en el formato adecuado para poder usarla durante todo el tiempo que se desee. Está explicado "a lo bestia" pero se entiende mejor, supongo xD

Saludos
shadow land escribió:La "desgracia" sería saber cuanto tarda una gráfica en descomprimir unas pocas texturas desde el disco para volcarlas a memoria (almacenadas a su vez, en un formato comprimido).


Unos 4 segundos para 280 texturas en la 360.
El problema de esta tecnologia es que solo sirve para crear texturas a mano.

Es muy habitual en juegos nuevos usar texturas sacadas de fotografias (desde escanear las caras de deportistas a muros), si haces texturas asi su sistema no sirve.
Si quereis ver un ejemplo de texturas procedurales en un juego/demo tecnológica:

http://www.theprodukkt.com/kkrieger

es del 2004 y ya se ha nombrado más de una vez por el foro. Si no me equivoco hasta el sonido está generado mediante sintesis en tiempo real.
Imagen
Imagen
Imagen

Imagen

imagenes de un juego para el live arcade
no ocupa mas de 50 megas el juego este con el unreal engine 3 y utlizando esta tecnica creo

sacadas del enlace del hilo de xbox360
pd. joer si pinta mejor que los juegos de wii ... y de muchos otros [rtfm]
.produkt, peazo demo. Luego hicieron otra. La embuten toda en 64kb mediante este tipo de algoritmos.

Johny27 escribió:
Unos 4 segundos para 280 texturas en la 360.


me refiero "in-game" para usarlo para streaming. Me gustaría saber el ratio real de carga, que aún con todo, supongo que sería muy poco, y valido para hacer que Test Drive unlimited no pete el frame rate al realizar streaming cuando voy a 320 cruzando la isla en mi mclaren gtr.
Diskun escribió:No, no. Esto no consiste en "generar" la textura a cada fotograma, sino generar la textura durante el "loading" y cargarla en memoria en el formato adecuado para poder usarla durante todo el tiempo que se desee. Está explicado "a lo bestia" pero se entiende mejor, supongo xD

Saludos


No me has entendido, digo que lo que iba a decir lo mismo que Gooler, que la textura sería almacenada de forma procedural en el medio de almacenamiento, pero que en memoria no habría cambio con el sistema tradicional, porque calcular todas las texturas una y otra vez puede consumir CPU demasiado necesaria en otros asuntos.

El problema de los desarrolladores de este juego era a la hora de cumplir con el tamaño máximo permitido para juegos XLA.
shadow land escribió:me refiero "in-game" para usarlo para streaming. Me gustaría saber el ratio real de carga, que aún con todo, supongo que sería muy poco, y valido para hacer que Test Drive unlimited no pete el frame rate al realizar streaming cuando voy a 320 cruzando la isla en mi mclaren gtr.


The 280 textures of Roboblitz are computed in 4sec in the xbox360 or on GeForce7 card serie. The pfx file weight 280Ko
repito, "in-game".

Esas 280 texturas son antes de entrar ingame :P yo no digo durante el loading, a mi el loading me la pela mientras no dure 5 minutos (aún recuerdo los 45' de muchos juegos de spectrum)
shadow land escribió:repito, "in-game".

Esas 280 texturas son antes de entrar ingame :P yo no digo durante el loading, a mi el loading me la pela mientras no dure 5 minutos (aún recuerdo los 45' de muchos juegos de spectrum)


si no se te paraba , y tenias que intentar reeganchar la carga [jaja]
shadow land escribió:repito, "in-game".

Esas 280 texturas son antes de entrar ingame :P yo no digo durante el loading, a mi el loading me la pela mientras no dure 5 minutos (aún recuerdo los 45' de muchos juegos de spectrum)


Te he puesto eso pa que veas la velocidad de descompresiçon. Si tu dedicas un SPE (por ejemplo) a descompresion, puedes tenerla en tiempo real. Es suficientemente rapida.
Bueno los datos de la velocidad de carga los dan usando la GPU entera para ello. Lo bueno es que no tendrias que preocuparte por la velocidad de lectura del disco pero no se si exige demasiados recursos como para usarse en streaming.
obviamente parece que en la gpu los recursos son "minimos", pero sería interesante saber cuando chuparía en una unidad vectorial de cpu, supongo que sería perfectamente factible...
GXY escribió:pero esto no se hacia ya desde hacia eones? (DxTC)


Tal vez tenia que haber5 puesto ''Ultra compresión '' xD

lo saque tal cual de GAF.


no hace mucho (1-2 años), jugue a un fps bastante raro, que no ocuapba creo que más de 1-10 mb y la verdad es que los graficos eran cojonudos, pero tiraba mucho de cpu.
Igual jugaste al Krieger, raro es un rato.

Señores, la "sintesis" cada vez está mas cerca XD
mcklain escribió:Igual jugaste al Krieger, raro es un rato.


Raro es poco [toctoc]

Pero si es increible que embutan todo eso en 96 kilobytes :-p
28 respuestas