Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Novedades Del Shader Model 3.0

Iniciado por Zaelsius, 08 de Abril de 2004, 01:23:27 PM

« anterior - próximo »

Zaelsius

 Aquí se comentan las principales novedades y especificaciones del Shader Model  3.0:

http://www.microsoft.com/whdc/winhec/partn...l30_NVIDIA.mspx

Hay una parte en la que dice:
CitarMost light types only apply to the front side of an object—the side facing the light.  Therefore, you can use both vertex and pixel branching to skip processing for lights that the shader detects as facing away from the light.

¿No querrán decir "skip processing for FACES the shader detects as facing away from the light"?

Bueno es una lectura corta e interesante, y aun sin haber trasteado mucho con shaders se puede tener una impresión de las mejoras que suponen.

Hay una cosa que comentó Haddd, sobre la ausencia de múltiples "Render Targets" en las GeForce FX. En la nueva especificación la tarjeta debe soportar 4 "Render Targets ":

CitarMultiple render targets:
   
2.0 -> Optional
   

3.0 -> 4 required
   
Allows advanced lighting algorithms to save filtering and vertex work – thus more lights for minimal cost

A ver si alguien puede explicar claramente para qué sirven en el contexto de los shaders.

Haddd

 Bieeeen. Eso significa que es OBLIGADO que se soporten 4 render targets. ¡Ya era hora! Me parece alucinante que esto no esté standarizado.

Bueno, los Render Target se utilizan para en un mismo renderizado enviar información a sitios diferentes.

Es tremendamente fácil de entender si lo explico así.

Con 1 Render Target tenemos lo siguiente en el pixel shader:

struct color {
  float4 color;
};

Por tanto, en cada pixel sólo podemos almacenar información de color.

Pero con 2 RT tendríamos lo siguiente, por ejemplo:

struct color {
  float4 color;
  float Distancia_Camara;
};

Es decir, puedo guardar además del color, la distancia a la cámara. De esta forma después aplico un filtro a la pantalla completa y ya tengo el Depth of Field.

Y con 4 RT se suele tener:

struct color {
  float4 color;
  float4 Normal;
  float4 VectorLuz;
  float4 Material;
};

Es decir, que podemos guardar a nivel de pixel la información que necesitemos para después poder procesarla de una forma mucho más cómoda.

Pues ejemplos de utilización sería Deferred Lightning, Blur, Depth of Field....

Pero la desventaja que tiene este método es que el ancho de banda se fuerza a los límites. Para haceros una idea, si quiero hacer un Deferred Lightning en 1024x768, necesitaré:

1024x768x32bitsx4 RT=12.582.912 accesso a memoria POR CADA LUZ QUE NECESITE.


Zaelsius

 Interesante.. :lol:

¿Y  cómo se hacia antes para el Depth of Field, más o menos?

Haddd

 Pues se hacen tantos renders como render targets necesitas. Es como simular la multitextura.

_Grey

 Pero el RenderTarget no era:

IDirect3DDevice8::SetRenderTarget()

:huh: , creo entender que lo que comentais, es que en un mismo pixelshader se renderiza en varias superficies no?? jo! mira que me hago de viejo ....

Saludotes.

Zaelsius

Cita de: "Haddd"Pues se hacen tantos renders como render targets necesitas. Es como simular la multitextura.
Entonces, en una escena con un objeto enfocado(una persona p.ej.) y un fondo..

- Renderizamos sólo el fondo, con un shader que lo difumine(uniformemente).
- Renderizamos sólo el objeto enfocado, pintando sobre el fondo.

¿Algo así? Claro, si tuviésemos varios niveles de profundidad, tendriamos que hacer un render por cada uno, y además el difuminado no sería exactamente el adecuado a la distancia a la cámara.(Ahora que pienso, es muy parecido al método cutre para las tarjetas sin PS: usar un render target más pequeño que el frame buffer y luego estirarlo para utilizarlo como fondo.)

Con el método que explica Haddd para el shader model 3.0 se conseguiría más rapidez, y además mayor calidad en el efecto. Ahora ya sé porqué Haddd se escandalizaba con las FX :D  

Zaelsius

 Aunque no tiene que ver con el nombre del topic, aquí teneis un PDF bastante técnico de Valve sobre las técnicas de iluminación usadas en Source y los shaders correspondientes. Pesa 6 megas pero merece la pena:

http://www.ati.com/developer/gdc/D3DTutori...fe2_Shading.pdf

Incluye muchas capturas e imágenes explicativas : ), y código fuente comentado.

Zaelsius

 La nueva tarjeta de Nvidia ha sido ya presentada oficialmente, NV40 a.k.a. GeForce 6800.

Podeis leer un interesante y extenso informe en www.TechReport.com

Yo personalmente estoy interesado en las versiones no-ultra y de bajo coste que aparecerán en junio o julio (al acabar los exámenes :) ) . Se rumorean precios de 200-300€ para estas versiones más "light".

Edit: www.nvidia.com ya ha actualizado su site, con mucha información sobre la nueva tarjeta y descargas de las demos, videos, PDF, etc.

seryu

 me van a arruinar, me van a arruinar  B)

me pregunto si aprovecharan ahora para relanzar el cg  :D  

Lord Trancos 2

  :huh: pero si la FX como quien dice salio ayer..... esto va demasiado rapido.... y luego me preguntan pq no me cambio mi gfx4mx, con solo un añito de vida que tiene la pobrecica  :P  
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

BeRSeRKeR

Cita de: "seryu"me pregunto si aprovecharan ahora para relanzar el cg  :D
Lo que deberían hacer es dejarse de tonterías y centrarse en el GLSL de una vez. Bien es cierto que se puede activar en las GeForceFX pero si está "oculto" será porque la implementación es penosa. :D

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.