Q100410: कस्टम GLSL में टेक्सचर पास करके रॉ टेक्सचर-लुकअप कॉल कैसे करें

अनुसरण करें

सारांश

Mari के लिए एक कस्टम शेडर, लेयर या नोड एक्सएमएल लिखते समय, कस्टम जीएलएसएल फ़ंक्शंस को एक अलग फ़ाइल में रखना कभी-कभी अधिक सुविधाजनक होता है। यदि आप इन फ़ंक्शंस को एक अलग फ़ाइल में रखना चुनते हैं, तो आपको क्यूबमैप टेक्सचर-लुकअप का उपयोग करने की आवश्यकता होगी जो फ़ंक्शन को अपनी विशेष प्रोसेसिंग चलाने की अनुमति देता है।

यह आलेख बताता है कि Mari में एक रॉ टेक्सचर-लुकअप कॉल कैसे करें, ताकि एक ही कॉल विभिन्न शेडर मोड में और Mari के भविष्य के रिलीज के बीच लगातार काम करे।

अधिक जानकारी

हालाँकि इसे Mari की आधिकारिक विशेषता नहीं माना जाता है, कस्टम शेडर विकसित करते समय, पहले कस्टम नोड की इमेजक्यूब विशेषता से एक सैंपलरक्यूब प्राप्त करना संभव था। इससे, पिछले Mari संस्करणों में, उपयोगकर्ता एक कच्चा बनावट-लुकअप बनाने में सक्षम थे जो जीएलएसएल के बनावट() फ़ंक्शन का उपयोग करता है।

Mari 3.4v1 और 4.1v1 में, Mari के शेडर सिस्टम में आंतरिक सुधारों का मतलब अब यह है कि Mari इसके बजाय बनावट-लुकअप के लिए एक अप्रत्यक्ष चर का उपयोग करती है।

आपको क्या करने की आवश्यकता होगी

इन परिवर्तनों के आसपास काम करने और एक कच्ची बनावट-लुकअप बनाने के लिए, आपको इसकी आवश्यकता होगी:

  1. अपने XML में Texture.glslh शामिल करें
  2. अपने बनावट नमूने को क्यूबमैपटोकन के रूप में घोषित करें
  3. किसी बनावट को उसी तरह देखने के लिए mriTexture() या mriTextureLod() का उपयोग करें जैसे कि GLSL में बनावट() और textureLod() का उपयोग किया जाता है।

डेवलपर उदाहरण

नोड XML फ़ाइल में कॉलर पक्ष पर, कस्टम GLSL फ़ंक्शन पर कॉल नीचे की तरह की जा सकती है:

...
<Attribute Name="Cubemap" PrettyName="Image" Type="imagecube"></Attribute>
...
textureSampleColor = customCubemapLookup( $Cubemap, coords, lod ); 


फिर जीएलएसएल हेडर फ़ाइल में, क्यूबमैपटोकन तर्क लेने वाले कस्टम फ़ंक्शन को इस प्रकार घोषित किया जा सकता है:

//! include | Texture.glslh
vec4 customCubemapLookup(cubemapToken cubemapTexture, vec3 dir, float lod);


इसके अलावा, जीएलएसएल स्रोत कोड फ़ाइल के भीतर, क्यूबमैपटोकन तर्क लेने वाले कस्टम फ़ंक्शन को परिभाषित किया जा सकता है। mriTexture() और mriTextureLod() फ़ंक्शंस का उपयोग वास्तविक बनावट मानों को देखने के लिए किया जा सकता है, जैसे:

#version 150
//! include | Texture.glslh
vec4 customCubemapLookup(cubemapToken token, vec3 coords, float lod)
{
    return mriTextureLod(token, coords, lod);
}

    हम चाहते हैं कि खेद व्यक्त करते हैं

    कृपया हमें बताएँ कि