Кіріспе

Компьютерлік бағдарламалық қамтамасыз ету арқылы кескіндерді жасау

Бағдарламалық рендеринг – компьютерлік бағдарламалық қамтамасыз ету арқылы модельден кескін жасау процесі. Компьютерлік графиканы көрсету контекстінде, бағдарламалық рендеринг – графикалық аппараттық ASIC-терге, мысалы, графикалық картаға тәуелді емес көрсету процесін білдіреді. Көрсету толығымен процессорда (CPU) жүзеге асырылады. Барлық нәрсені (жалпы мақсаттағы) процессормен көрсетудің басты артықшылығы – ол графикалық аппараттың (шектелген) мүмкіндіктерімен шектелмейді, бірақ бірдей жылдамдыққа қол жеткізу үшін көбірек транзисторлар қажет. Рендеринг архитектурада, симуляторларда, бейне ойындарда, фильмдерде және теледидардағы визуализация эффектілері мен дизайнды визуализациялауда қолданылады. Рендеринг – анимация процесінің соңғы қадамы, ол модельдер мен анимацияларға көлеңкелеу, текстуралық карталау, көлеңкелер, шағылыстар және қозғалыс бұлыңғырлығы сияқты визуализация эффектілерімен түпкілікті көрініс береді. Рендерингті екі негізгі санатқа бөлуге болады: нақты уақыт рендерингі (онлайн рендерингі деп те аталады) және алдын ала рендерингі (офлайн рендерингі деп те аталады). Нақты уақыт рендерингі 3D компьютерлік ойындардағыдай көріністі интерактивті түрде көрсету үшін қолданылады, және әдетте әрбір кадр бірнеше миллисекунд ішінде көрсетілуі керек. Офлайн рендеринг реалистік кескіндер мен фильмдер жасау үшін қолданылады, онда әрбір кадрды аяқтауға бірнеше сағат немесе күндер жұмсалуы мүмкін, немесе бағдарламашылар күрделі графикалық кодты жөндеу үшін.

Бағдарламалық жасақтаманың нақты уақыт реендері

Нақты уақыт рендерингі үшін өнімділік маңызды. Компьютерлердегі алғашқы текстураланған, нақты уақытты бағдарламалық рендерлеушілер 3D геометрияның иллюзиясын жасау үшін көптеген амалдарды қолданды (нағыз 3D көбінесе ұшу симуляторларында қолданылатын жазық немесе Гуро көлеңкеленген көпбұрыштармен шектелді). Мысалы, Ultima Underworld жоғары және төмен қарауға, еңкейген едендерге және бөлме үстінде бөлмелерге мүмкіндік берді, бірақ егжей-тегжейлі нысандардың барлығы үшін спрайттарды пайдаланды. Бұл ойындарда қолданылатын технология қазіргі уақытта 2.5D деп саналады. Қазіргі заманғы 3D ойындарына архитектуралық жағынан ұқсас және толық 6DoF-ты қамтамасыз ететін алғашқы ойын Descent болды, онда 3D модельдер толығымен бит картасы текстураланған үшбұрышты көпбұрыштардан жасалған. Voxel-ге негізделген графика да Delta Force сияқты жылдам және салыстырмалы түрде егжей-тегжейлі ландшафтты көрсету үшін танымал болды, бірақ кең таралған бекітілген функциялық аппараттық құралдар оны пайдалануды мүмкін емес етті. Quake Майкл Абраш пен Джон Кармактың тиімді бағдарламалық рендерлеушісіне ие. Quake және сол кездегі басқа да көпбұрышты 3D ойындардың танымалдылығы графикалық карталардың сатылымына көмектесті, сонымен қатар DirectX және OpenGL сияқты аппараттық API-лерді пайдалана бастаған ойындар көбейді. Бағдарламалық рендерлеу негізгі рендерлеу технологиясы ретінде тоқтатылғанмен, 2000 жылдардың басында көптеген ойындарда, мысалы, Unreal және Unreal Tournament, сол кезеңнің процессорларында жақсы сапа мен өнімділікті қамтамасыз ететін бағдарламалық рендерлеушілер болды. Аппараттық рендерлеушісі жоқ соңғы AAA ойындарының бірі Outcast болды, ол озық voxel технологиясын, сондай-ақ графикалық аппараттарда кездесетін текстура сүзгілеуін және соққыларды карталауды ұсынды. Видео ойын консольдары мен аркадалық ойын нарықтарында 3D эволюциясы күрт болды, себебі олар әрқашан бір мақсатты чипсеттерге көп сүйенді. 16 биттік консольдар StarFox және Virtua Racing сияқты ойындарда RISC акселераторлық картридждерін алды, олар арнайы нұсқаулар жиынтығы арқылы бағдарламалық рендерлеуді жүзеге асырды. Jaguar және 3DO 3D аппараттық құралдарымен бірге келетін алғашқы консольдар болды, бірақ PlayStation-ға дейін мұндай мүмкіндіктер көптеген ойындарда қолданыла бастады. Балаларға және кездейсоқ ойыншыларға арналған ойындар (ескірген жүйелерді немесе кеңселік қолданбаларға арналған жүйелерді пайдаланатындар) 1990 жылдардың соңынан 2000 жылдардың басына дейін әдетте бағдарламалық рендерлеуді пайдаланды. Мысалы, Toy Story 2: Buzz Lightyear to the Rescue ойынын ойнағанға дейін аппараттық немесе бағдарламалық рендерлеуді таңдау мүмкіндігі бар, ал Half Life сияқты басқалары бағдарламалық режимде басталады және Опциялар мәзірінде OpenGL немесе DirectX қолдану үшін реттелуі мүмкін. Кейбір 3D модельдеу бағдарламалық жасақтамалары визуализация үшін бағдарламалық рендерлеушілерді ұсынады. Сонымен қатар, аппараттық эмуляциялау мен тексеру үшін бағдарламалық рендерлеуші қажет. Соңғысының мысалы Direct3D сілтеме растерлеушісі. Бірақ тіпті жоғары сапалы графикада да бағдарламалық рендерлеудің "өнері" толығымен жойылған жоқ. Алғашқы графикалық карталар бағдарламалық рендерлеушілерге қарағанда әлдеқайда жылдам болды және бастапқыда жақсы сапа мен мүмкіндіктерге ие болды, бірақ ол әзірлеушілерді "бекітілген функция" пикселдік өңдеумен шектеді. Ойындардың көрінісін әртараптандыру қажеттілігі туындады. Бағдарламалық рендерлеудің шектеулері жоқ, себебі кез келген бағдарлама орындалады. Сондықтан графикалық карталар бағдарламалауды қайтадан енгізді, әр төбеге және пиксельге/фрагментке шаштару деп аталатын шағын бағдарламаларды орындау арқылы. DirectX үшін High Level Shader Language (HLSL) немесе OpenGL Shading Language (GLSL) сияқты шейдер тілдері шейдерлер үшін C сияқты бағдарламалау тілдері болып табылады және (еркін функция) бағдарламалық рендерлеумен ұқсастық көрсете бастайды. Графикалық аппаратты нақты уақыт рендерлеудің негізгі құралы ретінде қабылдағаннан бері процессордың өнімділігі бұрынғыдан да тұрақты өсті. Бұл жаңа бағдарламалық рендерлеу технологияларының пайда болуына мүмкіндік берді. Аппараттық рендерлеудің өнімділігімен көлеңкеленгенімен, кейбір заманауи нақты уақыт бағдарламалық рендерлеушілер кең мүмкіндіктер жиынтығын және ақылға қонымды өнімділікті (бағдарламалық рендерлеу үшін) біріктіре алады, арнайы динамикалық компиляция мен SSE сияқты кеңейтілген нұсқаулар жиынтығын пайдалану арқылы. Бүгінгі таңда аппараттық рендерлеудің өнімділігі, мүмкіндіктері және үздіксіз жаңарулары бағдарламалық рендерлеуден жоғары болғандықтан, кейбіреулер процессорлар мен графикалық процессорлар бір жолмен немесе екіншісімен бірігетініне және бағдарламалық және аппараттық рендерлеу арасындағы шекара жоғалатынына сенеді.

Алдын ала рендеринг

Нақты уақытты рендерингпен салыстырғанда, алдын ала рендерингте өнімділік екінші дәрежелі маңызға ие. Ол негізінен киноиндустриясында шынайы көрінетін сахналарды жоғары сапалы көрсету үшін қолданылады. Бүгінгі таңдағы фильмдердегі көптеген арнайы эффектілердің көп бөлігі компьютерлік графика арқылы толығымен немесе жартылай жасалады. Мысалы, Питер Джексонның «Сақиналардың иесі» фильмдеріндегі Голлум кейіпкері толығымен компьютерлік бейнелеу (CGI) арқылы жасалған. Анимациялық фильмдерде де CGI танымал болып келеді. Атап айтқанда, Pixar «Toy Story» және «Finding Nemo» сияқты фильмдер сериясын, ал Blender Foundation әлемдегі алғашқы ашық фильм «Elephants Dream» фильмін жасады. Өте жоғары сапа мен әртүрлі эффектілерге қажеттілік болғандықтан, офлайн рендерингке жоғары икемділік қажет. Коммерциялық нақты уақыт графикалық жабдықтардың сапасы күннен-күнге артып, бағдарламаланатын мүмкіндіктері де кеңейіп жатса да, фотореалистік CGI-ның көп бөлігі әлі де бағдарламалық рендерингті қажет етеді. Мысалы, Pixar-дың RenderMan шексіз ұзындығы мен күрделілігі бар көлеңкелерді қолдануға мүмкіндік береді, бұл үшін жалпы мақсаттағы процессор қажет. Сәулелендіру (raytracing) және жаһандық жарықтандыру (global illumination) сияқты жоғары реализмді қамтамасыз ету әдістері де аппараттық іске асыруға қолайсыз және көбінесе бағдарламалық жасақтамада ғана жүзеге асырылады.