إصدار Godot:
3.0.2 أحادي
نظام التشغيل / الجهاز بما في ذلك الإصدار:
كيدي نيون
بطاقة 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 الذي تريد التحقق منه. على سبيل المثال: