Uau, esse foi um título longo.
De qualquer forma, estou fazendo essa pergunta, já que gosto de pensar em várias coisas, e me ocorreu que não há realmente nenhuma camada simples de código aberto no GLSL, mesmo que apenas para adicionar coisas simples, como inclui, ou funções comumente usadas.
Como uma espécie de pesquisa, estou fazendo essa pergunta, já que minha própria consciência dessas linguagens é minúscula para dizer o mínimo - eu sei da linguagem de sombreamento do bgfx e do ShaderLab da Unity, mas eu realmente não sei o que elas realizam - ou por que - ser um novato em relação à computação gráfica.
Como alternativa, qual seria sua lista de desejos para um idioma de sombreamento como esse? Até agora, a minha inclui: alguma compatibilidade entre versões, entradas "ocultas" opcionais que permitem acessar facilmente texturas com deslocamentos de pixel, tamanhos de imagem etc. e provavelmente passam - por, por exemplo, desfoque gaussiano de duas passagens.
Pensamentos?
Respostas:
Eu acho que é justo dizer que a razão pela qual existem tantas variações de nicho de GLSL / HLSL / Cg / outros enfeites é porque nenhuma linguagem de programação é nem será um tamanho único para todas as ferramentas. Problemas diferentes requerem ferramentas diferentes; portanto, às vezes, vale a pena o esforço de desenvolver uma ferramenta personalizada para compensar a longo prazo.
O estoque GLSL é por si só praticamente inutilizável. Ele ainda não adquiriu muita estabilidade entre as versões; portanto, para um programa direcionado a mais de uma versão do OpenGL, é necessário algum tipo de pré-processamento. O HLSL é um pouco mais estável entre as versões, mas, novamente, se tiver como alvo mais de uma versão do D3D, será necessário algum trabalho para obter uma boa portabilidade.
Os tipos de coisas que as pessoas costumam fazer são praticamente o que você disse, como um suporte adicional para recursos básicos de programação, como módulos e sintaxe uniforme entre versões, ou até portabilidade entre diferentes APIs (GL / D3D) sem precisar reescrever o código do sombreador. Coisas mais sofisticadas incluem sistemas de material de pleno direito ou coisas como gerar programas de sombreador em tempo real .
As linguagens de sombreamento provavelmente ficarão melhores e mais genéricas no futuro, incorporando coisas que hoje são comumente feitas à mão como recursos principais. A nova arquitetura GCN é um sinal disso. Assim, as linguagens de sombreamento serão mais utilizáveis prontamente daqui a um tempo, mas as soluções personalizadas nunca desaparecerão, porque há muito o que você pode generalizar.
fonte