Кіріспе
Компьютерлік графикада текстуралық карталау блогы (TMU) – қазіргі заманғы графикалық процессорлардың (GPU) құрамдас бөлігі. Олар растрлік кескінді айналдырып, көлемін өзгертіп, бұрмалап, оны берілген 3D модельдің кез келген жазықтығына текстура ретінде қоюға мүмкіндік береді, бұл процеске текстуралық карталау дейді. Қазіргі заманғы графикалық карталарда ол графикалық құбыржолдың жеке қадамы ретінде іске асырылады, ал алғаш пайда болғанда жеке процессор ретінде іске асырылған, мысалы Voodoo2 графикалық картасында көрініп тұрғанындай.
In computer graphics, a texture mapping unit (TMU) is a component in modern graphics processing units (GPUs). They are able to rotate, resize, and distort a bitmap image to be placed onto an arbitrary plane of a given 3D model as a texture, in a process called texture mapping. In modern graphics cards it is implemented as a discrete stage in a graphics pipeline, whereas when first introduced it was implemented as a separate processor, e. g. as seen on the Voodoo2 graphics card.
Негізгі деректер
TMU текстуралық карта ретіндегі жазық кескінді 3D кеңістікте қажетті бұрышқа және перспективаға түрлендіру мен үлгі алудың есептеу талаптарының нәтижесінде пайда болды. Бұл есептеу операциясы – үлкен матрицалық көбейту, сол кездегі (алғашқы Pentium) процессорлары қанағаттанарлық өнімділікпен орындай алмады. 2013 жылы TMU-лар көлеңке құбыр желісінің құрамына кіреді және рендерлік шығыс құбыр желілерінен (ROP) бөлінген. Мысалы, AMD-нің Cypress GPU-сында әрбір көлеңке құбыр желісінде (барлығы 20) төрт TMU бар, бұл GPU-ға 80 TMU-ны құрайды. Чип жасаушылар осылайша көлеңкелер мен текстуралық процессорларды тығыз байланыстыруды қамтамасыз етеді.
Геометрия
3D-бейнелер көбінесе екі нәрседен құралады: 3D геометрия және осы геометрияны жабатын текстуралар. Видеокартадағы текстуралық блоктар текстураны алып, оны геометрияның бір бөлігіне 'бейімдейді'. Яғни, олар текстураны геометрияға орап, экранға шығарылатын текстураланған пиксельдерді жасайды. Текстуралар нақты кескін, жарық картасы, тіпті кеңейтілген беттік жарық эффектілері үшін нормаль карталар болуы мүмкін.
Текстуралық толтыру жылдамдығы
3D-бейнелерді көрсету үшін текстуралар көпбұрышты торлардың үстіне бейнеленеді. Бұл текстуралық бейнелеу деп аталады және бейнекартадағы текстуралық бейнелеу бірліктері (TMU) арқылы іске асырылады. Текстуралық толтыру жылдамдығы – белгілі бір картаның текстуралық бейнелеуді қаншалықты жылдам орындайтынының өлшемі. Пиксельдік шейдерлерді өңдеу маңыздырақ болғанымен, бұл көрсеткіш әлі де маңызды. Мұның ең жақсы мысалы – X1600 XT. Бұл картада пиксельдік шейдерлер мен текстуралық бейнелеу бірліктерінің арақатынасы 3:1. Нәтижесінде, X1600 XT сол дәуірдегі және кластағы басқа GPU-лармен (мысалы, nVidia-ның 7600GT) салыстырғанда төмен өнімділік көрсетеді. Ортаңғы деңгейде текстуралық бейнелеу әлі де өнімділікті шектеуі мүмкін. Дегенмен, жоғары деңгейде X1900 XTX-тің де осы 3:1 арақатынасы бар, бірақ ол жақсы жұмыс істейді, себебі экранның ажыратымдылығы шектеулі және кез келген дисплейді қолдауға жететін текстуралық бейнелеу қуатына ие.
Текстуралық карталау бірліктері (TMU)
Текстураларды өңдеу және сүзгілеу қажет. Бұл жұмысты пикселдік және vertex шейдерлік бірліктермен бірлесіп жұмыс істейтін TMU жасайды. TMU-ның міндеті – пикселдерге текстуралық операцияларды қолдану. Графикалық процессордағы текстуралық бірліктердің саны екі графикалық картаның текстура өнімділігін салыстыру үшін пайдаланылады. Көп TMU-ы бар карта текстуралық ақпаратты өңдеуде жылдамырақ болады деп есептеуге болады. Қазіргі заманғы GPU-ларда TMU құрамында текстуралық адрестеу бірліктері (TA) және текстуралық сүзгілеу бірліктері (TF) болады. Текстуралық адрестеу бірліктері текселдерді пикселдерге бейімдейді және текстуралық адрестеу режимдерін іске асыра алады. Текстуралық сүзгілеу бірліктері аппараттық деңгейде текстура сүзгілеуді қосымша орындайды.
Құбырлар
Құбыр желісі – графикалық картаның архитектурасы, графикалық процессордың есептеу қуатын жалпы алғанда дәл көрсетеді. Құбыр желісі техникалық термин ретінде ресми түрде қабылданбаған. Графикалық процессордың ішінде әртүрлі құбырлар бар, себебі кез келген уақытта бөлек функциялар орындалады. Тарихи тұрғыдан, ол арнайы TMU-ға қосылған пиксельдік процессор ретінде белгілі болған. Geforce 3 төрт пиксельдік құбыр желісіне ие болды, олардың әрқайсысында екі TMU болды. Қалған бөлігі тереңдік және араластыру операциялары сияқты жұмыстарды атқарды. ATI Radeon 9700 бұл үлгіні бұзған бірінші карта болды, пикселдік шейдерлерден тәуелсіз бірнеше vertex шейдер қозғалтқыштарын орналастырды. Radeon 9700-де қолданылатын R300 GPU-да төрт жаһандық vertex шейдері болды, бірақ рендерлеу құбыржолдарының қалған бөлігін екіге бөлді (шартты түрде, екі ядролы), әр жартысы, квад деп аталады, төрт пиксельдік шейдер, төрт TMU және төрт ROP-қа ие болды. Кейбір блоктар басқаларына қарағанда жиі қолданылады, ал процессордың жалпы өнімділігін арттыру үшін, артық кремнийді қажет етпей, оңтайлы тиімділікке жету үшін қажетті блоктардың «тиімді санын» табуға тырысты. Бұл архитектурада пиксельдік құбыр желісі атауы мағынасын жоғалтты, себебі пиксельдік процессорлар енді жеке TMU-ға қосылмады. Vertex шейдер R300-ден бастап ұзақ уақыттан бері бөлініп келді, бірақ пикселдік шейдерді бөлу оңай болған жоқ, себебі оған түсті деректер (мысалы, текстура үлгілері) қажет болды, сондықтан оны TMU-мен тығыз байланыстыру қажеттігі туды. Осы байланыс бүгінге дейін сақталып келеді, онда шейдерлік қозғалтқыш, vertex немесе пиксельдік деректерді орындай алатын блоктардан тұрады, TMU-мен тығыз байланысты, бірақ оның шығысы мен ROP банктері арасында көлденең диспетчер орналасқан.
Рендерлік шығыс құбырлары (ROP)
Рендерлеудің шығыс құбыры – бұл тарихи термин, көбінесе рендерлеудің шығыс блогы деп аталады. Оның міндеті – пикселдерді (әр пиксел – өлшемсіз нүкте) сынауды басқару, сондықтан ол антиалиазингті басқарады, яғни бір пикселге бірнеше сынама біріктірілген кезде. Рендерленген барлық дерек фреймбуферге жазылу үшін ROP арқылы өтуі керек, содан кейін дисплейге жіберіледі. Осылайша, ROP – GPU шығысы дисплейге көрсетуге дайын растрлік кескіге құрастырылатын орын.
GPGPU-да қолдану
GPGPU-да кез келген деректерді сақтау үшін 1, 2 немесе 3 өлшемді текстуралық карталар қолданылуы мүмкін. Интерполяцияны қамтамасыз ету арқылы текстуралық карталау модулі дерек кестелерімен кез келген функцияларды жуықтаудың ыңғайлы тәсілін ұсынады.