Pergunta

Quero começar a desenvolver jogos usando o XNA da Microsoft.Parte disso é o desenvolvimento do Shader, mas não tenho ideia de como começar.eu sei que Compositor FX da nVidia é uma ótima ferramenta para desenvolver shaders, mas não encontrei muito conteúdo útil e atualizado sobre como realmente começar.

Quais tutoriais você recomendaria?

Foi útil?

Solução

O desenvolvimento de shaders em XNA (que obviamente usa DirectX) requer conhecimento de HLSL ou montagem de shader.Eu recomendo familiarizar-se com o primeiro antes de mergulhar no último.

Antes de escrever qualquer shader, é uma boa ideia obter um conhecimento sólido do pipeline de shader e tentar entender o que é possível ao usar shaders programáveis.Quando você está familiarizado com a vida de um pixel (desde os dados de origem até a tela), entender exemplos de shaders se torna muito mais fácil.

Em seguida, tente escrever seu próprio HLSL, que faz o que o T&L fixo pipeline costumava fazer, só para sujar as mãos.Isso é equivalente a um programa "hello world" no mundo do vertex/pixel shader.Quando você for capaz de fazer isso e entender o que escreveu, estará pronto para começar a fazer coisas mais divertidas.

Como próximo passo você pode querer simular iluminação secular em um de seus shaders a partir de uma única fonte de luz.Você pode então adaptar isso ao longo da pista para usar várias luzes.Brinque com as cores e o movimento das luzes.Isso também ajudará a se familiarizar com o uso de constantes de shader.

Quando você tem alguns shaders básicos juntos, você deve tentar fazer com que seu jogo/mecanismo use shaders múltiplos/diferentes em objetos diferentes.Comece a adicionar alguns outros bits como básico ressalto ou mapas normais.

Quando você chega a esse estágio, o mundo é sua ostra.Você pode começar a mergulhar em alguns efeitos descolados e até considerar usar a GPU para mais do que foi originalmente planejado.

Para aqueles que são um pouco mais avançados, existem alguns bons livros disponíveis gratuitamente on-line que contêm ótimas informações da Nvidia. aqui e aqui.

Não se esqueça de que existe uma excelente série de livros chamada ShaderX, que cobre algumas coisas incríveis sobre shaders.Há 1, 2, 3, 4, 5 e 6 já impresso e 7 Está vindo em breve.

Boa sorte.Se você tiver alguns shaders, eu adoraria vê-los :)

Outras dicas

Gostaria apenas de reiterar o quão excelentes são os livros GPU Gems - um recurso verdadeiramente fantástico para qualquer desenvolvimento gráfico sério.

OJ basicamente resumiu um processo de aprendizagem muito bom, eu apenas acrescentaria que ter uma boa base em matemática geométrica (vetores/matrizes, no mínimo) não pode ser subestimado - mas não é tão difícil quanto as pessoas às vezes imaginam.Aprender o que são e fazem um produto escalar, produto vetorial, vetor normal e multiplicação de matrizes é um bom primeiro passo :).Tente entender exatamente o que está acontecendo entre o mundo/visualização/clip de projeção/espaço da tela, qual é a divisão de perspectiva, etc.

Quando eu estava começando a aprender, um bom exercício era implementar todo o pipeline de T&L em software, completo com recorte/seleção, etc.Este é um processo longo e pode não parecer valer a pena, pois tenho certeza de que você deseja apenas mergulhar nas coisas divertidas, mas ter uma compreensão adequada do que está acontecendo é realmente útil e valerá a pena quando você invariavelmente se deparar com situações mais insidiosas e difíceis. para diagnosticar bugs.

Tente não ficar de fora inicialmente com ferramentas como o FX Composer, elas são úteis para prototipagem, mas ter uma base sólida no básico vale muito mais a pena no longo prazo.

Uma das melhores maneiras de começar a usar shaders é ler Introdução à programação de jogos 3D com DirectX 9.0c, uma abordagem de shader, de Frank Luna.O autor primeiro apresenta o DirectX e o HLSL e depois revela gradualmente o poder do shader.Ele começa com shaders muito simples, mas no final do livro você sabe como criar iluminação, sombras, sistemas de partículas, etc.Grande livro.

OJ sugeriu que você lesse a série ShaderX, mas o material lá não é para iniciantes, então não vai te ajudar muito quando você estiver dando os primeiros passos.

Eu também postei um artigo aqui sobre os melhores livros para você começar a desenvolver jogos.

Eu me juntaria aos elogios dados a OJ - realmente uma boa resposta.Ainda assim, depois de ter o conhecimento básico, você poderá aprender muito e rapidamente baixando uma das duas excelentes ferramentas a seguir:

Depois de fazer isso, acesse as bibliotecas do projeto e comece a navegar pelos exemplos, começando com o sombreamento básico e passando para sombras, mapeamento normal, materiais, efeitos e tudo que você achar de interesse.pegue um projeto, comece a alterar os algoritmos de acordo com alguns objetivos que você definiu e veja como alcançá-lo.Você descobrirá que muitos dos exemplos são realmente avançados e abrirão seus horizontes.

Divirta-se

Embora muitos bons conselhos já tenham sido dados, se você estiver tendo dificuldades para entender as etapas envolvidas, Moinho Mental fornece uma maneira visual de construir Shaders (a Artist Edition é fornecida gratuitamente com o Fx Composer – também gratuita!).

Embora seja melhor aprender o código HLSL diretamente a longo prazo, o Mental Mill pode gerar esses arquivos Fx para você (para que você possa dar uma olhada nas alterações).Observe que, como todos os geradores de código, é um pouco mais detalhado do que você provavelmente fará depois de entender o HLSL!

A progressão visual dos efeitos, de um método para outro, é impressionante!

SAMS XNA liberado de Chad Carter é um excelente ponto de partida para o XNA e pressupõe pouco conhecimento de práticas de desenvolvimento de jogos ou matemática difícil antes de começar.Possui dois capítulos sobre shaders básicos e avançados.

Como observação, fique de olho no Google para os tutoriais do WPF Shader, ele agora usa a mesma tecnologia para permitir shaders de clientes em aplicativos WPF e tutoriais que acredito serem amplamente compatíveis com o XNA.

Não usei XNA ou DirectX.Mas, para conhecer o básico da programação de shaders com Cg, o Tutorial Cg é o melhor livro que encontrei.

Você também deve dar uma olhada em RenderMonkey.É uma boa ferramenta.No que diz respeito aos livros, confira Receitas de programação de jogos XNA 2.0 de Riemer Grootjans ...grande livro.

Uma rápida reflexão sobre editores de shaders visuais.Esse tipo de editor é muito divertido de se brincar, mas eu realmente recomendo continuar trabalhando com HLSL baseado em texto (lá tanto RM quanto FXC fazem o trabalho).Eu trabalho como desenvolvedor de jogos e construí alguns sistemas de shaders (o de Battlefield 2 e Farcry 2, por exemplo) e, para ser honesto, descobri que o HLSL é mais valioso do que qualquer rede de shaders gráficos até hoje.

Existem coisas como seguir o fluxo de execução, depurar o shader ou ser capaz de iterar rapidamente casos de teste que fornecem uma visão que é praticamente impossível de obter por meio de uma ferramenta visual.

Eu mesmo usei construtores de sombreadores visuais e gosto deles, e um dia, quando o sombreamento não for tão crítico para o desempenho como é hoje, eles poderão ser a ferramenta certa para o trabalho.

..embora meu palpite seja que veremos iluminação diferida e provavelmente renderização completa do software antes que esse dia chegue;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top