إصدار Godot:
الإصدار 3.1.alpha.calinou.5b8dde4
نظام التشغيل / الجهاز بما في ذلك الإصدار:
تم اختبار أجهزة Windows 10 و Android
وصف المشكلة:
لقد كتبت رمز تظليل مخصص ، والذي يجعل الكائن يتلاشى بشكل أساسي عند ارتفاع clip_height. يمكن استخدامه فقط لتصيير الجزء السفلي بنسبة 50٪ من الكائن وما إلى ذلك. يعمل على GLES3 ، ولكن ليس على GLES2.
لقد قمت بإنشاء نموذج مشروع لتوضيح المشكلة.
إليك كيف يبدو على GLES3
وإليك كيف يبدو على GLES2
خطوات التكاثر:
لقد تمكنت من تقسيم المشكلة إلى هذين السطرين من كود التظليل بشكل أساسي:
vec4 world_vertex = camera_matrix * vec4(VERTEX, 1.0);
ALPHA = smoothstep(1, 0, (world_vertex.y - clip_height)/fade_offset);
يتم تمرير مصفوفة الكاميرا من تظليل قمة الرأس. لسوء الحظ ، ليس لدي أي فكرة عن كيفية إجراء مزيد من التحقيق في سبب الخطأ بالضبط.
مشروع التكاثر الأدنى:
AlphaIssue.zip
مسكة جيدة! لقد وجدت الخطأ. إنها مشكلة مع مترجم التظليل gles2. يقوم بتبديل INV_CAMERA_MATRIX
و CAMERA_MATRIX
في الكود المعرّف من قبل المستخدم. سأقدم PR لإصلاح هذا في بضع دقائق. في غضون ذلك ، استخدم INV_CAMERA_MATRIX
في دالة التجزئة إذا كنت تريد استخدام CAMERA_MATRIX
.
التعليق الأكثر فائدة
مسكة جيدة! لقد وجدت الخطأ. إنها مشكلة مع مترجم التظليل gles2. يقوم بتبديل
INV_CAMERA_MATRIX
وCAMERA_MATRIX
في الكود المعرّف من قبل المستخدم. سأقدم PR لإصلاح هذا في بضع دقائق. في غضون ذلك ، استخدمINV_CAMERA_MATRIX
في دالة التجزئة إذا كنت تريد استخدامCAMERA_MATRIX
.