আমি এসডিকে থেকে এনভিডিয়া উদাহরণগুলি অধ্যয়ন করছি, বিশেষত দ্বীপ 11 প্রকল্প এবং আমি এইচএলএসএল কোডের একটি অংশ সম্পর্কে উত্সাহী কিছু পেয়েছি যা তরঙ্গটির উচ্চতার অবস্থার উপর নির্ভর করে প্রতিচ্ছবিটিকে উপরে এবং নীচে সংশোধন করে।
স্বাভাবিকভাবেই কোডের সংক্ষিপ্ত অনুচ্ছেদটি পরীক্ষা করার পরে:
// calculating correction that shifts reflection up/down according to water wave Y position
float4 projected_waveheight = mul(float4(input.positionWS.x,input.positionWS.y,input.positionWS.z,1),g_ModelViewProjectionMatrix);
float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w;
projected_waveheight = mul(float4(input.positionWS.x,-0.8,input.positionWS.z,1),g_ModelViewProjectionMatrix);
waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w;
reflection_disturbance.y=max(-0.15,waveheight_correction+reflection_disturbance.y);
আমার প্রথম অনুমানটি ছিল যে এটি প্ল্যানার প্রতিবিম্বের জন্য ক্ষতিপূরণ দেয় যখন এটি উল্লম্ব পার্টলিউটিক্স (তরঙ্গ) এর সাথে সম্পর্কিত হয়, প্রতিবিম্বিত জ্যামিতিটি এমন এক জায়গায় স্থানান্তরিত করে যেখানে কিছু নেই এবং জল কেবল এমনভাবে উপস্থাপিত হয় যেন সেখানে কিছুই নেই বা কেবল আকাশ নেই:
এখন, এটিই আকাশ প্রতিফলিত করছে যেখানে আমাদের এই ভূখণ্ডের সবুজ / ধূসর / হলুদ বর্ণের প্রতিবিম্বটি পানির বেসলাইন দিয়ে উত্থিত হওয়া দেখতে হবে। আমার সমস্যা এখন এটির পিছনে যুক্তি কী তা আমি সত্যিই চিহ্নিত করতে পারি না। তরঙ্গ / জলের জ্যামিতির একটি বিন্দুর প্রকৃত বিশ্ব স্থানের অবস্থানের প্রজেক্ট করা এবং তারপরে কেবল একই পয়েন্টের আরও একটি অভিক্ষেপ গ্রহণের জন্য -5f দ্বারা গুণ করা, এবার তার y স্থানাঙ্কের সাথে পরিবর্তিত হয়ে -0.8 (কেন -0.8?) হয়েছে।
কোডের ক্লুগুলি মনে হয় যে এটি পরীক্ষা এবং ত্রুটির সাথে উদ্ভূত হয়েছে কারণ এখানে অতিরিক্ত কাজ রয়েছে। উদাহরণস্বরূপ, লেখক অনুমিত y স্থানাঙ্কের নেতিবাচক অর্ধেকটি নেবেন (ডাব্লু বিভাজনের পরে):
float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w;
এবং তারপরে দ্বিতীয় পয়েন্টের জন্যও এটিই করা হয় (কেবল ধনাত্মক, কোনও ধরণের পার্থক্য পেতে, আমি মনে করি) এবং সেগুলি একত্রিত করে:
waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w;
2 দ্বারা বিভাজন অপসারণ করে, আমি মানের উন্নতির কোনও পার্থক্য দেখতে পাচ্ছি না (যদি কেউ আমাকে সংশোধন করতে যত্নশীল হন তবে দয়া করে করুন)। এর কর্সটি অনুমিত Y এর পার্থক্য বলে মনে হচ্ছে, তা কেন? এই অপ্রয়োজনীয়তা এবং -8f এবং -0.15f এর আপাতদৃষ্টিতে স্বেচ্ছাসেবী নির্বাচন আমাকে এই সিদ্ধান্তে নিয়ে যায় যে এটি হিউরিস্টিক্স / অনুমানের কাজের সংমিশ্রণ হতে পারে। এটিতে কি কোনও লজিকাল আন্ডারপিনিং রয়েছে নাকি এটি কেবল মরিয়া হ্যাক?
এখানে প্রাথমিক সমস্যার একটি অতিরঞ্জিততা যা কোড টুকরোটি স্থির করে, সর্বনিম্ন পরীক্ষার স্তরে পর্যবেক্ষণ করে। আশা করি, এটি একটি ধারণা ছড়িয়ে দিতে পারে যা আমি মিস করছি। -৮f হতে পারে এমন একটি রেফারেন্স উচ্চতা যা থেকে পরিকল্পনার প্রতিফলিত জ্যামিতি রেন্ডারকে নমুনা গঠনের সমন্বয়কে কতটা বিঘ্নিত করতে হবে তা নির্ধারণ করতে এবং -১৫f হতে পারে নিম্ন সীমা, একটি সুরক্ষা ব্যবস্থা।