अपवर्तक कांच shader


10

मेरे पास एक अनंत हेक्सागोनल मंजिल है, जो एक टेसेलेशन शॉडर जोड़ी में एक बिंदु ग्रिड tessellating द्वारा उत्पन्न होता है:

यहाँ छवि विवरण दर्ज करें

ध्यान दें कि यह एक फ्लैट वायरफ्रेम है - "छाया" एक प्रकाश चाल है:

यहाँ छवि विवरण दर्ज करें

अब, मैं इसे मोटा, अपवर्तक ग्लास के रूप में प्रदर्शित करना चाहता हूं, लेकिन यह सुनिश्चित करने के लिए अनिश्चित हूं कि कैसे आगे बढ़ना है।

पहली बात जो मन में आई वह है

  1. ब्लॉकों की अनुरोधित "मोटाई" से युक्त एक समान सेट करें
  2. प्रकाश की गणना करते समय, ऑप्टिकल पथ की लंबाई की गणना करने के लिए स्नेल के नियम का उपयोग करें, हेक्स ब्लॉक के माध्यम से एक किरण ले जाएगा, अगर यह वास्तव में "मोटाई" वर्दी के रूप में मोटी होती है, और उस लंबाई पर अल्फा का योग करें। यह पारदर्शिता देगा, लेकिन आंतरिक प्रतिबिंब / टीआईआर, आदि जैसी चीजों को नहीं संभालता है।

यहाँ छवि विवरण दर्ज करें

मैंने अभी तक कोशिश नहीं की है, इसलिए मुझे यकीन नहीं है कि दृश्य परिणाम क्या होगा।

अंत में, इस विशेष स्तर के लिए, मैं उस ग्लास, हेक्सागोनल फ्लोर लुक को ट्रोन में उपयोग करने की कोशिश कर रहा हूं: डिस्क लड़ाई के दौरान विरासत। ( इस छवि को एक उदाहरण के लिए देखें ।)

सुझाव?


1
क्या आप यह बता सकते हैं कि आप क्या हासिल करने की कोशिश कर रहे हैं? ट्रॉन शॉट ज्यादातर प्रतिबिंब दिखाता है, AFAICT, अपवर्तन नहीं - आप वास्तव में अधिकांश शॉट्स में फर्श प्लेटों के माध्यम से नहीं देख सकते हैं। मान लें कि आप एक चमकदार सतह नहीं चाहते हैं, तो आप फर्श के माध्यम से क्या देखना चाहते हैं? क्या कोई सबफ़्लोर बनावट है जिसे आप दिखाना चाहते हैं? क्या फर्श के नीचे एक पूरा दृश्य है (ट्रॉन की तरह)? या क्या आप इसे फ्रॉस्टेड ग्लास की तरह बनाना चाहते हैं जहां आप एक अलग छवि नहीं देख सकते हैं, लेकिन उपसतह प्रकीर्णन प्रभाव है?
नाथन रीड

सब्सक्राइब बिखराव, हालांकि मुझे नहीं पता था कि इसे क्या कहा जाता है। Googling को आसान बनाता है। :)
डीवे

जवाबों:


4

GPU रत्न में यह लेख अपवर्तन के बारे में गहराई से जाता है, जो बहुत अच्छे परिणाम दे सकता है

(ए) पूर्ण पारदर्शिता (बी) अपवर्तक कांच

सबसे बुनियादी अर्थों में

मूल अपवर्तन तकनीक का पहला चरण दृश्य ज्यामिति को एक बनावट में प्रस्तुत करना है, जो सभी अपवर्तक जालों को छोड़ देता है। इस बनावट का उपयोग यह निर्धारित करने के लिए किया जा सकता है कि कौन सी वस्तुएं अपवर्तक वस्तुओं के पीछे दिखाई देती हैं जिन्हें बाद के पास में प्रस्तुत किया जाएगा। हम इस बनावट को एस कहते हैं।

दूसरा कदम अपवर्तक जाल को प्रस्तुत करना है, अपवर्तक रूप को अनुकरण करने के लिए लागू किए गए एक गड़बड़ी के साथ बनावट एस से मूल्यों को देखते हुए। एक सामान्य मैप एन का उपयोग करके गड़बड़ी को प्राप्त किया जा सकता है, जहां सामान्य-मैप लाल और हरे (XY) घटकों का उपयोग किया जाता है और अनुमानित बनावट निर्देशांक में एक विस्थापन को जोड़ने के लिए कुछ छोटे मूल्य द्वारा स्केल किया जाता है। यह दृष्टिकोण एक छायाकार में लागू करने के लिए सीधा है:

  1. बुनावट लाना N
  2. एक छोटे मूल्य (जैसे 0.05) द्वारा स्केल किए गए XY घटकों का उपयोग करें
  3. एस के लिए अनुमानित बनावट निर्देशांक में इस विस्थापन मूल्य जोड़ें

निम्न सूची एक shader दिखाती है जो इस दृष्टिकोण को प्रदर्शित करती है

half4 main(float2 bumpUV : TEXCOORD0,
  float4 screenPos : TEXCOORD1,
  uniform sampler2D tex0,
  uniform sampler2D tex1,
  uniform float4 vScale) : COLOR
{
  // fetch bump texture, unpack from [0..1] to [-1..1]
  half4 bumpTex=2.0 * tex2D(tex0, bumpUV.xy) - 1.0;

  // displace texture coordinates    
  half2 newUV = (screenPos.xy/screenPos.w) + bumpTex.xy * vScale.xy;

  // fetch refraction map
  return tex2D(tex1, newUV);
}

अगली छवियाँ इन तीन चरणों को दर्शाती हैं

ऊपर के shader में सूचीबद्ध तीन चरण

एक ही लेख में अधिक उन्नत तकनीकें हैं जो बहुत अधिक आकर्षक लग सकती हैं


एकता में इसी तरह के प्रभाव के लिए, आप अपवर्तन शेडर विकी पृष्ठ पर एक नज़र डालना चाह सकते हैं


3

मैं इस छवि को एक संदर्भ के रूप में दिखाऊंगा कि मैं कैसे प्रभाव की कल्पना करता हूं। मैं जिस एल्गोरिथ्म के बारे में सोच सकता हूं वह सरल है:

  1. पर्यावरण प्रतिबिंब को अनुकरण करने के लिए एक घन मानचित्र बनावट इन्वर्टर में पर्यावरण को प्रस्तुत करना।
  2. एक विमान में घन मानचित्र बनावट लागू करें जो अपवर्तक तल के नीचे की परत का प्रतिनिधित्व करता है। विमान को अभी तक प्रस्तुत न करें।
  3. एक बनावट, सामान्य 2 डी बनावट में विमान को सौंपें।
  4. अपवर्तक मंजिल को प्रस्तुत करने के लिए इस्तेमाल किया अपवर्तक shader के लिए बनावट पास।
  5. अब अपवर्तक जाल / फर्श को अपवर्तन शेडर के साथ प्रस्तुत करें।

अपवर्तन shader के बारे में, आप कर सकते हैं कांच अनुकरण करने के लिए इनवर्टर

  • प्रतिबिंब और अपवर्तन का अनुकरण करने के लिए फ्रेस्नेल शब्द का उपयोग करें।
  • बनावट लाने के लिए मानदंडों / सामान्य मानचित्र का उपयोग करें।

मैंने सिर्फ विचार के बारे में सोचा, इसलिए मैंने इसका परीक्षण नहीं किया। मुझे यकीन है कि इसे और काम करने की ज़रूरत है, हो सकता है कि मैं एक बार काम से लौटने के बाद करूँगा।


दिलचस्प दृष्टिकोण - मुझे उस एक पर थोड़ा सा स्टू करना होगा। इनपुट के लिए धन्यवाद।
3Dave
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.