শ্যাডো ম্যাপিং এবং স্বচ্ছ কোয়াডস


10

ছায়া ম্যাপিং শ্যাডো কোথায় আঁকতে হবে তা গণনা করতে গভীরতা বাফার ব্যবহার করে।

আমার সমস্যাটি হ'ল আমি কিছু আধা স্বচ্ছ টেক্সচারযুক্ত কোয়াড ছায়া castালতে চাই - উদাহরণস্বরূপ বিলবোর্ডযুক্ত গাছ। যেহেতু গভীরতার মান কোয়াডের সমস্ত জুড়ে সেট করা হবে এবং কেবল দৃশ্যমান অংশগুলি নয় এটি একটি কোয়াড ছায়া ফেলে দেবে, যা আমি চাই না।

আমি কীভাবে আমার স্বচ্ছ কোয়াডসকে ছায়া ম্যাপিং ব্যবহার করে সঠিক ছায়াগুলি কাস্ট করতে পারি?

উত্তর:


15

আপনার সমস্যাটি 1 বিট আলফা দিয়ে রেন্ডারিংয়ের সমাধান করবে। যার অর্থ আপনি উত্স গঠনের কিছু আলফা উল্লেখ করেছেন যা রেন্ডার হয়নি (বেশিরভাগ 0.5)।

আলো থেকে গভীরতা বাঁচাতে এবং নির্দেশ ব্যবহারের জন্য আপনাকে নিজের শেডার লিখতে হবে discard। বাতিল করা এইচএলএসএল, জিএসএসএল এবং সিজি-তেও বিদ্যমান। এটি কেবল পিক্সেল / ফ্রেগমেন্ট শেডার এবং ব্যাকব্ফার এবং জেড-বাফারে রেন্ডারিং থেকে কুরান্ট খণ্ডগুলিকে বিদ্যমান।

if (texSample.a < 0.5)
   discard;

সুবিধা হ'ল আপনাকে নিজের ২ য় পাসের রেন্ডারিং পরিবর্তন করতে হবে না, কেবল আলোর গভীরতার রেন্ডারিং। এছাড়াও আমি প্রমাণ করেছি যে এটি কাজ করে: 1 বিট আলফা

আপনি যদি একাধিক স্বচ্ছ অবজেক্টের জন্য সঠিক ছায়া রেন্ডার করতে চান তবে আপনাকে গভীরতা পিলিং ব্যবহার করে রেন্ডার করা গভীরতা এবং অস্বচ্ছতার তথ্য সহ একাধিক গভীরতার টেক্সচার ব্যবহার করতে হবে। এবং ধূমপান, চুল ইত্যাদির জন্য গভীর অস্বচ্ছতা বা ফুরিয়ার অস্বচ্ছতা মানচিত্রই সেরা সমাধান (আমি বেশিরভাগ ক্ষেত্রে ফুরিয়ার অস্বচ্ছতার মানচিত্রের প্রস্তাব দিই)

সম্পাদনা: আমি ঠিক বুঝতে পেরেছি যে আমি ক্রেডিট যুক্ত করতে ভুলে গেছি। যথারীতি. গাছের মডেলটি লুপিক্স প্রকল্পের, যা আপনি যদি কিছু লোপপুলি, একটি টেক্সচার এবং উদ্ভিদের ফ্রি মডেলগুলি সন্ধান করেন তবে তা দুর্দান্ত।


6

প্রোগ্রামেবল পাইপলাইনের সাথে আপনার কী তা করা উচিত @ নোটবেইন কীভাবে নির্দেশ দেয়। তবে কোনও শেডার না লিখে ফিক্সড পাইপলাইন দিয়ে কাজ করা সহজ। ওপেনজিএল glAlphaFunc এ যা আপনি চান তা। উদাহরণ স্বরূপ:

glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.5f);

1
ঝরঝরে। আমি স্থির পাইপলাইন ঘৃণা করি। সুতরাং ছায়ার ছায়া ছাড়াই যারা এই জিনিসগুলি করতে পারে তাদের আমি সত্যিই প্রশংসা করি। অবশ্যই +1।
নোটবেইন

@ নোটবেইন অবজ্ঞাত প্রযুক্তি ব্যবহার সম্পর্কে প্রশংসনীয় কোনও কিছুই নেই is
তারা

2

ছায়া মানচিত্রের প্রজন্মের জন্য আপনার একটি কাস্টম শেডার প্রয়োজন, যাতে পিক্সেল / খণ্ডের স্বচ্ছতা আপনি নির্দিষ্ট করা ট্রেসহোল্ডের চেয়ে বেশি হলে আপনি একটি বৈধ অবতরণকারীকে আউটপুট করতে পারেন। এই, গভীরতা মানচিত্র পিক্সেল প্রতি উত্পাদিত হবে প্রতি বহুভুজ প্রতি নয়।


-1

এটি করার একমাত্র উপায়টি হ'ল পৃথক গভীরতার মানচিত্রের টেক্সচার তৈরি করা, গাছগুলিকে এতে রেন্ডারিং করা, গভীরতার জন্য আউটপুট দেওয়া যেখানে আলফা! = 0, অন্যথায় গভীরতা আউটপুট = 1, তারপরে দৃশ্যের ছায়া মানচিত্রের টেক্সচারের সাথে এই ছায়া মানচিত্রের টেক্সচারটি একত্রিত করুন is , যা যথেষ্ট সহজ হতে হবে; কেবল দুটি মানের মধ্যে সবচেয়ে ছোটটি নিন এবং এটি চূড়ান্ত গভীরতার মানচিত্রে সেট করুন।

এটি যদিও মিশ্রিত আদেশগুলি সমাধান করে না; আপনি যদি কোনও আলফা টেক্সচারের পিছনে গভীরতার আউটপুট তৈরি করেন তবে আপনি যখন কোয়াডটির উপর টেক্সচারটি রেন্ডার করবেন তখন এটি ওভাররাইড হয়ে যাবে, সুতরাং এই প্রভাবটি কার্যকর করার জন্য আপনাকে প্রতিটি কোয়াডকে পৃথকভাবে গভীরতার মানচিত্রের টেক্সচারে রেন্ডার করতে হবে ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.