Godot: Tilemap / draw_rect parpadeo aleatorio con controladores Nvidia

Creado en 27 jul. 2017  ·  191Comentarios  ·  Fuente: godotengine/godot

Sistema operativo o dispositivo - versión Godot:
Windows 10, godot3.0alpha1

Descripcion del problema:
Hice un kinematicbody2D y un mapa de mosaicos, moviendo el cuerpo cinemático funcionaba normalmente, sin embargo, ocasionalmente, uno de los mosaicos en el mapa de mosaicos desaparecía más rápido de lo que cualquier software de grabación de pantalla podría capturar. a veces 2 desaparecían, se volvían a dibujar sin embargo

Pasos para reproducir:
Haga un mapa de mosaicos, cargue algunos mosaicos, cree un cuerpo cinemático
Mueva el cuerpo alrededor del juego, mantenga los ojos abiertos, no parpadee, observe cómo algunos mosaicos desaparecen del renderizado y regresan rápidamente

bug confirmed high priority rendering

Comentario más útil

Esto puede deberse a que los búferes de vértices se reutilizan actualmente varias veces por cuadro (lo que probablemente también esté causando problemas de rendimiento). Es decir, el búfer de vértice se está utilizando para dibujar un objeto, cambiado a mitad de camino para comenzar a dibujar el siguiente. Estoy investigando.

Sospecho que el procesamiento por lotes en 2D adecuado resolverá este y los problemas de rendimiento en 2D.

Todos 191 comentarios

Puede confirmar que esto todavía está sucediendo usando la compilación personalizada Godot 3.0 https://github.com/godotengine/godot/commit/29db531fc8360b1e6d5e23008b208517b6d8c627

También sucede en el editor:

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

Debería ser todo hierba.

EDITAR: Parece que si el Tamaño del cuadrante se establece en 1, el problema desaparece

EDITAR 2: Las fichas no desaparecen sino que se mueven (¿un problema de transformación?)

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

EDITAR 3: Un video de baja calidad. https://streamable.com/6a07b Me tomó un tiempo desencadenar el problema (el editor está configurado para actualizarse siempre)

Este problema sigue ocurriendo en el último maestro 1f4685375f2d2e36a2e19e67ac9f614b8c99ea28

Parece que el problema no es solo un mapa de mosaicos relacionado. Encontré los mismos problemas con un texto grande dentro de una etiqueta. Tengo la sensación de que solo sucede después de usar percent_visible yo moviendo la etiqueta. Esta vez solo pude notarlo mientras el juego se estaba ejecutando, pero no descartaría que ocurriera lo mismo en el editor. No he podido tomar una foto o un video, pero algunos caracteres comienzan a parpadear y se mueven a otra posición con una transformación diferente (puede ver un trozo de letras de la textura de la fuente)

Actualización: este problema es fundamental. También le está sucediendo al propio Editor. No pude tomar una captura de pantalla porque para cuando lo noto y quiero tomar una captura de pantalla, el editor probablemente se haya actualizado y el problema desaparezca. Noté el problema en dos secciones del editor, no es que suceda en estas dos secciones, sino en las secciones en las que noté el problema: en el contenido de Salida algunas letras parpadearon y una de las etiquetas de pestañas en la parte inferior de la pantalla donde las etiquetas de Salida, Depurador, Audio, ... son. La D de la etiqueta Debugger comenzó a parpadear. No es fácil de activar, pero es el mismo problema.

Tengo el problema de la etiqueta en el video (el parpadeo comienza aproximadamente la mitad del video) https://streamable.com/e31xp mire de cerca hacia el final de la cuarta línea y verá algunas letras parpadeando

Lo siento, no creo que la edición envíe notificaciones y creo que este es un problema importante

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

Estoy teniendo el mismo problema ... (alrededor de 0:04 ves un mosaico parpadeando)
Aunque solo estoy usando un Sprite y mi propio script de movimiento

Después de muchas pruebas, estoy seguro de que mi problema (# 15113) es el mismo que este. Lo extraño son un par de cosas:

  1. Originalmente estaba viendo exactamente el mismo problema que @Remixful estaba viendo con cuadrados completos parpadeando, pero luego desapareció sin cambiar nada, y en su lugar, estaba viendo estas líneas parpadeantes extrañas. Entonces esos se fueron de la nada y los cuadrados parpadeantes originales regresaron ... Oo
  2. Si dejo la escena inactiva, no veo ningún artefacto extraño o parpadeo, pero una vez que empiezo a mover a mi personaje (¿o tal vez es de la cámara moviéndose?) Es cuando empiezo a ver parpadeo de alguna forma.
  3. Puedo capturar fácilmente el parpadeo del cuadrado completo en el video, pero cuando trato de grabar el parpadeo de la línea, a pesar de que definitivamente ocurre durante la filmación, el parpadeo no se encuentra en ninguna parte del video.

Además, FWIW, esto no ocurrió en absoluto en 2.1 con el mismo proyecto exacto.

Sería bueno tener un proyecto de ejemplo que reproduzca el problema (sé que debería ser fácil de hacer según los pasos dados para reproducir, pero el tiempo de desarrollo del motor es un recurso escaso :)).

@ akien-mga
flickertest.zip

Es posible que deba ejecutar el proyecto varias veces antes de verlo, pero una vez que haya comenzado, déjelo reposar y eventualmente debería verlo.

Probé varias cosas para ver si sucedía en diferentes escenarios. Solo pude reproducirlo cuando una Camera2D era hija de una YSort. Eso podría ser una pista.

Lo vi ayer en la demostración de kinematic_char: \

Lo que encontré sobre este problema es que:

  • Es difícil de reproducir y capturar en video. A veces lo verá todo el tiempo y cuando intente grabarlo con OBS o cualquier software de grabación de pantalla, el problema no ocurrirá. Por otra parte, a veces sucederá incluso durante la grabación, así que no lo sé 😅
  • Puede suceder en cualquier momento y en cualquier lugar (incluso en el propio editor, no solo en la escena que se está editando)
  • Parece que solo sucede con TileMap s con un tamaño de cuadrante de celda> 1 y, a veces, texto. No digo que no suceda con otras cosas, pero solo lo he visto suceder al usar esas dos cosas.
  • Y no veo nada malo en el código. De acuerdo, no soy un experto en eso ni nada. Lo único que puedo pensar es que alguna transformación no está configurada correctamente al azar ... no sé realmente 😓

Consulte # 16277 para ver otro proyecto de ejemplo que debería reproducir el problema.

Consulte 16280 para ver otro problema al respecto.

Hola, para agregar a esto y solo para aclarar, no he hecho nada en absoluto con Godot y solo probé este proyecto específicamente porque tenía curiosidad:
image

El parpadeo ocurre en una reproducción de prueba, pero no en el editor. Curiosamente, sucede lo contrario si pruebo la Demostración de personajes cinemáticos en 2D donde los mosaicos del editor parpadean pero no en el juego de prueba.

Al menos en mi experiencia, esto parece resolverse en el godot estable
Versión 3.0.

El domingo 4 de febrero de 2018 a las 2:56 a.m., Archeia [email protected] escribió:

Hola, para agregar a esto y solo para aclarar, no he hecho nada en absoluto.
con Godot y acabo de probar este proyecto específicamente desde que estaba
curioso:
[imagen: imagen]
https://user-images.githubusercontent.com/6222499/35776735-0b413ce2-09dd-11e8-81cc-be7a097d61cd.png

Curiosamente, no tengo este problema con el personaje cinemático 2D
Manifestación

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/godotengine/godot/issues/9913#issuecomment-362898191 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ABW9yzPGCmyxZONEuNXLFKU_PtY3ADsvks5tRYzmgaJpZM4OlRVq
.

@jonbonazza Usé el último godot3 estable y todavía sucede. Mi imagen también la muestra en la esquina superior derecha T_T)

¿Parece que este error ocurre en tarjetas gráficas Nvidia que están por encima de GTX 970M?

GeForce GTX 970 aquí.

Estos son algunos de mis hallazgos y un proyecto simple para reproducir este problema. (un mapa de mosaicos con 2 sprites diferentes, el icono de godot y el icono de godot con colores invertidos, con etiquetas sobre el mapa de mosaicos, se incluye la escena que se convirtió en juego de mosaicos)

Flicker.zip

  • También sucede con las etiquetas en esta escena, los personajes individuales se mueven al azar (incluso giran), al igual que los mosaicos
  • Si está dentro del editor y mueve el mouse por la cuadrícula mientras tiene un mosaico seleccionado, a veces puede ver este problema en un estado congelado hasta que mueva el mouse a una sección de cuadrícula diferente
  • el orden de los nodos en el árbol de la escena cambia la frecuencia de esto (si el mapa de mosaicos es el último nodo, sucede con más frecuencia en el mapa de mosaicos y si el mapa de mosaicos es el primer nodo, ocurre con más frecuencia en las etiquetas)

Editar: Aquí está una captura de pantalla del problema. Puede ver 2 E de la primera línea extrañamente estiradas en una sección de mosaico del mapa de mosaicos. (rojo)

bug

Las etiquetas dejan de parpadear una vez que se elimina el mapa de mosaicos de la escena.

Espero que esto ayude a resolver este problema.

45ab9cdfb55eed4eef59feee225248ccc20a6235
exportado (lanzamiento) en Linux a Windows (32 y 64 bits)
Parpadea en Win 10 con Nvidia GTX 750 Ti (no tengo acceso a esta máquina para depurar)

No se pudo reproducir en Nvidia GTX 760 con Debian o Win7.

El parpadeo está presente con una GTX 1060 en Win7 para mí. Realmente espero que esto se solucione muy pronto porque, como está ahora, TileMap simplemente no se puede usar para la producción. :(

mismo problema con las líneas parpadeantes entre los mosaicos aquí. mira esto
plataforma tut.zip
Fallo muy molesto y desagradable = (((

También tengo este problema con mi juego. Pero solo cuando enciendo la dGPU (Nvidia). Todavía no lo he notado con la GPU Intel integrada.

Una nota que puede ayudar. Tengo este problema con win10 y nvidia gtx 1070. Pero al encender ysort en el mapa de mosaicos pareció detener el problema técnico.

Tenga en cuenta que Ysort fuerza ~~ (Celda) ~ Tamaño del cuadrante = 1.

@securas ¡ Vaya, eso realmente funcionó! Gracias por eso. :)
@ bojidar-bg Tal vez no entiendo lo que quieres decir, pero tengo un mapa de mosaicos con un tamaño de celda de (16, 16) y habilitar Ysort no cambió nada sobre eso ...

@securas lo siento por hacer esta pregunta para principiantes, pero ¿dónde puedo encontrar ysort?

@Archeia Puede encontrarlo en "Celda" al inspeccionar el mapa de mosaicos.

Editar: En mi ejemplo anterior, las etiquetas aún parpadean incluso con Y-Sort activado, pero todavía no vi parpadear el mapa de mosaicos.

Edit2: Acabo de ver parpadear un mosaico con Y-Sort activado. Eso no parece solucionar este problema. Sin embargo, parece suceder con mucha menos frecuencia.

¡Gracias! Eso me lo arregló.

Gracias @ bojidar-bg. Tenía la impresión de que el tamaño de la celda era algo más como el tamaño de las celdas ... ¿Qué querías decir con tamaño de celda?

@securas oh, mi mal, me refiero al tamaño del cuadrante. No estoy seguro de por qué lo confundí ...

Disculpe si esto no agrega mucho a la conversación, pero estoy notando este parpadeo con la demostración de Kinematic Collision tanto en el editor como en un ejecutable exportado. Windows 10 de 64 bits. GTX 1080 Ti. 2 monitores a 1440p. Estoy ejecutando una versión autocompilada de godot 3.0.2 estable. Probé esto en debug, release y release_debug y el parpadeo está presente en todos los casos.

Editar: A primera vista, parece que habilitar ysort para el mapa de mosaicos hace que desaparezca el parpadeo.

Empiezo a preguntarme si esto no es un problema de controladores. Parece que todos los que están experimentando el problema están usando una tarjeta nvidia, y parece que la mayoría de la gente usa Windows 10.

Obtenga esto también y estoy en Manjaro, GTX970 aquí

Puedo reproducir esto y también puedo confirmar que habilitar Y Sort lo soluciona. Estoy usando Windows 8.1 con una GeForce GTX 1060.

EDITAR: En realidad, creo que el parpadeo puede estar relacionado con el tamaño del cuadrante, como sugiere @ bojidar-bg. Con Y Sort deshabilitado veo diferentes niveles de parpadeo a medida que varío el tamaño del cuadrante. Todavía tengo que observar parpadeo en los tamaños de cuadrante 1, 2, 64 o 128. Veo mucho en el rango 16-32.

@ecdavis ¿Estás seguro de que deja de parpadear por completo? También estoy usando una GTX 1060 y todavía noté el parpadeo con Y Sort activado, pero con mucha menos frecuencia.

Tengo mucha curiosidad por saber qué podría causar que las letras de las etiquetas se coloquen dentro de los mosaicos del mapa de mosaicos a veces.

Muchas cosas parecen tener un impacto en la frecuencia del parpadeo, como el orden de los nodos, no creo que esté muy relacionado con el tamaño del cuadrante.

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

Con Quadrant Size configurado en cualquier valor! 1, el problema de desplazamiento de mosaicos ocurre constantemente.

Con Quadrant Size establecido en 1, no se desplazó ningún mosaico, pero se produjo un error de desgarro en algunos fotogramas, solo una vez. Probablemente sin parentesco.

Para mí, el parpadeo se solucionó habilitando Pixel Snap en la configuración del proyecto (Renderización -> Calidad -> 2d). Y tuve un problema de desgarro que se solucionó al modificar la configuración de las imágenes de la hoja de mosaico y los mapas de mosaico que estaba importando. A saber, "filtro" y "mipmaps". Solo le dije que usara el ajuste preestablecido de 2d Pixel y lo configuré como predeterminado para las texturas.

@rosshadden Lo intentará cuando

Pixel Snap estaba activado cuando hice esto y no resolvió el problema.
De hecho, he dado con lo que podría ser una solución.
Si activa la ordenación en Y en el tamaño de la celda Y aumenta el tamaño del cuadrante para que coincida con el tamaño de la celda (en mi caso 128), parece eliminar completamente el problema, al menos para mí.

@irresistiblejelly Como

Es necesario realizar pruebas exhaustivas para identificar el problema exacto.

Acabo de probar la sugerencia de

Sigue sucediendo en iOS y macOS, pero no en Android.
Activé Renderizado -> Calidad -> 2d -> Pixel Snap que ayudó a reducir la frecuencia, pero aún está sucediendo.
captura de tela 2018-05-02 as 15 00 15
captura de tela 2018-05-02 as 15 00 11

@ByTheQuietLake , ¿vio este problema anteriormente? Creo que es la primera persona en intervenir con una tarjeta que no es de NVIDIA.

Esto muy bien puede ser un problema del controlador nvidia entonces.

Probado en Windows 10 usando Godot 3.0.2:

  • Nvidia 1070 GTX (controlador 397.64): se está produciendo un problema.
  • Intel HD 4600: el problema NO está sucediendo.

Este es un problema definitivo que está ocurriendo al menos con los usuarios con Nvidia gpus. Noto que los mosaicos se dibujan aleatoriamente alrededor de la escena en el modo de edición a medida que el cursor del mouse se mueve a lo largo de la escena y las pestañas laterales. También ocurre cuando se ejecuta el juego. La intensidad parece haber disminuido cuando se establece el tamaño del cuadrante en 1 (Y Sort lo establece en 1) pero aún ocurre y esto elimina la optimización en mapas grandes, lo que provoca fuertes pérdidas de velocidad de fotogramas.

También he experimentado bloqueos al intentar volver a establecer el tamaño del cuadrante en 1 (o al intentar marcar Y Ordenar) después de cambiar la configuración en un mapa grande (abrí el problema con # 19617). Esto parece mostrar que se trata de un procesamiento demasiado pesado (¿o tal vez una pérdida de memoria?) Y puede estar relacionado con el problema general con la forma en que se codifican los TileMaps para que se representen, lo que hace que los mosaicos se dibujen de manera irregular. Sospecho que el problema está en tile_map.cpp y posiblemente en VS o cualquier código que maneje la representación de mosaicos.

Todavía no he experimentado el problema con las fuentes dibujadas incorrectamente mencionado anteriormente, pero es posible que no haya jugado con las fuentes lo suficiente como para experimentar el problema. A menos que las cosas se examinen y se arreglen, me temo que también puedo ver eso.

Esto realmente debe analizarse y resolverse, ya que muchos usuarios tienen tarjetas Nvidia y la publicación en el escritorio significa que muchas personas con tarjetas Nvidia estarán jugando y notando estos problemas.

Parece que el problema tal vez esté relacionado con el "PowerMizer", cuando el modo preferido se establece en "Adaptativo", los niveles de rendimiento disminuyen a cero (después de 35 ~ 40 segundos) y luego comienza el parpadeo, pero si lo configuro en "Preferir Rendimiento máximo ", el parpadeo desaparece.

Probé con Linux (controlador 390.59 y 396.24) y Windows (controlador 388.71 y 398.11).
~ En Windows, después de actualizar mi controlador a 398.11, parece que el problema se ha detenido ~
captura de tela de 2018-06-18 14-06-54

Video que grabé mostrando el error: https://youtu.be/R6TLpDX71RQ?t=32s
Si alguien quiere probar, aquí está el proyecto utilizado: Flicker.zip

Actualizar:
En mi ejemplo, no estoy usando TileMap, son simples funciones de dibujo (draw_line y draw_rect) para crear esa cuadrícula.

@guilhermefelipecgs Realmente no creo que sea una verdadera solución. Supongo que Nvidia X Server es un programa de sistema operativo Linux similar al Panel de control de Nvidia con Windows 10. Configuré la configuración de administración de energía para "preferir el máximo rendimiento" y parece reducir los mosaicos de reubicación, pero aún lo he visto ocurrir después cambiar la configuración. Este error es extraño porque no siempre se muestra cuando se usa el programa, pero ocurre. Quizás deberías probar esto con un TileMap real.

Incluso si ese escenario funcionaba. ¿POR QUÉ funcionaría? ¿Configurar el administrador de energía al máximo rendimiento no significaría que el código es difícil para el procesador? Pareció hacer una diferencia para mí, pero no resolvió completamente el problema. Todavía puedo coger baldosas que se salen de su lugar.

@ jamesaddy789 No estoy diciendo que sea una solución, solo intento tener alguna pista sobre qué podría causar eso. Estaba intrigado porque cuando uso mi intel gpu, funciona bien, solo sucede con nvidia y noté que cuando el reloj de la gpu cae, aparece el parpadeo, pero esto podría ser solo una coincidencia, no lo sé. También probé con TileMap y al menos para mí, es lo mismo.

Es extraño que no hayas tenido la misma experiencia que yo. Solo por curiosidad, ¿cuál es la versión del controlador de nvidia?

@guilhermefelipecgs Es la versión 398.11. Parece que PowerMizer es una aplicación para computadora portátil, mientras que estoy usando una computadora de escritorio, por lo que no tengo ese programa. Acabo de cambiar la configuración de administración de energía para "preferir el máximo rendimiento" en el Panel de control de Nvidia. Parecía reducir la cantidad de fichas dislocadas, pero al ejecutar el juego lo noté todavía. De manera similar a establecer el tamaño del cuadrante en 1, redujo la frecuencia pero no resolvió por completo el problema. También sigo teniendo el problema de que si cambio el tamaño del cuadrante a 1 en un mapa grande, el editor se bloquea. Esto también es menos frecuente después de cambiar la configuración al rendimiento máximo, pero lo probé hace un momento y se bloqueó.

Nota Mi gpu es Nvidia Gtx 1060 6gb con el controlador mencionado anteriormente. Mi sistema operativo es Windows 10 Professional.

También estoy usando una PC aquí. En Windows, el panel de control es un poco diferente, la opción que cambiaste es la misma que probé aquí. No sé qué hacer. Este error es muy aburrido. :(

Es un problema que tiene que estar en el código de renderizado. No tengo suficiente experiencia con el código del motor para probarlo y resolverlo yo mismo. Es interesante que usted (@guilhermefelipecgs) haya notado el problema al dibujar la cuadrícula manualmente. Pensé que el problema residía únicamente en el código fuente de TileMap.

Si los rectángulos se dibujan en todo el lugar incluso cuando no se usa el nodo TileMap, debo asumir que el error también está activo en la función draw_rect () (en el código fuente en https://github.com/godotengine/godot/ blob / master / scene / resources / texture.cpp en la línea 47).

Drawing TileMaps usa VS en la mayoría de sus funciones (en https://github.com/godotengine/godot/blob/master/scene/2d/tile_map.cpp) y la función draw_rect () usa VisualServer (supongo que son la misma cosa).

¿Por qué afectaría esto a Nvidia gpus? No veo este tipo de problema en otros programas (otros motores de juegos), por lo que solo puedo apuntar a que sea un problema en el código fuente que por alguna razón impacta (al menos impacta más notablemente) los procesadores gráficos de Nvidia.

@guilhermefelipecgs El problema es MUCHO menos frecuente después de cambiar la configuración de administración de energía y esta puede ser la razón por la que no lo nota. De hecho, tomó un poco de tiempo ejecutar el juego y caminar antes de que volviera a ver la falla. Caminé por el juego con un KinematicBody2D durante algunos minutos antes de descubrir que las fichas estaban fuera de lugar. Vi lo suficiente para saber que el problema aún existe.

Estoy 98% seguro de que se trata de un problema de controladores. Establecer el controlador nvidia Power management mode en Prefer maximum performance parece resolver el problema.

Las siguientes pruebas usan el proyecto de parpadeo @guilhermefelipecgs y lo reducen a lo básico que aún desencadena el problema.

He estado tratando de obtener un rastreo de GPU con RenderDoc durante aproximadamente 4 horas habilitando el modo de proceso bajo en el juego (por lo tanto, 1 fotograma por segundo básicamente) pero, aunque creo que pude capturar algunos fotogramas problemáticos, no pude ver cualquier error en los comandos de opengl o el marco reconstruido de RenderDoc. Nuevamente, CREO que tengo algunos marcos problemáticos ... es un poco difícil obtenerlos cuando son aleatorios.

También he registrado los rectos que se envían al sombreador para dibujar cada rect en un archivo y busqué cualquier rect fuera de x <60 o x> 420 o y <60 o y> 420 o con ancho o alto diferente a 20 y No encontré nada y estoy 100% seguro de que debería haber malas reacciones porque las he visto mientras ejecutaba el proyecto y lo registraba. Aquí están los registros godot_tilemap_issue_logs.zip si tienen ganas de dst_rect desde aquí https: / /github.com/godotengine/godot/blob/master/drivers/gles3/rasterizer_canvas_gles3.cpp#L687 -L701

Aquí está la compilación de Windows más el parpadeo modificado que usé para registrar los rectos. Si desea registrarlo, use algo como godot.windows.opt.tools.64.exe > log.txt en un cmd (no un PowerShell porque usa otra codificación y es una molestia)

Como referencia, probé la prueba Flicker de @mrcdk (Wine) y no pude reproducir ningún parpadeo en el siguiente sistema:

  • Mageia 6 x86_64
  • X11 1.19.5, Plasma / KWin 5.12.2 (probado con composición activada y desactivada)
  • Laptop Optimus, usando Nvidia GTX 670MX a través de Nvidia PRIME (controladores 390.59)
  • Probado con Godot vsync ON y OFF, así como controladores vsync ON y OFF

Es posible que el error de los controladores afecte solo al escritorio o a las GPU recientes.

Esta es mi suposición también, ya que 7 días tiene problemas con las tarjetas de la serie 10
a una escala mucho mayor. Recibo caídas de fps al azar de 160 a 10 sin ningún motivo
en la configuración mínima con una Nvidia GeForce 6Gb gtx 1060. PC de escritorio

El martes 19 de junio de 2018 a las 09:04 Rémi Verschelde, [email protected]
escribió:

Como referencia, probé tanto @guilhermefelipecgs
https://github.com/guilhermefelipecgs 's Flicker test (Linux x86_64) y
@mrcdk https://github.com/mrcdk 's versión modificada (Wine) y no pudo
reproducir cualquier parpadeo en el siguiente sistema:

  • Mageia 6 x86_64
  • X11 1.19.5, Plasma / KWin 5.12.2 (probado con composición activada y desactivada)
  • Laptop Optimus, usando Nvidia GTX 670MX a través de Nvidia PRIME (controladores
    390,59)
  • Probado con Godot vsync ON y OFF, así como controladores vsync ON y
    APAGADO

Es posible que el error de los controladores afecte solo al escritorio o a las GPU recientes.

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/godotengine/godot/issues/9913#issuecomment-398311432 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AS-y9jLkTsEpQyBdu204PCK63wHgD1dxks5t-LCXgaJpZM4OlRVq
.

@ akien-mga, ¿cambia el reloj de los gráficos mientras se ejecuta la prueba como muestra @guilhermefelipecgs en su video?

¿Cambia el reloj de los gráficos mientras se ejecuta la prueba como muestra @guilhermefelipecgs en su video?

No cambia, cuando inicio Godot se mueve al valor de reloj más alto y permanece allí. Así que eso explica por qué no vería parpadeo, según el video de @guilhermefelipecgs , esto ocurre solo cuando se reduce el reloj (supongo que mi tarjeta no es lo suficientemente potente como para querer bajar el reloj cuando se ejecuta un proyecto simple de Godot).

screenshot_20180619_191134

Cuando crees que esto no puede ser más extraño ...

Hice un nuevo proyecto y noté 2 comportamientos extraños.

1) Sé "exactamente" dónde estará el parpadeo.
2) Control 3 nunca "parpadean".

Intentaré explicar lo que está sucediendo:
1) Agregué 4 controles en la escena de esta manera:
captura de tela de 2018-06-19 15-45-25
Todos los controles usan el mismo código base. Control 1 será el único nodo con parpadeo.

2) Después de un tiempo (20 ~ 50 segundos), Node.gd reparareará los nodos, así:
captura de tela de 2018-06-19 15-50-18
Y luego, el parpadeo saltará de Control1 a Control 2 , es decir, solo el primer hijo tendrá parpadeo.
Nota 1: Creo que esto probablemente suceda porque las funciones de dibujo se pondrán en cola en el orden de los nodos.
Nota 2: Control 2 está usando draw_texture , este método también tiene parpadeo.

3) Cuando Control 3 convierte en el primer hijo, el parpadeo desaparece mágicamente, y la razón es esta bandera:
captura de tela de 2018-06-19 15-45-52
La bandera Invert le dice al código que invierta las funciones de dibujo, por lo que mi código llamará primero draw_line y luego draw_rect , por lo que los rectángulos rojos estarán frente a la cuadrícula.

4) Y finalmente, el parpadeo regresa en Control 4 , aquí solo llamo draw_rect .

Me olvidé de decir antes que tengo una GTX970.

En Windows, utilicé un programa para ver cómo cambiaba el reloj de mi gpu:
whatsapp image 2018-06-19 at 14 13 41
* El problema también afecta a Windows con el controlador más reciente (398.11), pero con menos frecuencia y necesito esperar un poco más de tiempo. Ignore la versión de la unidad en esta captura de pantalla, simplemente degrado mi unidad para ver si tiene alguna diferencia.

Nuevo proyecto: Flicker_2.zip
Video 1: https://youtu.be/01LWVQqp5yg
Video 2: https://youtu.be/XTKTe9aZAuU?t=50s

Debo intentarlo 5 ~ 8 veces hasta que tenga un parpadeo más intenso. Parece que cuanto más juego, más intenso es el efecto.

El video 2 es lo mismo que el video 1, pero el nivel de rendimiento aumenta en la parte final del video por alguna razón y cuando esto sucede, puede notar que el parpadeo desaparece.

Los videos se graban en Linux (porque el error es más intenso en Linux) con 60 fps.

Estoy 98% seguro de que se trata de un problema de controladores.

Estoy de acuerdo, busqué en el código (godot) y no puedo encontrar nada extraño.

De acuerdo, pude lanzar el proyecto con apitrace y ahora estoy 99.9998% seguro de que este es un problema de controlador relacionado con el Power management mode Aquí está el archivo flicker_trace.zip para que ustedes puedan ejecutarlo en su extremo también .

Y aquí hay un video que grabé: https://streamable.com/yk1qq La calidad es algo mala, así que aquí está el original (que no es mucho mejor 😅)

Los primeros 20 segundos son el proyecto en ejecución y registro. Olvidé minimizar OBS la primera vez que usé apitrace y mi reloj de gpu estaba bloqueado al máximo (es el gráfico en la esquina superior derecha) y el parpadeo no estaba allí. Saltar a aprox. 3:15 donde minimicé OBS y obtuve el error al reproducir el seguimiento. Luego utilicé la opción Show thumbnails para crear una miniatura para cada cuadro. Luego busqué entre las miniaturas hasta que encontré un marco que tenía el error. Ejecuté lookup state para obtener el estado opengl de ese marco de concreto y, después de que terminó, mostré el framebuffer sin el error.

Entonces, si este problema fue causado por godot, no solo el seguimiento debería mostrarlo cada vez (no es así la primera vez que lo ejecuto mientras dejé OBS abierto) y la miniatura y el estado de búsqueda framebuffer deberían haber tenido el mismo aspecto (que claramente no lo hicieron).

Entonces, ¿qué podemos hacer aquí? No creo que nosotros (como comunidad) tengamos necesariamente la influencia para iniciar el cambio desde NVIDIA. ¿O nosotros?

Entonces, ¿qué podemos hacer aquí? No creo que nosotros (como comunidad) tengamos necesariamente la influencia para iniciar el cambio desde NVIDIA. ¿O nosotros?

En mi opinión, vale la pena intentarlo :) En el peor de los casos, no obtenemos una respuesta, pero abrir un hilo sobre esto en el foro de desarrollo de Nvidia sería bueno.

Hola chicos,

Me pregunto, ¿el problema aún ocurre cuando usa Nvidia Inspector y deshabilita CUDA - Force P2 State? Este fue un problema que causó parpadeo en algunos otros proyectos (como OBS). También me gustaría saber si se trata de un problema de energía, ya que estoy viendo un problema similar en otro juego (que no es de Godot) y estoy empezando a sospechar también de un problema con el controlador. GTX750 aquí.

Sigo teniendo el mismo problema en Godot v3.0.6 y descargar los últimos controladores de Nvidia no ayuda en absoluto con este problema. Estoy usando una tarjeta gráfica Nvidia GTX 750 TI. ¿Hay alguna manera de arreglar este problema? Además, cuando ejecuto mi juego en un navegador web, ¿el problema de parpadeo no aparece en absoluto?

¿Alguien se ha puesto en contacto con nvidia sobre este problema?

Tengo este problema ty @guilhermefelipecgs para ese video, exactamente lo que me está sucediendo.
Estoy en GTX 950. Probé el tamaño del cuadrante && ysort, pero no tuve suerte.

No estoy seguro de qué hacer. iba a hacer un nuevo número, pero pensé que lo publicaría en su lugar. también estoy en Godot v3.0.6

¿Alguien lo ha probado con la versión 3.1 alpha con GLES2.0 activado? ¿Quizás es un problema con el controlador OpenGL3 x nvidia?

Supongo que tendré que cambiar la forma en que se dibujan las reacciones, esto muestra qué tan mala es la situación con el soporte del controlador OpenGL y por qué es necesario pasar pronto a Vulkan.

Además, ¿alguien lo probó con el renderre GLES2?

@reduz lamento que haya tardado tanto. finalmente obtuve 3.1 para compilar
sí, no puedo confirmar que el parpadeo sigue ocurriendo en el renderizador GLES2

He estado haciendo algunas pruebas con esto y no puedo activar ningún mosaico negro parpadeando en un conjunto de mosaicos de tamaño de celda de 128x128 (cuadrante 16).
No estoy seguro de si eso ayuda, pero creo que es algo
e: por cierto, si alguien quiere que edite un código de C ++ y lo vuelva a compilar para probar cosas, solo lmk
e2: nvm acaba de regresar. sí, aunque es mucho menos frecuente

Encontré una solución temporal que funciona bastante bien en realidad. (si alguien lanzará su juego pronto)

- en mosaico :

  • cree un nuevo mapa en mosaico y establezca la cantidad de mosaicos en 40x40
  • seleccione su juego de fichas de
  • luego haga clic en la herramienta de llenado de cubos en la barra de encabezado superior (tecla f ), haga clic en cualquier lugar de la cuadrícula en mosaico
  • ahora vaya a archivo -> exportar como imagen, desmarque _draw tile e incluya color de fondo_, haga clic en exportar.
  • vaya a tinypng.org, comprímalo (guardé el 71% del).

- en godot:

  • agregue un nodo de sprite a su capa de mapa de mosaicos.
  • establece la textura del sprite en la imagen exportada de tiled.
  • configure las opciones de paso de la cuadrícula para que se ajusten al mismo tamaño de su celda (en mi caso, era 48x48)

image

ahora, puedes simplemente hacer ctrl + d en el sprite y ajustarlo. sin parpadeo y el rendimiento es excelente (godot internamente solo muestra lo que está en el lienzo)

e: espero que esto ayude. es un poco extraño, pero es una solución (no es la mejor, pero es algo)
e: aún puede usar las otras capas del mapa de mosaicos para objetos y otras cosas. esto es solo para que el suelo detenga el parpadeo mientras se mantiene un buen rendimiento (al habilitar ysort en una capa de mapa de mosaicos de suelo, se reducen los fps)

@ByTheQuietLake np, ¡es un placer! Tengo nvidia gtx 950 y puedo confirmar que funciona. no he visto ningún mosaico negro parpadeando durante más de 20 horas . en el editor o en el juego. lo único que he notado es que el tiempo de carga aumenta en unos 20 ms (que en realidad no es nada), pero eso es solo porque la imagen es enorme. sin embargo, cuando te mueves por el mapa con tu personaje, se siente tan suave como si fuera un mapa de mosaicos.

no estoy seguro de la flexibilidad. En pocas palabras, simplemente cree sus mosaicos de suelo en mosaico, expórtelos como imagen y utilícelos como un sprite como un niño en su mapa de mosaicos. luego, una vez que reduz / nvidia devs / etc encuentre una solución, simplemente elimine sus viejos sprites y use el mapa de mosaicos como lo haría normalmente. debería ser una transición fácil.

La solución funcionó o no si no tiene una gpu nvidia :(

e: este error solo ocurre con nvidia gpus bythequietlake

Esta es mi primera publicación en github, y me disculpo si está en el lugar equivocado (encontré este hilo de google).

Recientemente experimenté este mismo problema después de convertir un juego de 2.1. La solución de Girng funciona para mí, pero parece un poco hack. También noté que hay un ligero desplazamiento entre una textura de nodo Sprite y las texturas de celda del mapa de mosaico cuando se mueve (usando su solución). Esto no fue evidente al usar un mapa de mosaicos de piso.

Estoy en una GTX 960. No puedo encontrar ninguna configuración de PowerMizer en Windows 10 (de la publicación anterior de guilhermefelipecg). Eso podría deberse a que estoy en Windows, y podría ser una cosa de Linux. También leí arriba, que ni siquiera eso lo solucionó.

Esto podría estar un poco fuera de tema, pero ¿debería permanecer en 2.1 hasta que se solucione, o tendría que compilar una "versión personalizada" de Godot?

Saludos cordiales,

- Aaron

La misma pregunta que Aaron aquí, ¿tenemos otras opciones? Este es un problema muy desagradable y hace que Godot no sea adecuado para la producción, por favor, déle una mayor prioridad.

Una cosa que encontré que funcionó para mí fue deshabilitar HDR en la configuración del proyecto.

Una cosa que encontré que funcionó para mí fue deshabilitar HDR en la configuración del proyecto.

No para mí, el único que funcionó fue configurar Ysort, pero no es una opción viable (establece el tamaño del cuadrante en 1)

También me encontré con esto ... y pude reproducir de manera consistente cada vez que ejecutaba la escena.
¿Alguien ha intentado jugar con la configuración de calidad de renderizado? Específicamente estableciendo Framebuffer Allocation en 2D?

Hasta ahora, parece que puede estar funcionando ... o al menos hacer que suceda con mucha menos frecuencia (no he visto que el parpadeo vuelva a ocurrir ... todavía_)

@ByTheQuietLake hasta ahora parece que no hay casos de parpadeo en absoluto.

@XNargaHuntress ¿de verdad? ¿Qué estableció para la asignación de framebuffer? eso podría ser una buena solución temporal
editar: nvm leyó eso mal, voy a probar esto para 2d framebuffer

@XNargaHuntress El parpadeo todavía me está sucediendo con Framebuffer Allocation configurado en 2D. Siento que está sucediendo con más frecuencia ahora, pero podría ser una coincidencia.
Estoy usando una Nvidia GTX 750 Ti en Windows 7 x64, Godot 3.0.6 estable.

Editar: Intenté configurar la asignación de Framebuffer en "2D sin muestreo". Todavía parpadea.

Edición 2: el parpadeo también ocurre con Godot 3.1 alpha usando el renderizador GLES3. Pero al usar el renderizador GLES2 no noté ningún parpadeo.

Tal vez pueda estar equivocado, pero después de la última actualización del controlador de nvidia, no pude ver ningún parpadeo hasta ahora. Probará completamente cuando esté en casa hoy.

GTX 1050TI, Windows 10, Godot 3.1 alpha

EDITAR: Después de muchas pruebas, se mostró nuevamente ... pero muy pocas ..... pero aún está allí

Después de una actualización anterior del controlador, no he visto el problema por un tiempo. No estoy seguro exactamente de qué actualización lo solucionó, y probablemente dependerá de la GPU específica, pero sí ...

Recuerden chicos que el controlador GLES2 no presenta este problema en Master.

Volver a configurar el zoom de la cámara en (1,1) podría haber solucionado el problema, previamente lo configuré en (0.5, 0.5) y estaba viendo parpadeos. Hasta ahora no veo ningún parpadeo. ¿Alguien más puede confirmar?

Siempre que la opción ysort esté DESACTIVADA, siempre parpadeo.

El lunes 19 de noviembre de 2018 a las 2:10 p.m., mikeleeman [email protected] escribió:

Volver a establecer el zoom de la cámara en (1,1) me solucionó el problema,
previamente lo puse en (0.5, 0.5) y estaba viendo parpadeos. Hasta ahora no lo soy
viendo algún parpadeo. ¿Alguien más puede confirmar?

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/godotengine/godot/issues/9913#issuecomment-439773424 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ACv4240No-elY7BK16HKAmxhHrFRaOj4ks5uwj1UgaJpZM4OlRVq
.

@mikeleeman Todavía está sucediendo en GLES3 con una GTX 960. Probé el modo de búfer de cuadros 2D, travesuras de la cámara, etc. En este punto, creo que Vulkan es nuestra única esperanza.

NVIDIA aún no ha solucionado el problema de bloqueo de la caché del disco del sombreador. Es triste porque las personas que usan Windows con tarjetas NVIDIA no están experimentando todo el potencial de Godot.

La mayoría de los proveedores no están dando tonterías sobre OpenGL recientemente, y solucionar esto es bastante complicado.
Por ahora, la mejor solución en Godot 3.1 es cambiar a OpenGL2, donde funciona bien.
Eventualmente, GLES3 luego quedará obsoleto para Vulkan, donde es de esperar que esto ya no suceda.

Todavía ocurre en 3.1alpha con GLES2 (como se muestra en la esquina superior derecha de este gif):
sssaturday5

Una solución temporal que encontré que funciona, que debería detenernos hasta Vulkan:

  • Usa nodos Sprite para cada mosaico de tierra por separado. Habilite el ajuste al editar para que sea más fácil imitar el mismo diseño de suelo. De esta forma no es un problema de rendimiento que encontré. Es simplemente lento y un poco extraño de hacer. Obviamente no es ideal, pero funciona por ahora.

También puedo confirmar que esto sucede en GLES2 también: / (última compilación b47d4e1ba5d72bac5c2e671d9e4c0ae037a248c0)

Eso ni siquiera se acerca a una solución válida. En primer lugar, pierde literalmente todas las razones para usar mapas de mosaicos.

Eso ni siquiera se acerca a una solución válida. En primer lugar, pierde literalmente todas las razones para usar mapas de mosaicos.

Sí, pero quiero decir que detiene el parpadeo y es solo para la capa de suelo ... Y tu juego se ve exactamente igual. Pero estoy de acuerdo con usted, no aprovecha las funciones del mapa de mosaicos, pero creo que es un intercambio justo hasta que se solucione

Ya no veo parpadeos, lo cual es extraño porque definitivamente estaba viendo parpadeos aleatorios antes durante mucho tiempo.

La última vez también intenté dibujar mosaicos en un canvasItem con funciones draw_rect, emular un tilemap y llamar a update () en el canvasItem solo una vez, por lo que solo dibuja una vez al inicio del programa. Sorprendentemente, el canvasItem también tiene parpadeos aleatorios similares (¿tal vez con menos frecuencia?), Pero solo cuando la cámara está ampliada (0.5,0.5), pero no cuando la cámara está en (1,1). Sé que suena extraño, tal vez entendí mal algo.

Ahora los parpadeos ya no ocurren, tanto para el que usa el dibujo de canvasItem personalizado como para los que usan el TileMap predeterminado de Godot. ¿Sospecho de una actualización de controlador? Mi tarjeta es Nvdia GeForce GTX 970, en Windows. Nota al margen ¿alguien puede verificar su versión de openGl instalada actualmente? Escuché que es más fácil de hacer en Linux.

editar: Creo que la incertidumbre no es buena, necesito a Vulkan para asegurarse de que no haya problemas.

Cambié la forma en que se dibujan en el renderizador OpenGL ES 2.0, por lo que definitivamente debería funcionar bien allí. En OpenGL ES 3.0, cualquier solución que se me ocurra probablemente afectará al rendimiento, por lo que la prioridad será presionar al máximo para que Vulkan funcione lo antes posible después de que 3.1 esté disponible.

Si puede, confirme que esto ya no falla en el renderizador OpenGL ES 2.0.

@reduz He probado durante unos minutos aquí y no sucedió. ¡Gracias por arreglar esto! :)
Nota:
No sé si está relacionado, pero todavía puedo ver algunas líneas blancas horizontales entre los mosaicos cuando la cámara tiembla.

gracias reduz por la corrección de OpenGL ES 2.0!

a @mikeleeman y otros:
Aquí están las últimas 3 notas del parche desde el 20 de noviembre para las tarjetas NVIDIA GeForce:
20 de noviembre , 3 de diciembre y página 15 .

el único problema que encontré que podría ser relevante (no estoy seguro) es el 12 de diciembre:

  • [Hitman 2 Silent assassin]: Hay una corrupción de textura parpadeante en el juego.
    [200472315]

También noté que algunos salieron mal con mi mapa de mosaicos:
capture3

No estoy seguro de poder hacer más por esto que la solución actual. Después de que salga 3.1, lo más probable es que este error no esté presente en Vulkan, y debería desaparecer del renderizador ES2 ahora.

Probando alpha 4, vi esto usando GLES2 y GLES3. Sin sombreadores, nada especial en particular. Solo mapas de mosaicos.
test

@securas ¿Estás usando cámara con zoom?

No

El sábado 29 de diciembre de 2018 a las 12:35 h Guilherme Felipe de CG da Silva <
[email protected]> escribió:

@securas https://github.com/securas ¿Estás usando cámara con zoom?

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/godotengine/godot/issues/9913#issuecomment-450378016 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ACv425NmiZKRUJHDzxg0NPB-PszWJaa2ks5u9jpGgaJpZM4OlRVq
.

@securas Eso parece un problema diferente, es más un problema con la corrección de píxeles que con el parpadeo de mosaicos.

@ akien-mga Bastante justo ... Parece que solo le sucede a los mapas de mosaicos, así que pensé que pertenecía aquí.

@ gcardozo123 me parece el número 24642, pronto habrá relaciones públicas

Moveré esto a 3.2 ya que no se puede hacer nada más por ahora. También espero que nvidia solucione esto para siempre, me comuniqué con ellos directamente para asegurarme de que esto también se solucione por su parte. Con la reescritura de Vulkan, es de esperar que esto ya no suceda, pero mientras tanto, use GLES2.

lo siento no quise cerrar

¿Hay otros motores de juegos de código abierto que utilicen GLES3 que tengan una clase de mapa de mosaicos o algún renderizado que se pueda ver? Solo estaba mirando las fechas, y han pasado más de 530 días, y se retrasará aún más: /

Me comuniqué con un desarrollador de godot sobre discordia (@ bojidar-bg) y recibí mucha ayuda. Estaba tratando de mostrar el problema, pero no pude hacer que aparecieran los mosaicos negros mientras grababa en OBS. luego me recomendó cambiar algunas configuraciones en el panel de control de NVIDIA.

información: fa7329f6485058fde30b8e2bfe26291dfbfc4434, GLES3, W10-64bit, GTX950

  • Ir a la NVIDIA Control Panel
  • Haga clic en Manage 3D settings
  • Desplácese hacia abajo hasta el modo de administración de energía , cámbielo de potencia óptima a preferir el máximo rendimiento
    image
  • Haga clic en Aplicar

Todavía no he visto un título negro (recargué el juego más de 20 veces y seguiré probando hasta que las vacas regresen a casa). ¡Hasta aquí todo bien! Espero que esto ayude, ¡y muchas gracias a Bojidar!

girng: Vi este mismo fenómeno en las exportaciones. Ahí es donde reside más mi preocupación. No deberíamos necesitar pedirles a nuestros usuarios finales que cambien la configuración de su GPU para que no tengan mosaicos que desaparezcan de forma intermitente. ¿No probaste la última versión beta 3.1 con el hack de mosaicos de nvidia?

  • Desplácese hacia abajo hasta el modo de administración de energía , cámbielo de _potencia óptima_ para preferir el máximo rendimiento

¿No implica esto una falla del controlador? No estoy seguro de cómo un motor podría solucionar cada error potencial del controlador.

@ OvermindDL1 sí, reduz dijo que se comunicó con los desarrolladores de nvidia directamente, ¡lo cual es muy apreciado! Estoy satisfecho con la solución del modo de administración de energía para el desarrollo . Creo que debería detenernos hasta que nvidia lo arregle.

@agameraaron solo uso gles3 (el juego está ligado a partículas de gpu). lo siento, no puedo comentar sobre el hack de mosaicos. pero he escuchado que funciona

Por lo que acabo de discutir con los representantes de NV, dicen que ya no pueden observar este tema. ¿Pueden intentarlo con las últimas versiones del controlador y, si falla, informar un poco más sobre su hardware? (Modelo de GPU, controlador instalado, configuración de administración de energía)

@reduz probado en el controlador más reciente ( 419.17 ). El parpadeo de mosaicos ahora ocurre con los siguientes modos de energía: prefiere el máximo rendimiento , óptimo y adaptable .

GTX 950, W10, GLES3

  • cuando se abre el estudio OBS, el parpadeo desaparece

@reduz @girng @xsellier
GTX 1070, GLES2, W10
Controlador más reciente 419.35
Sin parpadeo independientemente del modo de energía utilizado 👍

GLES3 también parece funcionar ... también encontré este problema en el desbordamiento de pila:
parpadeo de la pantalla gles2

GTX 1060, W10
Con el mismo controlador que el anterior (419.35), el parpadeo sigue ocurriendo en GLES2 y 3.
Solo tiene que hacer clic en la interfaz de usuario y colocar el cursor sobre Controles, ya que la configuración de redibujo predeterminada ahora es "en cambios", que se puede cambiar haciendo clic en el círculo en la esquina superior derecha.

Usé el proyecto anterior que publiqué en https://github.com/godotengine/godot/issues/9913#issuecomment -364707061, todo sigue sucediendo: la etiqueta y el mapa de mosaicos parpadean y las letras se estiran en algunos mosaicos de una manera extraña.

Screenshot_20190322_021011

prueba esta opción.

Soy consciente de esta opción, que solo funciona en GLES2

@reduz @girng @xsellier
GTX 1070, GLES2, W10
Controlador más reciente 419.35
Sin parpadeo independientemente del modo de energía utilizado 👍

GLES3 también parece funcionar ... también encontré este problema en el desbordamiento de pila:
parpadeo de la pantalla gles2

El comentario anterior solo sugirió que el problema ya no estaba presente.

@MennoMax , tiene razón, el parpadeo todavía ocurre ... pero la solución para GLES2 funciona, espero que el soporte de Vulkan llegue pronto 🙏

El problema de
Además, el parpadeo se corrigió en gles3 cuando publiqué el 11 de febrero (con el modo de energía configurado para preferir el rendimiento máximo). ahora, el parpadeo ha regresado y ocurre en las 3 opciones de modo de energía con los nuevos controladores actualizados. no tiene sentido, una de sus versiones de controlador tiene el parpadeo fijo en el rendimiento máximo preferido, ahora los nuevos controladores no lo tienen arreglado.

@girng ¿qué tiene esto que ver con las partículas de gpu?
@reduz , ¿tiene un ETA para un renderizador Vulkan preliminar?

@ gavriil07 si un juego usa GLES3 (con partículas de gpu), no es realmente una solución para ellos usar gles2. porque entonces, las partículas de gpu no son compatibles

Sin embargo,

Sin embargo, CPUParticles todavía se puede utilizar en GLES2; son suficientes para muchos casos de uso (lo cual es especialmente cierto en juegos 2D más simples). Mantenga la discusión en el tema

estoy hablando de partículas de gpu, no de CPU

Vi una publicación en https://www.reddit.com/r/godot/comments/9ljor3/psa_tilemap_flickering_possible_fix/ escrita hace meses que dice "intente deshabilitar HDR en la configuración del proyecto". (Representación -> Calidad -> Profundidad -> Hdr)

Probé eso en un proyecto GLES3 y parece funcionar hasta ahora para mí (Nvidia 970 versión 415.27, Linux Mint). Lo siento si este es un mensaje repetido.

Puedo decir que este error existe para el controlador GLES2 en mi Nvidia gtx760 (Windows 10 x64). Video a continuación:

https://www.youtube.com/watch?v=TM1BN4uwMfA
La primera instancia de lo que sucede en el video es a las 0:36 y vuelve a ocurrir en aproximadamente 5 segundos.

La solución de GLES2 pareció aliviar el problema para mí.

Desactivar HDR en la configuración del proyecto funcionó para mí. ¡Gracias!

Windows 10 Pro de 64 bits
controlador nVidia 430.39

Godot 3.1.1 estable
Renderizador OpenGL ES 2.0: GeForce GTX 1080 / PCIe / SSE2

Ocurre parpadeo.

Desactivar HDR elimina principalmente el parpadeo, pero vuelve en algunas situaciones que no pude reducir más.

Inicio de Windows 10
Godot 3.1 estable
GTX 1070, controlador 430.86
GLES 3.0 con HDR encendido, parpadeando, apagarlo lo arregla.

He probado esto con una cuadrícula personalizada (Node2D con sprites como niños)

Godot 3.1.1 estable
Windows 10
Controlador GTX1080 430.86
GLES 3.0 con HDR desactivado, el parpadeo continúa, cuando se activa "prefiero el máximo rendimiento" parece que desaparece (gracias al desarrollador por la solución parcial). Me alegra ver que los desarrolladores son conscientes de esto, parece que es más un problema de nvidia que Godot. ¿Alguno con tarjetas amd tiene este problema?

GLES 3.0 con HDR desactivado, el parpadeo continúa, cuando se activa "prefiero el máximo rendimiento" parece que desaparece (gracias al desarrollador por la solución parcial). Me alegra ver que los desarrolladores son conscientes de esto, parece que es más un problema de nvidia que Godot. ¿Alguno con tarjetas amd tiene este problema?

El problema no ocurre con las tarjetas AMD (el título dice con controladores nvidia por cierto)

Tener este problema en Godot 3.1.1 en OpenGL ES 3.0 Renderer: GeForce GTX 1060 6GB/PCIe/SSE2 .
No tengo un mapa de mosaicos, solo un montón de draw_texture() . Obtengo puntos de parpadeo aleatorios, pero a veces es un error de pantalla casi completa.

En este punto, creo que Vulkan será la solución a este problema de una vez por todas.

También estaba obteniendo un parpadeo extraño en mi proyecto, sin embargo, la configuración Gles 2 Use Nvidia Rect Flicker Workaround solucionó.

Screen record from 2019-08-01 19 18 43

Puede reproducirse en la compilación 3.1.1 estable con una GTX 980.
Deshabilitar HDR soluciona el problema.

Solo una actualización que todavía veo aparecer mosaicos y he probado todo lo mencionado aquí hasta ahora. Solo puedo esperar que Vulkan pueda arreglarlo, pero sería bueno si pudieran resolverlo también para 3.2.

Últimamente he sido muy positivo, pero este error realmente me está desgastando y se está volviendo muy perjudicial para mi flujo de trabajo (lo he intentado todo). Hasta el punto en que temo presionar F5 debido al inevitable parpadeo de las baldosas negras. Puedo tolerar el parpadeo una vez en una luna azul o algo así, pero el parpadeo es algo constante ahora. Amo a Godot, no hay vuelta atrás ahora, pero se está volviendo extremadamente frustrante.

No me gusta escribir publicaciones como esta porque no es útil y parece quejumbroso, pero no sé qué más decir / hacer. Al mismo tiempo, quiero que los desarrolladores principales sepan cómo este error está afectando la experiencia de Godot. 😭 Por favor, @reduz / core developers si pueden

Inicio de Windows 10
Controlador Geforce GTX 1060 versión 440.97
Godot 3.1.1 estable usando GLES3
Probé algunas de las sugerencias que se enumeran aquí (deshabilitar HDR, hacer clic en la opción "Gles2 use nvidia rect flicker workaround" y modificar mi configuración de rendimiento) y ninguna pareció resolver el problema

Lo mismo aquí, parpadeando. Tenga 3 mapas de mosaicos, 1 para el nivel del agua y 1 para el nivel del suelo, 1 para las nubes con la clasificación Y activada.

Inicio de Windows 10
Controlador más reciente de Geforce GTX 1060
Godot 3.2 beta compilado de la semana pasada, usando GLES3
gdscript, tener HDR desactivado

Observe que las baldosas de agua aparecen de forma intermitente o parpadean.

Actualizado:

Parece que tengo que usar GLES2 y hacer clic en la cosa 'Corrección de parpadeo de NVIDIA' para que el parpadeo desaparezca. ¿Podría esta solución adaptarse a GLES3 por casualidad?

Acabo de comprar un nuevo ASUS RTX2060 con la intención de corregir el problema, pero, por desgracia, no fue así. El parpadeo continúa. Voy a probar una compilación con las ramas 3.2 y VULKAN.

Windows 10
RTX 2060 último controlador
Godot 3.1.1

OH DIOS
Lo intento todo, pero sigue ahí, mi juego funciona con GLES2 incluso si activo "2d / gles2_use_nvidia_rect_flicker_workaround", pero sigue parpadeando.
Amo a Godot incluso amo a Godot nueva versión 3.1 más, pero por favor resuelve este problema.

La buena noticia es que VULKAN build corrige este problema. Así que no sé si esto se corregirá alguna vez en la rama 3.X.

Entonces, ¿cuándo llegará el Godot con VULKAN construido?

Por lo que sé por los comentarios anteriores, esto no se solucionará en Godot 3.x, lo que evita cualquier proyecto basado en mapas de mosaicos con GLES 3. Los desarrolladores afirman que este es un problema de NVIDIA, por lo que no hay mucho que puedan hacer al respecto. . Puede esperar 4.0 con Vulkan (no menos de 6 ~ 8 meses), lo que tomará un tiempo, o comenzar con 3.xy esperar una actualización fácil a 4.0. Sin embargo, dudo que la actualización sea fácil, especialmente si está utilizando funciones de GLES 3 como sombreadores elegantes y partículas de GPU.
Mi solución ha sido utilizar la ordenación y en las opciones del mapa de mosaicos. Esto parecía haber reducido la frecuencia del problema. Sin embargo, todavía tenía jugadores quejándose de que, ocasionalmente, partes del mundo del juego desaparecían.

Si se trata de un problema de NVIDIA, ¿por qué no sucede, digamos, en Unity? (Sólo me preguntaba)

Bibliotecas comerciales frente a bibliotecas de código abierto, creo. Ver anterior
publicaciones de los desarrolladores.

El domingo, 12 de enero de 2020, 21:33 Sergey Kospanov [email protected]
escribió:

Si se trata de un problema de NVIDIA, ¿por qué no sucede, digamos, en Unity? (Sólo
preguntándose)

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/godotengine/godot/issues/9913?email_source=notifications&email_token=AAV7RW2ZZLY7ZYQ46RUK7KDQ5ME3HA5CNFSM4DUVCVVKYY3PNVWWK3TUL52HS4DFVVREXWWK3TUL52HS4DFVVREXWG43 ,
o darse de baja
https://github.com/notifications/unsubscribe-auth/AAV7RWYIXVBYAYGZ3VLSPF3Q5ME3HANCNFSM4DUVCVVA
.

@securas Eso no es cierto, ya que muchos otros marcos de código abierto no sufren este problema (incluso si usan OpenGL para renderizar).

Esto es solo un error que resulta ser muy difícil de diagnosticar y nadie está dispuesto a dedicarle tiempo.

Esto es solo un error que resulta ser muy difícil de diagnosticar y nadie está dispuesto a dedicarle tiempo.

Para aclarar, la comprensión actual es que estamos teniendo un error en los controladores de Nvidia. Se desencadena por la forma en que usamos la API de OpenGL, y si otros proyectos no tienen el mismo problema, es porque probablemente usan OpenGL de manera diferente, o entendieron qué desencadena el error y escribieron soluciones para prevenirlo (como hicimos con un opción para GLES2, a costa del rendimiento).

La forma en que usamos la API es, a nuestro entender, completamente apropiada según la especificación de OpenGL. Pero los errores del controlador significan que incluso un uso legal de la API puede producir resultados problemáticos.

Culpa mía. Lo siento por eso. Tengo muy poca comprensión de la
detalles de implementacion.

El domingo, 12 de enero de 2020, 22:46 Rémi Verschelde [email protected]
escribió:

Esto es solo un error que resulta ser muy difícil de diagnosticar y no
actualmente uno está dispuesto a dedicarle tiempo.

Para aclarar, la comprensión actual es que estamos llegando a controladores de Nvidia
insecto. Se desencadena por la forma en que usamos la API de OpenGL y si otros proyectos
no tienen el mismo problema, es porque probablemente usen OpenGL
diferente, o entendió qué desencadena el error y escribió soluciones para
prevenirlo (como hicimos con una opción para GLES2, a costa de
actuación).

La forma en que usamos la API es, a nuestro entender, completamente apropiada
según la especificación de OpenGL. Pero los errores del controlador significan que incluso un uso legal
de la API puede producir resultados problemáticos.

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/godotengine/godot/issues/9913?email_source=notifications&email_token=AAV7RW2U4Q6NE3R62ME75GDQ5MNJVA5CNFSM4DUVCVVKYY3PNVWWK3TUL52HS4DFVREXWG43 ,
o darse de baja
https://github.com/notifications/unsubscribe-auth/AAV7RW4WGXFM7MQZKAQJ4X3Q5MNJVANCNFSM4DUVCVVA
.

Esto puede deberse a que los búferes de vértices se reutilizan actualmente varias veces por cuadro (lo que probablemente también esté causando problemas de rendimiento). Es decir, el búfer de vértice se está utilizando para dibujar un objeto, cambiado a mitad de camino para comenzar a dibujar el siguiente. Estoy investigando.

Sospecho que el procesamiento por lotes en 2D adecuado resolverá este y los problemas de rendimiento en 2D.

No parece un problema de Nvidia. También me pasa a mí y a un amigo (AMD e Intel, respectivamente) y, irónicamente, no le pasa a mi otro amigo, que usa Nvidia. Todo lo que se especifica en este hilo nos pasa a mí y a mi amigo de Intel.

Tengo este problema en una Intel HD Graphics 620 integrada en mi computadora portátil. Cambiar a GLES2 lo soluciona. Otra cosa para mí es que parecía ocurrir solo con luces 2D encendidas

interesante - tendré que comprobar si tengo la iluminación encendida también

Lamento informar que tenía esto en mi escena, pero eliminarlo no tuvo ningún efecto. a mí me parece más debido a la cantidad de mosaicos en el mapa de mosaicos, quién sabe

Ayer hice un experimento interesante: creé el mismo mapa usando TILED y lo importé con el importador TILED de VNEN y NO HAY PARPADEO, por lo que esto me lleva a pensar que es algo más en la escena, o la forma en que configuré el mapa de mosaicos, así que estoy investigando un poco más e informaré

FWIW, siempre he usado Tiled y sigo teniendo el problema.

@jonbonazza lamento escuchar eso, me hace sentir que no hay esperanza en esto hasta que llegue 4.0, o uso GLES2 que preferiría no usar

También me encontré con este problema. ¿Todavía persiste cuando el programa se compila y ejecuta como ejecutable, en lugar de en el Editor?

¿Todavía persiste cuando el programa se compila y ejecuta como ejecutable, en lugar de en el Editor?

Sí, ya que el código de representación entre el editor y una plantilla de exportación de lanzamiento es idéntico.

Tengo una computadora: i3 2120, gt630.
En esta computadora todo funciona perfectamente. En mi otra computadora: ryzen 1600, gtx1060. Los mosaicos parpadean como locos ... Ambos con Windows 10 Pro x64.

Nombre del conductor: GLES2
Gles 2 Use Nvidia Rect Flicker Workaround: Activado
Mi 1060 funciona en promedio 30 ~ 50 Fps
Esperando al Vulkan ...

Cualquiera que tenga esto en GLES2 puede querer probar las compilaciones de prueba que estamos haciendo en # 37349. Es posible que ayude, ya que utiliza un método diferente para dibujar rectos.

Tener el mismo problema. GTX 1060 6GB y Ryzen 7 1700X. Habilitar cell_y_sort me lo soluciona, pero causa grandes problemas de rendimiento (caídas de fps). Lo mismo para configurar cell_quadrant_size en 1.

Solo para volver a preguntar, ¿alguien puede probar la versión beta 3.2.2 con use_batching activado? También esta vez, active también use_nvidia_workaround .

Desafortunadamente, nadie con el problema del parpadeo lo probó desde mi comentario anterior: decepcionado: (probadores traviesos), y desde ese momento ahora hay una ruta de respaldo para rectos únicos, utilizando el método anterior que puede reintroducir el problema

Sin embargo, si se cura con el procesamiento por lotes Y la solución alternativa de nvidia, confirmará que el método de dibujo uniforme es la causa de los problemas de parpadeo y se puede eliminar, curando así el problema para siempre.

Así que acabo de descargar 3.2.2. beta 1 y usar Driver Name: GLES2 con Use Batching y Gles 2 use Nvidia Rect Filcker Workaround parece solucionar el problema. Aunque todavía no lo probé durante mucho tiempo (ya que el parpadeo en 3.2.1 solo aparece después de un par de minutos, al menos para mí).

Así que acabo de descargar 3.2.2. beta 1 y usar Driver Name: GLES2 con Use Batching y Gles 2 use Nvidia Rect Filcker Workaround parece solucionar el problema. Aunque todavía no lo probé durante mucho tiempo (ya que el parpadeo en 3.2.1 solo aparece después de un par de minutos, al menos para mí).

Ah, eso es genial. Sospeché que lo haría. Al usar la solución alternativa para reacciones individuales, sabemos que funciona y no causa parpadeo. Pero el resto de los sprites se dibujarán usando el código de procesamiento por lotes que se dibuja usando primitivas indexadas, y sospeché que eso podría resolver el problema y esto parece. : +1:

Echaré un vistazo y veré si podemos eliminar el antiguo método uniforme por completo del renderizador por lotes, eso debería resolver el problema para siempre. Mientras tanto, la combinación de solución alternativa por lotes + nvidia que probablemente encontrará es más rápida de todos modos que el antiguo renderizador y no parpadea.

Sí, definitivamente es más rápido. Usando godot 3.2.1 estable con el controlador GLES2 alcancé solo 20 fps, mientras que usando godot 3.2.2 beta 1 alcancé 60 fps fácilmente. Pero tengo curiosidad:

Echaré un vistazo y veré si podemos eliminar el antiguo método uniforme por completo del renderizador por lotes, eso debería resolver el problema para siempre.

¿Eso significa que habrá una solución para GLES3?

Sí, definitivamente es más rápido. Usando godot 3.2.1 estable con el controlador GLES2 alcancé solo 20 fps, mientras que usando godot 3.2.2 beta 1 alcancé 60 fps fácilmente. Pero tengo curiosidad:

¡Ah eso es bueno! : sonriendo:

¿Eso significa que habrá una solución para GLES3?

GLES3 No he hecho nada hasta ahora. Posiblemente podríamos terminar haciendo una versión enormemente simplificada y reducida del procesamiento por lotes solo para ayudar a los chicos de GLES3 hasta que se publique 4.x (pero no puedo hacer promesas en esta etapa, hay mucho en la hoja de ruta). Eso también debería resolver el problema en GLES3 si ocurre allí.

Posiblemente podríamos terminar haciendo una versión muy simplificada y reducida del procesamiento por lotes solo para ayudar a los chicos de GLES3 hasta que se publique 4.x

Por favor (¿cuál es el plazo hasta 4.x, para ponerlo en perspectiva? Sospecho que varios meses, si no medio año)

Creo que se necesitaría una solución si cientos de personas informaran sobre este problema. No creo que tengamos eso. Al menos este hilo no lo sugiere.

Dicho esto, si hay algunos lanzamientos comerciales que están sufriendo esto, podría ser bueno ayudarlos. Si tuviera más experiencia me sumergiría en mí mismo, pero no sabría por dónde empezar. Acabo de comenzar a explorar el código Godot, que por cierto está muy bien escrito.

Aquí es donde sería bueno tener un sistema de votación para errores cruciales que deben corregirse.

Mi voto es esperar a 4.xy tener recursos enfocados en eso. Sabemos que Vulkan ya resuelve este problema.

Aquí es donde sería bueno tener un sistema de votación para errores cruciales que deben corregirse.

En mi experiencia, la votación generalmente no conduce a corregir errores más rápido. Esto es cierto en los proyectos desarrollados por la comunidad, pero incluso el software propietario comercial enfrenta el mismo problema (mire el rastreador de funciones de Discord).

Cierto. No estoy sugiriendo que ayudaría a arreglarlo. Sería más un indicador de cuán extendido está el problema. Supongo que la cantidad de personas involucradas en esta discusión podría ser un indicador. En cualquier caso, he terminado con este hilo y esperaré pacientemente a que 4.x

También estoy enfrentando el problema. Nunca me enfrenté al autotiling normalmente. Si dibujé el mapa a mano (lo que hice en otro proyecto, usando los mismos mapas de mosaicos), nunca encontré este problema. Pero cuando llegué a renderizar una mazmorra generada por procedimientos usando tilemap.set_cellv (...) encontré el problema constantemente. Tengo todas las sugerencias, y la única que funcionó fue usar GLES2 con la solución. ¡Sin embargo, este es un problema bastante serio! La representación más básica del mapa de mosaicos falla. ¿Por qué no hay una solución para GLES3 por cierto? Conozco algo de OpenGL, he escrito un motor de juego básico que renderiza texturas con sombreadores, pero nada más. ¿Alguien puede explicar qué está causando esto exactamente? Ojalá pueda entender. <3

También estoy enfrentando el problema. Nunca me enfrenté al autotiling normalmente. Si dibujé el mapa a mano (lo que hice en otro proyecto, usando los mismos mapas de mosaicos), nunca encontré este problema. Pero cuando llegué a renderizar una mazmorra generada por procedimientos usando tilemap.set_cellv (...) encontré el problema constantemente. Tengo todas las sugerencias, y la única que funcionó fue usar GLES2 con la solución. ¡Sin embargo, este es un problema bastante serio! La representación más básica del mapa de mosaicos falla. ¿Por qué no hay una solución para GLES3 por cierto? Conozco algo de OpenGL, he escrito un motor de juego básico que renderiza texturas con sombreadores, pero nada más. ¿Alguien puede explicar qué está causando esto exactamente? Ojalá pueda entender. <3

Ya hay algunas explicaciones en este hilo. Supongo que en este punto no habrá nuevas soluciones o arreglos para este problema hasta la versión 4.0 (vulkan), a menos que la comunidad encuentre algo. En mi humilde opinión, los mantenedores tienen razón al no preocuparse por una solución potencialmente compleja ahora que 4.0 está en el horizonte.

¿Por qué no hay una solución para GLES3 por cierto?

En realidad no me había dado cuenta de eso, podría intentar portar el código de solución alternativa a GLES3 mañana. Sin embargo, será lento si podemos hacerlo funcionar.

Ahora tengo un WIP PR (ver arriba) para la solución para GLES3. También tengo algunas ideas para arreglar el método de dibujo uniforme, ya que el sombreador parece demasiado complicado para lo que se necesita. Es posible que necesite ayuda para probar eso si hago una solución, ya que no puedo repetir el parpadeo en mi máquina.

Creo que puedo ayudar con eso. Debería poder hacer una compilación personalizada de Windows en su PR.

Ahora estoy trabajando en reescribir el sombreador de ruta rápida para evitar el parpadeo. Ahora tengo un prototipo disponible para probar en # 38628. Le agradecería mucho que lo probara alguien que tenga hardware que muestre parpadeo, las instrucciones están en el PR.

Bueno, actualización:

  • parece que la solución GLES3 funciona bien: partying_face: (_ debería estar en la próxima beta_),
  • sin embargo, los experimentos con el sombreador de ruta rápida no ayudaron: decepcionaron:, y después de esa prueba parece que el sombreador probablemente pueda descartarse como la causa.

Entonces, actualmente estoy pensando en términos de que se trata de una situación extraña en términos de falla de enlace de nuestro lado solo en nvidia, o un error del controlador (¿tal vez no imaginando este método de dibujo, o no lo está probando?).

De todos modos la buena noticia es que

  • con GLES2 con procesamiento por lotes, ni siquiera debería sentir la necesidad de utilizar el método alternativo en el 99% de los juegos, por lo que no tendrá parpadeo
  • Y con GLES3, se confirma que el respaldo de nvidia funciona para evitar el parpadeo, aunque a un costo de rendimiento.

En esta etapa, creo que mi tiempo se dedicaría de manera más productiva a hacer funcionar algunos lotes en GLES3, lo que haría que la diferencia de rendimiento fuera discutible. : +1:

@lawnjelly Es un error del controlador y cómo se ocupa de la administración de energía. En este comentario puedes encontrar mis hallazgos.

@lawnjelly Es un error del controlador y cómo se ocupa de la administración de energía. En este comentario puedes encontrar mis hallazgos.

¡Ahha! :mueca:

¡Uno de los problemas es que este hilo se ha vuelto tan largo ahora! En realidad, el rastreo de API es una muy buena forma de determinar esto si obtiene parpadeo en su hardware, y estoy de acuerdo si obtiene resultados diferentes cada vez que reproduce el rastreo que sí apunta a un error de controlador. : +1:

@securas ¿Alguna vez confirmó que el problema en el video que publicó fue causado por este error de parpadeo?

Veo cuadros individuales similares de fondo negro + líneas blancas horizontales en mi propio proyecto con la función de arrastre de cámara incorporada y un script de cámara personalizado, y ninguna de las soluciones mencionadas (GLES2, corrección de parpadeo de NVIDIA, deshabilitar HDR, varias diferentes tipos de asignación de viewport) evitan que suceda:

tile-glitch

Esto es en 3.2.1 estable, Windows 10, GTX 1080.

La escena tiene cuatro mapas de mosaicos de 1400x800 apilados uno encima del otro para el fondo negro lejano, zigzag cerca del fondo, primer plano y colisión de la cámara.

Estaría muy agradecido si alguien pudiera ofrecer algo de información: escribir una solución alternativa sólida va a ser una parte considerable del tiempo del proyecto al que preferiría no comprometerme si se puede evitar.

Si mal no recuerdo, se debió a que el ajuste de píxeles en 2d estaba desactivado.

@Shfty Eso en realidad parece que puede ser un problema diferente. Eso parecería confirmarse si las soluciones alternativas de nvidia no lo solucionan. ¿Podrías abrir una nueva edición, con detalles de hardware y un proyecto de reproducción mínima?

@lawnjelly Eso suena bien. Abrí el # 39720 con un proyecto de reproducción mínima basado en la escena del gif anterior.

Logré solucionar el problema anidando la escena afectada dentro de su propio nodo Viewport, por lo que también he incluido una configuración de ejemplo para eso dentro del proyecto.

Ese gif me parece una sincronización vertical / desgarro de pantalla de alguna manera.

¿Fue útil esta página
0 / 5 - 0 calificaciones