«3D графиканы программалау»



бет3/7
Дата04.03.2016
өлшемі2.31 Mb.
#41158
1   2   3   4   5   6   7

3D акселерация


Сонымен, ең жалпы жеделдеткіш геометриялық процессорден (Geometry Processor), қондырғы механизмінен (Setup engine, 7 конвейердің деңгейі) және примитивтердің бейнесін салу механизмінен – бояу (Fill engine, 8 және 9 деңгейлер), бөлшектеп қарасақ, олар екі блоктың – текстурларды өңдеу (Texel engine) және кадр буферін өңдеу (Pixel engine) үйлесімінен тұрады. Жеделдеткіштің өнімділігі процессорге, жад өнімділігіне, шинаға және сол өндейуі блоктардың өздеріне байланысты болады. Әдетте, екі сан көрсетіледі – мейілінше өткізу қабілеті (үшбүрыштарды секундына, triangle throughput) және мейілінше бояу өнімділігі (нүктелер секундына, fill rate). Мұндай әдісті пайдалануға болады, бірақ ол онша дұрыс емес. Біз өзімізде білеміз, ең жақсы тес – бұл біз жақсы көріп ойнайтын ойын жылдамдығы (fps, қандай да бір стандартты әрекеттер жиынтығындағы кадрлар секундына) және бейнелеу сапасы (санмен өлшенбейді). Нақты осы өлшемдерді Internet-тен немесе көршіден бірінші кезекте біліп алу қажет, бірақ кадрлар санының осы көршінің компьютері процессоры жадының көлеміне немесе қуатына байланысты екенін ұмытпау керек.

Егер терең техникалық егжей-тегжейліктерге салынбасақ, бояу былай жасалады: кадр буферін өндеу блогы боялатын нүктенің көрйнуін-көрінбеуін анықтайды, мысалы ьереңдік буфері арқылы (Z Buffer). Егер ол көрінетін болса, текстураларды өндеу блогы примитивтің осы нүктесіне сәйкес келетін текстура түсін есептейді. Мұнда бірнеше маңызды кезеңдер бар – интерполяция (filtering, тегістеу) және текстура деңгейін таңдау (mip-mapping).

Біріншісі сіз затқа жақын болып, текстураның рұқсат етуі анық жеткіліксіз болғанда да, бейнені кенет тікбұрышты пиксельдерсіз қамтамасыз етеді. Екіншісі текстурадан өте алыс болған кезде пайда болатын бұрмалауларды (түсініксіз оюларды) жояды, онда рұқсат етуі аз текстураның аналогын таңдайды. Іс жүзінде, осы екі әдісті үйлестірудің бірнеше режимдері бар. Қазіргі уақытта кең тарағандары – бисызықты фильтрация (bilinear filtering – алдымен осы арақашықтыққа қажет текстура белгіленеді, ал кейін түстің мәні текстураның төрт көрші нүктелері арасында сызықты интерполяцияланады) және үшсызықты (trilinear – екі аз және көп рұқсаты бар текстуралар үшін екі бисызықты, кейін нәтижесі олар арасында интерполяцияланады). Соңғысы дұрысырақ, бірақ мол шығынды талап етеді, себебі текстураларды өндеудің бір блогы болатын қазіргі заманғы жеделдеткіштерде бір такт ішінде іске аспайды, ал нәтижесінде бояу сылмадығы екі есе төмендейді. Қазір анизотропты (anisotropic – куб ішінде, текстураның 4 көрші нүктелері бар екі жиынтықтан тұрады, жиыны – 8 нүкте бойынша) фильтация салынған алғашқы жеделдеткіштер пайда болды, олар өте жақсы көрінеді, бірақ тағы екі есе уақытты талап етеді. Кейін жоғарыда көрсетілген әдістердің біреуі бойынша есептелген текстура түсі кадр буферіне салынады, ол онда болған бұрынғы мәнді ауыстырады не онымен қандай да бір ереже бойынша (combination, blending, alpha-blending) үйлеседі. Кемінде, жеделдеткіш Қайнар көз*Қабылдағыш (Src*Dest) және Қайнар көз+Қабылдағыш (Src+Dest) режимдерін қолдауға тиіс. Осындай мүмкіндіктер түрлі-түсті жарықты, металл немесе бейнелеу үлгісіндегі әсерлерді іңске асыруға, үшсызықты фильтрацияны ол аппаратпен қолданбайтын жерлерде де іске асыруға және т.б. (бейнені көп жолды салу, multipass rendering деп аталады) мүмкіндік береді.

Әдетте, текстураның әрбір нүктесіне, RGB түсін қоспағанда, оның мөлдірлігінің дәрежесін (alpha, RGBA текстура форматы) белгілеуге болады, оны жеделдеткіш қабылдағышқа қайнар көздің әсерін реттеу үшін пайдаланады. Осылайша, мысалы, Unreal-дегі жарық көздерінің айналасындағы жарылыстар мен ореолардың шеттерінде жартылай мөлдір боялады.

Аса маңызды болып табылмағанымен, бейнені көп жолды салуды пайдаланатын бағдарламалардың (мысалы, Quake2 немесе Unreal) жұмысын мультитекстурлау (multitexturing) мүмкіндігі жеделдетеді. Әс жүзінде, примитивтің бір нүктесі үшін екі текстура бойынша екі түсті бір уақытта есептеуге, кейін оларды бір-бірімен үйлестіруге қабілеті бар, осы екі (немесе тіпті одан да көп) текстураны өндеу блоктарының болуы. Vоodoo2, RivaTNT және тағы бірнеше «соңына дейін жасалмаған» чиптердің осындай мүмкіндігі бар.

Сондай-ақ примитивтің жеке нүктелерінің көріну тереңдігін белгілеу үшін пайдаланылатын түстерді анық көру (16 бит – Hi-Color немесе 32 бит – True-Color, соңғысы әлденеше артық) және тереңдік буферінің анықтығын көру (Z-Buffer, 16 бит онша емес, 24 және 32 – артық) аса маңызды. Тереңдікті белгілеу кезіндегі қателіктер қызық әсерлерге, мысалы, Unreal ойнында постаменттің артынан аяқтың көрініп тұруына әкелуі мұмкін.

Ал енді кадр буферін өндеу блогының соңғы әрекеті – дайын суреттің үстінен маңызды әсерлер салу. Мысалы, тұман, бу немесе қараңғы (жеделтетуші үшін бірдей болады), яғни fogging деген атаумен белгілі әсер. Немесе RivaZX-те пайдаланылатын толық экранды тегістеу әдісі (full screen antialiasing), мұнда бейнесурет пайдаланушыға көрінетіннен гөрі көбірек рұқсатымен есептеледі және бұл ретте бейнесуреттің көрші нүктелері қосылады, ал нақты сомалық мән пайдаланушыға бір нүкте етінде көрсетіледі. Осындай әдіспен полигондар арасындағы анық шекаралар жойылады, бейнесурет сүйкімді «біртұтас» түрде көрінеді. Сондай-ақ примитивтерді шеткі тегістеу болады, ол тіпті бірдей (шамалы ғана төмендеу) нәтиже береді (edge antialiasing), бірақ бейнесуретті салу үшін елеулі аз шығынды талап етеді.

Қорытынды


3D-графиканы кең пайдалану компьютерлердің қуатын ұлғайтуға әкеп соқтырды, алайда бұл ретте олардың бағасы маңызды өскен жоқ. Пайдаланушылар алда ашылған мүмкіндіктерді таңданып қабылдады және оларды өздерінің компьютерлерінде пайдалануға тырысты. Көптеген жаңа 3D-карталар пайдаланушыларға өздері үйде пайдаланатын компьютерлерде нақты уақытта үшқлшемді графиканы пайдалануға мүмкіндік берді. Осы жаңа акселераторлар бейнесуреттерге реализм қосып, графиканы өзіндік аппараттық мүмкіндіктерге негізделіп, орталық процессордан тыс жеделдетуге мүмкіндік берді.

Қазіргі уақытта үшөлшемді мүмкіндіктер негізінен ойындарда пайдаланғанымен, бірнеше басқа да бағыттар бар:



  • Автоматтандырылған жобалау құралдарын үшөлшемді объектілерге шығару қажет.

  • Бағдарламалардың үшөлшемді интерфейстері компьютерде жұмыс істеуді одан да жеңілдете түседі.




  • Белгіленген жағдайларда адамдарды әрекетке үйрету үшін жағдайды үшөлшемді симуляциялау.


Бақылау сұрақтары:

  1. Көлемді мультипликация

  2. Көлемді мультиплекацияның жұмыс істеу принципі

  3. Көлемді мултипликацияны түсірудің техникасы

  4. Көлемді мультипликацияның тәсілдері



Дәріс 5

Тақырыбы: Үшөлшемді 3D ДЫБЫС тың қолданылуы

Мақсаты: 3D дыбыс түсінігімен танысу
Қысқаша конспект


Достарыңызбен бөлісу:
1   2   3   4   5   6   7




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет