আধুনিক জিপিইউগুলিতে কীভাবে অ্যানিসোট্রপিক ফিল্টারিং সাধারণত প্রয়োগ করা হয়?


14

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

শারীরিক ভিত্তিক রেন্ডারিংয়ের জন্য উপস্থাপনের আনুমানিক মডেলগুলির নোটগুলিতে চিত্রিত টেস্টগুলির দ্বারা প্রস্তাবিত হিসাবে বিভিন্ন প্রয়োগগুলি রয়েছে বলে মনে হয় : এখানে চিত্র বর্ণনা লিখুন

অ্যানিসোট্রপিক ফিল্টারিং ব্যবহার করার সময় সঠিক এমআইপি স্তরটি চয়ন করতে (আধুনিক) জিপিইউ দ্বারা সম্পাদিত কংক্রিট গণনাগুলি কী কী?


3
জন্য অনুমানটি GL_EXT_texture_filter_anisotropicখুব বিস্তারিত। সম্ভবত এটি আপনাকে প্রক্রিয়াটি আরও ভালভাবে বুঝতে সহায়তা করতে পারে।
গ্ল্যাম্পার্ট

উত্তর:


14

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

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

আরও পঠনের জন্য, আপনি EXT_text_filter_anisotropic ওপেনএল এক্সটেনশনের স্পেসিফিকেশনটি একবার দেখে নিতে পারেন । এটি নমুনাগুলি গণনা করতে ব্যবহৃত সূত্রগুলি এবং অ্যানিসোট্রপিক ফিল্টারিং ব্যবহার করার সময় কীভাবে তাদের একত্রিত করা যায় সে সম্পর্কে বিশদ বর্ণনা করে।


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

1
"এটি এএফ ব্যবহার করার সময় টেক্সচারের ব্যবহারের প্রয়োজনীয়তা বৃদ্ধি না করে কেবল যা ব্যান্ডউইদথ দেয় তা উল্লেখ করে যাচাই করা যেতে পারে।" খুনি যুক্তি ভাল উত্তর!
ডেভিড কুড়ি

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

@ সিমোনএফ এছাড়াও আমরা যুক্ত করতে পারি যে অতিরিক্ত ব্যান্ডউইথের প্রয়োজনটি খুব ভয়ঙ্কর।
v.oddou

9

এপিআই প্রয়োজনীয়তা কোনও চশমা বা এক্সটেনশনের মধ্যে পাওয়া যায়। এখানে একটি: https://www.opengl.org/registry/specs/EXT/texture_filter_anisotropic.txt

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

অনুমান থেকে উদ্ধৃতি:

 Anisotropic texture filtering substantially changes Section 3.8.5.
 Previously a single scale factor P was determined based on the
 pixel's projection into texture space.  Now two scale factors,
 Px and Py, are computed.

   Px = sqrt(dudx^2 + dvdx^2)
   Py = sqrt(dudy^2 + dvdy^2)

   Pmax = max(Px,Py)
   Pmin = min(Px,Py)

   N = min(ceil(Pmax/Pmin),maxAniso)
   Lamda' = log2(Pmax/N)

 where maxAniso is the smaller of the texture's value of
 TEXTURE_MAX_ANISOTROPY_EXT or the implementation-defined value of
 MAX_TEXTURE_MAX_ANISOTROPY_EXT.

 It is acceptable for implementation to round 'N' up to the nearest
 supported sampling rate.  For example an implementation may only
 support power-of-two sampling rates.

 It is also acceptable for an implementation to approximate the ideal
 functions Px and Py with functions Fx and Fy subject to the following
 conditions:

   1.  Fx is continuous and monotonically increasing in |du/dx| and |dv/dx|.
       Fy is continuous and monotonically increasing in |du/dy| and |dv/dy|.

   2.  max(|du/dx|,|dv/dx|} <= Fx <= |du/dx| + |dv/dx|.
       max(|du/dy|,|dv/dy|} <= Fy <= |du/dy| + |dv/dy|.

 Instead of a single sample, Tau, at (u,v,Lamda), 'N' locations in the mipmap
 at LOD Lamda, are sampled within the texture footprint of the pixel.

 Instead of a single sample, Tau, at (u,v,lambda), 'N' locations in
 the mipmap at LOD Lamda are sampled within the texture footprint of
 the pixel.  This sum TauAniso is defined using the single sample Tau.
 When the texture's value of TEXTURE_MAX_ANISOTROPHY_EXT is greater
 than 1.0, use TauAniso instead of Tau to determine the fragment's
 texture value.

                i=N
                ---
 TauAniso = 1/N \ Tau(u(x - 1/2 + i/(N+1), y), v(x - 1/2 + i/(N+1), y)),  Px > Py
                /
                ---
                i=1

                i=N
                ---
 TauAniso = 1/N \ Tau(u(x, y - 1/2 + i/(N+1)), v(x, y - 1/2 + i/(N+1))),  Py >= Px
                /
                ---
                i=1


 It is acceptable to approximate the u and v functions with equally spaced
 samples in texture space at LOD Lamda:

                i=N
                ---
 TauAniso = 1/N \ Tau(u(x,y)+dudx(i/(N+1)-1/2), v(x,y)+dvdx(i/(N+1)-1/2)), Px > Py
                /
                ---
                i=1

                i=N
                ---
 TauAniso = 1/N \ Tau(u(x,y)+dudy(i/(N+1)-1/2), v(x,y)+dvdy(i/(N+1)-1/2)), Py >= Px
                /
                ---
                i=1 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.