triangle - shaders opengl
¿Cuál es la extensión de archivo correcta para sombreadores GLSL? (5)
Estoy aprendiendo sombreado glsl y he encontrado diferentes formatos de archivo. He visto a personas dar su vértice y fragmentar sombreadores .vert
y .frag
extensiones. Pero también he visto .vsh
y .fsh
, e incluso ambos sombreadores juntos en un solo archivo .glsl
. Entonces, me pregunto si hay un formato de archivo estándar, o qué camino es el "correcto".
Como otros han mencionado, no hay una respuesta correcta en el sentido más estricto. Cabe mencionar que Sublime (confirmado para v2 y v3) también espera .vert y .frag para resaltar y validar la sintaxis.
Hay dos formas de escribir sombreadores.
Puede almacenar el sombreado de vértices y fragmentar el contenido del sombreador en una variable char *
y compilar, vincular y adjuntar el sombreador a un programa.
Otra forma es escribir el archivo de sombreado de vértice y fragmento separado con la extensión que desee y leerlo para compilar, vincular y adjuntar el sombreador al programa.
Por lo tanto, la convención de nomenclatura, como .vert / .frag, .vsdr / .fsdr, etc., es válida siempre que sepa cómo leerla ...
Identificar el tipo de archivo por extensión es algo específico de Windows. Todos los demás sistemas operativos utilizan diferentes enfoques: MacOS X almacena el tipo de archivo en una estructura especial de metadatos en las entradas del sistema de archivos. La mayoría de los * nixos identifican archivos al probar su estructura interna contra una base de datos de "mágicos bytes" conocidos; sin embargo, los editores de texto usan la extensión.
De todos modos, las fuentes GLSL son como cualquier otro archivo fuente del programa: texto sin formato, y ese es su tipo de archivo.
La extensión puede elegir como desee. Uso la siguiente denominación:
- ts.glsl
- gs.glsl
- vs.glsl
- fs.glsl
pero esa es mi elección y, técnicamente, mis programas ni siquiera imponen ningún esquema de denominación o extensión. La denominación es para que los humanos lean y sepan qué contienen; tener una extensión principal común requiere que tenga una regla de resaltado de sintaxis para un solo conjunto de extensión de archivo.
No hay una extensión de archivo estándar para sombreadores GLSL. Los más comunes son probablemente .vert
y .frag
, ya que estas son las extensiones que 3D Labs utilizó en algunas de sus herramientas. Pero eso es todo por cualquier forma de extensión estándar.
No hay una extensión oficial en la especificación. OpenGL no maneja cargar sombreadores de archivos; simplemente pasa el código de sombreado como una cadena, por lo que no hay un formato de archivo específico.
Sin embargo, glslang , el compilador / validador GLSL de Khronos, usa las siguientes extensiones para determinar para qué tipo de sombreador está el archivo:
- .vert - un sombreador de vértices
- .tesc - un sombreador de control de teselación
- .tese - un sombreador de evaluación de teselación
- .geom - un sombreador de geometría
- .frag - un sombreador de fragmentos
- .comp - un sombreador de cómputo