GPT Image 2.5 Flare & Sunburst sont disponibles sur EvoLinkEssayer GPT Image 2.5
Un plan de verre sépare les surfaces lisses et facettées d’une sphère métallique
Cas d’usage

Déboguer un problème de rendu avec le code et des captures

EvoLink Team
EvoLink Team
Équipe produit
16 octobre 2026
7 min de lecture

Votre objet apparaît au mauvais endroit, mais le shader se compile. Une capture d'écran montre le symptôme ; le code montre plusieurs causes plausibles. Demander à l’IA de « corriger l’image » sans la caméra, les matrices ou le résultat attendu encourage une supposition convaincante.

Fournissez une scène reproductible et demandez une hypothèse testable à la fois. Comparez les pixels et l'état d'exécution de la même révision, puis utilisez un test numérique ou de rendu pour décider si le correctif proposé corrige le défaut.

Préparer un pack de preuves de rendu

Incluez le moteur de rendu/API, les étapes de shader pertinentes, les valeurs des variables uniform, la géométrie, le viewport, la caméra, le résultat attendu, l'image réelle et l'action de reproduction. Enregistrez les erreurs graphiques et compilez/liez les diagnostics sous forme d’observations, et non comme un résumé disant « tout va bien ».

PreuveContenu utileCe qu'une capture d'écran seule ne peut pas établir
Image attendue et image obtenueMême caméra et même résolution, région affectée marquéeQuelle transformation ou quel état a causé la différence
Shader et variables uniformRévision exacte, convention matricielle, valeursSi l'hôte a transmis les valeurs prévues
Configuration du renduGéométrie, disposition des attributs, état de profondeur/culling/mélangeQuels objets ont été réellement dessinés
ReproductionScène et étapes minimalesSi un correctif suggéré corrige une autre scène

Une texture manquante et un éclairage incorrect peuvent sembler similaires à la taille de la vignette. Fournissez un recadrage non compressé lorsque cela est possible et évitez de changer de caméra entre les images de comparaison.

Un exemple d'ordre de transformation avec une attente vérifiable

La scène fictive utilise la multiplication colonne-vecteur. Les positions doivent se déplacer de l'espace objet aux transformations de modèle, de vue et de projection, dans cet ordre. L'expression prévue est projection * view * model * position, avec la transformation la plus à droite appliquée en premier.

Supposons que le shader contienne :

gl_Position = uProjection * uModel * uView * vec4(position, 1.0);
Le contrat fourni indique que la transformation de modèle translate x de 2, que la vue pivote de 90 degrés autour de z et que la projection met à l'échelle x et y de 0,2. Pour le point local (1,0,0,1), le résultat en coordonnées de clip prévu est (0,0.6,0,1) :
Model:      (1,0) -> (3,0)
View:       (3,0) -> (0,3)
Projection: (0,3) -> (0,0.6)
Wrong order: View (1,0)->(0,1), Model ->(2,1), Projection ->(0.4,0.2)
Cette arithmétique teste l'hypothèse fournie indépendamment du fait que l'image semble attrayante ou non. Khronos décrit les étapes de transformation des sommets. La disposition matricielle dans la mémoire hôte et les conventions de multiplication nécessitent toujours leur propre vérification ; changer l'ordre n'est pas une réparation universelle pour tous les moteurs de rendu.

Demandez une hypothèse, une reproduction et un patch minimal

Examinez l’inadéquation du rendu fourni.
Utilisez le shader, l'état de l'hôte, le comportement attendu, l’image réelle et la révision.
Traitez les images comme des observations et non comme la preuve d’une cause fondamentale particulière.

Retour :
1. le symptôme observé et les preuves à l’appui ;
2. hypothèses classées, avec un test discriminant pour chacune d'entre elles ;
3. le plus petit test pour l'hypothèse principale ;
4. un correctif uniquement si le test étaye le défaut allégué ;
5. variables uniform, état ou contexte manquants qui empêchent une conclusion.

Utilisez la convention matrice/vecteur indiquée.
Ne réécrivez pas le moteur de rendu et ne changez pas la caméra pour masquer le défaut.
Ne prétendez pas avoir exécuté des tests si vous les avez seulement proposés.
Entrées : ensemble de preuves et contrat de transformation requis.

Pour cet exemple, le correctif candidat est :

gl_Position = uProjection * uView * uModel * vec4(position, 1.0);
Sur la page EvoLink Gemini 4, utilisez le chemin de l'agent ou de l'API pour la révision du code. Joignez l’image réelle uniquement en utilisant le format d'image documenté. Vous pouvez comparer un autre modèle via la même passerelle avec le même ensemble de preuves ; l’accord entre modèles ne remplace pas le test.

Fournissez d’abord la convention matricielle et le shader fautif. Demandez une hypothèse et un correctif minimal ; distinguez (0,0.6) de (0.4,0.2) avec le test numérique avant de vérifier l’image réelle.

Effectuez une petite vérification numérique avant de juger l’image

Le code JavaScript suivant reflète la partie bidimensionnelle des transformations de cet exemple :

const model = ([x, y]) => [x + 2, y];
const view = ([x, y]) => [-y, x];
const projection = ([x, y]) => [x * 0.2, y * 0.2];
const correct = projection(view(model([1, 0])));
const wrong = projection(model(view([1, 0])));
if (Math.abs(correct[0]) > 1e-9 || Math.abs(correct[1] - 0.6) > 1e-9) {
  throw new Error("Unexpected reference transform");
}
if (Math.abs(wrong[0] - correct[0]) < 1e-9 &&
    Math.abs(wrong[1] - correct[1]) < 1e-9) {
  throw new Error("Fixture does not distinguish transform order");
}
Cela valide l'arithmétique, et non la transmission des variables uniform au GPU ou le rendu fourni. Pour WebGL, vérifiez l'API des variables uniform matricielles réelle et ses exigences de mise en page. Effectuez ensuite le rendu de la scène minimale avec une caméra, une résolution et un état fixes, en comparant le point de test et la position de l'objet avant et après.

Quand la même capture d'écran pourrait signifier un autre bug

SymptômeTest pour distinguer les causes
Changements de position avec le mouvement de la caméraVérifier les transformations et les valeurs transmises par rapport à un point connu
L'objet disparaît d'un côtéInspecter l’ordre des sommets/l'culling et visualiser l'orientation
Position correcte mais mauvaise occlusionInspecter le buffer de profondeur, l'effacement et l'état de comparaison
Une texture semble étirée ou inverséeInspecter les UV, l'orientation de l'image et les données de l'échantillonneur
Seuls les écrans haute densité diffèrentComparez la taille du tampon de dessin avec la taille de le viewport et du CSS

Changez une condition à la fois. La désactivation de l'culling peut révéler la géométrie, mais n'établit pas que sa désactivation constitue la solution finale correcte. Enregistrez l’expérience et son interprétation séparément.

Conservez une scène de régression avec le correctif

Conserver un cas où la translation et la rotation ne commutent pas ; les matrices d'identité masqueraient le bug dans cet exemple. Ajoutez un mouvement de caméra normal et une géométrie représentative une fois le cas minimal passé. Comparez la même révision de scène et notez tout artefact restant comme un problème distinct.

Si le litige porte sur la validité des conclusions d'un réviseur, utilisez le workflow de vérification de la révision du code. Cet article possède la reproduction visuelle et le diagnostic de l'état de rendu, plutôt qu'un revue générale de pull request.

FAQ

Une capture d'écran peut-elle identifier la cause exacte ?

Habituellement, il fournit un symptôme et une localisation. Le code, l’état et la reproduction distinguent des causes concurrentes.

Un shader compilé prouve-t-il que les calculs sont corrects ?

Non. Des expressions valides peuvent appliquer des transformations dans le mauvais ordre.

Dois-je essayer tous les correctifs suggérés en même temps ?

Utilisez une hypothèse et testez à la fois afin que le résultat ait une cause interprétable.

La vérification JavaScript vérifie-t-elle la sortie GPU ?

Il vérifie l'arithmétique indiquée. Le rendu et la validation de l’état hôte sont des étapes distinctes.

Le modèle doit-il recevoir l'intégralité du référentiel ?

Commencez par la scène et l’état pertinent nécessaires pour reproduire l’inadéquation. Ajoutez des dépendances lorsqu'une hypothèse l'exige.

Qu'est-ce qui appartient à l'enregistrement final du bug ?

Révision, entrées, comportement attendu et observé, expérience, correctif accepté, contrôles de régression et incertitude restante.

Sources

Intégrez des modèles d’IA via une API unifiée

Comparez les modèles et les tarifs actuels, puis suivez la documentation API pour intégrer le modèle adapté à votre usage.