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

सारांश

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

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

अधिक जानकारी

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

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

आपको क्या करना होगा

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

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

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

नोड XML फ़ाइल में कॉलर की ओर, कस्टम GLSL फ़ंक्शन को कॉल नीचे दिए अनुसार किया जा सकता है:

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


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

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


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

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



आगे की सहायता

यदि आपको कोई कठिनाई आ रही है तो कृपया एक सहायता टिकट बनाएं और हमें इस आलेख में मांगी गई जानकारी प्रदान करें:
Q100090: Mari समस्या की रिपोर्ट करते समय सहायता को भेजने के लिए जानकारी

समर्थन टिकट खोलने के तरीके के बारे में अधिक जानकारी के लिए, कृपया इस लेख को देखें:
Q100064: समर्थन टिकट कैसे जारी करें

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

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