স্ক্রিন স্পেস ডেরাইভেটিভ কি এবং আমি কখন সেগুলি ব্যবহার করব?


12

আমি ddxএবং ddyglsl ফাংশন দেখতে পাচ্ছি এবং hlsl সমতুল্য এখন এবং তারপরে শেডার কোডে আসে। আমি বর্তমানে এগুলিকে ট্যানজেন্ট বা বিট্যানজেন্ট ছাড়াই বাম্প ম্যাপিং করতে ব্যবহার করছি তবে আমি মূলত কোডটি কপি-পেস্ট করেছি। আমি বুঝতে পারি না যে এই ফাংশনগুলি আসলে কী, তারা কী করে এবং আমি কখন সেগুলি ব্যবহার করব।

তাই প্রশ্ন:

  1. স্ক্রিনস্পেস ডেরাইভেটিভস ফাংশন কি?
  2. এই ফাংশনগুলি কী করে? ইনপুট মান এবং আউটপুট মান
  3. তারা সাধারণত কোন প্রভাবগুলির জন্য ব্যবহার করা হয়?
  4. কোন ধরণের প্রভাবগুলির জন্য এই ফাংশনগুলির দিকে নজর রাখা দরকার?

অতীতে আমি এইগুলি টেক্সচার ওয়ার্পগুলির জন্য ব্যবহার করেছি, যেখানে ওয়ার্পের ফলে কিছু ভুল অংশের জন্য ভুল মিশেললেভ নির্বাচন করা যেতে পারে; সাধারণত একটি নিম্ন মাইপ্লেভেল, যাতে আপনি টেক্সচারটি খুব দৃশ্যমানভাবে বিশ্লেষণের সাথে বিশদভাবে স্থানান্তরিত করতে দেখতে পেলেন it আনওয়ার্ডেড টেক্সকর্ডারগুলির ডেরিভেটিভগুলি গ্রহণ করা, তারপরে ওয়ার্প গণনা করা, তারপরে টুকরো টুকরোর্ড এবং ডেরাইভেটিভগুলির সাথে টেক্সট 2 ডিগ্রাড / স্যাম্পলগ্র্যাড / টেক্সচারগ্রাড ব্যবহার করে এটি ঘটতে বাধা দেয়।
ম্যাক্সিমাস মিনিমাস

@ লেক্টটেডু মেরডে - টেক্সচার ওয়ারপস কী? একটি দ্রুত গুগল আপনাকে মোড়কে বোঝানোর পরামর্শ দেয়?
নিউমারআরকানা

না, আমি ওয়ার্পসকে বোঝাতে চাইছি , সময়ের সাথে সাথে টেক্সচারের সমন্বয়গুলি পরিবর্তন করে জমিনকে বিকৃত করা।
ম্যাক্সিমাস মিনিমাস

এই সম্পর্কিত প্রশ্ন দেখুন । আমি মনে করি না এটি যদিও এটি বেশ সদৃশ, তবে যেহেতু লিঙ্কযুক্ত প্রশ্নটি এই উচ্চতর স্তরের পরিবর্তে এই ফাংশনগুলি কীভাবে কাজ করে / কীভাবে তা গণনা করা হয় সে সম্পর্কে আরও জিজ্ঞাসা করছে "এটি কী এবং এটি কীসের পক্ষে ভাল?"
ডিএমগ্রিগরি

হ্যালো আমি এতে খুব আগ্রহী আমি বর্তমানে এগুলিকে ট্যানজেন্ট বা বিটেনজেন্ট ছাড়াই বাম্প ম্যাপিং করতে ব্যবহার করছি তবে আমি মূলত কোডটি কপি-পেস্ট করেছি। ... আমি এটির জন্য এটি ব্যবহার করার বিষয়ে ভাবছিলাম ... তবে আমি জানি না কীভাবে কিছু সস্তা লিনিয়ার বীজগণিত ব্যবহার করে এই স্ক্রিন-স্পেস ডেরিভেটিভকে বিশ্ব-স্থানের সাধারণগুলিতে রূপান্তর করা যায়। সম্ভবত আমার ক্যামেরা প্রজেকশন ম্যাট্রিক্সের বিপরীত দরকার।
প্রোকপ হাপালা

উত্তর:


12

প্রথমত, এটি জানতে সহায়তা করে যে জিপিইউগুলি সর্বদা একসাথে 2x2 ব্লক পিক্সেলের ব্লগ / পিক্সেল শেডারগুলি মূল্যায়ন করে। (এমনকি যদি কেবলমাত্র এই পিক্সেলগুলির মধ্যে কয়েকটি আঁকতে হবে তবে অন্যরা বহুভুজের বাইরে বা অবরুদ্ধ - অনির্বাণিত টুকরোগুলি শেষে লেখা হওয়ার পরিবর্তে মুখোশযুক্ত)।

একটি রাস্টারযুক্ত ত্রিভুজটিতে ডেরাইভেটিভগুলি চিত্রিত করে ডায়াগ্রাম

আপনার শেডারের একটি পরিবর্তনশীল (বা অভিব্যক্তি) এর স্ক্রিনস্পেস ডেরাইভেটিভ হ'ল এই 2x2 পিক্সেল কোয়াডের অন্য দিক থেকে অন্য দিকে (কোডের সেই বিন্দুতে) vএর মানের পার্থক্য v। অর্থাত। ddxমান vবিয়োগ অধিকার পিক্সেল এর মান vবাঁদিকের, এবং একইভাবে জন্য ddyউল্লম্ব উপর।

এটির উত্তর " vআমরা পর্দা জুড়ে অনুভূমিকভাবে (ডিডিএক্স) বা উল্লম্বভাবে (ডিডি) সরে যাওয়ার সাথে সাথে কত দ্রুত বৃদ্ধি বা হ্রাস পায়?" - যেমন। ক্যালকুলাস শর্তে, এটি আপনার পরিবর্তনশীলের আংশিক ডেরাইভেটিভগুলির সমান করে (আনুমানিক কারণ এটি কার্যের অনন্য আচরণের গাণিতিকভাবে মূল্যায়ন না করে প্রতিটি খণ্ডে পৃথক নমুনা ব্যবহার করে)

স্কেলারের পরিমাণের জন্য, আমরা এটিকে গ্রেডিয়েন্ট ভেক্টর হিসাবেও দেখতে পারি ∇v = float2(ddx(v), ddy(v))যা স্ক্রিনস্পেসের দিকের দিকে নির্দেশ করে যেখানে vখুব দ্রুত বাড়ছে।

এই ধরণের তথ্য প্রায়শই অভ্যন্তরীণভাবে অভ্যন্তরীণভাবে টেক্সচার লকআপগুলির জন্য উপযুক্ত মিপম্যাপ বা অ্যানিসোট্রপিক ফিল্টারিং কার্নেল নির্বাচন করতে ব্যবহৃত হয় । উদাহরণস্বরূপ, যদি আমার ক্যামেরাটি uvটেক্সচার্ড ফ্লোর বিমানের উল্লম্ব দিকের সাথে প্রায় সমান্তরাল দেখায় , ddy(uv.y)তুলনায় খুব বড় হবে ddx(uv.x)(যেহেতু উল্লম্ব অক্ষটি পর্দার উপর পূর্বাভাসিত - একটি পিক্সেল স্ট্রাইড উল্লম্বভাবে টেক্সচার স্পেসের দীর্ঘ প্রসারিত করে), যা টেক্সচার স্যাম্পলিং হার্ডওয়্যারকে বলে যে আমার নকশাকৃত চিত্রগুলি এড়ানোর জন্য অনুভূমিকের চেয়ে উল্লম্ব টেক্সচারের দিকটি আরও ঝাপসা করার জন্য অ্যানিসোট্রপিক ফিল্টারিং দরকার।

সর্বাধিক সাধারণ প্রভাবগুলির জন্য আপনাকে এই ডেরাইভেটিভগুলি ব্যবহার করার দরকার নেই, যেহেতু বেসিক 2D টেক্সচার স্যাম্পলিং পদ্ধতিগুলি এটি আপনার জন্য পরিচালনা করে। উপরোক্ত একটি মন্তব্যে লে কম্তে ডু মের্দে-ফু যেমন উল্লেখ করেছেন, আপনি যখন নিজের টেক্সচারের অনুসন্ধানগুলি বিকৃত করছেন তখন আপনাকে হার্ডওয়্যারকে উপযুক্ত ফিল্টারিং নির্বাচন করতে সহায়তা করতে (যেমন: এর মাধ্যমে) ম্যানুয়ালি ব্যবহার করতে পর্দা স্পেস ডেরাইভেটিভগুলি ব্যবহার করতে হবে এবং ম্যাসেজ করতে হবে use tex2Dlodএইচএলএসএল)

স্ক্রিনস্পেস ডিকালগুলি এরকম একটি কেস, যেখানে একটি মাত্র 2x2 ব্লক গণনা করা জমিনের সমন্বয়ে বড় লাফের বিচ্ছিন্নতা coverেকে দিতে পারে, যদি আপনি সিস্টেমটিকে ফিল্টারিং স্তরটি নির্বিচারে গণনা করতে দেন তবে একটি গন্ধযুক্ত বা অ্যালিজেড প্রান্তের দিকে নিয়ে যায়। এই নিবন্ধটি এই নিদর্শন সম্পর্কে বিশদে যায় এবং এটি প্রশমিত করার জন্য পন্থা

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

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

জার্নিতে বালু রেন্ডারিং সম্পর্কে এই আলোচনায় স্পিকার উল্লেখ করেছেন যে তারা এই ঝুঁকিপূর্ণ বালিটি কীভাবে ঝাঁকুনির ধার দিয়ে বজায় রেখেছিল তা নিয়ন্ত্রণ করতে ব্যবহার করতে পারত ... যদি তারা সেসময়ে তাদের সম্পর্কে জানতে পারত (পরিবর্তে তারা মিপম্যাপিং ট্রিক ব্যবহার করেছিল, যা হুডের নীচে এই ধরণের ডেরাইভেটিভস দ্বারা চালিত)

সচেতন হওয়ার জন্য একটি সর্বশেষ নোট: স্ক্রিনস্পেস ডেরাইভেটিভগুলি "মোটা" / নিম্ন নির্ভুলতার সাথে গণনা করা যায় (যার অর্থ ডেরিভেটিভসের একজোড়া পুরো কোয়াড দ্বারা ভাগ করা হয়) বা "সূক্ষ্ম" / উচ্চ নির্ভুলতা (যার অর্থ প্রতিটি পিক্সেল কেবল তার তাত্ক্ষণিকের সাথে তুলনা করা হয়) কোয়াডের প্রতিবেশীরা, যা কোয়াডের উপরে চারটি স্বতন্ত্র ডেরিভেটিভ জুটি দিতে পারে)। মোটা মোটামুটি প্রচুর পরিমাণে, তবে আপনি যদি দেখেন যে আপনি আপনার প্রভাবটিতে 2x2 ব্লক দৃশ্যমান হয়ে উঠছেন তবে এটি সূক্ষ্ম / উচ্চ নির্ভুলতায় স্যুইচ করতে চান এমন একটি ভাল সূত্র। ;)

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


আপনি যখন বলছেন যে এটি 2x2 ব্লকের একপাশ থেকে অন্য দিকে পিক্সেলের মধ্যে পার্থক্য, তখন এটি পিক্সেলের মান বা টেক্সেলের অবস্থানের পার্থক্য? যদি এটির মূল্যের পার্থক্য হয়, তবে এটির মধ্যে কোনও কিছুতে টেক্সেলগুলি যোগ করা যায়?
নিউমারআরকানা

এটি আর্গুমেন্টের মান ( vএখানে) এর মধ্যে পার্থক্য এবং এটি যেহেতু এটি 2x2 কোয়াড, এর মধ্যে কোনও পিক্সেল নেই। সুতরাং, আমরা যদি কোয়াডের উপরের-বাম খণ্ডটি ছায়া দিচ্ছি এবং সেখানে = = 1 এবং উপরের-ডান টুকরা v = 4, তখন ddx (v) = 3 (বলছি "v" 3 দিয়ে বাড়বে বাম থেকে ডান ")
ডিএমগ্রিগরি

আমি এখনও বেশ বুঝতে পারি না। আমি যদি কোন কোণে দেখছি তবে 2x2 ব্লকটি টেক্সচারে পাশাপাশি পিক্সেল দিয়ে তৈরি করা যাবে না। সুতরাং মানগুলির মধ্যে পার্থক্য, এটি কি দুটি নির্বাচিত টেক্সটগুলির মধ্যে পার্থক্য, বা দুটি বাছাই করা টেক্সটগুলির মধ্যে পার্থক্যটি বাদ দেওয়া বিষয়গুলি বিবেচনায় রেখে?
নিউমারআরকানা

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

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