Quais são alguns bons recursos para aprender HLSL? [fechadas]

28

A última vez que tentei aprender HLSL, fiz alguns shaders e principalmente entendi o que estava fazendo, mas ainda sentia que estava tropeçando no escuro. A maior parte do que aprendi recebi de várias postagens no blog que não explicavam muito bem as coisas.

Além disso, a documentação no MSDN parece ser mais uma referência de função.

Onde posso aprender não apenas a escrever HLSL, mas também aprender técnicas para escrever shaders?

Brian Ortiz
fonte

Respostas:

14

Aqueles dois observados, eu sempre volto ao artigo a seguir quase toda vez que escrevo um shader genérico:

Sean James
fonte
1
E devo especificar que, por "referência da API", quero dizer mais a seção "Guia de programação".
19610 Sean James
6

Se o que você procura é "técnica de sombreador", em vez de mera referência de linguagem (leia a pergunta, pessoal), eu recomendo (do fácil ao avançado):

  • A seção Shader das amostras XNA (obviamente requer que você use XNA)
  • A série de tutoriais de Petri Wilhelmsen, começando aqui (fica mais avançada mais tarde; também é baseada em XNA)
  • As amostras agrupadas do Nvidia FX Composer

E basicamente: experimente e pratique, enquanto absorve como os "profissionais" fazem as coisas. Ou escolha coisas semelhantes ao que você está tentando alcançar e trabalhe a partir daí.

Andrew Russell
fonte
3

Cg não é tecnicamente HLSL, mas sintaticamente eles são praticamente idênticos.

Dito isto, é um livro mais antigo, mas a NVIDIA tornou o " The Cg Tutorial " gratuito para leitura on-line. Ele cobre os conceitos básicos do pipeline programável de uma maneira muito abrangente e deve ser traduzido para HLSL com o mínimo esforço.

Neverender
fonte
1
A nVidia e a Microsoft foram coautoras de Cg / HLSL no passado. Eles deram nomes diferentes devido à marca, mas o idioma é o mesmo. Agora, provavelmente há uma pequena diferença, mas é realmente mínima.
jacmoe
Esse é um livro fenomenal. Basicamente, qualquer coisa de Kilgard foi realmente boa em termos de tutoriais.
bobobobo
3

Se você deseja editar e ver os resultados em tempo real, pode usar esta ferramenta simples do Silverlight

http://shazzam-tool.com/
Shazamm 1.3 - Editor e Previwer de HSLS Shaders


Quanto aos tutoriais +1 para o Riemers.net, mas também achei essa série de tutoriais XNA / HLSL ainda melhor.

Aqui está a lista, você encontrará todos aqui: http://digitalerr0r.wordpress.com/tutorials/

  • 1 - Introdução ao HSLS, luz ambiente
  • 2 - Luz difusa
  • 3 - Luz especular
  • 4 - Mapeamento normal
  • 5 - Deformar sombreador de vértice
  • 6 - Demonstração Shader: Cenário simples de oceano / ilha
  • 7 - sombreamento Toon
  • 8 - Mapa brilhante
  • 9 - Wiggle pós-processo
  • 10 - Inverter processo pós
  • 11 - Tonalizador em escala de cinza
  • 12 - Sombra de distorção de pixel
  • 13 - Mapeamento alfa
  • 14 - Buffers de transmitância / profundidade
  • 15 - Mapeamento de ambiente dinâmico
  • 16 - Refração
  • 17 - Ponto de luz + auto-sombreamento
  • 18 - Luzes de múltiplos pontos
  • 19 - Luz ambiente hemisférica
  • 20 - Profundidade de campo
  • 21 - Transição: Fade
  • 22 - Transição: Cruz
  • 23 - Desfoque
  • 24 - Bloom
  • 25 - Ruído Perlin na GPU
  • 26 - Mapeamento de relevo Perlin Noise
Comer no Joes
fonte
1

Descobri que o Riemers.net tem um ótimo tutorial introdutório sobre HLSL como parte de seus tutoriais sobre XNA. O autor, Riemer Grootjans, também escreveu o livro recomendável XNA 3.0 Game Programming Recipes - se você gosta da abordagem da receita.

Dave O.
fonte
0

Quando eu estava lendo sobre o HLSL , encontrei este tutorial no passado. Eu gostei desde que ele tentou explicar cada parte do que estava fazendo.

Ólafur Waage
fonte
0

Encontrei uma série de tutoriais que vão desde um sombreador básico de luz ambiente até reflexões e toon shaders. Cada um deles explica e explica todas as linhas e até explica um pouco da matemática:

http://rbwhitaker.wikidot.com/hlsl-tutorials

Brian Ortiz
fonte
0

Não tenho certeza de qual modelo de shader e versão do DirectX você está alvejando, mas eu recomendo Renderização prática e computação com o Direct3D11 . O livro mostra todos os detalhes do DirectX11, seus recursos, todos os diferentes shaders de pipeline, HLSL (um capítulo inteiro dedicado a isso) e como começar a implementar coisas como simulações de sistemas de partículas, mosaico, processamento de imagem, renderização adiada e DirectCompute!

KlashnikovKid
fonte
-1

para mim, é mais fácil aprender o GLSL primeiro, e como o HLSL e o GLSL são semelhantes. Depois de entender todo o conceito, o pipeline, o hardware e como a linguagem do shader interno funciona, é fácil usar outra linguagem, como HLSL ou mesmo Cg.

Eu proponho o GLSL porque ele tem um livro muito bom, como o laranja e o vermelho do openGL, e é fácil de aprender para iniciantes.

uray
fonte
1
Isso não responde à pergunta.
PhillC
Porém , não é uma resposta ruim - muito do que está subjacente ao GLSL é muito semelhante ao HLSL e, se o OP puder encontrar recursos para o GLSL, é válido usá-los. Muitas das principais diferenças entre o próprio código de sombreador são apenas uma questão de conversão mental quando você sabe o que está vendo. A idéia de aprender o GLSL falha primeiro porque também é necessário aprender o OpenGL (nada ruim; útil conhecer os dois) e reescrever o programa (ruim), mas não há absolutamente nada de errado em usar o material GLSL para complementar o aprendizado do HLSL (e vice-versa, quando relevante).
Maximus Minimus