পরোক্ষ আলোর অবদানের গণনা করার সময় কোসাইন ওজনযুক্ত গোলার্ধের স্যাম্পলিংয়ে এখনও NdotL দরকার হয়?


12

ইউনিফার গোলার্ধের নমুনা থেকে কোসাইন ওয়েটেড গোলার্ধের নমুনায় রূপান্তর করার সময় আমি একটি নিবন্ধের একটি বিবৃতিতে বিভ্রান্ত হয়েছি।

আমার বর্তমান পরোক্ষ অবদান হিসাবে গণনা করা হয়:

Vec3 RayDir = UniformGenerator.Next()
Color3 indirectDiffuse = Normal.dot(RayDir) * castRay(Origin, RayDir)

যেখানে ডট পণ্য কোস (θ)

তবে আরও ভাল স্যাম্পলিং সম্পর্কিত এই নিবন্ধে ( http://www.rorydriscoll.com/2009/01/07/better-sampling/ ) লেখক পিডিএফ (কোস (θ) / পিআই) পরামর্শ দিয়েছেন এবং এর কোনও প্রমাণ নেই এন ডট এল গণনা।

আমার প্রশ্নটি হল - এর অর্থ কি এই যে পিডিএফটিতে অন্তর্ভুক্ত হওয়ার কারণে আমার আর সাধারণ ডট রেডাইরেশন করার দরকার নেই, বা এটি পিডিএফ ছাড়াও?

উত্তর:


12

আপনার অবশ্যই সর্বদা কোসাইন শব্দটি দ্বারা গুণিত করা উচিত (এটি রেন্ডারিং সমীকরণের অংশ)। যদিও আপনি রে-ট্রেসিং এবং এভাবে মন্টে-ক্যারল ইন্টিগ্রেশন (যা এই ক্ষেত্রে সর্বাধিক সাধারণ কৌশল) ব্যবহার করে অপ্রত্যক্ষভাবে ছড়িয়ে পড়ে, আপনার পিডিএফ দ্বারা প্রতিটি নমুনার অবদানকে ভাগ করতে হবে । এটি এখানে ভাল নমুনা দেওয়া হয়

আরও উল্লেখ করুন যে উল্লিখিত রেফারেন্সে, পিডিএফের শর্তাদি যদি আপনি রেন্ডারিং সমীকরণগুলিতেও পান তবে আপনি যদি এই শর্তগুলি বাতিল করে চান তবে কোডটি অনুকূলিত করতে পারবেন।

ভুলে যাবেন না যে একটি বিচ্ছুরিত পৃষ্ঠের বিআরডিএফ ρ / π যেখানে ρ পৃষ্ঠের আলবেডোর জন্য দাঁড়িয়ে। সুতরাং আমাদের ফলাফলটি by দ্বারা ভাগ করতে হবে π যদিও পরোক্ষ ছড়িয়ে পড়া উপাদানগুলির ক্ষেত্রে, ভুলে যাবেন না যে আমাদের কাস্টরয়ের ফলাফলটি এলোমেলো ভেরিয়েবলের পিডিএফ দ্বারা ভাগ করা উচিত ছিল, যা আমরা এই অধ্যায়ে আগে দেখিয়েছি 1 / (2π)। অপ্রত্যক্ষভাবে ডিফুসেবি 1 / (2π) ভাগ করে এই মানটিকে 2π দিয়ে গুণক করার সমান π এবং যেহেতু আলবেদোটিও বিভক্ত π আমরা কোডটি সহজ করতে পারি ...

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

(গুলি(θ))পিডিএফ=(গুলি(θ))গুলি(θ)π=


1
ধন্যবাদ! এটা বোধগম্য. স্বজ্ঞাতভাবে আমি জানতাম এটি প্রয়োজনীয় ছিল তবে আমি বুঝতে পারি নি যে এটি একটি অপ্টিমাইজেশন was
স্টিভেন

5
এটি কেবল সুস্পষ্ট তা নিশ্চিত করার জন্য .. কেবলমাত্র কোসাইন ওয়েট গোলার্ধটিই একটি অপ্টিমাইজেশন নয় কারণ এটি কম নির্দেশনা নেয়, এটি একটি অপ্টিমাইজেশন কারণ এটি আরও দ্রুত রূপান্তরিত করে। আরও ভাল ফলাফল পেতে কম নমুনা লাগে। এটি গুরুত্বের নমুনার একধরণের।
অ্যালান ওল্ফ

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