Así que recientemente aprendí sobre el Compute Shader y parece que he aprendido la misma idea que la programación paralela que harías con CUDA o OpenCL, pero en la línea de sombreado.
Si quiero dibujar un millón de cubos en una escena, debería usar un método sobre el otro o ambos. Si tanto, ¿cómo se divide eso para que la GPU no intente calcular en paralelo tanto el sombreador como otro proceso al mismo tiempo?
compute-shader
opencl
cuda
FrickeFresh
fuente
fuente
Respuestas:
Hoy en día, no es del todo correcto pensar que los sombreadores de cómputo estén "en la tubería de sombreadores" en el mismo sentido que los sombreadores de vértices y fragmentos están literalmente conectados a una tubería. Los sombreadores informáticos no están "conectados" a nada actualmente, no pueden impulsar la rasterización o consumir directamente los resultados de la rasterización.
Sin embargo, lo que le permite hacer es consumir y producir recursos de memoria también utilizados por las llamadas de extracción de una manera relativamente eficiente. OpenCL hace esto bastante difícil (ver, por ejemplo, https://software.intel.com/en-us/articles/opencl-and-opengl-interoperability-tutorial ). Esto le permite integrar eficientemente los pases de cómputo dentro de su renderizador, pero no está integrado en la tubería de renderizado
fuente