Godot: GLES2 خطأ في رمز تظليل مخصص للتلاشي ساري المفعول

تم إنشاؤها على ٣٠ نوفمبر ٢٠١٨  ·  1تعليق  ·  مصدر: godotengine/godot

إصدار Godot:
الإصدار 3.1.alpha.calinou.5b8dde4

نظام التشغيل / الجهاز بما في ذلك الإصدار:
تم اختبار أجهزة Windows 10 و Android

وصف المشكلة:
لقد كتبت رمز تظليل مخصص ، والذي يجعل الكائن يتلاشى بشكل أساسي عند ارتفاع clip_height. يمكن استخدامه فقط لتصيير الجزء السفلي بنسبة 50٪ من الكائن وما إلى ذلك. يعمل على GLES3 ، ولكن ليس على GLES2.

لقد قمت بإنشاء نموذج مشروع لتوضيح المشكلة.
إليك كيف يبدو على GLES3
gles3

وإليك كيف يبدو على GLES2
gles2

خطوات التكاثر:
لقد تمكنت من تقسيم المشكلة إلى هذين السطرين من كود التظليل بشكل أساسي:

    vec4 world_vertex = camera_matrix * vec4(VERTEX, 1.0);

    ALPHA = smoothstep(1, 0,  (world_vertex.y - clip_height)/fade_offset);

يتم تمرير مصفوفة الكاميرا من تظليل قمة الرأس. لسوء الحظ ، ليس لدي أي فكرة عن كيفية إجراء مزيد من التحقيق في سبب الخطأ بالضبط.

مشروع التكاثر الأدنى:
AlphaIssue.zip

bug rendering

التعليق الأكثر فائدة

مسكة جيدة! لقد وجدت الخطأ. إنها مشكلة مع مترجم التظليل gles2. يقوم بتبديل INV_CAMERA_MATRIX و CAMERA_MATRIX في الكود المعرّف من قبل المستخدم. سأقدم PR لإصلاح هذا في بضع دقائق. في غضون ذلك ، استخدم INV_CAMERA_MATRIX في دالة التجزئة إذا كنت تريد استخدام CAMERA_MATRIX .

>كل التعليقات

مسكة جيدة! لقد وجدت الخطأ. إنها مشكلة مع مترجم التظليل gles2. يقوم بتبديل INV_CAMERA_MATRIX و CAMERA_MATRIX في الكود المعرّف من قبل المستخدم. سأقدم PR لإصلاح هذا في بضع دقائق. في غضون ذلك ، استخدم INV_CAMERA_MATRIX في دالة التجزئة إذا كنت تريد استخدام CAMERA_MATRIX .

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات