Кіріспе
Компьютерлік графиканың рендерингтік әдісі Компьютерлік графикада пикселдік жарықтандыру - рендерингтік кескіндегі әрбір пикселдің жарықтығын есептейтін кескінді немесе сахнаны жарықтандырудың кез келген әдісі. Бұл 3D-модельдің әрбір нүктесіндегі жарықтандыруды есептейтін және нәтижесінде алынған мәндерді модельдің бетінде интерполяциялап, пикселдік түстердің соңғы мәндерін есептейтін vertex-жарықтандыру сияқты жарықтандырудың басқа кең таралған әдістеріне қарама-қайшы келеді. Пикселдік жарықтандыруды көбінесе қоспалау, альфа-араластыру, альфа-қаптамаға, антиалиазингке, текстуралық сүзгілеуге, кесуге, жасырын бетті анықтау, Z буферлеу, штемпель буферлеу, көлеңкелеу, мип-карталау, қалыпты карталау, соққы карталау, орын ауыстыру карталау, параллакс карталау, көлеңке карталау, көлеңкелік карталау, көлеңке көлемдері, жоғары динамикалық диапазонды көрсету, қоршаған ортаны бұғаттау (экран кеңістігін бұғаттау, экран кеңістігін бағыттау бұғаттау, сәулемен жолданған қоршаған ортаны бұғаттау), сәулелерді іздеу, жаһандық жарықтандыру және тестелеу сияқты әдістермен қолданады. Бұл әдістердің әрқайсысы жарықтандырылған бетке немесе сахна мен жарық көздеріне қатысты қосымша мәліметтерді береді, бұл беттің соңғы көрінісіне және сезімін жасауға ықпал етеді. Қазіргі заманғы бейне ойындары қозғалтқыштарының көпшілігі қосымша нақтылық пен реализмге қол жеткізу үшін вертикальді жарықтандырудың орнына пикселдік техникаларды қолдана отырып жарықтандыруды іске асырады. Brink және Doom 3 сияқты ойындарды әзірлеу үшін пайдаланылған id Tech 4 двигуні пікселге шаңдау двигуні толық іске асырылған алғашқы ойын двигуні болды. CryENGINE, Frostbite Engine және Unreal Engine-дің барлық нұсқалары, басқалары, пикселдік көлеңкелеу әдістерін де іске асырады. Кейінгі көлеңкелеу - бұл пикселдік жарықтандырудың соңғы дамуы, ол Frostbite Engine және Battlefield 3 ойындарында қолданылған. Кейінгі көлеңкелеу әдістері ықтимал көп мөлшерде кіші жарықтарды арзан түсіруге қабілетті (бір пикселге жарықтандырудың басқа тәсілдері әр жарық үшін толық экранды есептеуді талап етеді).
In computer graphics, per pixel lighting refers to any technique for lighting an image or scene that calculates illumination for each pixel on a rendered image. This is in contrast to other popular methods of lighting such as vertex lighting, which calculates illumination at each vertex of a 3D model and then interpolates the resulting values over the model's faces to calculate the final per pixel color values. Per pixel lighting is commonly used with techniques, such as blending, alpha blending, alpha to coverage, anti aliasing, texture filtering, clipping, hidden surface determination, Z buffering, stencil buffering, shading, mipmapping, normal mapping, bump mapping, displacement mapping, parallax mapping, shadow mapping, specular mapping, shadow volumes, high dynamic range rendering, ambient occlusion (screen space ambient occlusion, screen space directional occlusion, ray traced ambient occlusion), ray tracing, global illumination, and tessellation. Each of these techniques provides some additional data about the surface being lit or the scene and light sources that contributes to the final look and feel of the surface. Most modern video game engines implement lighting using per pixel techniques instead of vertex lighting to achieve increased detail and realism. The id Tech 4 engine, used to develop such games as Brink and Doom 3, was one of the first game engines to implement a completely per pixel shading engine. All versions of the CryENGINE, Frostbite Engine, and Unreal Engine, among others, also implement per pixel shading techniques. Deferred shading is a recent development in per pixel lighting notable for its use in the Frostbite Engine and Battlefield 3. Deferred shading techniques are capable of rendering potentially large numbers of small lights inexpensively (other per pixel lighting approaches require full screen calculations for each light in a scene, regardless of size).
Тарих
Тек жақында ғана жеке компьютерлер мен бейне аппараттары ойын сияқты нақты уақыт қосымшаларында пикселдік көлеңкелеуді толық орындауға жеткілікті қуатты болды, бірақ пикселдік жарықтандыру модельдерінде қолданылатын негізгі тұжырымдамалардың көбі ондаған жылдар бойы қолданылып келеді. Фрэнк Кроу 1977 жылы көлеңкелік көлемдер теориясын сипаттайтын мақала жариялады. Бұл техникада "көлеңке көлемінде" жатқан беттерге сәйкес келетін экранның аймақтарын белгілеу үшін штемпель буферін пайдаланады немесе қандай да бір нысанның жарық көзіне шағылып кеткен кеңістіктің көлемін білдіретін пішін. Бұл көлеңкелі аймақтар әдетте сценикалық буферлерге берілгеннен кейін көлеңкелі аймақтарды штемпель буферімен сақтау арқылы көлеңкеленеді. Джим Блинн алғаш рет 1978 жылы SIGGRAPH мақаласында қалыпты карталау идеясын енгізді. Блинн Эдвин Кэтмалл ұсынған жарықсыз текстура картасының ертедегі идеясы дөрекі беттерді симуляциялау үшін шындыққа сай келмейтінін атап өтті. Қаттылықты симуляциялау үшін текстураны объектке карталаудың орнына Блинн беттің бір нүктесі беттің үстіндегі нормалардың белгіленген "тартылысына" негізделген жарықтандыру дәрежесін есептеу әдісін ұсынды.
Жабдықтық рендеринг
Видео ойындар сияқты нақты уақыт қолданбалары, әдетте, пикселдік шаштабандарды қолдану арқылы пикселдік жарықтандыруды іске асырады, бұл GPU аппараттық жасақтамасына әсерді өңдеуге мүмкіндік береді. Рендерингке алынатын көрініс алдымен көріністі рендерингте қолданылатын әр түрлі деректерді сақтайтын бірнеше буферлерге растерленеді, мысалы тереңдік, қалыпты бағыт және диффузиялық түс. Содан кейін деректерді шейдерге тапсырады және көріністің соңғы көрінісін есептеу үшін қолданылады, пиксельден пикселге дейін. Кейінгі көлеңкелеу - бұл соңғы уақытта ойындар үшін қолжетімді болған пикселдік көлеңкелеу әдісі. Кейінгі көлеңкелеу кезінде "g буфері" соңғы көріністі пиксель деңгейінде көлеңкелеуге қажетті барлық терминдерді сақтау үшін қолданылады. Бұл деректердің форматы қажетті әсерге байланысты әр түрлі қолданбаларда әр түрлі болады және басқалары арасында қалыпты деректерді, позициялық деректерді, спекулярлық деректерді, диффузиялық деректерді, эмиссиялық карталарды және альбедоны қамти алады. Бірнеше рендерлеу нысаналарын пайдаланып, осы деректердің бәрін g буферіне бір рет өткізу арқылы көрсетуге болады, ал шейдер әр пикселдің соңғы түсін g буферінен алынған деректерге негізделген соңғы "кезгертілген өту" арқылы есептей алады.
Бағдарламалық жасақтама
Пикселдік жарықтандыру сонымен қатар көптеген жоғары деңгейдегі коммерциялық рендеринг бағдарламаларында бағдарламалық жасақтамада орындалады, олар әдетте интерактивті кадрлық жылдамдықпен рендеринг жасамайды. Бұл оффлайн реендерлеу немесе бағдарламалық реендерлеу деп аталады. NVIDIA-ның ақыл-ой сәулелерін көрсету бағдарламалық жасақтамасы, Autodesk-тің Softimage сияқты жиынтықтармен біріктірілген, бұл жақсы танымал мысал.