Godot: Error GLES2 con código de sombreado personalizado para efecto de fundido

Creado en 30 nov. 2018  ·  1Comentario  ·  Fuente: godotengine/godot

Versión de Godot:
v3.1.alpha.calinou.5b8dde4

Sistema operativo / dispositivo incluida la versión:
Dispositivos con Windows 10 y Android probados

Descripcion del problema:
He escrito un código de sombreado personalizado, que básicamente hace que el objeto se desvanezca en un clip_height determinado. Se puede usar para renderizar el 50% inferior de un objeto y así sucesivamente. Funciona en GLES3, pero no en GLES2.

He creado un proyecto de ejemplo para aclarar el problema.
Así es como se ve en GLES3
gles3

Y así es como se ve en GLES2
gles2

Pasos para reproducir:
Pude desglosar el problema básicamente en estas dos líneas de código de sombreado:

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

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

La matriz de la cámara se pasa desde el sombreador de vértices. Desafortunadamente, no tengo idea de cómo investigar más a fondo qué es exactamente lo que está causando el error.

Proyecto de reproducción mínima:
AlphaIssue.zip

bug rendering

Comentario más útil

¡Buena atrapada! Encontré el error. Es un problema con el compilador de sombreado gles2. Intercambia INV_CAMERA_MATRIX y CAMERA_MATRIX en el código definido por el usuario. Enviaré un PR para arreglar esto en unos minutos. Mientras tanto, use INV_CAMERA_MATRIX en la función de fragmento si desea usar CAMERA_MATRIX .

>Todos los comentarios

¡Buena atrapada! Encontré el error. Es un problema con el compilador de sombreado gles2. Intercambia INV_CAMERA_MATRIX y CAMERA_MATRIX en el código definido por el usuario. Enviaré un PR para arreglar esto en unos minutos. Mientras tanto, use INV_CAMERA_MATRIX en la función de fragmento si desea usar CAMERA_MATRIX .

¿Fue útil esta página
0 / 5 - 0 calificaciones