Кіріспе

Компьютерлік графикада текстуралық карталанған пикселдің текстуралық түсін анықтау әдісі. Компьютерлік графикада текстуралық сүзгілеу немесе текстуралық тегістеу – жақын орналасқан текселдердің (яғни, текстураның пикселдерінің) түстерін пайдаланып, текстуралық карталанған пикселдің текстуралық түсін анықтауға қолданылатын әдіс. Сүзгілеу – текстураның әртүрлі пішіндерде, өлшемдерде, бұрыштарда және масштабтарда қалай қолданылатынын сипаттайды. Таңдалған сүзгі алгоритміне байланысты нәтиже әртүрлі деңгейде бұлыңғырлықты, егжей-тегжейлілікті, кеңістіктік алиасингті, уақытша алиасингті және блоктануды көрсетеді. Қажет жағдайға қарай, сүзгілеу бағдарламалық қамтамасызда (мысалы, бағдарламалық рендеринг пакеті) немесе аппараттық қамтамасызда, мысалы, нақты уақыт режимінде немесе GPU үдетілген рендеринг схемаларымен, немесе олардың аралас комбинациясында орындалуы мүмкін. Көптеген кең таралған интерактивті графикалық қолданбалар үшін, қазіргі заманғы текстуралық сүзгілеу арнайы аппараттық құралдармен жүзеге асырылады, ол жад кэшін пайдалану және алдын ала жүктеу арқылы жадқа қол жеткізуді оңтайландырады және пайдаланушы мен әзірлеушіге қол жетімді алгоритмдерді ұсынады. Текстуралық сүзгілердің екі негізгі категориясы бар: үлкейту сүзгісі және кішірейту сүзгісі. Бұл жадтың сақталу тізбектілігі үшін де өте маңызды, әйтпесе алыс текстуралардан үлгі алу кезінде жадқа қол жеткізу үлгісі өте нашар локалдылықты көрсетеді, тіпті сүзгілеу орындалмаса да, өнімділікке кері әсер етеді. Текстураны үлкейту кезінде, кез келген пиксел үшін іздеу қажет текселдердің саны әрқашан төрттен кем немесе тең болады; бірақ кішірейту кезінде, текстураланған көпбұрыш алысқа жылған сайын, бүкіл текстура бір пикселге сыйып қалуы мүмкін. Бұл оның барлық тексельдерін оқып, олардың мәндерін біріктіріп, пикселдің түсін дұрыс анықтауды талап етеді, бұл тым қымбат операция. Mipmapping мұны алдын ала сүзгілеу арқылы және текстураны кішірек өлшемдерде, тіпті бір пикселге дейін сақтау арқылы болдырмайды. Текстураланған бет алысқа жылған сайын, қолданылатын текстура алдын ала сүзгіленген кішірек өлшемге ауысады. Мип-картаның әртүрлі өлшемдері «деңгейлер» деп аталады, 0-деңгейі ең үлкен өлшем (көрнеушіге ең жақын қолданылады), ал деңгей нөмірі қашықтық артқан сайын өседі.

Сүзгілеу әдістері

Бұл бөлім ең көп қолданылатын текстура сүзгілеу әдістерін, есептеу күшін қажет ету деңгейі мен бейне сапасының арту ретімен тізімдейді.

Ең жақын көрші интерполяциясы

Ең жақын көрші интерполяциясы – ең қарапайым және дөңгелектеу сүзгілеу әдісі. Ол пиксел түсі үшін пиксел орталығына ең жақын текселдің түсін ғана пайдаланады. Қарапайым болғанымен, бұл ұлғайту кезінде көптеген артефакттарға, текстураның 'блокты' көрінуіне, ал кішірейту кезінде қателіктер мен жыпылықтауға әкеледі. Бұл әдіс ұлғайту кезінде жылдам, бірақ кішірейту кезінде жад бойынша қадам өте үлкен болып кетеді және кеңістіктік тұрғыдан байланысты текстураға қол жеткізудің және кэш жолын қайта пайдаланудың болмауынан MIP карталаудан тиімсіз болуы мүмкін.

Мип картасы бар ең жақын көрші

Бұл әдіс әлі де жақын көрші интерполяциясын қолданады, бірақ mipmapping қосылады. Бірінші, қашықтыққа сәйкес ең жақын mipmap деңгейі таңдалады, содан кейін пиксел түсін алу үшін ең жақын тексел орталығынан үлгі алынады. Бұл минификация кезінде қабықшалану мен жыпылықтауды едәуір азайтады, бірақ оларды толығымен жоймайды. Осы арқылы текстуралық жадқа қол жеткізу және кэш жолдарының қайта қолданылуы жақсартылады, себебі растерлеу кезінде текстуралық жадқа кездейсоқ үлкен қадамдармен қол жеткізуге жол берілмейді. Бұл ұлғайту кезінде пиксельденуге көмектеспейді, өйткені әр ұлғайтылған тексел әлі де үлкен тіктөртбұрыш ретінде көрінеді.

Мип картасының сызықтық сүзгісі

Кейде қолданылатын OpenGL және басқа API-лер жеке мим карталардан ең жақын көршілік пішімде үлгі алуды қолдайды, сонымен қатар үлгіге ең жақын екі мим картаны сызықтық интерполяциялауға мүмкіндік береді.

Біліктік сүзгілеу

Билинеарлық сүзгілеуде пиксел орталығына ең жақын төрт тексел үлгі ретінде алынады (ең жақын мип карта деңгейінде), және олардың түстері арақашықтыққа қарай салмақталған орташа есеппен біріктіріледі. Бұл үлкейту кезінде байқалатын 'блоктылықты' жояды, себебі енді тексел орталығы тексел шекарасынан өтетін кезде түстердің кенеттен секіруінің орнына, бір текселден екінші текселге өтетін тегіс түс градиенті пайда болады. Билинеарлық сүзгілеу үлкейту сүзгісі ретінде жиі қолданылады. Кішірейту үшін қолданылғанда, көбінесе мип карталаумен бірге қолданылады; онысыз да қолдануға болады, бірақ ол тым кішірейтілгенде, жақын көрші сүзгісі сияқты, қате пішін мен жылтылдау проблемаларына ұшырайды. Дегенмен, шағын кішірейту коэффициенттері үшін, оны арзан, аппараттық жеделдетілген салмақталған текстуралық супернақты үлгі ретінде қолдануға болады. Nintendo 64 аппараттық оңтайландыру талаптарына байланысты, төрт пикселдің орнына тек үш пикселді пайдаланатын билинеарлық сүзгілеудің ерекше түрін қолданды. Бұл кейбір текстураларда көзге көрінетін "үшбұрыштық бұрмалауды" тудырады.

Үш сызықты сүзгілеу

Трилинейлік сүзгілеу – мип-карталанған екі сызықты сүзгіленген кескіндерде жиі кездесетін бір мәселеге шешім: рендер бір мип-деңгейден келесі деңгейге ауысқанда сапаның күрт және анық байқалатын өзгеруі. Трилинейлік сүзгілеу екі жақын мип-деңгейінде (бір жоғары және бір төмен сапалы) текстураны іздеу және екі сызықты сүзгілеу арқылы осы мәселені шешеді, содан кейін нәтижелерді сызықты интерполяциялайды. Бұл көрерменнен қашықтық артқан сайын текстура сапасының күрт төмендеуінің орнына, бірте-бірте төмендеуін қамтамасыз етеді. Әрине, 0-ші деңгейден жақын қашықтықта тек бір ғана мип-деңгей қолжетімді, ал алгоритм екі сызықты сүзгілеуге қайта оралады.

Анизотроптық сүзгілеу

Анизотропты сүзгілеу – қазіргі тұтынушылардың 3D графикалық карталарында қол жетімді ең жоғары сапалы сүзгілеу. Жай ғана "изотроптық" техникалар тек шаршы мип карталарын пайдаланады, олар би- немесе трилинейлік сүзгілеу арқылы интерполяцияланады. (Изотроптық – барлық бағытта бірдей деген мағынаны білдіреді, сондықтан бұл термин карталардың барлығы шаршылар емес, тіктөртбұрыштар немесе басқа төртбұрыштар түрінде болатын жүйені сипаттау үшін қолданылады.) Егер бет камераға қатысты үлкен бұрышпен орналасса, текстураның толтыру аймағы шамамен шаршы болмайды. Мысалы, ойындағы еденді қарастырайық: толтыру аймағы биіктігінен әлдеқайда кең. Мұндай жағдайда ешбір шаршы карта жақсы сәйкес келмейді. Соның салдары – бұлшықтану және/немесе жыпылықтану, бұл сәйкестік қалай таңдалғанына байланысты. Анизотропты сүзгілеу бұл мәселені текстураны шаршы емес пішінде үлгілеу арқылы шешеді. Мақсаты – текстураның пиксель ізін текстура кеңістігіне проекцияланған күйінде сәйкестендіру үшін текстураны үлгілеу, бірақ мұндай із әрқашан текстураға қатысты осімен сәйкес келмейді. Сонымен қатар, үлгі теориясын қарастырғанда пиксель кішкентай шаршы емес, демек оның іздері проекцияланған шаршы емес. Текстура кеңістігіндегі іздерді құрастыру, текстура кеңістігінде проекцияланған пикселдің есептелген функциясының шамамен алғандағы нұсқасын қамтиды, бірақ бұл мәліметтер көбінесе шамамен, құпиялы және үлгі теориясы бойынша әртүрлі пікірлерге толы. Бірақ тұжырымдамалық тұрғыдан мақсат – проекцияланған өлшемдері әртүрлі болғанда, бір осьтегі алиасинг пен екіншісіндегі бұлшықтану арасындағы қақтығысты болдырмау үшін дұрыс бағдарланған анизотроптық үлгіні алу. Анизотроптық жүзеге асыруда сүзгілеуге дәстүрлі мип карталаудың шаршы карталарын сүзгілеу үшін қолданылатын сол сүзгілеу алгоритмдері енгізілуі мүмкін, осылайша аралық немесе соңғы нәтиже құрылады.

% Қалқымалы сүзгілеу

Тереңдікке негізделген көлеңкелік карталау, тереңдік карталанған текстуралармен бірге қызықты Пайыздық Жақын Сүзгіні (PCF) пайдалана алады, бұл қолданылатын текстуралық сүзгілердің қандай түрлері болу мүмкін екенін түсінуді кеңейтеді. PCF-де, жарық көзінен сахнаның тереңдік картасы жасалады. Сахнаның кейіннен көрсетілуі кезінде, бұл тереңдік картасы жарықтың орнынан сахнаға қайта проекцияланады және проекциялық тереңдік координатасы мен алынған текстуралық үлгінің тереңдігі салыстырылады. Проекциялық координата – жарықтан сахна пикселінің тереңдігін, ал тереңдік картасынан алынған тереңдік – сол проекцияланған бағыттағы сахна тереңдігін көрсетеді. Осылайша, көрсетілген пикселдің жарыққа көрінуі және, демек, жарықтан жарықтандырылуы анықталады. Бұл текстуралау операциясы – пикселдің жарықтандырылғандығын анықтайтын логикалық тест, бірақ берілген пиксел үшін бірнеше үлгілер тестіленіп, логикалық нәтижелер қосылып, орташасы алынуы мүмкін. Осылайша, үлгіленген текселдің орналасуы және тіпті тереңдік картасының проекциялық орналасуы сияқты өзгермелі параметрлермен үйлесімде, пиксел үшін тереңдік салыстырудан кейінгі орташа мән немесе жақын үлгілердің пайызы, демек жарықтандырылған үлгілердің пайызы есептелуі мүмкін. Ең бастысы, логикалық нәтижелерді қосу және пайыздық мәнді жасау проекциялық тереңдік пен үлгіні алу тереңдігінің салыстырылуынан кейін орындалуы керек, сондықтан бұл тереңдік салыстыруы текстуралық сүзгінің ажырамас бөлігі болады. Бұл пайызды жарықтандыру есебінде пайдаланылуы мүмкін және тек логикалық жарықтандыру немесе көлеңке мәнін ғана емес, сонымен қатар жұмсақ көлеңкелі жартылай көлеңкелі нәтижені де береді. Бұның бір түрі қазіргі заманғы аппараттық құралдарда қолдауға ие, онда салыстыру орындалады және қашықтық бойынша логикалық салыстырудан кейінгі билинейлік сүзгі қолданылады.