Godot: Tilemap / draw_rect scintillement aléatoire avec les pilotes Nvidia

Créé le 27 juil. 2017  ·  191Commentaires  ·  Source: godotengine/godot

Système d'exploitation ou appareil - version Godot:
Windows 10, godot3.0alpha1

Description du problème:
J'ai créé un corps cinématique2D et un tilemap, déplacer le corps cinématique fonctionnait normalement, mais parfois l'une des tuiles du tilemap disparaissait plus rapidement que n'importe quel logiciel d'enregistrement d'écran pourrait capturer. parfois 2 disparaissaient, ils seraient redessinés cependant

Étapes à suivre pour reproduire:
Créer un tilemap, charger des tuiles, créer un corps cinématique
déplacez le corps dans le jeu, gardez les yeux ouverts, ne clignez pas des yeux, regardez comme certaines tuiles disparaissent du rendu et reviennent rapidement

bug confirmed high priority rendering

Commentaire le plus utile

Cela peut bien être dû au fait que les tampons de vertex sont actuellement réutilisés plusieurs fois par image (ce qui cause probablement également des problèmes de performances). C'est-à-dire que le tampon de vertex est utilisé pour dessiner un objet, modifié à mi-chemin pour commencer à dessiner le suivant. J'enquête.

Je soupçonne qu'un bon traitement par lots 2d résoudra ces problèmes de performances et 2d.

Tous les 191 commentaires

Peut confirmer que cela se produit toujours en utilisant la version personnalisée de Godot 3.0 https://github.com/godotengine/godot/commit/29db531fc8360b1e6d5e23008b208517b6d8c627

Cela se produit également dans l'éditeur:

https://i.imgur.com/3dv3fih.png
https://i.imgur.com/KTAyyqm.png

Ce devrait être tout en herbe.

EDIT: Il semble que si la taille du quadrant est définie sur 1, le problème disparaît

EDIT 2: Les tuiles ne disparaissent pas mais sont déplacées (un problème de transformation?)

https://i.imgur.com/T0GBaFv.png

EDIT 3: Une vidéo de basse qualité. https://streamable.com/6a07b Il m'a fallu un certain temps pour déclencher le problème (l'éditeur est configuré pour se mettre à jour toujours)

Ce problème se produit toujours dans le dernier maître 1f4685375f2d2e36a2e19e67ac9f614b8c99ea28

Il semble que le problème ne soit pas uniquement lié au tilemap. J'ai trouvé les mêmes problèmes avec un gros texte à l'intérieur d'une étiquette. J'ai le sentiment que cela n'arrive qu'après avoir utilisé le percent_visible et / ou le déplacement de l'étiquette. Cette fois, je ne pouvais le remarquer que pendant que le jeu était en cours d'exécution, mais je ne rejetterais pas la même chose dans l'éditeur. Je n'ai pas été en mesure de prendre une photo ou une vidéo de celui-ci, mais certains personnages commencent à scintiller et se déplacent vers une autre position avec une transformation différente (vous pouvez voir un morceau de lettres à partir de la texture de la police)

Mise à jour: ce problème est un problème majeur. Cela arrive également à l'éditeur lui-même. Je n'ai pas pu prendre de capture d'écran car au moment où je la remarque et que je veux prendre une capture d'écran, l'éditeur a probablement mis à jour et le problème disparaît. J'ai remarqué le problème dans deux sections de l'éditeur, ce n'est pas que cela se produit dans ces deux sections mais dans les sections où j'ai remarqué le problème: dans le contenu de sortie, des lettres scintillaient et l'une des étiquettes d'onglet en bas de l'écran où les étiquettes Output, Debugger, Audio, ... sont. Le D de l'étiquette du débogueur a commencé à clignoter. Ce n'est pas facile à déclencher mais c'est le même problème.

J'ai le problème d'étiquette sur la vidéo (le scintillement commence environ la moitié de la vidéo) https://streamable.com/e31xp regardez de près vers la fin de la 4ème ligne et vous verrez quelques lettres scintiller

Désolé, je ne pense pas que la modification enverra des notifications et je pense que c'est un problème important

https://i.gyazo.com/1ccc584f1746d0fc342f6de6609d33f0.mp4

J'ai le même problème ... (vers 0:04, vous voyez un scintillement de tuile)
J'utilise juste un Sprite et mon propre script de mouvement

Après de nombreux tests, je suis convaincu que mon problème (# 15113) est le même que celui-ci. Ce qui est étrange, c'est quelques choses:

  1. À l'origine, je voyais exactement le même problème que @Remixful voyait avec des carrés entiers scintillants, mais cela a disparu sans rien changer, et à la place, je voyais ces lignes étranges scintillantes. Ensuite, ceux-ci sont partis de nulle part et les carrés vacillants d'origine sont revenus ... Oo
  2. Si je laisse simplement la scène inactive, je ne vois pas d'artefacts ou de scintillements étranges, mais une fois que je commence à déplacer mon personnage (ou peut-être que c'est de la caméra en mouvement?), C'est là que je commence à voir un scintillement sous une forme ou une autre.
  3. Je peux facilement capturer le scintillement du carré complet sur la vidéo, mais lorsque j'essaie d'enregistrer le scintillement de la ligne, bien qu'il se produise définitivement pendant le tournage, le scintillement est introuvable sur la vidéo.

En outre, FWIW, cela ne s'est pas produit du tout dans la version 2.1 avec exactement le même projet.

Ce serait bien d'avoir un exemple de projet qui reproduit le problème (je sais que cela devrait être facile à faire en fonction des étapes données à reproduire, mais le temps de développement du moteur est une ressource rare :)).

@ akien-mga
flickertest.zip

Vous devrez peut-être exécuter le projet plusieurs fois avant de le voir, mais une fois qu'il a démarré, laissez-le reposer et vous devriez éventuellement le voir.

J'ai essayé plusieurs choses pour voir si cela se produisait dans différents scénarios. Je ne pouvais le reproduire que lorsqu'un Camera2D était un enfant d'un YSort. Cela pourrait être un indice.

J'ai vu cela hier dans la démo de kinematic_char: \

Ce que j'ai trouvé à propos de ce problème, c'est que:

  • Il est difficile de reproduire et de capturer en vidéo. Parfois, vous le verrez tout le temps et lorsque vous essayez de l'enregistrer avec OBS ou tout autre logiciel d'enregistrement d'écran, le problème ne se produira pas. Là encore, parfois cela se produira même pendant l'enregistrement, donc je ne sais pas 😅
  • Cela peut arriver à tout moment et n'importe où (même dans l'éditeur lui-même, pas seulement dans la scène en cours d'édition)
  • Semble ne se produire qu'avec TileMap s avec une taille de quadrant de cellule> 1 et, parfois, du texte. Je ne dis pas que cela n'arrive pas avec d'autres choses, mais je ne l'ai vu que lorsque j'utilise ces deux choses.
  • Et je ne vois rien de mal avec le code. Certes, je ne suis pas un expert ou quoi que ce soit. La seule chose à laquelle je peux penser est qu'une transformation n'est pas définie correctement au hasard ... je ne sais pas vraiment 😓

Voir # 16277 pour un autre exemple de projet qui devrait reproduire le problème.

Voir 16280 pour un autre problème à ce sujet.

Bonjour, pour ajouter à cela et juste pour clarifier, je n'ai rien fait du tout avec Godot et je viens d'essayer ce projet spécifiquement depuis que j'étais curieux:
image

Le scintillement se produit sur une lecture test mais pas sur l'éditeur. Fait intéressant, le contraire se produit si j'essaie la démo de personnages cinématiques 2D où les tuiles de l'éditeur scintillent mais pas en jeu de test.

Au moins dans mon expérience, cela semble être résolu dans le godot stable
Version 3.0.

Le dimanche 4 février 2018, 02:56, Archeia [email protected] a écrit:

Bonjour, pour ajouter à cela et juste pour clarifier, je n'ai rien fait du tout
avec Godot et je viens d'essayer ce projet spécifiquement depuis que je
curieuse:
[image: image]
https://user-images.githubusercontent.com/6222499/35776735-0b413ce2-09dd-11e8-81cc-be7a097d61cd.png

Fait intéressant, je n'ai pas ce problème avec le personnage cinématique 2D
Démo

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/godotengine/godot/issues/9913#issuecomment-362898191 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ABW9yzPGCmyxZONEuNXLFKU_PtY3ADsvks5tRYzmgaJpZM4OlRVq
.

@jonbonazza J'ai utilisé la dernière version stable de godot3 et cela arrive toujours. Mon image le montre également dans le coin supérieur droit T_T)

Il semble que ce bug se produise sur les cartes graphiques Nvidia qui sont au-dessus de GTX 970M?

GeForce GTX 970 ici.

Voici quelques-unes de mes découvertes et un projet simple pour reproduire ce problème. (un tilemap avec 2 sprites différents, l'icône godot et l'icône godot avec des couleurs inversées, avec des étiquettes au-dessus du tilemap, la scène qui a été convertie en tileset est incluse)

Flicker.zip

  • se produisant également aux étiquettes dans cette scène, les personnages uniques se déplacent de manière aléatoire (même tournent), tout comme les tuiles des plans
  • si vous êtes dans l'éditeur et déplacez votre souris sur la grille tout en sélectionnant une tuile, vous pouvez parfois voir ce problème dans un état figé jusqu'à ce que vous déplaciez votre souris vers une autre section de la grille
  • l'ordre des nœuds dans l'arborescence de la scène en change la fréquence (si le tilemap est le dernier nœud, cela arrive plus fréquemment au tilemap et si le tilemap est le premier nœud, cela arrive plus fréquemment aux étiquettes)

Edit: Voici une capture d'écran du problème. Vous pouvez voir 2 E de la première ligne étrangement étirés sur une section de tuiles du tilemap. (rouge)

bug

Les étiquettes cessent de clignoter une fois que le tilemap est supprimé de la scène.

J'espère que cela aidera à résoudre ce problème.

45ab9cdfb55eed4eef59feee225248ccc20a6235
exporté (version) sous Linux vers Windows (32 et 64 bits)
Scintille sur Win 10 avec Nvidia GTX 750 Ti (ne pas avoir accès à cette machine pour déboguer)

Impossible de se reproduire sur Nvidia GTX 760 avec Debian ou Win7.

Le scintillement est présent avec une GTX 1060 sur Win7 pour moi. J'espère vraiment que cela sera corrigé très bientôt car comme c'est le cas maintenant, TileMap n'est tout simplement pas utilisable pour la production. :(

même problème avec les lignes scintillantes entre les carreaux ici. regarde ça
plate-forme tut.zip
Glitch très ennuyeux et désagréable = (((

J'ai également ce problème avec mon jeu. Mais seulement lorsque j'allume le dGPU (Nvidia). Je ne l'ai pas encore remarqué avec le GPU Intel intégré.

Une note qui peut aider. J'ai ce problème avec win10 et nvidia gtx 1070. Mais l'activation de ysort sur le tilemap semblait arrêter le pépin.

Notez que Ysort force ~~ (Cellule) ~ Taille du quadrant = 1.

@securas Wow, ça a fonctionné! Merci pour ça. :)
@ bojidar-bg Peut-être ai-je mal compris ce que vous voulez dire, mais j'ai une carte de tuiles avec une taille de cellule de (16, 16) et l'activation d'Ysort n'a rien changé à cela ...

@securas désolé d'avoir posé cette question newbish mais où puis-je trouver votre tri?

@Archeia Vous pouvez le trouver sous "Cellule" lors de l'inspection du tilemap.

Edit: Dans mon exemple ci-dessus, les étiquettes scintillent toujours même avec Y-Sort activé, mais je n'ai pas encore vu le tilemap scintiller.

Edit2: Je viens de voir un scintillement de tuile avec Y-Sort activé. Cela ne semble pas résoudre ce problème. Cela semble toutefois se produire beaucoup moins fréquemment.

Merci! Cela a résolu le problème pour moi.

Merci @ bojidar-bg. J'avais l'impression que la taille des cellules était autre chose que la taille des cellules ... Qu'entendez-vous par taille de cellule?

@securas oh, mon mauvais, je voulais dire Taille du quadrant. Je ne sais pas pourquoi je me suis trompé ...

Toutes mes excuses si cela n'ajoute pas grand-chose à la conversation, mais je remarque ce scintillement avec la démo de Kinematic Collision à la fois dans l'éditeur et en tant qu'exécutable exporté. Windows 10 64 bits. GTX 1080 Ti. 2 moniteurs @ 1440p. J'utilise une version auto-compilée de godot 3.0.2 stable. J'ai essayé cela dans debug, release et release_debug et le scintillement est présent dans toutes les instances.

Edit: À première vue, il semble que l'activation de ysort pour le tilemap fait disparaître le scintillement.

Je commence à me demander si ce n'est pas un problème de pilote. Il semble que toutes les personnes confrontées au problème utilisent une carte nvidia et que la plupart des gens utilisent Windows 10.

Gettnig ça aussi et je suis sur Manjaro, GTX970 ici

Je peux reproduire cela et peut également confirmer que l'activation de Y Sort le corrige. J'utilise Windows 8.1 avec une GeForce GTX 1060.

EDIT: En fait, je pense que le scintillement peut être lié à la taille du quadrant, comme le suggère @ bojidar-bg. Lorsque le tri Y est désactivé, je vois différents niveaux de scintillement lorsque je varie la taille du quadrant. Je n'ai pas encore observé de scintillement aux tailles de quadrant 1, 2, 64 ou 128. J'en vois beaucoup dans la gamme 16-32.

@ecdavis Êtes-vous sûr qu'il arrête complètement de clignoter? J'utilise également une GTX 1060 et j'ai encore remarqué le scintillement avec Y Sort activé, mais beaucoup moins fréquemment.

Je suis vraiment curieux de savoir ce qui pourrait parfois provoquer le placement des lettres d'étiquettes à l'intérieur des tuiles de tilemap.

Beaucoup de choses semblent avoir un impact sur la fréquence du scintillement, comme l'ordre des nœuds, je ne pense pas que ce soit très étroitement lié à la taille du quadrant.

Archlinux - Nvidia GTX 970 - Godot v3.0.2.stable.custom_build

Avec Quadrant Size réglé sur n'importe quoi! 1, le problème de déplacement de tuile se produit constamment.

Avec Quadrant Size réglé sur 1, je n'ai pas eu de tuile déplacée, mais j'ai eu un problème de déchirure pour quelques images, une seule fois. Probablement sans rapport.

Le scintillement pour moi a été corrigé en activant Pixel Snap dans les paramètres du projet (Rendu -> Qualité -> 2d). Et j'ai eu un problème de déchirement qui a été résolu pour moi en jouant avec les paramètres des images de la feuille de tuiles et des plans de tuiles que j'importais. À savoir "filtre" et "mipmaps". Je viens de lui dire d'utiliser le préréglage 2d Pixel et de le définir comme valeur par défaut pour les textures.

@rosshadden essaiera à la maison et fera le point sur les résultats. Merci d'avoir partagé!

Pixel snap était activé quand j'ai fait cela et cela n'a pas résolu le problème.
J'ai en fait trouvé ce qui pourrait être une solution.
Si vous activez le tri en Y sur la taille de la cellule ET augmentez la taille du quadrant pour qu'elle corresponde à la taille de la cellule (dans mon cas 128), cela semble éliminer complètement le problème au moins pour moi

@irresistiblejelly Comme @ bojidar-bg l'a souligné, l'activation du tri en y définit le quadrant sur 1 en interne, en ignorant la valeur définie dans l'éditeur. Là encore, ce n'est pas uniquement un problème de tilesets, car les polices dynamiques avec mipmaping et filtre activés ont le même problème (déplacement de lettre dans ce cas).

Besoin de faire des tests exhaustifs pour identifier le problème exact.

Je viens d'essayer la suggestion de @rosshadden d'

Cela se produit toujours sous iOS et macOS, mais pas sur Android.
J'ai activé Rendu -> Qualité -> 2d -> Pixel Snap qui a aidé à réduire la fréquence, mais cela se produit toujours.
captura de tela 2018-05-02 as 15 00 15
captura de tela 2018-05-02 as 15 00 11

@ByTheQuietLake avez-vous déjà vu ces problèmes, je crois que vous êtes la première personne à intervenir avec une carte non NVIDIA.

Cela peut très bien être un problème de pilote nvidia alors.

Je l'ai testé sur Windows 10 en utilisant Godot 3.0.2:

  • Nvidia 1070 GTX (pilote 397.64): un problème se produit.
  • Intel HD 4600: le problème ne se produit PAS.

C'est un problème certain qui se produit au moins avec les utilisateurs avec Nvidia gpus. Je remarque que les tuiles dessinent au hasard autour de la scène en mode édition lorsque le curseur de la souris se déplace le long de la scène et des onglets latéraux. Cela se produit également lors de l'exécution du jeu. L'intensité semble diminuée lorsque vous définissez la taille du quadrant sur 1 (le tri Y la définit sur 1), mais cela se produit toujours et cela enlève l'optimisation sur les grandes cartes, ce qui entraîne de fortes baisses de fréquence d'images.

J'ai également rencontré des plantages en essayant de redéfinir la taille du quadrant sur 1 (ou en essayant de vérifier le tri Y) après avoir modifié le paramètre sur une grande carte (j'ai ouvert le problème avec # 19617). Cela semble montrer qu'un traitement trop lourd est impliqué (ou une fuite de mémoire peut-être?) Et peut être lié au problème global avec la façon dont les TileMaps sont codés pour être rendus qui provoque le dessin irrégulier des carreaux. Je soupçonne que le problème est dans tile_map.cpp et peut-être dans VS ou tout autre code gérant le rendu des tuiles.

Je n'ai pas encore rencontré le problème avec les polices dessinées de manière incorrecte mentionnée ci-dessus, mais je n'ai peut-être pas encore assez manipulé les polices pour rencontrer le problème. À moins que les choses ne soient examinées et corrigées, je crains de voir cela aussi.

Cela doit vraiment être étudié et réglé car de nombreux utilisateurs ont des cartes Nvidia et la publication sur ordinateur signifie que de nombreuses personnes avec des cartes Nvidia joueront au jeu et remarqueront ces problèmes.

Il semble que le problème soit peut-être lié au "PowerMizer", lorsque le mode préféré est réglé sur "Adaptatif", les niveaux de performance diminuent à zéro (après 35 ~ 40 secondes) puis le scintillement commence, mais si je définis sur "Préférez" Performance maximale », le scintillement disparaît.

J'ai testé avec Linux (pilote 390.59 et 396.24) et Windows (pilote 388.71 et 398.11).
~ Sous Windows, après la mise à niveau de mon pilote vers 398.11, il semble que le problème s'est arrêté ~
captura de tela de 2018-06-18 14-06-54

Vidéo que j'ai enregistrée montrant le bug: https://youtu.be/R6TLpDX71RQ?t=32s
Si quelqu'un veut tester, voici le projet utilisé: Flicker.zip

Mettre à jour:
Dans mon exemple, je n'utilise pas TileMap, ce sont juste de simples fonctions de dessin (draw_line et draw_rect) pour créer cette grille.

@guilhermefelipecgs Je ne pense vraiment pas que ce soit une vraie solution. Je suppose que Nvidia X Server est un programme Linux OS similaire au panneau de configuration Nvidia avec Windows 10. J'ai défini le paramètre de gestion de l'alimentation sur "préférer les performances maximales" à l'intérieur et il semble réduire les tuiles de déplacement, mais je l'ai toujours vu se produire après changer le réglage. Ce bogue est étrange en ce qu'il ne s'affiche pas toujours lors de l'utilisation du programme, mais cela se produit. Vous devriez peut-être essayer ceci avec un TileMap réel.

Même si ce paramètre fonctionnait. POURQUOI cela fonctionnerait-il? Le réglage du gestionnaire d'alimentation sur des performances maximales ne signifierait-il pas que le code est dur pour le processeur? Cela a semblé faire une différence pour moi mais n'a pas complètement résolu le problème. Je peux toujours attraper des carreaux qui ne sont pas à leur place.

@ jamesaddy789 Je ne dis pas que c'est une solution, j'essaie simplement d'avoir une idée de ce qui pourrait causer cela. J'ai été intrigué parce que lorsque j'utilise mon GPU Intel, fonctionne bien, n'arrive qu'avec nvidia et j'ai remarqué que lorsque l'horloge du GPU baisse, le scintillement apparaît, mais cela pourrait être juste une coïncidence, je ne sais pas. J'ai aussi essayé avec TileMap et pour moi au moins, c'est la même chose.

C'est étrange que vous n'ayez pas eu la même expérience que moi. Juste par curiosité, quelle est votre version de pilote nvidia?

@guilhermefelipecgs Il s'agit de la version 398.11. Il semble que PowerMizer soit une application pour ordinateur portable alors que j'utilise un ordinateur de bureau, donc je n'ai pas ce programme. Je viens de modifier le paramètre de gestion de l'alimentation pour "préférer les performances maximales" dans le panneau de configuration Nvidia. Cela a semblé réduire la quantité de tuiles disloquées, mais lors de l'exécution du jeu, je l'ai encore remarqué. De même que la définition de la taille du quadrant sur 1, cela a réduit la fréquence mais n'a pas complètement résolu le problème. J'ai également toujours le problème que si je change la taille du quadrant à 1 sur une grande carte, l'éditeur se bloque. Ceci est également moins fréquent après avoir changé le paramètre en performances maximales, mais je l'ai testé tout à l'heure et il s'est écrasé.

Remarque Mon GPU est Nvidia Gtx 1060 6 Go avec le pilote susmentionné. Mon système d'exploitation est Windows 10 Professionnel.

J'utilise également un PC ici. Sur Windows, le panneau de contrôle est en effet un peu différent, l'option que vous avez modifiée est la même option que j'ai testée ici. Je ne sais pas quoi faire. Ce bug est très ennuyeux. :(

C'est un problème qui doit être dans le code de rendu. Je n'ai pas assez d'expérience avec le code moteur pour le tester et le résoudre moi-même. Il est intéressant que vous (@guilhermefelipecgs) ayez remarqué le problème lors du dessin manuel de la grille. Je pensais que le problème résidait uniquement dans le code source de TileMap.

Si les rectangles sont dessinés partout même lorsque vous n'utilisez pas le nœud TileMap, je dois supposer que le bogue est également actif dans la fonction draw_rect () (dans le code source à https://github.com/godotengine/godot/ blob / master / scene / resources / texture.cpp à la ligne 47).

Dessin TileMaps utilise VS dans la plupart de ses fonctions (dans https://github.com/godotengine/godot/blob/master/scene/2d/tile_map.cpp) et la fonction draw_rect () utilise VisualServer (je suppose que ce sont la même chose).

Pourquoi cela affecterait-il les GPU Nvidia? Je ne vois pas ce type de problème dans d'autres programmes (autres moteurs de jeu), donc je ne peux que viser à ce que ce soit un problème dans le code source qui, pour une raison quelconque, affecte (au moins a un impact plus notable) sur les processeurs graphiques Nvidia.

@guilhermefelipecgs Le problème est BEAUCOUP moins fréquent après la modification du paramètre de gestion de l'alimentation et c'est peut-être pourquoi vous ne le remarquez pas. En fait, il a fallu un peu de temps pour exécuter le jeu et me promener avant de revoir le pépin. J'ai parcouru le jeu avec un KinematicBody2D pendant quelques minutes avant de voir les tuiles égarées. J'en ai vu assez pour savoir que le problème existe toujours.

Je suis sûr à 98% qu'il s'agit d'un problème de pilote. Définir le pilote nvidia Power management mode sur Prefer maximum performance semble résoudre le problème.

Les tests suivants utilisent le projet de scintillement @guilhermefelipecgs et le

J'ai essayé d'obtenir une trace GPU avec RenderDoc pendant environ 4 heures en activant le mode de processus faible dans le jeu (donc 1 image par seconde en gros) mais, bien que je pense avoir été capable de capturer des images problématiques, je ne pouvais pas voir toute erreur dans les commandes opengl ou la trame reconstruite à partir de RenderDoc. Encore une fois, JE PENSE que j'ai des cadres problématiques ... c'est un peu difficile de les obtenir quand ils sont aléatoires.

J'ai également enregistré les rects qui sont envoyés au shader pour dessiner chaque rect dans un fichier et recherché tout rect en dehors de x <60 ou x> 420 ou y <60 ou y> 420 ou avec une largeur ou une hauteur différente de 20 et Je n'ai rien trouvé et je suis sûr à 100% qu'il devrait y avoir de mauvais rects parce que je les ai vus en exécutant le projet et en le journalisant. Voici les logs godot_tilemap_issue_logs.zip si vous avez envie de les parcourir (145 est l'élément débarrassé puis un tas de rects puis 145 encore puis rects alors ...) Ce qui est enregistré est dst_rect d'ici https: / /github.com/godotengine/godot/blob/master/drivers/gles3/rasterizer_canvas_gles3.cpp#L687 -L701

Voici la construction de Windows plus le scintillement modifié que j'ai utilisé pour enregistrer les rects. Si vous voulez le journaliser, utilisez quelque chose comme godot.windows.opt.tools.64.exe > log.txt dans un cmd (pas un PowerShell car il utilise un autre encodage et c'est pénible)

Pour référence, j'ai essayé le test Flicker de @guilhermefelipecgs (Linux x86_64) et la version modifiée de @mrcdk (Wine) et je n'ai pas pu reproduire de scintillement sur le système suivant:

  • Mageia 6 x86_64
  • X11 1.19.5, Plasma / KWin 5.12.2 (testé avec la composition ON et OFF)
  • Ordinateur portable Optimus, utilisant Nvidia GTX 670MX via Nvidia PRIME (pilotes 390.59)
  • Testé avec Godot vsync ON et OFF, ainsi que les pilotes vsync ON et OFF

Il se peut que le bogue des pilotes affecte uniquement le bureau ou les GPU récents.

C'est aussi mon hypothèse car 7 jours ont des problèmes avec les cartes de la série 10
à une échelle beaucoup plus grande. Je reçois des chutes de fps aléatoires de 160 à 10 sans raison
sur les paramètres minimum avec un Nvidia GeForce 6Gb gtx 1060. PC de bureau

Le mar 19 juin 2018, 09:04 Rémi Verschelde, [email protected]
a écrit:

Pour référence, j'ai essayé les deux @guilhermefelipecgs
https://github.com/guilhermefelipecgs's Flicker test (Linux x86_64) et
@mrcdk https://github.com/mrcdk version modifiée (Wine) et n'a pas pu
reproduire tout scintillement sur le système suivant:

  • Mageia 6 x86_64
  • X11 1.19.5, Plasma / KWin 5.12.2 (testé avec la composition ON et OFF)
  • Ordinateur portable Optimus, utilisant Nvidia GTX 670MX via Nvidia PRIME (pilotes
    390,59)
  • Testé avec Godot vsync ON et OFF, ainsi que les pilotes vsync ON et
    DE

Il se peut que le bogue des pilotes affecte uniquement le bureau ou les GPU récents.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/godotengine/godot/issues/9913#issuecomment-398311432 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AS-y9jLkTsEpQyBdu204PCK63wHgD1dxks5t-LCXgaJpZM4OlRVq
.

@ akien-mga est-ce que l'horloge graphique change pendant l'exécution du test comme le montre @guilhermefelipecgs dans leur vidéo?

l'horloge graphique change-t-elle pendant l'exécution du test comme le montre @guilhermefelipecgs dans leur vidéo?

Cela ne change pas, quand je lance Godot, il passe à la valeur d'horloge la plus élevée et y reste. Cela explique pourquoi je ne verrais pas de scintillement, selon la vidéo de @guilhermefelipecgs , cela ne se produit que lors du downclocking (je suppose que ma carte n'est pas assez puissante pour vouloir downclocker lors de l'exécution d'un simple projet Godot).

screenshot_20180619_191134

Quand vous pensez que cela ne peut pas être plus étrange ...

J'ai fait un nouveau projet et j'ai remarqué 2 comportements étranges.

1) Je sais "exactement" où sera le scintillement.
2) Control 3 n'obtient jamais de "scintillement".

Je vais essayer d'expliquer ce qui se passe:
1) J'ai ajouté 4 contrôles sur la scène comme ceci:
captura de tela de 2018-06-19 15-45-25
Tous les contrôles utilisent le même code de base. Control 1 sera le seul nœud avec un scintillement.

2) Après un certain temps (20 ~ 50 secondes), Node.gd reparent les nœuds, comme ceci:
captura de tela de 2018-06-19 15-50-18
Et puis, le scintillement passera de Control1 à Control 2 , c'est-à-dire que seul le premier enfant aura un scintillement.
Note 1: Je pense que cela se produit probablement parce que les fonctions de dessin seront mises en file d'attente dans l'ordre des nœuds.
Note 2: Control 2 utilise draw_texture , cette méthode a également un scintillement.

3) Lorsque Control 3 devient le premier enfant, le scintillement disparaît comme par magie, et la raison en est ce drapeau:
captura de tela de 2018-06-19 15-45-52
Le drapeau Invert indique au code d'inverser les fonctions de dessin, donc mon code appellera d'abord draw_line et ensuite draw_rect , donc les rectangles rouges seront devant la grille.

4) Et enfin, le scintillement revient dans Control 4 , ici je n'appelle que draw_rect .

J'ai oublié de dire avant que j'ai une GTX970.

Sous Windows, j'ai utilisé un programme pour voir mon horloge gpu changer:
whatsapp image 2018-06-19 at 14 13 41
* Le problème affecte également Windows avec le dernier pilote (398.11), mais moins souvent et j'ai besoin d'attendre un peu plus de temps. Ignorez la version du lecteur sur cette capture d'écran, je viens de rétrograder mon lecteur pour voir s'il y a une différence.

Nouveau projet: Flicker_2.zip
Vidéo 1: https://youtu.be/01LWVQqp5yg
Vidéo 2: https://youtu.be/XTKTe9aZAuU?t=50s

Je dois essayer 5 ~ 8 fois jusqu'à ce que j'obtienne un scintillement plus intense. Il semble que plus je joue, plus l'effet est intense.

La vidéo 2 est la même chose que la vidéo 1, mais le niveau de performance augmente dans la partie finale de la vidéo pour une raison quelconque et lorsque cela se produit, vous pouvez remarquer que le scintillement disparaît.

Les vidéos sont enregistrées sous Linux (car le bogue est plus intense sous Linux) à 60 fps.

Je suis sûr à 98% qu'il s'agit d'un problème de pilote.

Je suis d'accord, j'ai regardé dans le code (godot) et je ne trouve rien d'étrange.

D'accord, j'ai pu lancer le projet avec apitrace et je suis maintenant sûr à 99,9998% qu'il s'agit d'un problème de pilote lié au fichier Power management mode Voici le fichier flicker_trace.zip pour que vous puissiez l'exécuter de votre côté aussi .

Et voici une vidéo que j'ai enregistrée: https://streamable.com/yk1qq La qualité est plutôt mauvaise, alors voici l'original (ce qui n'est pas beaucoup mieux 😅)

Les 20 premières secondes correspondent à l'exécution et à la journalisation du projet. J'ai oublié de minimiser OBS la première fois que j'ai utilisé apitrace et mon horloge gpu était verrouillée au maximum (c'est le graphique dans le coin supérieur droit) et le scintillement n'était pas là. Passer à environ. 3:15 où j'ai minimisé OBS et fait apparaître le bogue lors de la relecture de la trace. J'ai ensuite utilisé l'option Show thumbnails pour créer une vignette pour chaque image. J'ai ensuite cherché dans les vignettes jusqu'à ce que je trouve un cadre qui avait le bogue. J'ai lancé lookup state pour obtenir l'état opengl de ce cadre en béton et, une fois terminé, j'ai montré le framebuffer sans le bogue.

Donc, si ce problème a été causé par godot, non seulement la trace doit le montrer à chaque fois (ce n'est pas la première fois que je l'exécute alors que j'ai laissé OBS ouvert) et la vignette et le framebuffer d'état de recherche auraient dû ressembler (ce qui ils ne l'ont clairement pas fait).

Alors, que pouvons-nous faire ici? Je ne pense pas que nous (en tant que communauté) avons nécessairement le poids nécessaire pour initier eux-mêmes le changement de NVIDIA. Ou le faisons-nous?

Alors, que pouvons-nous faire ici? Je ne pense pas que nous (en tant que communauté) avons nécessairement le poids nécessaire pour initier eux-mêmes le changement de NVIDIA. Ou le faisons-nous?

OMI ça vaut le coup :) Dans le pire des cas, nous n'obtenons pas de réponse, mais ouvrir un fil de discussion à ce sujet dans le forum de développement Nvidia serait bien.

Salut les gars,

Je me demande, le problème se produit-il toujours lorsque vous utilisez Nvidia Inspector et désactivez CUDA - Force P2 State? C'était un problème qui provoquait un scintillement dans certains autres projets (comme OBS). J'aimerais savoir s'il s'agit également d'un problème d'alimentation, car je vois un problème similaire dans un autre jeu (non-godot) et je commence également à soupçonner un problème de pilote. GTX750 ici.

J'obtiens toujours le même problème sur Godot v3.0.6 et le téléchargement des derniers pilotes Nvidia n'aide pas du tout à résoudre ce problème. J'utilise une carte graphique Nvidia GTX 750 TI. Est-il possible de résoudre ce problème? De plus, lorsque je lance mon jeu sur un navigateur Web, le problème de clignotement n'apparaît pas du tout?

Quelqu'un a-t-il encore contacté nvidia à propos de ce problème?

ayez ce problème ty @guilhermefelipecgs pour cette vidéo, exactement ce qui m'arrive.
je suis sur gtx 950. J'ai essayé la taille du quadrant && ysort, mais pas de chance.

je ne sais pas quoi faire. allait créer un nouveau problème, mais j'ai pensé que je publierais à la place. je suis aussi sur Godot v3.0.6

Quelqu'un l'a-t-il essayé avec la version 3.1 alpha avec GLES2.0 activé? C'est peut-être un problème de pilote OpenGL3 x nvidia?

Je suppose que je vais devoir changer la façon dont les rects sont dessinés, cela montre à quel point la situation est mauvaise avec le support des pilotes OpenGL et pourquoi le passage à Vulkan est nécessaire bientôt.

aussi, quelqu'un l'a-t-il testé avec le rendu GLES2?

@reduz je suis désolé que cela ait pris si longtemps. enfin obtenu 3.1 pour compiler
oui, je confirme que le scintillement se produit toujours sur le rendu GLES2

J'ai fait quelques tests avec cela, et je ne peux pas déclencher une tuile noire vacillante sur un tileset de mais sur mes 32x32 et 48x48, c'est toujours là.
je ne sais pas si cela aide mais je pense que c'est quelque chose
e: btw si quelqu'un veut que je modifie du code C ++ et que je recompile pour tester des choses, juste lmk
e2: nvm il vient de revenir. ouais, c'est beaucoup moins fréquent cependant

J'ai trouvé une solution temporaire qui fonctionne assez bien en fait. (si quelqu'un sort bientôt son jeu)

- en carrelage :

  • créer une nouvelle carte en mosaïque et définir la quantité de tuiles à 40x40
  • sélectionnez votre jeu de carreaux de sol
  • puis cliquez sur l'outil de remplissage de seau sur la barre d'en-tête supérieure (touche f ), cliquez n'importe où sur la grille de tuiles
  • allez maintenant au fichier -> exporter en tant qu'image, décochez _draw tile et incluez la couleur d'arrière-plan_, cliquez sur exporter.
  • allez sur tinypng.org, compressez-le (j'ai économisé 71% de la taille du fichier).

- à godot:

  • ajoutez un nœud de sprite à votre couche tilemap.
  • définissez la texture du sprite sur l'image exportée à partir de la mosaïque.
  • définir les options d'étape de la grille pour qu'elles correspondent à la taille de votre cellule (dans mon cas, c'était 48x48)

image

maintenant, vous pouvez simplement faire ctrl + d sur le sprite et le casser. pas de scintillement et les performances sont excellentes (godot ne rend en interne que ce qui est sur la toile)

e: espérons que cela aide. c'est un peu bizarre, mais c'est une solution (pas la meilleure, mais c'est quelque chose)
e: vous pouvez toujours utiliser les autres couches de tilemap pour les objets et autres. c'est juste pour que le sol arrête le scintillement tout en conservant de bonnes performances (l'activation de ysort sur une couche de tilemap au sol laisse tomber les fps)

@ByTheQuietLake np, mon plaisir! j'ai nvidia gtx 950 et je peux confirmer son fonctionnement. Je n'ai vu aucun carreau noir scintiller depuis plus de 20 heures . dans l'éditeur ou dans le jeu. la seule chose que j'ai remarquée, c'est que le temps de chargement est augmenté d'environ 20 ms (ce qui n'est pratiquement rien), mais c'est simplement parce que l'image est énorme. cependant, lorsque vous vous déplacez sur la carte avec votre personnage, cela semble aussi fluide que s'il s'agissait d'un tilemap.

pas sûr de la flexibilité. Pour faire court, créez simplement vos carreaux de sol en mosaïque, exportez-les en tant qu'image et utilisez-les comme sprite en tant qu'enfant dans votre tilemap. puis, une fois que reduz / nvidia devs / etc trouve un correctif, supprimez simplement vos anciens sprites et utilisez le tilemap comme vous le feriez normalement. ce devrait être une transition facile.

solution a fonctionné ou non si vous n'avez pas de gpu nvidia :(

e: ce bug ne se produit qu'avec nvidia gpus bythequietlake

C'est mon premier message sur github, et je m'excuse si c'est au mauvais endroit (trouvé ce fil de google).

J'ai récemment rencontré ce même problème après la conversion d'un jeu à partir de la version 2.1. La solution de Girng fonctionne pour moi, mais cela semble un peu piraté. J'ai également remarqué qu'il y avait un léger décalage entre une texture de nœud Sprite et les textures de cellule tilemap lors du déplacement (en utilisant sa solution). Cela n'était pas évident en utilisant un tilemap d'étage.

Je suis sur une GTX 960. Je ne trouve aucun paramètre PowerMizer sur Windows 10 (d'après le post ci-dessus de guilhermefelipecg). Cela peut être dû au fait que je suis sous Windows et que cela pourrait être un problème avec Linux. J'ai aussi lu ci-dessus, que même cela ne corrigeait pas le problème.

Cela peut être légèrement hors sujet, mais devrais-je rester sur 2.1 jusqu'à ce que cela soit corrigé, ou aurais-je besoin de compiler une «version personnalisée» de Godot?

Sincères amitiés,

--Aaron

Même question ici qu'Aaron, avons-nous d'autres options? C'est un problème très désagréable et rend Godot non adapté à la production, veuillez lui donner une priorité plus élevée.

Une chose que j'ai trouvée qui fonctionnait pour moi était de désactiver le HDR dans les paramètres du projet.

Une chose que j'ai trouvée qui fonctionnait pour moi était de désactiver le HDR dans les paramètres du projet.

Pas pour moi, le seul qui a fonctionné était de configurer Ysort, mais ce n'est pas tout à fait une option viable (définit la taille du quadrant sur 1)

J'étais en train de rencontrer cela aussi ... et j'étais capable de reproduire systématiquement chaque fois que je courais la scène.
Quelqu'un a-t-il essayé de modifier les paramètres de qualité de rendu? Spécifiquement définir le Framebuffer Allocation en 2D?

Jusqu'à présent, cela _ semble_ que cela fonctionne peut-être ... ou du moins que cela se produise beaucoup moins souvent (je n'ai pas vu le scintillement se reproduire ..._ encore_)

@ByTheQuietLake jusqu'à présent, il ne ressemble à aucune instance de scintillement du tout.

@XNargaHuntress vraiment? Qu'avez-vous défini pour l'allocation du framebuffer? cela pourrait être une bonne solution temporaire
edit: nvm a mal lu, va tester ça pour le framebuffer 2d

@XNargaHuntress Le scintillement se produit toujours pour moi avec Framebuffer Allocation réglé sur 2D. J'ai l'impression que cela arrive encore plus souvent maintenant, mais cela pourrait être une coïncidence.
J'utilise une Nvidia GTX 750 Ti sur Windows 7 x64, Godot 3.0.6 stable.

Edit: Je viens d'essayer de régler l'allocation de framebuffer sur "2D sans échantillonnage". Clignote toujours.

Edit 2: Le scintillement se produit également avec Godot 3.1 alpha en utilisant le moteur de rendu GLES3. Mais lors de l'utilisation du moteur de rendu GLES2, je n'ai pas remarqué de scintillement du tout.

Peut-être que je peux me tromper, mais après la dernière mise à jour du pilote nvidia, je n'ai pas pu voir de scintillement jusqu'à présent. Testera pleinement à la maison aujourd'hui.

GTX 1050TI, Windows 10, Godot 3.1 alpha

EDIT: Après beaucoup de tests, ça s'est montré à nouveau ... mais très peu ..... mais toujours là

Après une ancienne mise à jour du pilote, je n'ai pas vu le problème depuis un moment maintenant. Je ne sais pas exactement quelle mise à jour l'a corrigé, et dépendra probablement du GPU spécifique, mais oui ...

N'oubliez pas que le pilote GLES2 ne présente pas ce problème sur Master.

Le réglage du zoom de la caméra sur (1,1) aurait peut-être résolu le problème pour moi, auparavant je le réglais sur (0,5, 0,5) et je voyais des scintillements. Jusqu'à présent, je ne vois aucun scintillement. Quelqu'un d'autre peut-il confirmer?

Tant que l'option ysort est désactivée, j'obtiens toujours un scintillement.

Le lundi 19 novembre 2018 à 14 h 10, mikeleeman [email protected] a écrit:

Le réglage du zoom de la caméra sur (1,1) a peut-être résolu le problème pour moi,
auparavant, je l'ai réglé sur (0,5, 0,5) et je voyais des scintillements. Jusqu'ici je ne suis pas
voir tout scintillement. Quelqu'un d'autre peut-il confirmer?

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/godotengine/godot/issues/9913#issuecomment-439773424 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ACv4240No-elY7BK16HKAmxhHrFRaOj4ks5uwj1UgaJpZM4OlRVq
.

@mikeleeman Toujours en cours sur GLES3 avec une GTX 960. J'ai essayé le mode framebuffer 2D, les manigances de la caméra, etc. À ce stade, je pense que Vulkan est notre seul espoir.

NVIDIA n'a toujours pas résolu son problème de verrouillage du cache du disque shader. C'est triste parce que les gens qui utilisent Windows avec des cartes NVIDIA ne connaissent pas le plein potentiel de Godot.

La plupart des fournisseurs ne donnent pas de détails sur OpenGL récemment, et contourner ce problème est assez compliqué.
Pour l'instant, la meilleure solution de contournement dans Godot 3.1 est de passer à OpenGL2, où cela fonctionne correctement.
Finalement, GLES3 sera par la suite obsolète pour Vulkan, où cela ne devrait plus se produire.

Cela se passe toujours dans 3.1alpha avec GLES2 (comme indiqué dans le coin supérieur droit de ce gif):
sssaturday5

Une solution temporaire que j'ai trouvée pour fonctionner, qui devrait nous retarder jusqu'à Vulkan:

  • Utilisez des nœuds Sprite pour chaque tuile de sol séparée. Activez l'accrochage lors de l'édition afin de faciliter la reproduction de la même disposition du sol. Cette méthode n'est en fait pas un problème de performances que j'ai trouvé. C'est juste long et un peu bizarre à faire. Ce n'est évidemment pas idéal, mais cela fait l'affaire pour le moment.

Je peux également confirmer que cela se produit également sur GLES2: / (dernière version b47d4e1ba5d72bac5c2e671d9e4c0ae037a248c0)

Ce n'est même pas proche d'un travail valide. Vous perdez littéralement toutes les raisons d'utiliser des cartes de tuiles en premier lieu.

Ce n'est même pas proche d'un travail valide. Vous perdez littéralement toutes les raisons d'utiliser des cartes de tuiles en premier lieu.

Ouais, mais je veux dire que cela arrête le scintillement et ce n'est que pour la couche de sol .. Et votre jeu est exactement le même. Mais je suis d'accord avec vous, il ne tire pas parti des fonctionnalités du tilemap, mais je pense que c'est un compromis équitable jusqu'à ce qu'un correctif entre en jeu

Je ne vois plus de scintillements, ce qui est étrange parce que je voyais définitivement des scintillements aléatoires auparavant pendant longtemps.

La dernière fois, j'ai également essayé de dessiner des tuiles sur un canvasItem avec des fonctions draw_rect, d'émuler un tilemap et d'appeler update () sur le canvasItem une seule fois, donc il ne dessine qu'une seule fois au début du programme. Étonnamment, le canvasItem a également des scintillements aléatoires similaires (peut-être moins fréquents?), Mais uniquement lorsque la caméra est zoomée (0,5, 0,5), mais pas lorsque la caméra est sur (1,1). Je sais que cela semble bizarre, peut-être que j'ai mal compris quelque chose.

Maintenant, les scintillements ne se produisent plus, à la fois pour celui qui utilise le dessin personnalisé canvasItem et pour celui qui utilise le TileMap par défaut de Godot. Je soupçonne une mise à jour du pilote? Ma carte est Nvdia GeForce GTX 970, sous Windows. Note latérale: quelqu'un peut-il vérifier sa version openGl actuellement installée? J'ai entendu dire que c'était plus facile à faire sous Linux.

edit: L'incertitude n'est pas bonne je pense, besoin de Vulkan pour s'assurer qu'il n'y a pas de problèmes.

J'ai changé la façon dont ils sont dessinés dans le moteur de rendu OpenGL ES 2.0, donc cela devrait certainement fonctionner correctement. Sur OpenGL ES 3.0, toute solution de contournement à laquelle je peux penser nuira probablement aux performances, donc la priorité sera de faire fonctionner Vulkan dès que possible après la sortie de la version 3.1.

Veuillez confirmer si vous le pouvez que cela n'échoue plus dans le moteur de rendu OpenGL ES 2.0.

@reduz J'ai testé pendant quelques minutes ici et cela ne s'est pas produit. Merci d'avoir corrigé ça! :)
Remarque:
Je ne sais pas si c'est lié, mais je peux toujours voir des lignes blanches horizontales entre les carreaux lorsque la caméra tremble.

merci reduz pour le correctif OpenGL ES 2.0!

à @mikeleeman et autres:
voici les 3 dernières notes de patch depuis le 20 novembre pour les cartes NVIDIA GeForce:
20 novembre , 3 décembre et 12 décembre . la liste des problèmes résolus se trouve à la page 15 .

le seul problème que j'ai trouvé qui pourrait être pertinent (pas sûr) est le 12 décembre:

  • [Hitman 2 Silent assassin]: Il y a une corruption de texture scintillante dans le jeu.
    [200472315]

J'ai également remarqué que certains ont mal tourné avec mon tilemap:
capture3

Je ne suis pas sûr de pouvoir faire plus pour cela que le correctif actuel. Après la sortie de la version 3.1, ce bogue ne sera probablement plus présent sur Vulkan, et il devrait maintenant disparaître du moteur de rendu ES2.

En testant alpha 4, j'ai vu cela en utilisant GLES2 et GLES3. Pas de shaders, rien de spécial en particulier. Juste des tilemaps.
test

@securas Utilisez -vous un appareil photo avec zoom?

non

Le sam 29 décembre 2018 à 00:35 Guilherme Felipe de CG da Silva <
[email protected]> a écrit:

@securas https://github.com/securas Utilisez -vous un appareil photo avec zoom?

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/godotengine/godot/issues/9913#issuecomment-450378016 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ACv425NmiZKRUJHDzxg0NPB-PszWJaa2ks5u9jpGgaJpZM4OlRVq
.

@securas Cela ressemble à un problème différent, c'est plus un problème de correction des pixels que le scintillement des tuiles.

@ akien-mga Assez juste ... Il semble seulement arriver aux plans de tuile donc j'ai pensé qu'il appartenait ici.

@ gcardozo123 ressemble à # 24642 ​​pour moi, PR à venir

Va déplacer cela à 3.2 car rien d'autre ne peut être fait pour le moment. J'espère également que nvidia corrige cela pour de bon, je les ai contactés directement pour m'assurer que cela est également corrigé de leur côté. Avec la réécriture de Vulkan, cela ne se produira plus, espérons-le, mais en attendant, veuillez utiliser GLES2.

désolé ne voulait pas fermer

y a-t-il d'autres moteurs de jeux open source qui utilisent GLES3 qui ont une classe tilemap ou un rendu qui pourrait être examiné? Je regardais juste les dates, et ça fait plus de 530 jours, et ça va être encore plus long: /

J'ai contacté un développeur godot sur discord (@ bojidar-bg) et j'ai reçu une aide considérable. J'essayais de montrer le problème mais je ne pouvais pas faire apparaître les carreaux noirs lors de l'enregistrement dans OBS. il me recommande ensuite de modifier certains paramètres dans le panneau de configuration NVIDIA.

informations: fa7329f6485058fde30b8e2bfe26291dfbfc4434, GLES3, W10-64bit, GTX950

  • Accédez au NVIDIA Control Panel
  • Cliquez sur Manage 3D settings
  • Faites défiler vers le bas jusqu'au mode de gestion de l'alimentation , passez d' une puissance optimale à une performance maximale
    image
  • Cliquez sur Appliquer

Je n'ai pas encore vu un titre noir (jeu rechargé environ 20 fois et je continuerai à tester jusqu'à ce que les vaches rentrent à la maison). jusqu'ici tout va bien! j'espère que cela vous aidera, et un grand merci à Bojidar!

girng: J'ai vu ce même phénomène dans les exportations. C’est là que réside le plus ma préoccupation. Nous ne devrions pas avoir besoin de demander à nos utilisateurs finaux de modifier leurs paramètres GPU pour ne pas avoir de tuiles qui disparaissent par intermittence. N'avez-vous pas essayé la dernière version bêta 3.1 avec le hack de tuiles nvidia?

  • Faites défiler vers le bas jusqu'au mode de gestion de l'alimentation , changez-le de _optimal power_ pour préférer des performances maximales

Cela n'implique-t-il pas une faute de pilote, je ne sais pas comment un moteur pourrait contourner chaque bogue de pilote potentiel.

@ OvermindDL1 ouais, reduz a déclaré qu'il avait contacté directement les développeurs nvidia, ce qui est grandement apprécié! Je suis satisfait de la solution de mode de gestion de l'alimentation pour le développement . Je pense que cela devrait nous retenir jusqu'à ce que nvidia eux-mêmes le résolvent.

@agameraaron j'utilise uniquement gles3 (le jeu est lié aux particules gpu). désolé, je ne peux pas commenter le piratage de tuiles. mais j'ai entendu dire que ça marche

D'après ce que je viens de discuter avec les représentants de NV, ils disent qu'ils ne peuvent plus observer ce problème. Pouvez-vous essayer les dernières versions des pilotes et, en cas d'échec, rapporter un peu plus d'informations sur votre matériel? (Modèle GPU, pilote installé, paramètres de gestion de l'alimentation)?

@reduz testé sur le dernier pilote ( 419.17 ). le scintillement des carreaux se produit désormais avec les modes d'alimentation suivants: préférez des performances maximales , optimales et adaptatives .

GTX 950, W10, GLES3

  • à l'ouverture du studio OBS, le scintillement disparaît

@reduz @girng @xsellier
GTX 1070, GLES2, W10
Dernier pilote 419.35
Aucun scintillement quel que soit le mode d'alimentation utilisé 👍

GLES3 semble également fonctionner ... a également trouvé ce problème sur le débordement de pile:
scintillement de l'écran gles2

GTX 1060, W10
Avec le même pilote que ci-dessus (419,35), le scintillement se produit toujours dans GLES2 et 3.
Il vous suffit de cliquer dans l'interface utilisateur et de survoler les contrôles, car le paramètre de rafraîchissement par défaut est désormais "sur les modifications", qui peut être modifié en cliquant sur le cercle dans le coin supérieur droit.

Utilisé l'ancien projet que j'ai publié sur https://github.com/godotengine/godot/issues/9913#issuecomment -364707061, tout se passe encore - l'étiquette et le tilemap scintillent et les lettres s'étirent sur certaines tuiles d'une manière étrange.

Screenshot_20190322_021011

essayez cette option.

Je connais cette option, qui ne fonctionne que dans GLES2

@reduz @girng @xsellier
GTX 1070, GLES2, W10
Dernier pilote 419.35
Aucun scintillement quel que soit le mode d'alimentation utilisé 👍

GLES3 semble également fonctionner ... a également trouvé ce problème sur le débordement de pile:
scintillement de l'écran gles2

Le commentaire ci-dessus suggérait simplement que le problème n'était plus présent.

@MennoMax vous avez raison, le scintillement se produit toujours ... mais la solution de contournement pour GLES2 fonctionne, j'espère que le support Vulkan viendra bientôt 🙏

Le problème
De plus, le scintillement a été corrigé sur gles3 lorsque j'ai publié le 11 février (avec le mode d'alimentation réglé pour préférer les performances maximales). maintenant, le scintillement est revenu et se produit sur les 3 options de mode d'alimentation avec les nouveaux pilotes mis à jour. Cela n'a pas de sens, l'une de leurs versions de pilote a le scintillement fixé sur les performances maximales, maintenant les nouveaux pilotes ne l'ont pas corrigé.

@girng qu'est-ce que cela a à voir avec les particules gpu?
@reduz avez-vous un ETA pour un moteur de rendu Vulkan préliminaire?

@ gavriil07 si un jeu utilise GLES3 (avec des particules gpu), ce n'est pas vraiment une solution de contournement pour eux d'utiliser gles2. car alors, les particules gpu ne sont pas prises en charge

@girng CPUParticles peut toujours être utilisé dans GLES2; ils sont suffisants pour de nombreux cas d'utilisation (ce qui est particulièrement vrai dans les jeux 2D plus simples). Veuillez garder la discussion sur le sujet: légèrement_smiling_face:

Cependant, CPUParticles peut toujours être utilisé dans GLES2; ils sont suffisants pour de nombreux cas d'utilisation (ce qui est particulièrement vrai dans les jeux 2D plus simples). Veuillez garder la discussion sur le sujet

je parle de particules GPU, pas de CPU

J'ai vu un message sur https://www.reddit.com/r/godot/comments/9ljor3/psa_tilemap_flickering_possible_fix/ écrit il y a des mois qui dit "essayez de désactiver le HDR dans les paramètres du projet". (Rendu -> Qualité -> Profondeur -> Hdr)

J'ai essayé cela sur un projet GLES3 et cela semble fonctionner jusqu'à présent pour moi (Nvidia 970 version 415.27, Linux Mint). Désolé s'il s'agit d'un message répété.

Je peux dire que ce bogue existe pour le pilote GLES2 sur mon Nvidia gtx760 (Windows 10 x64). Vidéo ci-dessous:

https://www.youtube.com/watch?v=TM1BN4uwMfA
La première occurrence de ce qui se passe dans la vidéo est à 0:36 et se reproduit dans les 5 secondes environ.

Le correctif GLES2 a semblé atténuer le problème pour moi.

La désactivation du HDR dans la configuration du projet a fonctionné pour moi. Merci!

Windows 10 Professionnel 64 bits
pilote nVidia 430.39

Godot 3.1.1 stable
Moteur de rendu OpenGL ES 2.0: GeForce GTX 1080 / PCIe / SSE2

Le scintillement se produit.

La désactivation du HDR supprime principalement le scintillement, mais cela revient dans certaines situations que je ne pourrais pas réduire davantage.

Windows 10 Famille
Godot 3.1 stable
GTX 1070, pilote 430,86
GLES 3.0 avec HDR activé, scintillant, éteindre le corrige.

J'ai testé cela avec une grille personnalisée (Node2D avec des sprites comme enfants)

Godot 3.1.1 stable
Windows 10
Pilote GTX1080 430.86
GLES 3.0 avec HDR désactivé, le scintillement continue, lorsque vous allumez "préférez les performances maximales", il semble qu'il disparaisse (merci au développement pour la solution partielle). Heureux de voir que les développeurs en sont conscients, il semble que ce soit plus un problème de nvidia que Godot. Quelqu'un avec des cartes AMD ayant ce problème?

GLES 3.0 avec HDR désactivé, le scintillement continue, lorsque vous allumez "préférez les performances maximales", il semble qu'il disparaisse (merci au développement pour la solution partielle). Heureux de voir que les développeurs en sont conscients, il semble que ce soit plus un problème de nvidia que Godot. Quelqu'un avec des cartes AMD ayant ce problème?

Le problème ne se produit pas avec les cartes AMD (le titre dit avec les pilotes nvidia btw)

Avoir ce problème dans Godot 3.1.1 sur OpenGL ES 3.0 Renderer: GeForce GTX 1060 6GB/PCIe/SSE2 .
Je n'ai pas de tilemap, seulement un tas de draw_texture() . J'obtiens des points de scintillement aléatoires, mais parfois c'est un problème presque plein écran.

À ce stade, je pense que Vulkan sera la solution à ce problème une fois pour toutes.

J'avais aussi un scintillement étrange dans mon projet, le paramètre Gles 2 Use Nvidia Rect Flicker Workaround corrigé.

Screen record from 2019-08-01 19 18 43

Peut se reproduire sur la version 3.1.1 stable avec une GTX 980.
La désactivation du HDR résout le problème pour moi.

Juste une mise à jour que je vois toujours des tuiles apparaître et j'ai essayé tout ce qui est mentionné ici jusqu'à présent. Je ne peux qu'espérer que Vulkan pourra le réparer, mais ce serait bien s'ils pouvaient le comprendre également pour la version 3.2.

J'ai été très positive ces derniers temps, mais ce bug m'épuise vraiment et devient très préjudiciable à mon flux de travail (j'ai tout essayé). Au point que je redoute d'appuyer sur F5 à cause du scintillement inévitable des carreaux noirs. Je peux tolérer un scintillement une fois dans une lune bleue ou quelque chose du genre, mais le scintillement est une chose constante maintenant. J'adore Godot, il n'y a pas de retour en arrière maintenant, mais ça devient extrêmement frustrant.

Je n'aime pas écrire des articles comme celui-ci parce que ce n'est pas utile et que cela semble pleurnicher, mais je ne sais pas quoi dire / faire d'autre. En même temps, je veux que les développeurs principaux sachent comment ce bogue affecte l'expérience Godot. 😭 S'il vous plaît @reduz / développeurs principaux si vous pouvez faire la lumière sur l'état de ce bogue et quelle pourrait être la solution possible (Vulkan?), Ce serait génial!

Windows 10 Famille
Pilote Geforce GTX 1060 version 440.97
Godot 3.1.1 stable avec GLES3
J'ai essayé quelques-unes des suggestions répertoriées ici (désactivation du HDR, en cliquant sur l'option "Gles2 utilise nvidia rect flicker workaround" et en jouant avec mes paramètres de performance) et aucune ne semble résoudre le problème

Même chose ici, scintillant. Avoir 3 tilemaps, 1 pour le niveau d'eau et 1 pour le niveau du sol, 1 pour les nuages ​​avec le tri en Y activé.

Windows 10 Famille
Geforce GTX 1060 dernier pilote
Godot 3.2 beta compilé à partir de la semaine dernière, en utilisant GLES3
gdscript, désactiver le HDR

Voir les carreaux d'eau surgir par intermittence ou scintiller.

Mis à jour:

On dirait que je dois utiliser GLES2 et cliquer sur le truc «NVIDIA flicker fix» pour que le scintillement disparaisse. Ce correctif pourrait-il être adapté à GLES3 par hasard?

Je viens d'acheter un nouveau ASUS RTX2060 hjoping cela corrigerait le problème, mais hélas, ce n'était pas le cas. Le clignotement continue. Je vais essayer une version avec les branches 3.2 et VULKAN.

Windows 10
RTX 2060 Dernier pilote
Godot 3.1.1

OH MON DIEU
J'essaye tout, mais il est toujours là, mon jeu fonctionne avec GLES2 même j'active "2d / gles2_use_nvidia_rect_flicker_workaround", mais toujours scintillant.
J'adore Godot, même j'aime encore plus la nouvelle version 3.1 de Godot, mais veuillez résoudre ce problème.

La bonne nouvelle est que la version VULKAN corrige ce problème. Donc je ne sais pas si cela sera un jour corrigé dans la branche 3.X.

Alors, quand arriveront les Godot avec VULKAN?

Autant que je sache d'après les commentaires ci-dessus, cela ne sera pas corrigé dans Godot 3.x, ce qui empêche tout projet basé sur un tilemap avec GLES 3. Les développeurs déclarent qu'il s'agit d'un problème NVIDIA, ils ne peuvent donc pas faire grand-chose. . Vous pouvez soit attendre 4.0 avec Vulkan (pas moins de 6 ~ 8 mois), ce qui prendra un certain temps, soit commencer avec 3.x et espérer une mise à niveau facile vers 4.0. Je doute que la mise à niveau soit facile, surtout si vous utilisez des fonctionnalités GLES 3 telles que des shaders sophistiqués et des particules GPU.
Ma solution de contournement a été d'utiliser le tri en Y sur les options de tilemap. Cela semble avoir réduit la fréquence du problème. Néanmoins, j'avais encore des joueurs qui se plaignaient que parfois, certaines parties du monde du jeu disparaissaient.

S'il s'agit d'un problème NVIDIA, pourquoi cela ne se produit-il pas sur, disons, Unity? (Je me demandais juste)

Bibliothèques commerciales vs bibliothèques open source, je pense. Vérifier précédente
messages par les développeurs.

Le Dim 12 janvier 2020 21:33 Sergey Kospanov [email protected]
a écrit:

S'il s'agit d'un problème NVIDIA, pourquoi cela ne se produit-il pas sur, disons, Unity? (Juste
se demander)

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/godotengine/godot/issues/9913?email_source=notifications&email_token=AAV7RW2ZZLY7ZYQ46RUK7KDQ5ME3HA5CNFSM4DUVCVVKYY3PNVHWWK3TUL52HS4MREVWWWK3TUL52HS4DFVMREVHWWWK3TUL52HS4DFVMNVWWWWK3TUL52HS4DFVM0WWWWK3TUL52HS4DFV
ou se désinscrire
https://github.com/notifications/unsubscribe-auth/AAV7RWYIXVBYAYGZ3VLSPF3Q5ME3HANCNFSM4DUVCVVA
.

@securas Ce n'est pas vrai, car de nombreux autres frameworks open source ne souffrent pas de ce problème (même s'ils utilisent OpenGL pour le rendu).

Il s'agit simplement d'un bug qui s'avère très difficile à diagnostiquer, et personne n'est actuellement disposé à y consacrer du temps.

Il s'agit simplement d'un bug qui s'avère très difficile à diagnostiquer, et personne n'est actuellement disposé à y consacrer du temps.

Pour clarifier, la compréhension actuelle est que nous rencontrons un bogue des pilotes Nvidia. Il est déclenché par la façon dont nous utilisons l'API OpenGL, et si d'autres projets ne rencontrent pas le même problème, c'est parce qu'ils utilisent probablement OpenGL différemment, ou ont compris ce qui déclenche le bogue et ont écrit des solutions de contournement pour l'empêcher (comme nous l'avons fait avec un option pour GLES2, au détriment des performances).

La façon dont nous utilisons l'API est, à notre connaissance, tout à fait appropriée selon la spécificité d'OpenGL. Mais les bogues de pilote signifient que même une utilisation légale de l'API peut produire des résultats problématiques.

Ma faute. Désolé pour ça. J'ai très peu de compréhension de la
Détails d'implémentation.

Le dim 12 janv.2020 à 22:46 Rémi Verschelde [email protected]
a écrit:

Ceci est juste un bug qui se trouve être très difficile à diagnostiquer, et non
on est actuellement prêt à y consacrer du temps.

Pour clarifier, la compréhension actuelle est que nous frappons un pilote Nvidia
punaise. Il est déclenché par la façon dont nous utilisons l'API OpenGL, et si d'autres projets
ne rencontrez pas le même problème, c'est parce qu'ils utilisent probablement OpenGL
différent, ou compris ce qui déclenche le bogue et écrit des solutions de contournement pour
l'empêcher (comme nous l'avons fait avec une option pour GLES2, au prix de
performance).

La façon dont nous utilisons l'API est, à notre connaissance, tout à fait appropriée car
selon la spécificité d'OpenGL. Mais les bogues de pilote signifient que même une utilisation légale
de l'API peut produire des résultats problématiques.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/godotengine/godot/issues/9913?email_source=notifications&email_token=AAV7RW2U4Q6NE3R62ME75GDQ5MNJVA5CNFSM4DUVCVVKYY3PNVWWWK3TUL52HS4DFVREVWWWK3TUL52HS4DFVREVWWWK3TUL52HS4DFVREVWWWK3TUL52HS4DFVRM34WWWK3TUL52HS4DFVREVWWWK3TUL52HS4DFVREVWWWK3TUL52HS4DFVR
ou se désinscrire
https://github.com/notifications/unsubscribe-auth/AAV7RW4WGXFM7MQZKAQJ4X3Q5MNJVANCNFSM4DUVCVVA
.

Cela peut bien être dû au fait que les tampons de vertex sont actuellement réutilisés plusieurs fois par image (ce qui cause probablement également des problèmes de performances). C'est-à-dire que le tampon de vertex est utilisé pour dessiner un objet, modifié à mi-chemin pour commencer à dessiner le suivant. J'enquête.

Je soupçonne qu'un bon traitement par lots 2d résoudra ces problèmes de performances et 2d.

Cela ne semble pas être un problème Nvidia. Cela m'arrive aussi à moi et à un ami (AMD et Intel, respectivement) et, ironiquement, cela n'arrive pas à mon autre ami, qui utilise Nvidia. Tout ce qui est spécifié dans ce fil arrive à moi et à mon ami Intel.

J'ai ce problème sur un Intel HD Graphics 620 intégré sur mon ordinateur portable. Le passage à GLES2 résout le problème pour moi. Une autre chose pour moi est que cela ne semblait se produire qu'avec les lumières 2D allumées

intéressant - je devrai également vérifier si l'éclairage est allumé

désolé de signaler que j'avais cela dans ma scène, mais le supprimer n'a eu aucun effet. cela me semble plus à cause de la quantité de tuiles sur le tilemap - qui sait

J'ai fait une expérience intéressante hier - j'ai créé la même carte en utilisant TILED et je l'ai importée avec l'importateur TILED de VNEN et il n'y a PAS DE FLICKERING - donc cela me conduit à penser que c'est autre chose dans la scène, ou la façon dont je configure le tilemap - donc je fais quelques recherches supplémentaires et je ferai rapport

FWIW, ive a toujours utilisé uniquement Tiled et j'ai toujours le problème.

@jonbonazza je suis désolé d'entendre cela - cela me donne l'impression qu'il n'y a aucun espoir sur celui-ci jusqu'à ce que la version 4.0 arrive - ou j'utilise GLES2 que je préférerais ne pas utiliser

Je me suis également retrouvé à rencontrer ce problème. Est-ce qu'il persiste encore lorsque le programme est compilé et exécuté en tant qu'exécutable, plutôt que dans l'éditeur?

Est-ce qu'il persiste encore lorsque le programme est compilé et exécuté en tant qu'exécutable, plutôt que dans l'éditeur?

Oui, car le code de rendu entre l'éditeur et un modèle d'exportation de version est identique.

J'ai un ordinateur: i3 2120, gt630.
Sur cet ordinateur, tout fonctionne parfaitement. Sur mon autre ordinateur: ryzen 1600, gtx1060. Les carreaux clignotent comme des fous ... Tous deux avec Windows 10 pro x64.

Nom du pilote: GLES2
Gles 2 Utiliser Nvidia Rect Flicker Solution de contournement: Activé
Mon 1060 fonctionne en moyenne 30 ~ 50 Fps
En attendant le Vulkan ...

Toute personne ayant ceci dans GLES2 voudra peut-être essayer les versions de test que nous faisons sur # 37349. Il est possible que cela puisse aider car il utilise une méthode différente pour dessiner des rects.

Avoir le même problème. GTX 1060 6 Go et Ryzen 7 1700X. L'activation de cell_y_sort résout le problème pour moi, mais entraîne d'énormes problèmes de performances (baisses de fps). Idem pour régler cell_quadrant_size sur 1.

Juste pour demander à nouveau, quelqu'un peut-il essayer la version bêta 3.2.2 avec use_batching activé? Cette fois-ci, activez également use_nvidia_workaround .

Malheureusement, personne avec le problème de scintillement ne l'a testé depuis mon commentaire précédent: déçu: (testeurs coquins), et depuis lors, il existe maintenant un chemin de sauvegarde pour les rects uniques, en utilisant l'ancienne méthode qui peut réintroduire le problème

Cependant, s'il est traité avec le traitement par lots ET la solution de contournement nvidia, cela confirmera que la méthode de dessin uniforme est la cause des problèmes de scintillement, et il peut être supprimé, résolvant ainsi le problème pour de bon.

Alors je viens de télécharger le 3.2.2. beta 1 et utiliser Driver Name: GLES2 avec Use Batching et Gles 2 use Nvidia Rect Filcker Workaround semble résoudre le problème. Bien que je ne l'ai pas testé depuis très longtemps encore (puisque le scintillement sur 3.2.1 ne s'accompagne qu'au bout de quelques minutes, du moins pour moi).

Alors je viens de télécharger le 3.2.2. beta 1 et utiliser Driver Name: GLES2 avec Use Batching et Gles 2 use Nvidia Rect Filcker Workaround semble résoudre le problème. Bien que je ne l'ai pas testé depuis très longtemps encore (puisque le scintillement sur 3.2.1 ne s'accompagne qu'au bout de quelques minutes, du moins pour moi).

Ah c'est génial. Je m'en doutais. En utilisant la solution de contournement pour les rects simples, nous savons que cela fonctionne et ne provoque pas de scintillement. Mais le reste des sprites sera dessiné en utilisant le code de traitement par lots qui dessine à l'aide de primitives indexées, et je soupçonnais que cela pourrait résoudre le problème et cela semble le faire. : +1:

Je vais jeter un œil et voir si nous pouvons supprimer entièrement l'ancienne méthode uniforme du rendu par lots, cela devrait résoudre le problème pour de bon. En attendant, la combinaison de solutions de contournement par lots + nvidia que vous trouverez probablement est de toute façon plus rapide que l'ancien moteur de rendu et ne scintille pas.

Ouais c'est définitivement plus rapide. En utilisant godot 3.2.1 stable avec le pilote GLES2, je n'ai atteint que 20 fps, tandis qu'en utilisant godot 3.2.2 beta 1 j'ai atteint 60 fps facilement. Mais je suis curieux:

Je vais jeter un œil et voir si nous pouvons supprimer entièrement l'ancienne méthode uniforme du rendu par lots, cela devrait résoudre le problème pour de bon

Cela signifie-t-il qu'il y aura un correctif pour GLES3?

Ouais c'est définitivement plus rapide. En utilisant godot 3.2.1 stable avec le pilote GLES2, je n'ai atteint que 20 fps, tandis qu'en utilisant godot 3.2.2 beta 1 j'ai atteint 60 fps facilement. Mais je suis curieux:

Ah c'est bien! : souriant:

Cela signifie-t-il qu'il y aura un correctif pour GLES3?

GLES3 Je n'ai rien fait jusqu'ici. Nous pourrions peut-être finir par faire une version considérablement simplifiée et réduite du traitement par lots juste pour guider les gars de GLES3 jusqu'à la sortie de 4.x (mais je ne peux pas faire de promesses à ce stade, il y a beaucoup de choses sur la feuille de route). Cela devrait également résoudre le problème sur GLES3 si cela se produit là-bas.

Nous pourrions éventuellement finir par faire une version considérablement simplifiée et réduite du traitement par lots juste pour aider les gars de GLES3 jusqu'à la sortie de 4.x

Pleeease (quel est le délai jusqu'à 4.x, pour mettre les choses en perspective? Je soupçonne plusieurs mois, voire six mois)

Je pense qu'une solution serait nécessaire si des centaines de personnes signalaient ce problème. Je ne pense pas que nous en ayons. Au moins, ce fil ne le suggère pas.

Cela dit, s'il y a des versions commerciales qui en souffrent, il pourrait être bon de les aider. Si j'avais plus d'expérience, je plongerais en moi-même, mais je ne saurais pas par où commencer. Je viens de commencer à explorer le code Godot, qui est d'ailleurs très bien écrit.

C'est là que ce serait bien d'avoir un système de vote pour les bogues cruciaux qui doivent être corrigés.

Mon vote est d'attendre la version 4.x et de concentrer les ressources là-dessus. Nous savons que Vulkan résout déjà ce problème.

C'est là que ce serait bien d'avoir un système de vote pour les bogues cruciaux qui doivent être corrigés.

D'après mon expérience, le vote ne permet généralement pas de corriger les bogues plus rapidement. Cela est vrai dans les projets développés par la communauté, mais même les logiciels propriétaires commerciaux sont confrontés au même problème (regardez le suivi des fonctionnalités de Discord).

Vrai. Je ne dis pas que cela aiderait à le réparer. Ce serait davantage une mesure de l'ampleur du problème. Je suppose que le nombre de personnes impliquées dans cette discussion pourrait être un indicateur. En tout cas, j'en ai presque fini avec ce fil et j'attendrai patiemment la 4.x

Je suis également confronté au problème. Je ne l'ai jamais affronté lors de l'autotiling normalement. Si j'ai dessiné la carte à la main (ce que j'ai fait dans un autre projet, en utilisant les mêmes plans de tuile), je n'ai jamais rencontré ce problème. Mais quand je suis venu pour rendre un donjon généré de manière procédurale en utilisant tilemap.set_cellv (...), j'ai rencontré le problème de manière cohérente. J'ai toutes les suggestions, et le seul qui a fonctionné utilisait GLES2 avec la solution de contournement. C'est un problème assez sérieux cependant! La plupart des rendus de tilemap de base échouent. Pourquoi n'y a-t-il pas de solution de contournement pour GLES3 btw? Je connais un peu d'OpenGL, j'ai écrit un moteur de jeu de base qui rend les textures avec des shaders mais rien de plus. Quelqu'un peut-il expliquer ce qui cause exactement cela? J'espère que je peux comprendre. <3

Je suis également confronté au problème. Je ne l'ai jamais affronté lors de l'autotiling normalement. Si j'ai dessiné la carte à la main (ce que j'ai fait dans un autre projet, en utilisant les mêmes plans de tuile), je n'ai jamais rencontré ce problème. Mais quand je suis venu pour rendre un donjon généré de manière procédurale en utilisant tilemap.set_cellv (...), j'ai rencontré le problème de manière cohérente. J'ai toutes les suggestions, et le seul qui a fonctionné utilisait GLES2 avec la solution de contournement. C'est un problème assez sérieux cependant! La plupart des rendus de tilemap de base échouent. Pourquoi n'y a-t-il pas de solution de contournement pour GLES3 btw? Je connais un peu d'OpenGL, j'ai écrit un moteur de jeu de base qui rend les textures avec des shaders mais rien de plus. Quelqu'un peut-il expliquer ce qui cause exactement cela? J'espère que je peux comprendre. <3

Il y a déjà quelques explications sur ce fil. Je suppose qu'à ce stade, il n'y aura pas de nouvelles solutions de contournement ou de correctifs pour ce problème avant la version 4.0 (vulkan), à moins que la communauté ne propose quelque chose. À mon humble avis, les responsables ont raison de ne pas s'inquiéter d'un correctif potentiellement complexe maintenant que 4.0 est à l'horizon.

Pourquoi n'y a-t-il pas de solution de contournement pour GLES3 btw?

Je n'avais pas vraiment remarqué cela, je pourrais avoir un essai pour porter le code de contournement vers GLES3 demain. Ce sera lent si nous pouvons le faire fonctionner.

J'ai maintenant un WIP PR (voir ci-dessus) pour la solution de contournement pour GLES3. J'ai également quelques idées pour corriger la méthode de dessin uniforme, car le shader semble trop compliqué pour ce qui est nécessaire. Je pourrais avoir besoin d'aide pour tester cela si je fais un correctif, car je ne peux pas répéter le scintillement sur ma machine.

Je pense que je peux vous aider. Je devrais être capable de créer une version personnalisée de Windows sur votre PR.

Je travaille maintenant à réécrire le shader de chemin rapide pour éviter le scintillement. J'ai maintenant un prototype disponible pour essai dans # 38628. J'apprécierais beaucoup si quelqu'un pouvait l'essayer qui a du matériel qui présente des scintillements, les instructions sont dans le PR.

Eh bien mise à jour:

  • il semble que la solution de contournement GLES3 fonctionne correctement: partying_face: (_ elle devrait être dans la prochaine beta_),
  • Cependant, les expériences avec le shader à chemin rapide n'ont pas aidé: déçu:, et après ces tests, il semble que le shader puisse probablement être exclu comme cause.

Donc actuellement, je pense qu'il s'agit d'une situation étrange en termes d'échec de liaison de notre côté uniquement sur nvidia, ou d'un bug de pilote (peut-être ne pas envisager cette méthode de dessin, ou ne pas la tester?).

Quoi qu'il en soit, la bonne nouvelle est que

  • avec GLES2 avec traitement par lots, vous ne devriez même pas ressentir le besoin d'utiliser la méthode de secours dans 99% des jeux, vous n'obtiendrez donc pas de scintillement
  • Et avec GLES3, il est confirmé que la solution de secours nvidia fonctionne pour empêcher le scintillement, mais à un coût en termes de performances.

À ce stade, je pense que mon temps serait dépensé de manière plus productive pour travailler sur le traitement par lots dans GLES3, ce qui rendrait la différence de performances inutile. : +1:

@lawnjelly C'est un bug de pilote et comment il traite la gestion de l'alimentation. Dans ce commentaire, vous pouvez trouver mes conclusions.

@lawnjelly C'est un bug de pilote et comment il traite la gestion de l'alimentation. Dans ce commentaire, vous pouvez trouver mes conclusions.

Ahha! :sourire:

L'un des problèmes est que ce fil est devenu si long maintenant! En fait, la trace API est un très bon moyen de déterminer cela si vous obtenez le scintillement sur votre matériel, et je suis d'accord si vous obtenez des résultats différents à chaque fois que vous rejouez la trace qui indique un bogue du pilote. : +1:

@securas Avez-vous déjà confirmé que le problème dans la vidéo que vous avez publiée était causé par ce bogue de scintillement?

Je vois des images simples similaires sur fond noir + des lignes blanches horizontales dans mon propre projet avec à la fois la fonction de glissement de caméra intégrée et un script de caméra personnalisé, et aucune des solutions de contournement mentionnées (GLES2, correction de scintillement NVIDIA, désactivation du HDR, divers différents types d'allocation de fenêtres) l'empêchent de se produire:

tile-glitch

Ceci est sur 3.2.1 stable, Windows 10, GTX 1080.

La scène comporte quatre tilemaps de 1400x800 empilés les uns sur les autres pour l'arrière-plan noir, le zigzag près de l'arrière-plan, le premier plan et la collision de la caméra.

Je serais très obligé si quelqu'un peut offrir un aperçu - l'écriture d'une solution de contournement robuste va être une partie considérable du temps de projet que je préfère ne pas m'engager si cela peut être évité.

Si je me souviens bien, cela était dû à la désactivation de la capture de pixels 2D.

@Shfty Cela ressemble en fait à un problème différent. Cela semblerait être confirmé si les solutions de contournement nvidia ne le résolvent pas. Seriez-vous en mesure d'ouvrir un nouveau numéro, avec des détails matériels et un projet de reproduction minimum?

@lawnjelly Cela semble juste. J'ai ouvert # 39720 avec un projet de reproduction minimal basé sur la scène du gif ci-dessus.

J'ai réussi à résoudre le problème en imbriquant la scène affectée dans son propre nœud Viewport, j'ai donc inclus un exemple de configuration pour cela dans le projet.

Ce gif me ressemble en quelque sorte à une synchronisation verticale / une déchirure d'écran.

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