Godot-Version:
v3.1.alpha.calinou.5b8dde4
Betriebssystem / Gerät einschließlich Version:
Windows 10- und Android-Geräte getestet
Fehlerbeschreibung:
Ich habe einen benutzerdefinierten Shader-Code geschrieben, mit dem das Objekt bei einer bestimmten clip_height ausgeblendet wird. Es kann verwendet werden, um nur die unteren 50% eines Objekts zu rendern und so weiter. Es funktioniert auf GLES3, aber nicht auf GLES2.
Ich habe ein Beispielprojekt erstellt, um das Problem zu verdeutlichen.
So sieht es auf GLES3 aus
Und so sieht es auf GLES2 aus
Schritte zum Reproduzieren:
Ich konnte das Problem auf diese beiden Zeilen Shader-Code aufteilen:
vec4 world_vertex = camera_matrix * vec4(VERTEX, 1.0);
ALPHA = smoothstep(1, 0, (world_vertex.y - clip_height)/fade_offset);
Die Kameramatrix wird vom Vertex-Shader übergeben. Leider habe ich keine Ahnung, wie ich weiter untersuchen soll, was genau den Fehler verursacht.
Minimales Reproduktionsprojekt:
AlphaIssue.zip
Guter Fang! Ich habe den Fehler gefunden. Es ist ein Problem mit dem gles2-Shader-Compiler. Es tauscht INV_CAMERA_MATRIX
und CAMERA_MATRIX
im benutzerdefinierten Code aus. Ich werde eine PR einreichen, um dies in wenigen Minuten zu beheben. Verwenden Sie in der Zwischenzeit INV_CAMERA_MATRIX
in der Fragmentfunktion, wenn Sie CAMERA_MATRIX
möchten.
Hilfreichster Kommentar
Guter Fang! Ich habe den Fehler gefunden. Es ist ein Problem mit dem gles2-Shader-Compiler. Es tauscht
INV_CAMERA_MATRIX
undCAMERA_MATRIX
im benutzerdefinierten Code aus. Ich werde eine PR einreichen, um dies in wenigen Minuten zu beheben. Verwenden Sie in der ZwischenzeitINV_CAMERA_MATRIX
in der Fragmentfunktion, wenn SieCAMERA_MATRIX
möchten.