Hay muchos lenguajes de sombreado creados sobre GLSL o HLSL: ¿qué problemas suelen resolver y qué avances valiosos logran?

8

Menos mal, ese era un título largo.

De cualquier manera, estoy haciendo esta pregunta, ya que me gusta pensar en varias cosas, y se me ocurrió que en realidad no hay capas simples de código abierto en la parte superior de GLSL, aunque solo sea para agregar cosas simples como incluye o funciones de uso común.

Como una especie de investigación, estoy haciendo esta pregunta, ya que mi conocimiento de tales lenguajes es minúsculo, por decir lo menos: conozco el lenguaje de sombreado de bgfx y el ShaderLab de Unity, pero realmente no sé qué logran, o por qué - ser un novato relativo a los gráficos por computadora.

Alternativamente, ¿cuál sería su lista de deseos para un lenguaje de sombreado como este? La mía hasta ahora incluye, cierta compatibilidad entre versiones, entradas "ocultas" opcionales que permiten acceder fácilmente a texturas en desplazamientos de píxeles o tamaños de imagen, etc. y probablemente pasa, por ejemplo, por un desenfoque gaussiano de dos pasos.

Pensamientos?

Llamageddon
fuente
44
Esto suena más como una discusión en el foro que como una pregunta específica. Este sitio funciona mejor con preguntas que pueden responderse con una única respuesta objetiva. La parte "cuál es su lista de deseos" definitivamente no es adecuada para un sitio SE.
Dan Hulme
1
Puedes venir a la sala de Cornell en nuestra sala de chat y abrir una discusión
fanático del trinquete

Respuestas:

2

Creo que es justo decir que la razón por la que hay tantas variaciones de nicho de GLSL / HLSL / Cg / whatnot es porque ningún lenguaje de programación es ni será una herramienta única para todos. Los problemas diferentes requieren herramientas diferentes, por lo que a veces vale la pena desarrollar una herramienta personalizada si va a dar sus frutos a largo plazo.

Stock GLSL es en sí mismo prácticamente inutilizable. Ni siquiera ha adquirido mucha estabilidad en las versiones, por lo que para un programa que se dirige a más de una versión de OpenGL, es necesario algún tipo de preprocesamiento. HLSL es un poco más estable en todas las versiones, pero una vez más, si se dirige a más de una versión D3D, será necesario trabajar para obtener una buena portabilidad.

El tipo de cosas que la gente suele hacer es más o menos lo que usted dijo, como agregar soporte para funciones de programación básicas como módulos y sintaxis uniforme en todas las versiones, o incluso portabilidad en diferentes API (GL / D3D) sin tener que volver a escribir el código del sombreador. Las cosas más sofisticadas incluyen sistemas de materiales completos o cosas como generar programas de sombreado sobre la marcha .

Los lenguajes de sombreado probablemente se volverán mejores y más genéricos en el futuro, incorporando cosas que hoy en día comúnmente se enrollan a mano como características principales. La nueva arquitectura GCN es una señal de eso. Por lo tanto, los lenguajes de sombreado serán más utilizables de inmediato, pero las soluciones personalizadas nunca desaparecerán porque solo hay mucho que puedes generalizar.

glampert
fuente
Tengo curiosidad: ¿qué idiomas como este existen? Sé que hay motores específicos como los sistemas de sombreado de Unity o UE4, además de algunas investigaciones académicas como Spark , pero no estoy al tanto de nada más en el uso actual en este espacio.
Nathan Reed
@NathanReed, probablemente Apple's Metal es uno de los más notables, por ahora, pero no he visto muchos detalles ...
glampert
Oh ok Sin embargo, el metal no está encima de HLSL o GLSL; Es un lenguaje de sombreado primario para las GPU de Apple que se compila directamente en el microcódigo HW (creo que a través de un back-end LLVM patentado).
Nathan Reed