¿Qué son los sombreadores de vértices y Píxeles?


¿Qué son los sombreadores de vértices y Píxeles?

¿Cuál es la diferencia entre ellos? ¿Cuál es el mejor?

Author: Paulo, 2009-05-07

5 answers

Un Pixel Shader es un componente de GPU (Unidad de Procesamiento Gráfico) que se puede programar para operar por píxel y encargarse de cosas como la iluminación y el mapeo de baches.

Un Vertex Shader también es un componente de GPU y también está programado utilizando un lenguaje de ensamblado específico, como los sombreadores de píxeles, pero están orientados a la geometría de la escena y pueden hacer cosas como agregar bordes de silueta de dibujos animados a objetos, etc.

Ninguno es mejor que el otro, cada uno tienen sus usos específicos. La mayoría de las tarjetas gráficas modernas compatibles con DirectX 9 o superior incluyen estas capacidades.

Hay múltiples recursos en la web para obtener una mejor comprensión de cómo usar estas cosas. NVidia y ATI especialmente son buenos recursos para documentos sobre este tema.

 39
Author: Scott Evernden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-07 01:48:06

DirectX 10 y OpenGL 3 introdujeron el Sombreador de geometría como un tercer tipo.

En el orden de la canalización de renderizado -

Vertex Shader - Toma un solo punto y puede ajustarlo. Se puede utilizar para resolver complejos **cales de iluminación de vértices como una configuración para la siguiente etapa y/o deformar los puntos alrededor (oscilación, escala, etc.).

Cada primitiva resultante se pasa a la

Geometry Shader - Toma cada primitiva transformada (triángulo, etc) y puede realizar cálculos en él. Esto puede agregar nuevos puntos, quitarlos o moverlos según sea necesario. Esto se puede usar para agregar o eliminar niveles de detalle dinámicamente de una sola malla base, crear mallas matemáticas basadas en un punto (para sistemas de partículas complejas) y otras tareas similares.

Cada primitiva resultante se convierte en scanline y cada píxel que cubre el span se pasa a través del

Pixel Shader (Fragment Shader in OpenGL) - Calcula el color de un píxel en el pantalla basada en lo que pasa el sombreador de vértices, texturas enlazadas y datos agregados por el usuario. Esto no puede leer la pantalla actual en absoluto, solo averigua qué color/transparencia debe ser ese píxel para la primitiva actual.

Esos píxeles luego se ponen en el búfer de dibujo actual (screen, backbuffer, render-to-texture, lo que sea)

Todos los sombreadores pueden acceder a datos globales como la matriz de la vista mundial y el desarrollador puede pasar variables simples para que las usen para la iluminación o cualquier otra propósito. Los shaders se procesan en un lenguaje similar al ensamblador, pero las versiones modernas de DirectX y OpenGL tienen compiladores de lenguaje tipo c de alto nivel incorporados llamados HLSL y GLSL respectivamente. NVidia también tiene un compilador de sombreadores llamado CG que funciona en ambas API.

[editado para reflejar el orden incorrecto que tenía antes (Geometría->Vértice->Píxel) como se indica en un comentario.]

Ahora hay 3 nuevos shaders usados en DirectX 11 para teselación. El nuevo orden completo de sombreado es Vértice->Casco->Teselación->Dominio>Geometría>Píxeles. Todavía no he usado estos nuevos, así que no se sienta calificado para describirlos con precisión.

 59
Author: Dan Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-26 15:24:11

Los sombreadores de vértices y Píxeles proporcionan diferentes funciones dentro de la canalización de gráficos. Los sombreadores de vértices toman y procesan datos relacionados con vértices (posiciones, normales, texcoords).

Los sombreadores de píxeles (o, más exactamente, Fragmentos) toman valores interpolados de los procesados en el sombreador de vértices y generan fragmentos de píxeles. La mayoría de las cosas" geniales " se hacen en pixel shaders. Aquí es donde tienen lugar cosas como la búsqueda de texturas y la iluminación.

 11
Author: geofftnz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-07 01:48:32

DirectX Específico:

Shader:

Conjunto de programas que implementan características gráficas de adición a los objetos que no están definidos en la canalización de renderizado fija. Debido a esto podemos tener nuestros propios efectos gráficos de acuerdo a nuestras necesidades - es decir., Ya no estamos limitados a predefinidos "fijo" operación.

HLSL: (Lenguaje de Sombreado de Alto Nivel):

HLSL es un lenguaje de programación como C++ que se utiliza para implementar shaders (Pixel Shaders / Vertex Shaders).

Sombreadores de vértices:

Un vertex shader es un programa ejecutado en la GPU de la tarjeta gráfica que funciona en cada vértice individualmente. Esto facilita que podamos escribir nuestro propio algoritmo personalizado para trabajar con los vértices.

Sombreadores de píxeles:

Un pixel shader es un programa ejecutado en la GPU de la tarjeta gráfica durante el proceso de rasterización para cada píxel. Nos da una facilidad para acceder / manipular píxeles individuales directamente . Este acceso directo a los píxeles nos permite lograr una variedad de efectos especiales, como multitexturización, iluminación por píxel, profundidad de campo, simulación de nubes, simulación de fuego y sofisticadas técnicas de sombreado.

Nota: Tanto los Sombreadores de Vértices como los Sombreadores de Píxeles (programas) deben compilarse utilizando una versión específica del compilador antes de su uso. La compilación se puede hacer como una llamada a una API con parámetros requeridos como nombre de archivo, función de entrada principal, etc.,

 4
Author: SridharKritha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-05 15:32:26

En términos de desarrollo, un sombreador de píxeles es un pequeño programa que opera en cada píxel individualmente, de manera similar, un sombreador de vértices opera en cada vértice individualmente.

Se pueden usar para crear efectos especiales, sombras, iluminación, etc...

Dado que cada Píxel/Vértice se opera individualmente, estos shaders se prestan a la arquitectura altamente paralela de los procesadores gráficos modernos.

 3
Author: Stinomus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-07 01:55:48