रैंप शेडिंग या लाइटिंग क्या है और यह कैसे काम करता है? क्या यह टॉन शेडिंग से अलग है या यह एक ही अवधारणा है? रैंप शेडिंग बनाम ब्लिन-फोंग या लैम्बर्ट के लिए स्पेक्युलैरिटी की अलग-अलग गणना कैसे की जाती है?
रैंप शेडिंग या लाइटिंग क्या है और यह कैसे काम करता है? क्या यह टॉन शेडिंग से अलग है या यह एक ही अवधारणा है? रैंप शेडिंग बनाम ब्लिन-फोंग या लैम्बर्ट के लिए स्पेक्युलैरिटी की अलग-अलग गणना कैसे की जाती है?
जवाबों:
पारंपरिक ब्लाइन / फोंग शेडिंग में, आप सतह पर सामान्य और प्रकाश की दिशा के बीच कोण के कोसाइन को मापकर पिक्सेल के लिए फैलाना शब्द की गणना करते हैं। तो, इस मामले में, एक साधारण shader कुछ इस तरह दिखेगा:
float DiffuseCoeff(in float3 pos, in float3 normal, in float3 lightPos) {
float3 lightDir = lightPos - pos;
lightDir.normalize();
return max(0.0, Dot(lightDir, normal));
}
रैंप शेडिंग में, विचार 1D लुकअप टेक्सचर द्वारा डिफ्यूज़ गुणांक को संशोधित करना है। इस बनावट में आप जो डालते हैं उसके आधार पर आप विभिन्न प्रभाव उत्पन्न कर सकते हैं। इसलिए, फैलाने वाले गुणांक की गणना करने के लिए हमारा शेडर फ़ंक्शन:
texture1D rampTex;
float DiffuseCoeff(in float3 pos, in float3 normal, in float3 lightPos) {
float3 lightDir = lightPos - pos;
lightDir.normalize();
// Map value from [-1, 1] to [0, 1]
float rampCoord = Dot(lightDir, normal) * 0.5 + 0.5;
return tex1D(rampTex, rampCoord);
}
उदाहरण के लिए, यदि हम एक सेल शेडर को लागू करना चाहते हैं, तो हम जो कर सकते हैं वह एक रैंप बनावट उत्पन्न करता है जो एक कदम समारोह का अनुकरण करता है:
आप एक ही विचार का उपयोग कर सकते हैं स्पेक्युलर लाइटिंग के लिए अलग-अलग प्रभाव उत्पन्न करते हैं। "रैंप" वास्तव में केवल बनावट द्वारा छायांकन मूल्य को संशोधित करने के विचार को संदर्भित करता है।
संपादित करें : टीम फोर्ट 2 उनके रेंडरिंग में एक रैंप शेडर का उपयोग करता है। आप इस पत्र में विवरण देख सकते हैं:
http://www.valvesoftware.com/publications/2007/NPAR07_IllustrativeRenderingInTeamFortress2.pdf
धारा 5 के तहत, "डिफ्यूज़ वॉरपिंग फंक्शन" शीर्षक से देखें।