Como posso criar sombreadores de contorno como "Life is Strange"?

13

Quero tornar o shader de esboço como a vida estranha.

shader tem duas partes:

1. linha tracejada animada

2. contorno ruidoso

Eu gosto de saber como posso fazer contornos barulhentos?

veja o esboço dos objetos

record_2019_01_21_09_43_07_10

record_2019_01_21_09_51_00_896

record_2019_01_21_09_45_53_942

record_2019_01_21_11_37_27_699

Primeiro eu tentei fazer esboço copiando de dados de vértice de entrada e dimensionada de acordo com a direção normal, em seguida, Cull Back.but Eu acho que é algo como efeito de imagem porque esboço às vezes se mover dentro de objeto. de qualquer maneira eu aprecio se alguém me ajudar a implementar esse shader :)

O que eu tentei

Eu usei a detecção de borda e a animei com vertex shader, mas isso não é bom como os gifs acima.

record_2019_01_21_18_16_43_440

record_2019_01_21_18_27_28_597

Seyed Morteza Kamali
fonte

Respostas:

1

Eu fiz algo semelhante no Unreal Engine 4, então vou explicar apenas os conceitos. Existem duas maneiras de fazer isso, e eles são diferentes gradientes de tradeoffs entre desempenho e facilidade de implementação.

  1. Primeiro, adicione uma nova malha em cima da malha principal, apenas um pouco maior (como uma malha física de colisão). Em seguida, crie um sombreador de material transparente para ele e ative o sombreador / mostre a malha, pois o frustum da visão do jogador está a x unidades de distância da entidade. O desempenho é alto por causa do sombreador de transparência, mas como você tem apenas um pequeno conjunto de objetos destacados em um determinado ponto, é fácil de implementar e viável.

  2. Crie uma textura base com as linhas de hash e desloque as coordenadas da textura de acordo com um conjunto pré-determinado de matrizes. Isso cria a ilusão de "texturas animadas"; na indústria, também é chamado de material dinâmico (há mais, mas você pode ler se quiser). Quanto ao esboço, você pode encontrar muitos tutoriais na web. Essa técnica leva muito mais tempo para implementar, já que você precisa mexer nas matrizes de deslocamento e no tempo de atualização do material para obter um resultado semelhante às capturas de tela acima, sem mencionar a necessidade de alinhar as linhas de hash nas alterações de ângulo na malha base.

Se o desempenho não for um problema, vá com 1. Se todo FPS contar, use 2, mas espere muitos problemas que demoram para serem resolvidos.

estudante curioso
fonte