Версия Годо:
3.0.2 Моно
ОС / устройство, включая версию:
KDE Neon
GTX 1060
Описание проблемы:
в шейдере вы можете использовать isnan()
чтобы проверить, является ли число с плавающей запятой NaN. Тем не менее, если вы передадите все , что не поплавок в него (например, целое число, вектор, матрица, и т.д.) он разбивает шейдер, но не дает сообщение об ошибке в редакторе. Однако при запуске игры вы получаете много спама с ошибками:
drivers/gles3/shader_gles3.h:377 - Condition ' !version ' is true. returned: -1
Например, попробуйте этот шейдер:
shader_type spatial;
void fragment()
{
ALBEDO = isnan(vec2(0,0)) ? vec3(1.0) : vec3(0.0);
}
Я назначил это на сферу здесь, как вы можете видеть, сфера странным образом растягивается и рисуется в пространстве экрана:
Действия по воспроизведению:
Проект минимального воспроизведения:
shadernanbug.zip
Спасибо за воспроизводимый отчет об ошибке. Я создал запрос на перенос, который должен исправить эту ошибку.
Я просто хотел сообщить вам, что ваш шейдерный код не будет компилироваться даже с исправлением, потому что isnan (vec2) возвращает логическое значение vec2. Ваш код будет компилироваться, если вы укажете, какой элемент vec2 вы хотите проверить. Например:
shader_type spatial;
void fragment()
{
ALBEDO = isnan(vec2(0,0)).x ? vec3(1.0) : vec3(0.0);
}
Самый полезный комментарий
Спасибо за воспроизводимый отчет об ошибке. Я создал запрос на перенос, который должен исправить эту ошибку.
Я просто хотел сообщить вам, что ваш шейдерный код не будет компилироваться даже с исправлением, потому что isnan (vec2) возвращает логическое значение vec2. Ваш код будет компилироваться, если вы укажете, какой элемент vec2 вы хотите проверить. Например: