Existem muitas linguagens de sombreamento construídas sobre GLSL ou HLSL - que problemas eles normalmente resolvem e que avanços valiosos eles fazem?


8

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?


4
Isso parece mais uma discussão no fórum do que uma pergunta específica. Este site funciona melhor com perguntas que podem ser respondidas com uma única resposta factual. A parte "qual é a sua lista de desejos" definitivamente não é adequada para um site SE.
Dan Hulme

11
Você pode vir para o Cornell caixa nossa sala de chat e acender uma discussão
aberração catraca

Respostas:


2

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.


Estou curioso - que idiomas como esse existem por aí? Eu sei que existem sistemas específicos de mecanismo, como os sistemas de sombreamento Unity ou UE4, além de algumas pesquisas acadêmicas como Spark , mas não estou ciente de mais nada em uso atual neste espaço.
Nathan Reed

@NathanReed, provavelmente, da Apple do metal é um dos mais notáveis, a partir de agora, mas eu não olhei em muitos detalhes ...
glampert

Ah ok. O metal não está no topo do HLSL ou GLSL; é uma linguagem de sombreamento primária para GPUs da Apple que é compilada diretamente no microcódigo HW (por meio de um back-end proprietário do LLVM, acredito).
Nathan Reed
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.