Godot: GLES2 Fehler mit benutzerdefiniertem Shader-Code zum Einblenden

Erstellt am 30. Nov. 2018  ·  1Kommentar  ·  Quelle: godotengine/godot

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
gles3

Und so sieht es auf GLES2 aus
gles2

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

bug rendering

Hilfreichster Kommentar

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.

>Alle Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen