Como a iluminação 2D é implementada?

58

Gostaria de saber qual é a melhor maneira de abordar um efeito de "iluminação" em jogos 2D. Por exemplo, se meu personagem principal está brilhando, que técnicas posso usar para concluir o efeito visual do personagem brilhando quando ele está perto de outros objetos que seriam afetados pela luz?

Christopher Horenstein
fonte

Respostas:

39

Você pode sobrepor uma textura simples de efeito de brilho com bordas transparentes e macias. Se você quiser iluminação / sombras semelhantes às que você pode encontrar em um mundo 3d, faça algo assim: http://www.catalinzima.com/2010/07/my-technique-for-the-shader-based-dynamic -2d-sombras / . No entanto, se você é novo no HLSL, isso pode ser um pouco demais.

edit : Eu tropecei em um bom tutorial de luz 2D5 em HTML5

zfedoran
fonte
Esse link é exatamente o que eu estava procurando. Não posso agradecer o suficiente; isso é extremamente útil.
Christopher Horenstein
7

Existe um projeto XNA de código aberto que é uma excelente biblioteca e implementação de iluminação 2D que é compatível com o perfil Reach do XNA 4.0 - Krypton XNA .

Christopher Horenstein
fonte
4

Você precisaria de um efeito de sombreador pós-filtro escrito em HLSL ou GLSL. O shader receberia as coordenadas do player e modificaria o brilho de todos os pixels em um determinado intervalo. O XNA suporta shaders 2D muito bons.

Outra solução seria simular o brilho usando uma textura com um canal alfa. A textura seria principalmente preta, exceto por um ponto transparente no meio. Essa textura é uma sobreposição na tela do jogo, com o ponto transparente centralizado no personagem do jogador 'brilhante'. Jogos antigos de aventura usavam essa técnica para simular lanternas.

Stephen
fonte