Versión de Godot:
3.0.2 Mono
Sistema operativo / dispositivo incluida la versión:
KDE Neón
GTX 1060
Descripcion del problema:
en un sombreador, puede usar isnan()
para verificar si un flotante es NaN. Sin embargo, si le pasa algo que no sea un flotante (como un número entero, vector, matriz, etc.), rompe el sombreador, pero no da un mensaje de error en el editor. Sin embargo, recibes una gran cantidad de spam de errores cuando se ejecuta el juego:
drivers/gles3/shader_gles3.h:377 - Condition ' !version ' is true. returned: -1
Por ejemplo, prueba este sombreador:
shader_type spatial;
void fragment()
{
ALBEDO = isnan(vec2(0,0)) ? vec3(1.0) : vec3(0.0);
}
Lo he asignado en una esfera aquí, como puede ver, la esfera se estira extrañamente y se dibuja en el espacio de la pantalla:
Pasos para reproducir:
Proyecto de reproducción mínima:
shadernanbug.zip
Gracias por el informe de errores reproducible. Creé una solicitud de extracción que debería corregir este error.
Solo quería hacerle saber que su código de sombreado no se compilará incluso con la solución porque isnan (vec2) devuelve un vec2 booleano. Su código se compilaría si especificara qué elemento del vec2 desea verificar. Por ejemplo:
shader_type spatial;
void fragment()
{
ALBEDO = isnan(vec2(0,0)).x ? vec3(1.0) : vec3(0.0);
}
Comentario más útil
Gracias por el informe de errores reproducible. Creé una solicitud de extracción que debería corregir este error.
Solo quería hacerle saber que su código de sombreado no se compilará incluso con la solución porque isnan (vec2) devuelve un vec2 booleano. Su código se compilaría si especificara qué elemento del vec2 desea verificar. Por ejemplo: