চ্যালেঞ্জ: বাইন্ডলেস রে ট্রেসিং – আবিষ্কার করুন

মিরর, মিরর অন দ্য…অন্য আয়না। এই চ্যালেঞ্জে, আমরা আপনাকে মেটাল 3-এ বাইন্ডলেস রেন্ডারিং অন্বেষণ করতে এবং মিরর করা পৃষ্ঠগুলিতে রশ্মি প্রতিফলিত করার জন্য আমন্ত্রণ জানাই।

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

কিন্তু অ্যাপটি যতটা সুন্দরভাবে এই দৃশ্যটি আঁকেছে, এখনও একটি সীমাবদ্ধতা রয়েছে: এটি প্রতিফলন দেখাতে অক্ষম মধ্যে প্রতিফলন, যেমন মিরর করা মেঝে মিরর করা গোলককে প্রতিফলিত করে।

ন্যায্যতা: আয়না প্রতিফলিত আয়না দেখানো কঠিন! আলো অসীমভাবে দুটি পৃষ্ঠের মধ্যে বাউন্স করে, এমন একটি পরিস্থিতি তৈরি করে যা গণনাভাবে সমাধান করা যায় না। রে ট্রেসিং অ্যাপগুলি আরও বাস্তবতা প্রদানের জন্য দৃশ্যে সীমিত সংখ্যক আলো (বা রশ্মি) “বাউন্স” যোগ করে এই সমস্যাটি ঘিরে কাজ করে।

এই চ্যালেঞ্জে, আমরা আপনাকে সেই রে ট্রেসিং কোড প্রসারিত করতে এবং এক (বা একাধিক) অতিরিক্ত রশ্মি বাউন্স যোগ করে আপনার চিত্রের বাস্তবতা বাড়াতে আমন্ত্রণ জানাচ্ছি।

চ্যালেঞ্জ শুরু করুন

আয়নার এই হলটিতে প্রবেশ করার আগে, আমরা প্রথমে “Go bindless with Metal 3” দেখার পরামর্শ দিই। আপনি দেখার পরে, “রে ট্রেসিং ব্যবহার করে রিয়েল টাইমে প্রতিফলন রেন্ডারিং” নমুনা কোড ডাউনলোড করুন — আমরা এই চ্যালেঞ্জের জন্য এটি ব্যবহার করব।


মেটাল 3 দিয়ে বাঁধাহীন যান

আপনি যখন মেটাল 3 এর সাথে বাঁধনহীন হয়ে যান তখন আপনি কীভাবে শক্তিশালী রেন্ডারিং কৌশলগুলি প্রকাশ করতে পারেন তা শিখুন। আর্গুমেন্ট বাফারগুলিকে সরল করে, স্তূপ থেকে ত্বরণ কাঠামো বরাদ্দ করে এবং উন্নতিগুলি থেকে উপকৃত হওয়ার মাধ্যমে আমরা আপনাকে দেখাব কীভাবে আপনার অ্যাপের বাঁধনহীন যাত্রাকে আনন্দময় করে তুলবেন। দ্য…

রে ট্রেসিং ব্যবহার করে রিয়েল টাইমে প্রতিফলন রেন্ডার করা

অ্যাপটিতে একটি ডেডিকেটেড কম্পিউট পাস রয়েছে যা একটি পাতলা জি-বাফার থেকে প্রতিফলন গণনা করে যাতে চিত্রের প্রতিটি পিক্সেলের অবস্থান এবং স্বাভাবিকতা থাকে।

রে ট্রেসিং শেডার এই ডেটা পড়ে এবং প্রতিফলিত রশ্মির দিক নির্ণয় করতে ক্যামেরার ভিউ দিক দিয়ে এটি ব্যবহার করে। তারপরে এটি এই রশ্মিগুলিকে ট্রেস করতে, ছেদ খুঁজে বের করতে এবং ছায়া প্রতিফলন করতে ধাতু ব্যবহার করে।

raytracing::ray r;
r.origin = positions.read(tid).xyz;
r.direction = normalize(directions.read(tid).xyz);
r.min_distance = 0.1;
r.max_distance = FLT_MAX;

raytracing::intersector<raytracing::instancing, raytracing::triangle_data> inter;
inter.assume_geometry_type( raytracing::geometry_type::triangle );
auto intersection = inter.intersect( r, accelerationStructure, 0xFF );
if ( intersection.type == raytracing::intersection_type::triangle )
{
  
}

এটি নিম্নলিখিত চিত্র তৈরি করে:

কিন্তু একটা সমস্যা আছে! ফায়ার ট্রাকগুলি মেঝেতে গোলকের প্রতিফলন থেকে অনুপস্থিত। আমরা আপনাকে রে ট্রেসিং শেডার পরিবর্তন করে হারিয়ে যাওয়া ট্রাকগুলি প্রকাশ করার জন্য চ্যালেঞ্জ জানাই, rtReflectionএকটি অতিরিক্ত রশ্মি ট্রেস ধাপ যোগ করতে.

এই চ্যালেঞ্জটি সম্পূর্ণ করতে, আপনি:

  1. রশ্মির পরবর্তী বাউন্স গণনা করতে প্রতিফলিত স্বাভাবিক এবং ছেদযুক্ত অবস্থান ব্যবহার করুন।
  2. উপাদান শেডিং যুক্তিকে একটি সহায়ক ফাংশনে বের করুন যা আপনাকে প্রতিফলনের মধ্যে প্রতিফলনগুলিকে ছায়া দিতে দেয়।
  3. সমস্ত প্রতিফলিত রং একত্রিত করুন এবং তাদের লিখুন outImage.

আপনার কাজ শেষ হয়ে গেলে, আপনার সমাধান ক্যাপচার করতে স্ক্রিনশট টুল, GPU ডিবাগার বা QuickTime ব্যবহার করুন এবং #WWDC22Challenges হ্যাশট্যাগ সহ টুইটারে পোস্ট করে আপনার কাজ আমাদের দেখান। এবং আপনি যদি বাইন্ডলেস রে ট্রেসিং এবং অন্যান্য গ্রাফিক্স এবং গেমের বিষয় নিয়ে আলোচনা করতে চান, WWDC22-এ সপ্তাহের বাকি অংশে ইভেন্টে দলে যোগ দিন।

সোশ্যাল মিডিয়াতে #WWDC22 চ্যালেঞ্জগুলি অন্বেষণ করুন

WWDC22 চ্যালেঞ্জের নিয়ম ও শর্তাবলী পড়ুন

Leave a Comment