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



бет2/7
Дата04.03.2016
өлшемі2.31 Mb.
#41158
1   2   3   4   5   6   7
    Бұл бет үшін навигация:
  • 3D-API

3D-конвейер


Көптеген ойындар, сондай-ақ күрделі қосымшалардың көпшілігі үш өлшемді бейнелерді құрудың стандартты схемасын пайдаланады (бұдан әрі осы процсті біз конвейер деп атаймыз). Бұл ретте кейбір бағдарламалар осы конвейердің барлық деңгейлерін пайдаланады, ал кейбіреулері жұмыстың бір бөлігін аппараттық құрылғылардың , арнайы бағдарламалар кітапханаларына (API), басқа да бағдарламаларға немесе тіпті пайдаланушының өзіне жүктейді. Сонымен, конвейер мынадай деңгейлерден тұрады:

  1. Объектінің жай-күйін белгілеу (Situation modeling) – бағдарламаның осы бөлігінің компьютерлік графикаға тікелей қатынасы жоқ, ол кейін бейнеленетін әлемді модельдейді. Мысалы, Quake жағдайында бұл – ойын ережелері және ойыншының ауысуының физикалық заңдары, монстрлардың жасанды интеллекті және т.б.

  2. Геометриялық модельдердің ағымдағы жай-күйіне сәйкестерді белгілеу (Geometry generation) – конвейердің осы бөлігі біздің шағын ғана «виртуалды әлеміміздің» ағымдағы сәтінің геометриялық үлгісін жасайды.

  3. Геометриялық модельдерді примитивтерге бөлу (Tesselation) – бұл «темірге» шынымен тәуелді бірінші деңгей. Онда объектілердің сыртқы түрі белгіленген примитивтер жиынтығы түрінде жасалады, әрине, олар конвейердің алдыңғы қадамынан алынған ақпарат негізінде жасалады. Қазірге кезеңде ең көп тараған примитив – үшбұрыш. Көптеген қазіргі заманғы бағдарламалар мен жеделдетушілер үшбұрышпен жұмыс істейді. Математикалық түпқұйындарды зерттемей-ақ кез келген жазық көпбұрышты әрқашан үшбұрыштарға бөлуге және үш нүктемен ғана кеңістікте жазықтықты белгілеуге болатындығы анық.




  4. Кубтың қаңқалы моделі
    Текстура мен жарықты байланыстыру (Texture and light definition) – бұл деңгейде геометриялық примитивтер (үшбұрыштар) қалай белгіленетіні, сондай-ақ кейін оларға қандай текстуралар (Textures: объектінің сыртқы бейнесін, яғни геометриялық емес визуалды ақпаратты көрсететін суреттер. Текстураның жақсы үлгісі – әбден түзу жағажайдағы құм) және қалай салынатыны белгіленеді. Әдетте, осы деңгейде ақпарат тек примитив шыңдары үшін ғана есептеледі.

  5. Әртүрлі геометриялық өзгерістер (Projection) – мұнда примитивтердің барлық шыңдары үшін жаңа координаталар белгіленеді, олар байқаушының орналасуына және оның қарау бағытына байланысты болады. Сахна екі өлшемдіге айналып монитордың бетіне проекцияланғандай болады. Алайда байқаушы мен шың арасындағы арақашықтық туралы ақпарат келесі өндейге дейін сақталады.

  6. Көрінбейтін примитивтерді лақтыру (Culling) – бұл деңгейде примитивтер тізімінен толық көрінбейтіндер (көріну аймағының артында немесе бүйірінде қалғандар) алынып тасталады.

  7. Примитивтерді орнату (Setup) – мұнда примитивтер туралы ақпарат (шыңдар координаталары, текстураларды салу, жарық және т.б.) келесі деңгейге лайықты болып өзгереді (Мысалы: экран немесе текстуралар буфері нүктелерінің координаталары – аппаратура жұмыс істейтін белгіленген көлемнің бүтін сандарына ауысады).

  8. Примитивтерді бояу (Fill) – осы деңгейде кадр (нәтижелі суретке белгіленген жад) буферінде конвейердің алдыңғы буферінде қалыптасқан примитивтер туралы ақпарат және өзге де деректер негізінде суреттерді құру нақты жүргізіледі. Мысалы, текстура, тұман және мөлдірлік кестесі және өзге де деректер негізінде. Әдетте, осы деңгейде боялатын примитивтің әрбір нүктесі үшін оның көрінуі белгіленеді, мысалы тереңдік буфері (Z-буферы) арқылы және, егер оны байқаушыға жақынырақ нүкте (басқа примитив) жауап тұрмаса, оның түсі анықталады. Түсі осы примитив шындары үшін бұрынырақ белгіленген жарық және текстураларды салу туралы ақпарат негізінде белгіленеді. Жеделдеткіштің сипаттамасынан алуға болатын оның сипаттамаларының көпшілігі осы деңгейге жатады, себебі негізінен конвейердің нақты осы деңгейін аппарат арқылы жеделдетеді (төлемі қымбат емес және қол жетімді болғанда).

  9. Соңғы өндеу (Post processing) – барлық нәтижелі суретті тұтас ортақ ретінде қандай да бір екі өлшемді әсерлермен қндеу.

Теориялық тұрғыдан біз қарастырдық, ал енді іс жүзінде қалай болатынын көрейік. Біріншіден, осы конвейердің кейбір деңгейлерінің орындарын ауыстыруға болады, бөліктерге бөлуге немесе қоса пайдалануға болады. Екіншіден, олар мүлдем болмауы (сирек) немесе жаңадан пайда болуы (жиі) мүмкін. Үшіншіден, олардың әрқайсысының нәтижесі кейін қайтарылуы мүмкін (басқа деңгейлердің артынан). Мысалы, соңғы деңгейде алынған суретті 8-ші үшін жаңа текстура ретінде пайдалануға болады. Осылай бейнелейтін беттер (айналар) әсері іске асырылады. Мысалы, Unreal ойынындағы мәрмәр еден.

3D-API


Сонымен, біз әрекеттер тізбегін анықтадық. Бірақ нәтижеге жету үшін екі нәрсені белгілеу қажет – кім қандай деңгейлерді орындайды және оны қалай істейді. Бізде жұмыс істеуге үш негізгі кандидат бар – бағдарламаның өзі (әдетте, конвейердің бастапқы деңгейлері), қолданбалы бағдарламалау кітапханасы (интерфейс, API) және жеделдетушінің өзі. Жеделдетушіні пайдаланбайтын бағдарламалар (бағдарламалық режимдегі Doom, Quake және т.б.) конвейердің барлық деңгейлерін дербес орындайды. Осы тұрғыда кітапхана ұғымына осы жеделдетушінің драйверін орналастыруға болады, себебі бағдарлама жағынан олар кітапхананың бір бөлігі болады. Бағдарламалар мен жеделдетушілер көп, ал жалпыға бірдей танылған кітапханалардың саны өте шектеулі. Мынадай кітапханалар аса кең пайдаланылады



  • OpenGL – алғашқыда кәсіби графикалық станциялар мен үш өлшемді модельдеу бағдарламаларының кітапханасы. Біртіндеп ол РС платформасына ауысты, ол негізінен «темір» саласындағы қарқынды прогреске және осы кітапхананың шұнтитылған нұсқасын пайдаланатын Quake ойнына байланысты болды. Жеделдетушіде осы кітапхананың қолдауының болуы оған бағытталған жаңа ойындардың көп болуына байланысты өте қажет. Кітапхана бір жақтан жоғары деңгейлі болып табылады, себебі біздің конвейердің 4-сатысының ортасынан бастап барлық әрекетерді өзі жүргізеді. Бір жағынан, бұл бағдарламашылар жұмысын өте жеңілдетеді, ал екінші жағынан –, әсіресе, стандарттық емес әсерлерді іске асыру кезінде немесе OpenGL шеңберінен шығатын жеделдетушілердің жаңа мүмкіндіктерін пайдалану қажеттілігі кезінде оны шамалы күрделендіруге әкеп соғуы мүмкін. Осындай көзқарастың пайдалылығының жақсы үлгісі – OpenGL нұсқасын қосу мүмкіндігі, ол AMD 3Dnow! и Intel Katmai New Instructions (MMX2) – SIMD командалар жиынтығымен жаңа процессорларда ойындардың жұмысын (нақты – геометриялық өзгерістерді) маңызды жеделдетеді. Анық жақсы қасиеті – бұл бағдарламаларды басқа Wintel емес платформаларға көшіру болып табылады. Маңызды, бірақ тез арада жөндеуге болатын кемшілігі – кейбір кең тараған жеделдетушілер үшін оның толық нұсқасының болмауы.

  • Direct3D – Microsoft DirectX-тің бір бөлігі болып табылатын және қазіргі уақытта барлық жеделдетушілермен қолданылатын кітапхана. Іс жүзінде екі кітапханадан тұрады – төмен деңгейлі (7-деңгейден басталады) және жоғары деңгейлі (5-ден). Нәтижесі – бағдарламашы үшін оның идеяларын іске асырудағы зор икемділік. Салдары –жеделдетушінің нақты іске асыруға байланысты параметрлерінің көпшілігінен ол үшін мазасыздық туады. Қазіргі уақытта Microsoft-тың осы өнімінің қарқынды дамуда, осы кездегі 10 нұсқа бұған дейін болмаған әсерлер мен бейненің нақтылығын болжайды.

  • Glide – 3Dfx фирмасының өзіндік төменн деңгейлі кітапханасы (7 конвейер деңгейі және бұдан әрі), ол бірінші, шынымен де, табысты жеделдеткіштердің (Voodoo чиптері жиынтығының негізінде) кең тарауына байланысты әйгілі болды. Кітапхана осы жеделдеткіштерді шығаруды тоқтатуға байланысты пайдаланылмайды. Оны басқа жеделдеткіштер қолдамайды және қолдамайтын болады (3Dfx-тің рұқсатынсыз ол заңсыз болады). Сондай-ақ оны пайдаланатын ойындар, кемінде, бұрын сипатталған кітапханалардың біреуінде ғана жұмыс істейді.

Rendition фирмасының R-Redline-ны, S3 фирмасының S3D Toolkit-ты және т.с.с. түрлі жеделдеткіштерді әзірлеушілер жасаған тағы төмен деңгейдегі шамамен 10 кітапхана бар. Күтілгендей, арнайы солар үшін жазылған бағдарламалар біртіндеп жойылып келеді.

Қазіргі заманғы жеделдеткіштердің көпшілігі конвейердің соңғы екі-үш деңгейлерін ғана көтеретін болғанымен, осы ережеден маңызды және тез дамитын ерекшелік бар: есептеу қуаты жеткіліксіз компьютерлерде (ал қуаты анықтамасы бойынша жеткіліксіз, олай болмаса жеделдеткішті мүлдем қажет болмаушы еді) бейнелеуді салу жылдамдығын елеулі көбейтуге қабілеті жететін геометриялық өзгерістерді қолдайтын алғашқы қол жетімді чиптер пайда болды.





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




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

    Басты бет