Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Soporte Pixel Shaders 1.1

Iniciado por BeRSeRKeR, 18 de Agosto de 2003, 09:04:21 PM

« anterior - próximo »

BeRSeRKeR

 Holaaaaaa!

Bueno, me gustaría hacerme una idea de cuánta gente tiene aceleradoras con soporte para pixel shaders 1.1

Por si no lo tienes claro, tienen soporte todas las GeForce3 o superiores (menos la GeForce 4 MX) y las Radeon 8500 o superiores.

Todo esto es para una cosilla que empecé a hacer hace casi 2 semanas. Tal vez tenga algo para mostrar dentro de poco pero tranquilos, no sería nada del otro mundo. Más que nada sería para comprobar que funciona en el mayor número posible de aceleradoras. Por ahora, como digo, he estado casi 2 semanas programando sin ver casi resultados por pantalla...es un poco frustrante, pero bueno, tener una buena base es muy importante...  :D

Bueno, pues eso, que me me gustaría ver qué aceleradoras tenéis :). Para empezar yo tengo una GeForce3

Ale, gracias por tu colaboración :)
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Grugnorr

 GF4 ti 4200 128 VRAM

Has usado el HSL de DX9?, tiene buena pinta con eso de poder compilar a una versión de Pixel y Vertex shaders. Intregrado con los effect files parece muy potente, pero sólo he visto esas cosillas de reojo...
hat the hells!

MChiz

 Hola!

GeForce 4 TI 4200 64MB

Yo estoy intentando utilizar CG, pero parece que no tiene ni PS ni VS inferiores al 2.0. Alguien sabe algo sobre esto? Gracias!!

Adiooo!!

CoLSoN2

 Creative GeForce4 Ti 4200 64MB
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

BeRSeRKeR

 Sí Grugnorr, he utilizado el HLSL. Lo que no he utilizado ha sido los archivos de efectos. En un principio pensé en utilizarlos pero después ví que había cosas que no me permitirían especificar...no sé, creo que con lo que estoy haciendo tengo las mismas capacidades que con los archivos de efectos pero con la ventaja que es algo personalizado...hecho a medida :D

De lo que estoy hablando es de unos scripts que he creado para especificar entre otras cosas, los passes de render que son necesarios para el render de un determinado objeto, los render states, vertex shaders, los parámetros para los vertex shaders, pixel shaders, los parámetros para los pixel shaders (samplers, etc).

Por ejemplo, imaginad que tengo un vertex shader en el que aplico un efecto de stretching a las coordenadas de textura. Para ello tendría una variable declarada en el vertex shader que indicaría el factor de stretching. Pero a esta variable hay que asignarle un valor que puede variar de un objeto a otro. Pues bien, ese valor se especificaría en el script de shaders (al cual he llamado IFXShader :D).

Ahí va un ejemplo:

shader "tcStretch"; Shader para probar el stretching
{
priority SORT_OPAQUE; Prioridad de render

pass 0; Pass de render
{
 renderStates; Estados de render
 {
  cullMode CULL_CCW; Elimina las caras en sentido contrario a las agujas del reloj

  fillMode FILL_SOLID; Mostramos el objeto en modo sólido

  zEnable  false; Desactivamos el depth-test
  zWrite  false; Desactivamos la escritura en el depth-buffer

  alphaBlend false; No queremos alpha blending
 }

 vs "main" "vs_1_1"; Vertex Shader v1.1
 {
  source "shaders/vertexShaders/PosTex1_tcStretch.vs"; Fuente del vertex shader
 
  params; Parámetros del vertex shader
  {
   float4x4 "m4Transform"; Matriz de transformación (a clip-space)
   
   tcModifiers; Modificadores de coordenadas de textura
   {
    tcStretch "fStretch"; Stretching
    {
     wave; Onda aplicada al modificador
     {
      type  WT_SIN
      base  1.2f
      amplitude 0.8f
      phase  0.0f
      frequency 0.8f
     }
    }
   }
  }
 }

 ps "main" "ps_1_1"; Pixel Shader v1.1
 {
  source "shaders/pixelShaders/diffuseMap.ps"; Fuente del pixel shader
 
  params; Parámetros del vertex shader
  {
   sampler "diffuseMap"; diffuseMap
   {
    source  "textures/blocks11bbroke.jpg"; Archivo de textura para el diffuseMap

    addressU ADDRESS_WRAP; Queremos repetición de la textura
    addressV ADDRESS_WRAP;

    minFilter TEXF_LINEAR; Filtro de minificación
    magFilter TEXF_LINEAR; Filtro de magnificación
    mipFilter TEXF_LINEAR; Filtro para el mipmapping
   }
  }
 }
}; Fin pass 0
}; Fin shader "tcStretch"


La fuente de inspiración para crear este tipo de scripts fue quake3 (en doom3 son similares). De hecho, ProD y yo utilizamos algo parecido en nuestro anterior motor (Illusion3D :)). Lo que pasa es que este que he creado para este nuevo "motor" es más flexible, te permite especificar más cosas. ¡O por lo menos esa es mi intención!. Por ejemplo, podría espeicifcar varios vertex & pixel shaders en el mismo IFXShader y en tiempo de ejecución elegir el que más se adecue a la aceleradora existente (aunque eso también lo pudes hacer con los archivos de efectos de MS). Pero bueno, tengo más cosas en mente que habrá que pensar mejor para ver cómo las voy a implementar. Por ahora la cosa va bien :)

Bueno, pues nada más por ahora. Ya sacaré una prueba para ver qué tal va en distintas aceleradoras y entonces podréis husmear en los IFXShaders y los vertex & pixel shader ;)

Saludos.
¡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.