در گرافیک کامپیوتری، Texture Filtering متدیست برای تعیین رنگ بافتها هنگام نگاشتن پیکسلها در صفحهی نمایش توسط تِکسِلهای نزدیک. هر بافت از تکسلهایی تشکیل شده که پیکسل را بوجود میآورند و پیکسلها، بافت را در عمل سمپلینگ(تغییر رنگ پیکسلها) مینگارند(Texture Mapping). خلاصتا، این متد برای بدست آوردن تصویری دقیقتر و نرمتر، پیکسلهای هر بافت را در هم می آمیزد و برای اینکار، هر تکسل را به پیکسلهای کوچکتر تبدیل میکند.
اصطلاح دیگری که برای تکسچر فـیلترینگ به کار میرود، Texture Smoothing نام دارد. روشهای مختلفی برای تکسچر فـیلترینگ وجود دارد، که هرکدام سادهگی و پیچیدگی و تاثیر و عدم تاثیر خود را داراست.
از آنجا که تکسچر فیلـترینگ برای با دادن مختصات یک نقطه دنبال یک نقطهی دیگر با ارزشهای متناسب با نقاط داده شده میگردد، عملیست بر حسب نقطه یابی.
دلیل فـیلتر کردن
هنگام نگاشتن بافتها، یک "بافت مرجع" به کار میافتد تا بافتهای مرتد از مرکز را پیدا کند. از آنجه که سطح بافتبندی شده ممکن است در یک فاصلهی قراردادی و متغیر باشد(بستگی دارد به زاویه دید بیننده به آن سطح)، هر پیکسل دقیقا به یک تکسل تعبیر نخواهد شد(یعنی امکان دارد از یک پیکسل، تکسلی یافت نشود و یا برای یک پیکسل، دو تکسل پردازش شود).
در این عمل برای حل مشکل فوقالذکر، فیلتـرها وظیفه دارند که بهترین رنگ را برای آن پیکسل نسبت به فاصلهی کانونی آن پیدا کنند تا مشکل به وجود آمده تکسلها رفع شود. در صورت اشتباه در کار این فیـلترها، مشکلاتی از قبیل انسداد بافتها، دندانه دار شدن(درواقع مشکل اصلی یک بافت یعنی آلیاسینگ) و یا معوج شدن بافت اتفاق میافتد.
تطابق یک پیکسل با یک تکسل بستگی به تصویر دارد و نمای نگاه بیننده به سطح بافتدار و همینطور جهت آن نگاه. و برای هریک ازین انواع وضعیت و موقعیتهای مختلف،جهت تکسل سازی راههای متفاوتی لازم است. در یک بافت نگاشته شده به صورت چهارچوب، روی یک سطح چهارچوب(چوبه ها الزاما مربع نیستند و مستطیل نیز میتوانند باشند)، همواره یک پیکسل مساوی است با یک تکسل. درینجا یک تکسل بزرگتر است از یک پیکسل بنابراین مقیاسی مناسب نیز برای حالت مقتضی لازم است. و در حالاتی هم هر پیکسل چندین تکسل را پوشش میدهد، که آن هم مقیاس متفاوتی برای هر پیکسل میخواهد. رابطهای برنامه نویسی(جدا توضیح داده خواهد شد) زیادی مانند OpenGL و DirectX وجود دارند تا شرایط لازمه برای خردسازی و درشتسازی بافت را به برنامه نویس ارائه کنند.
میپمپینگ
میپمپینگ تکنیک استانداردی است که جهت ذخیره کردن کار فیـلترینگ قبل از رندر هنگام خردسازی یا درشتسازی بافت.
هنگام درشتسازی بافت، تعداد تکسلهایی که احتیاج به پیکسل دارند همواره کمتر از 4 است. در خردسازی، همینکه چند ظلعیای که بافت روی آن کشیده شده است، از دید به مقیاس کافی دور شد، امکان دارد به یک پیکسل تقلیل یابد. در این وضعیت پردازش هر تکسل و اطلاعات رنگی آن عملیست سخت. میپمپینگ با "از قبل فـیلتر کردن" بافت، این عمل را آسان میسازد و پیکسلهای آنرا با مقیاسهای مختلف ذخیر میکند. همینکه سطح بافتکشی شده دور میشود، به نسبت فاصله، سطح از قبل فـیلتر شده جایگزین سطح اصلی میشود. مقیاسهای میپمپینگ مرحله بندی شده بوده و مرحله 0 نزدیکترین حالت دیدگان به سطح است و به نسبت هر فاصلهی خاص، مرحله بالاتر میرود.
روشهای فیلتـرینگ
روشهای معمول جهت فیلـترینگ بافت از قرار زیرند:
الحاق دو پیکسل مجاور (Nearest-neighbor Interpolation)
سریعترین روش برای فـیلترینگ، الحاق دو پیکسل مجاور است تا بافت از فاصله متغیر به نظر نرسد. در این روش رنگ هر تکسل در قسمت پررنگتر، به نسبت مقیاس در جهت رنگ تکسل به کار میرود و تکسلهای کنار هم که رنگ نزدیک دارند پیکسل تشکیل میدهند. این متد اگرچه ساده و سریع است اما آلیاسینگ زیادی به همراه دارد.
حالت دیگری هم از روش بالا وجود دارد و آن اضافه کردن میپمپینگ به تکنیک است که از معوج شدن جلوگیری میکند اما از انسداد بافتها خیر.
فـیلتر کردن دوسویه (Bilinear Filtering)
در این روش، چهار تکسل نزدیک به هم در عمل سمپلینگ مورد پیکسل شدن قرار میگیرند، و رنگها با توجه به میانگین وزنی(با توجه به فاصله) با یکدیگر ترکیب میشوند. میپمپینگ نیز در صورت خواست سازنده در این عمل وجود دارد. این عمل انسداد بافتها هنگام بزرگسازی را برطرف میکند اما آلیاسینگ هنوز مانند روش اول وجود دارد.
فیلـتر کردن سهخطی (Trilinear Filtering)
فـیلتر کردن سه خطی بهترین راه برای گریز از مشکل معمول تغییر کیفیت ناگهانی بافت در تغییر مرحله دیدگان میپمپ در حالت فـیلتر کردن دو سویه همراه با میپمپینگ است. فـیلتر کردن سه خطی، این کار را با انجام فـیلترینگ دو سویه روی دو مرحلهی پشت سر هم میپ مپ انجام میدهد، و سپس آنها را با هم الحاق میکند. مسلما اگر مرحله ی میپمپ 0 باشد، این تکنیک به کار نمیرود. همچنین اگر در برنامه، تکنیک دو سویه بدون میپمپینگ به کار رفته باشد از این عمل نمیتوان استفاده کرد.
فیـلتر کردن ناهمسانگرد (Anisotropic Filtering)
این تکنیک بهترین راه برای فـیلتر کردن بافتهاست که در کارتهای گرافیک جدید زیاد از آن استفاده میشود. در این روش از علاوه بر فـیلتر کردن دو سویه، از روش سه خطی نیز استفاده میشود. همچنین روش ناهمسانگرد، محو بودن بافت هنگامی که زاویهی دید مورب است را تصحیح میکند.
اصطلاح دیگری که برای تکسچر فـیلترینگ به کار میرود، Texture Smoothing نام دارد. روشهای مختلفی برای تکسچر فـیلترینگ وجود دارد، که هرکدام سادهگی و پیچیدگی و تاثیر و عدم تاثیر خود را داراست.
از آنجا که تکسچر فیلـترینگ برای با دادن مختصات یک نقطه دنبال یک نقطهی دیگر با ارزشهای متناسب با نقاط داده شده میگردد، عملیست بر حسب نقطه یابی.
دلیل فـیلتر کردن
هنگام نگاشتن بافتها، یک "بافت مرجع" به کار میافتد تا بافتهای مرتد از مرکز را پیدا کند. از آنجه که سطح بافتبندی شده ممکن است در یک فاصلهی قراردادی و متغیر باشد(بستگی دارد به زاویه دید بیننده به آن سطح)، هر پیکسل دقیقا به یک تکسل تعبیر نخواهد شد(یعنی امکان دارد از یک پیکسل، تکسلی یافت نشود و یا برای یک پیکسل، دو تکسل پردازش شود).
در این عمل برای حل مشکل فوقالذکر، فیلتـرها وظیفه دارند که بهترین رنگ را برای آن پیکسل نسبت به فاصلهی کانونی آن پیدا کنند تا مشکل به وجود آمده تکسلها رفع شود. در صورت اشتباه در کار این فیـلترها، مشکلاتی از قبیل انسداد بافتها، دندانه دار شدن(درواقع مشکل اصلی یک بافت یعنی آلیاسینگ) و یا معوج شدن بافت اتفاق میافتد.
تطابق یک پیکسل با یک تکسل بستگی به تصویر دارد و نمای نگاه بیننده به سطح بافتدار و همینطور جهت آن نگاه. و برای هریک ازین انواع وضعیت و موقعیتهای مختلف،جهت تکسل سازی راههای متفاوتی لازم است. در یک بافت نگاشته شده به صورت چهارچوب، روی یک سطح چهارچوب(چوبه ها الزاما مربع نیستند و مستطیل نیز میتوانند باشند)، همواره یک پیکسل مساوی است با یک تکسل. درینجا یک تکسل بزرگتر است از یک پیکسل بنابراین مقیاسی مناسب نیز برای حالت مقتضی لازم است. و در حالاتی هم هر پیکسل چندین تکسل را پوشش میدهد، که آن هم مقیاس متفاوتی برای هر پیکسل میخواهد. رابطهای برنامه نویسی(جدا توضیح داده خواهد شد) زیادی مانند OpenGL و DirectX وجود دارند تا شرایط لازمه برای خردسازی و درشتسازی بافت را به برنامه نویس ارائه کنند.
میپمپینگ
میپمپینگ تکنیک استانداردی است که جهت ذخیره کردن کار فیـلترینگ قبل از رندر هنگام خردسازی یا درشتسازی بافت.
هنگام درشتسازی بافت، تعداد تکسلهایی که احتیاج به پیکسل دارند همواره کمتر از 4 است. در خردسازی، همینکه چند ظلعیای که بافت روی آن کشیده شده است، از دید به مقیاس کافی دور شد، امکان دارد به یک پیکسل تقلیل یابد. در این وضعیت پردازش هر تکسل و اطلاعات رنگی آن عملیست سخت. میپمپینگ با "از قبل فـیلتر کردن" بافت، این عمل را آسان میسازد و پیکسلهای آنرا با مقیاسهای مختلف ذخیر میکند. همینکه سطح بافتکشی شده دور میشود، به نسبت فاصله، سطح از قبل فـیلتر شده جایگزین سطح اصلی میشود. مقیاسهای میپمپینگ مرحله بندی شده بوده و مرحله 0 نزدیکترین حالت دیدگان به سطح است و به نسبت هر فاصلهی خاص، مرحله بالاتر میرود.
روشهای فیلتـرینگ
روشهای معمول جهت فیلـترینگ بافت از قرار زیرند:
الحاق دو پیکسل مجاور (Nearest-neighbor Interpolation)
سریعترین روش برای فـیلترینگ، الحاق دو پیکسل مجاور است تا بافت از فاصله متغیر به نظر نرسد. در این روش رنگ هر تکسل در قسمت پررنگتر، به نسبت مقیاس در جهت رنگ تکسل به کار میرود و تکسلهای کنار هم که رنگ نزدیک دارند پیکسل تشکیل میدهند. این متد اگرچه ساده و سریع است اما آلیاسینگ زیادی به همراه دارد.
حالت دیگری هم از روش بالا وجود دارد و آن اضافه کردن میپمپینگ به تکنیک است که از معوج شدن جلوگیری میکند اما از انسداد بافتها خیر.
فـیلتر کردن دوسویه (Bilinear Filtering)
در این روش، چهار تکسل نزدیک به هم در عمل سمپلینگ مورد پیکسل شدن قرار میگیرند، و رنگها با توجه به میانگین وزنی(با توجه به فاصله) با یکدیگر ترکیب میشوند. میپمپینگ نیز در صورت خواست سازنده در این عمل وجود دارد. این عمل انسداد بافتها هنگام بزرگسازی را برطرف میکند اما آلیاسینگ هنوز مانند روش اول وجود دارد.
فیلـتر کردن سهخطی (Trilinear Filtering)
فـیلتر کردن سه خطی بهترین راه برای گریز از مشکل معمول تغییر کیفیت ناگهانی بافت در تغییر مرحله دیدگان میپمپ در حالت فـیلتر کردن دو سویه همراه با میپمپینگ است. فـیلتر کردن سه خطی، این کار را با انجام فـیلترینگ دو سویه روی دو مرحلهی پشت سر هم میپ مپ انجام میدهد، و سپس آنها را با هم الحاق میکند. مسلما اگر مرحله ی میپمپ 0 باشد، این تکنیک به کار نمیرود. همچنین اگر در برنامه، تکنیک دو سویه بدون میپمپینگ به کار رفته باشد از این عمل نمیتوان استفاده کرد.
فیـلتر کردن ناهمسانگرد (Anisotropic Filtering)
این تکنیک بهترین راه برای فـیلتر کردن بافتهاست که در کارتهای گرافیک جدید زیاد از آن استفاده میشود. در این روش از علاوه بر فـیلتر کردن دو سویه، از روش سه خطی نیز استفاده میشود. همچنین روش ناهمسانگرد، محو بودن بافت هنگامی که زاویهی دید مورب است را تصحیح میکند.