Godot: Erro GLES2 com código de shader personalizado para fade em vigor

Criado em 30 nov. 2018  ·  1Comentário  ·  Fonte: godotengine/godot

Versão Godot:
v3.1.alpha.calinou.5b8dde4

Sistema operacional / dispositivo incluindo versão:
Dispositivos Windows 10 e Android testados

Descrição do problema:
Eu escrevi um código de sombreador personalizado, que basicamente faz o objeto desaparecer em um determinado clip_height. Ele pode ser usado apenas para renderizar os 50% da parte inferior de um objeto e assim por diante. Funciona no GLES3, mas não no GLES2.

Criei um projeto de exemplo para deixar o problema claro.
Aqui está como fica no GLES3
gles3

E aqui está como fica no GLES2
gles2

Passos para reproduzir:
Consegui dividir o problema basicamente nessas duas linhas de código de sombreador:

    vec4 world_vertex = camera_matrix * vec4(VERTEX, 1.0);

    ALPHA = smoothstep(1, 0,  (world_vertex.y - clip_height)/fade_offset);

A câmera Matrix é passada do sombreador de vértice. Infelizmente, não tenho ideia de como investigar o que exatamente está causando o erro.

Projeto de reprodução mínima:
AlphaIssue.zip

bug rendering

Comentários muito úteis

Boa pegada! Eu encontrei o bug. É um problema com o compilador de sombreador gles2. Ele troca INV_CAMERA_MATRIX e CAMERA_MATRIX no código definido pelo usuário. Vou enviar um PR para corrigir isso em alguns minutos. Nesse ínterim, use INV_CAMERA_MATRIX na função de fragmento se quiser usar CAMERA_MATRIX .

>Todos os comentários

Boa pegada! Eu encontrei o bug. É um problema com o compilador de sombreador gles2. Ele troca INV_CAMERA_MATRIX e CAMERA_MATRIX no código definido pelo usuário. Vou enviar um PR para corrigir isso em alguns minutos. Nesse ínterim, use INV_CAMERA_MATRIX na função de fragmento se quiser usar CAMERA_MATRIX .

Esta página foi útil?
0 / 5 - 0 avaliações