c++ - OpenGL: quais o "pacote" básico de shaders para criar elementos de uma cena 3D - Stack Overflow em Português
No momento, estou começando a trabalhar com o conceito de Shaders das versões mais atuais do OpenGL. Minha referência básica são os tutoriais do site open.gl.
Após ter visto todos os textos, e testado o código fonte exemplo disponível, minha dúvida é qual o conjunto básico de shaders que eu devo usar para renderizar cada elemento de uma cena (terreno, céu, construções, veículos, personagens, etc)?
Vale salientar que para cada elemento citado acima existe um ou mais arquivos de recurso adicionados ao projetos (com formatos distintos); e para cada formato de arquivo, considere que o projeto tenha uma classe com métodos que retornem os vértices e seus atributos para cada elemento.
Não existe shader padrão pra terreno, céu, etc... o que os shaders fazem é sempre uma combinação de textura e iluminação. Esses tipos de algoritimos são absurdamente complexos e muitas vezes requerem várias etapas até por questões de desempenho. Se quiser olhar exemplos de shaders: shadertoy.com ou também olha o código fonte da Unreal 4. – Alexandre Borela 14/08/15 às 23:29
@AlexandreBorela sim, mas como escolher qual combinação fornecida por um shader usar para cada elemento? dei uma olhada no site que você indicou, e vi que para cada shader exibido é disponibilizado código GLSL. Supondo que eu escolha 2 ou 3 desses shaders, e tendo os vértices de uma casa por exemplo, posso usar um shader para o telhado e outro para as paredes? ou não funciona dessa forma? – user7414 14/08/15 às 23:55
@KleberMota Sim, voce pode usar cada shader para cada objeto, o uso dos shader é feito a partir do momento da chamada da função glAttachShader, então basta que você ative um shader e renderize seu objeto, depois ative outro shader e renderize o outro objeto, e assim você vai renderizando cada objeto com cada shader apropriado – FelipeDurar 17/08/15 às 3:05
Se o objetivo é tentar programar uma engine para fins de aprendizado recomendo os tutorials do Benny:
https://www.youtube.com/watch?v=0xcmTZPoJtM&list=PLEETnX-uPtBXP_B2yupUKlflXBznWIlL5
Ele inclusive tem uma série onde ensina fazer a engine física:
https://www.youtube.com/watch?v=3Oay1YxkP5c&list=PLEETnX-uPtBXm1KEr_2zQ6K_0hoGH6JJ0
Como falei, para fins de aprendizado é até interessante sim ver esses tutoriais mas se o objetivo é depois produzir um jogo, engines como Unreal 4, Unity 5, etc... são de graça e cobram apenas uma porcentagem sobre as vendas que é um custo absurdamente mais baixo do que ter que programar toda a engine.