تظليل جزء العين الفضاء بلا مقياس عمق التنسيق
-
01-10-2019 - |
سؤال
أحاول استخدام بلا مقياس (المسافة الحقيقية من الجبهة لقطة الطائرة) المسافة إلى الكائنات في المشهد في GLSL تظليل جزء.على gl_FragCoord.قيمة z هي أصغر مما كنت تتوقع.في vertex shader, أنا فقط استخدام ftransform() لتعيين gl_Position.أنا أرى القيم بين 2 و 3 عند أتوقع لها أن تكون بين 15 و 20.
كيف يمكنني الحصول على العين الحقيقية الفضاء العميق ؟ وذلك بفضل!
المحلول
تمرير ما تريد إلى أسفل كما متفاوتة من vertex shader.
قيمة Z المتاحة في تظليل جزء قد ذهب من خلال التطبيع على z-قرب/z-الآن (من مصفوفة الإسقاط) ، DepthRange.لذلك فمن غير مباشرة ما كنت بعد.عمليا, قد تتمكن من محاولة لإعادة بنائه قبل العودة مختلف OpenGL العمليات على ض أن يحدث بعد vertex shader, لكنه على الأرجح المزيد من المتاعب (بدءا من حقيقة أن العودة مصفوفة الإسقاط هو غير الخطية) من تمرير ما تريده بالضبط.
كملاحظة جانبية, Z سيكون لك حساب مع gl_ModelViewMatrix * gl_Vertex
هو Z من وجهة نظر وليس قرب-Z الطائرة.