Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





DXTC

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                ¿Cómo puedo convertir una textura normal en una comprimida?

No me sirve grabarla y después cargarla, quiero hacerlo en tiempo de ejecucíón.

¿alguien conoce el tema?                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Emotion

                                Hola Dracula,

En tiempo de ejecucion?? bueno, supongo que te haras una ligera idea sobre la diferencia en los tiempos de proceso entre compresion y descompresion, no? porque comprimir lleva mucho mas tiempo... aunque solo quisieras comprimir tus texturas normales en texturas con un patron de compresion simple, digamos un RLE de 8bits, te llevaria tiempo...

Creo que lo que las tarjetas tienen (no todas, eso si) es soporte para descomprimir (si no mal recuerdo), pero no para hacer el proceso a la inversa, es decir, para comprimirlas (o al menos eso creo).

De todas formas, y a juzgar por el titulo del topic, tu lo que quieres es cubrir la compresion con el DXTC, no? es decir, no quieres cubrir otros como el S3TC o el FXT1 y similares, no?

Saludos
                               
G3: Get the Power!

Drácula

                                Existe una función en D3DX que graba una textura a un fichero y lo comprime(.dds)

Es lógico pensar que debe existir alguna función que comprima una textura.

Aunque en tiempo de ejecución ya sé que tardaría mucho, es muy útil para desarrollar, puesto que el grafista trabaja con jpg y es el programa el que convierte. Al final, se graban las texturas definitivas en el formato comprimido y se ha ganado un tiempo precioso en desarrollo.                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

_Grey

                                Quizas te interese el fichero "ARB_texture_compression.pdf" de developer.nvidia.com, igual te sirve.

Saludos.                                

_Grey

                                Reconozco que no tengo idea de ingles, pero mirando por la docu de Dx he encontrado esto, no se si te sirve...:

Decompressing Compressed Texture Surfaces
As with compressing a texture surface, decompressing a compressed texture is performed through Microsoft® Direct3D® copying services.

"To copy a compressed texture surface to a uncompressed texture surface, use the function D3DXLoadSurfaceFromSurface. This functions handles compression to and from compressed and uncompressed surfaces."

Saludos.                                

mallrat

                                Hola drácula, a ver si te vale esto, es para cargar una textura de disco (jpg por ejemplo) y tenerla en memoria como DXTC:

HRESULT hr = D3DXCreateTextureFromFileEx( pd3dDevice, "archivo.jpg",  0, 0,
1, 0, D3DFMT_DXT3, D3DPOOL_MANAGED,
D3DX_FILTER_TRIANGLE, D3DX_FILTER_BOX,
0, NULL, NULL, &pTextura );

Si lo que tienes son los datos en memoria, la forma mas sencilla sería crear una textura en memoria de sistema de tipo A8R8G8B8, metes los datos en ella, y luego creas una textura D3DFMT_DXT3 (o el que te venga bien) en memoria de video y haces D3DXLoadSurfaceFromSurface() para que el D3DX haga la conversión.

[Emotion]
que te hace pensar que Dracula no sabe que es mas lento hacer una compresion que la correspondiente descompresion? tio...
por cierto te haces unos lios tremendos, aunque las tarjetas no comprimen a dxtc por hardware, nadie ha pedido eso, se trata de hacer la compresion por software, pero en tiempo de ejecución. Otra cosa, la compresion DXTC es exactamente la misma que la S3TC (pero distinta de la FXT1, eso si, aunque está claro que Dracula no se interesa por esa... sobre todo teniendo en cuenta que 3Dfx... ehem)

saludos
                               

Ithaqua

                                No le encuentro la utilidad. Si se usan texturas comprimidas, para que comprimirlas en tiempo de ejecución? Si tarda una burrada.
Para eso están los plugins de photoshop etc que cargan/salvan texturas comprimidas.

          Ithaqua.


http://ithaqua.stravaganza.org
                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org

ProD

                                Estoy contigo Ithaqua... el plugin de photoshop está mu guapo y os lo podeis bajar de la web para el desarrollador de nvidia. También os podeis bajar una libreria para compresión y descompresión de texturas en el formato DXTCn también desde la misma web, de todas formas la lib D3DX permite la carga de este tipo de texturas comprimidas... no veo el problema......

Un saludo.
                               
as ideas son capitales que sólo ganan intereses entre las manos del talento

_Grey

                                Pues yo estoy con Drácula,comprimir las texturas en el programa antes de usarlas puede ser util, no todo el HARD soporta texturas comprimidas,y no tendras la misma textura comprimida en distintos ficheros por que es tirar recursos tontamente, pero con la forma de trabajo de Drácula, puedes cargar la textura (o sprite, recordemos que es un motor2D aun) comprobar que compresiones soporta y usar la que combenga si combiene, o dejarlo tal cual si no puede ser.
Recordar que comprimiendo textura no solo ahorras espacio, si no que tambien, ganas velocidad.

Chao!                                

Emotion

                                Hola Mallrat,

Bueno, si... es cierto, 3DFX fue absorbida por nVidia, lo que pasa es que, bueno... mas que lio, es que me cuesta ver la utilidad de eso, lo que pasa es que yo con mi motor estoy separando esa clase de procesos y poniendolos fuera de mi motor (tal vez por eso tiendo a verlo todo ahora mismo a mi manera). de cualquier manera, lo siento...

Para _Grey,

Bueno, es cierto que se ahorra espacio en memoria con texturas comprimidas, pero lo que se dice velocidad... hombre, si la tarjeta te descomprime las texturas por hardware... si, pero si no es asi, la descompresion la haces tu por software, con lo cual solo se acaba ganando espacio, pero no velocidad (claro que con mi TNT2 no es que pueda hacer mucho al respecto :riendo:)

Por cierto, hace tiempo (no mucho) encontre por ahi un documento de una investigacion sobre imagen en la cual por lo visto se desnormaliza la imagen y con eso se conseguia comprimir la imagen (o mejor dicho... reducirla) a un tamaño unas 200 (o 2000) veces inferior, porque luego solo habia que renormalizar la imagen... alguien sabe que documento es ese? en la pagina que lo vi (ya no recuerdo cual era) no habia enlace a un .ps ni .pdf ni nada de nada...

Saludos

_________________
Julio Meca
ALPHA SOFTWARE

[ Este Mensaje fue editado por: Emotion el 2002-04-12 09:18 ]                                
G3: Get the Power!

Drácula

                                Bien, es evidente que es mucho más "standard" que los grafistas utilicen jpg que no dds, a parte de que pocos programas de modelado lo soportan. Por ello veo mucho más cómodo que el desarrollo se haga con los formatos standard y el definitivo en dds, aunque no estoy seguro de sí en un P4 a 2.2GHz se va a notar mucho la compresión en tiempo real.

Ciertamente probé cargar la textura usando compresión y funciona, pero no con las texturas con Alpha! Me parece una maravilla esta funcionalidad de las D3DX, la verdad es que me sorprenden por su velocidad y facilidad..(se nota que no son Microsoft!!)

Estos conocimientos adquiridos los adaptaré a mi motor. Espero enviar una nueva versión este fin de semana.                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Ithaqua

                                Grey, prueba a bajarte el plugin de photoshop para texturas comprimidas y míralo tu mismo. Pilla un dir cualquiera de texturas de una escena y dále :sonriendo:
Y si una tarjeta no las soporta, símplemente se hace como cuando cargas un .jpg, descomprimes y la subes.
En cuanto a que se gana velocidad, habrá casos que sí y casos que no, en general siempre es recomendable usarlas si la tarjeta las soporta, dado que se reduce mucho el consumo de ancho de banda.

Saludos, Ithaqua.

http://ithaqua.stravaganza.org

                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org

BeRSeRKeR

                                Sólo por curiosidad...¿quién ha desarrollado las D3DX?...lo digo porque como vienen incluidas en el SDK de las DX...

Un saludo.
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Drácula

                                Las D3DX se ha desarrollado en la Universidad de California.                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

BeRSeRKeR

                                ¡Hay que felicitarlos pues! :sonriendo:
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






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.