Godot: Erreur GLES2 avec le code de shader personnalisé pour l'effet de fondu

Créé le 30 nov. 2018  ·  1Commentaire  ·  Source: godotengine/godot

Version Godot:
v3.1.alpha.calinou.5b8dde4

OS / appareil, y compris la version:
Appareils Windows 10 et Android testés

Description du problème:
J'ai écrit un code de shader personnalisé, qui fait en gros un fondu de l'objet à un clip_height donné. Il peut être utilisé pour restituer uniquement les 50% inférieurs d'un objet, etc. Cela fonctionne sur GLES3, mais pas sur GLES2.

J'ai créé un exemple de projet pour clarifier le problème.
Voici à quoi ça ressemble sur GLES3
gles3

Et voici à quoi ça ressemble sur GLES2
gles2

Étapes à suivre pour reproduire:
J'ai pu résumer le problème à ces deux lignes de code de shader:

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

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

La matrice de la caméra est transmise à partir du vertex shader. Malheureusement, je n'ai aucune idée de la manière d'étudier plus en détail la cause exacte de l'erreur.

Projet de reproduction minimale:
AlphaIssue.zip

bug rendering

Commentaire le plus utile

Bonne prise! J'ai trouvé le bogue. C'est un problème avec le compilateur de shader gles2. Il échange INV_CAMERA_MATRIX et CAMERA_MATRIX dans le code défini par l'utilisateur. Je vais soumettre un PR pour résoudre ce problème dans quelques minutes. En attendant, utilisez INV_CAMERA_MATRIX dans la fonction de fragment si vous voulez utiliser CAMERA_MATRIX .

>Tous les commentaires

Bonne prise! J'ai trouvé le bogue. C'est un problème avec le compilateur de shader gles2. Il échange INV_CAMERA_MATRIX et CAMERA_MATRIX dans le code défini par l'utilisateur. Je vais soumettre un PR pour résoudre ce problème dans quelques minutes. En attendant, utilisez INV_CAMERA_MATRIX dans la fonction de fragment si vous voulez utiliser CAMERA_MATRIX .

Cette page vous a été utile?
0 / 5 - 0 notes