¿Para qué se pueden usar los sombreadores?

8

Realmente no soy una persona en 3D, y solo he usado sombreadores un poco en algunos ejemplos de Three.js, y hasta ahora tengo la impresión de que solo se están usando para la parte gráfica de la ecuación.

Aunque, el artículo de Wikipedia (bastante críptico) y algunas otras fuentes me llevan a creer que pueden usarse para algo más que efectos gráficos, es decir, para programar la GPU ( Wikipedia ).

Entonces, la GPU sigue siendo un procesador, ¿verdad? Con un conjunto de instrucciones más grande y diferente para una manipulación de vectores más fácil y rápida, pero sigue siendo un procesador. ¿Puedo usar sombreadores para hacer programas regulares (siempre que tenga acceso a la memoria de video, lo cual es probable)?

Editar: programas regulares == "Aplicaciones", es decir, crear programas de Windows / consola, o al menos tener alguna forma de dibujar cosas en la pantalla, tal vez incluso tomando la entrada del usuario.

jcora
fuente
2
¿Qué quieres decir con "programas regulares"
Kravemir
2
+1 Para la pregunta de desarrollo de juegos más linda que he visto, que también logró repensar mi visión del mundo.
knight666
1
"==" es comparador, no operador de asignación :)
kravemir
2
Sí, lo sé, todavía es válido para usar. No quería "asignar" la explicación a la definición, quería equipararlas.
jcora

Respuestas:

13

Originalmente, el hardware de procesamiento de gráficos dedicado tenía un conjunto fijo de funciones cableadas. Tomaría geometría de entrada, haría cosas muy específicas para transformarla y rasterizarla, y luego enviaría los resultados a la pantalla. Con el tiempo, esta funcionalidad se parametrizó y eventualmente se programó. "Shaders" se convirtió en el término utilizado para los programas que se ejecutaban en la GPU, ya que controlaban la transformación y el sombreado de la geometría.

A medida que el hardware de la GPU evolucionó, cada vez más se ha vuelto programable, por lo que ahora la mayor parte de los tipos de sombreadores que uno puede escribir solo contribuyen indirectamente al sombreado real de cualquier cosa en la pantalla (me refiero a cosas como la geometría y los sombreadores de casco aquí) ) Con eso vino la generalización de la GPU como un dispositivo para hacer un procesamiento basado en flujos altamente concurrentes a gran escala, de modo que si bien la intención de una GPU y de los sombreadores es generalmente implementar algún tipo de efecto gráfico elegante, también pueden ser se usa para realizar ciertos tipos de cálculos de propósito general (particularmente aquellos que son adecuados para ser calculados en paralelo). Esto a menudo se conoce como programación de GPU de propósito general, o "GPGPU".

Sin embargo, la GPU sigue siendo altamente especializada y no puede hacer muchas de las cosas que una CPU podría hacer. También tiene una conectividad limitada con el resto del hardware en un sistema, por lo que realmente no puede escribir programas "normales" (con salida de consola o entrada de mouse, etc.) completamente en la GPU. Puede realizar cálculos en la GPU que no están destinados a ser interpretados como renders, pero no es una CPU independiente en sí misma.


fuente
5

La GPU no puede decirle a la CPU qué hacer. Solo puede proporcionar resultados en su memoria que leerá la CPU.

Shaders / GPGPU no se pueden usar para :

  • tomando la entrada del usuario directamente sin CPU , porque se implementan como interrupciones de la CPU
  • creación de cualquier aplicación , porque las aplicaciones son administradas por el núcleo y eso es ejecutado por la CPU
  • creación de cualquier ventana , porque el administrador / servidor de ventanas se ejecuta en la CPU

Shaders / GPGPU se pueden usar para :

  • dibujar cosas en la pantalla / ventana, pero tiene que ser controlado por la CPU
  • decodificación / codificación de video
  • procesamiento de imágenes en editores gráficos profesionales: varios efectos paralelos ejecutables como desenfoque, nitidez de bordes, ...
  • cálculos de física

Ver OpenCL . Puede utilizar sombreadores para cálculos no gráficos.

Editar basado en comentarios:

Los sombreadores se usan solo para representar gráficos. Realizar cálculos no gráficos en GPU se llama GPGPU .

Kravemir
fuente
El último punto no es del todo cierto, no estás usando sombreadores para calcular la física, estás usando la API GPGPU como OpenCL y CUDA.
dreta
@dreta Sí. Es verdad. Según su pregunta, creo que se refería a los sombreadores como unidades de procesamiento de hardware. Él dijo "pero sigue siendo un procesador".
kravemir
2
así luego lo corrige por estar equivocado, ¿por qué aknowledging su error, dijo que no es un gurú de la representación, los shaders no son ambiguas, tienen un papel específico
dreta
-4

Simple. La unidad de procesamiento de gráficos finalmente obtuvo sombreadores, que producen un efecto de fantasía para sombrear. Esto se volvió programable, por lo que los efectos se volvieron cada vez más elegantes. Finalmente, toda la GPU se convirtió en una unidad SIMD.

SIMD significa datos de instrucción única múltiple. Actualmente las GPU son como un árbol. Tiene X muchos núcleos, cada uno con Y muchos núcleos, y Z muchos núcleos. Cuanto más descienda el árbol, más rápida y pequeña será la memoria, más paralelos y simples serán los cálculos.

Entonces, la GPU se ha convertido en una especie de GPU General Purpuse. No se llama CPU porque no es la unidad central de procesamiento, a pesar de que puede manejar E / S, administración de memoria y programación.

No es necesario decir que el poder de la GPGPU proviene de tener que hacer algunas operaciones divisibles y paralelas en muchos datos a la vez. Si bien, por lo tanto, es inútil para la mayoría de las cosas de software generales, nVidia está trabajando para hacer de la GPGPU una CPU. Creen que pueden exponer la GPU como una CPU ARM. Esta técnica de traducción también está dentro de las CPU x86, que son RISC en su núcleo.

OpenCL, CUDA y DirectX son como un lenguaje de programación de personalidad dividida. OpenCL, por ejemplo, se ejecuta en la CPU, pero descarga 'bombas' ("núcleos") que se están beneficiando de SIMD, a la GPU.

No pasará mucho tiempo antes de que todo sea estilo CPU-GPU Fusion / Sandy Bridge.

Vincent
fuente
3
-1. Su elección de palabras disminuye drásticamente la calidad de esa respuesta.
bummzack
La elección de las palabras en sí no tiene sentido: en.wikipedia.org/wiki/On_Denoting Por lo tanto, no disminuye la calidad de la respuesta, porque la calidad no tiene nada que ver con la pregunta, sino la lógica. En realidad es la respuesta más correcta.
Vincent
2
La elección de palabras es muy importante. Si usa un lenguaje ofensivo, su respuesta no se considerará buena. Alguien con una respuesta que valga la pena pasará tiempo asegurándose de que sea elocuente y elegante.
Jonathan Pitre
Si tiene un problema con el idioma, edite la respuesta. Depende de todos mejorar el sitio.
Tetrad
Si la solicitud de comprensión lógica proviene de un zombie filosófico bicameralista, me satisfaría independientemente, porque el conocimiento es igual a poder. No me gusta entregar el conocimiento a los bicamerales que valoran más la emoción que la lógica. Solo mejora la respuesta.
Vincent