Кіріспе
Модельден сурет жасау процесі. Рендеринг немесе сурет синтезі – компьютерлік бағдарлама арқылы 2D немесе 3D модельден фотореалистік немесе фотореалистік емес сурет жасау процесі. Нәтижесінде алынған сурет рендер деп аталады. Бірнеше модельдер нақты анықталған тіл немесе дерек құрылымындағы объектілерді қамтитын көрініс файлында анықталуы мүмкін. Көрініс файлында виртуалды сахнаны сипаттайтын геометрия, көру бұрышы, текстуралар, жарықтандыру және көлеңке туралы ақпарат болады. Көрініс файлындағы деректер рендеринг бағдарламасына жіберіліп, цифрлық сурет немесе растрлық графикалық сурет файлына шығарылады. "Рендеринг" термині суретшінің сахнаны бейнелеуімен салыстырылады. "Рендеринг" термині видео өңдеу бағдарламасында соңғы видеоны жасау үшін эффекттерді есептеу процесін сипаттау үшін де қолданылады. Рендерингті орындайтын бағдарламалық қосымша немесе компонент рендеринг қозғалтқышы, графикалық қозғалтқыш немесе жай ғана рендер деп аталады. Рендеринг – 3D компьютерлік графиканың маңызды тармақтарының бірі және практикалық тұрғыда ол әрқашан басқа тармақтармен байланысты. Бұл графикалық құбырдың соңғы маңызды қадамы, модельдер мен анимацияға түпкілікті көрініс береді. 1970 жылдардан бері компьютерлік графиканың дамуымен ол жеке тақырыпқа айналды. Рендеринг архитектурада, бейне ойындарда, симуляторларда, кино мен теледидардағы визуалды эффектілерде және дизайнды визуализациялауда қолданылады, олардың әрқайсысы әртүрлі мүмкіндіктер мен техникаларды пайдаланады. Қолдануға дайын көптеген рендерлер бар. Кейбіреулері үлкен модельдеу және анимация пакеттеріне енгізілген, ал кейбіреулері жеке тұр, ал кейбіреулері ашық кодты жобалар болып табылады. Ішкі жағынан рендер – жарық физикасы, визуалды қабылдау, математика және бағдарламалық жасақтаманы әзірлеу сияқты көп салаға негізделген мұқият жасалған бағдарлама. Рендеринг әдістерінің техникалық егжей-тегжейлері әртүрлі болғанымен, сахна файлында сақталған 3D бейнелеуден экранға 2D сурет шығарудағы негізгі қиындықтарды графикалық құбыр арқылы GPU сияқты рендеринг құрылғысы шешеді. GPU – күрделі рендеринг есептеулерін орындауда CPU-ға көмектесетін арнайы құрылғы. Егер сахна виртуалды жарықтандыруда салыстырмалы түрде шынайы және болжамды көрінуі үшін, рендеринг бағдарламалық жасақтамасы рендеринг теңдеуін шешуі керек. Рендеринг теңдеуі барлық жарық құбылыстарын есепке алмайды, бірақ компьютерлік графика үшін жалпы жарық модельдерінің бірі болып табылады. 3D графикада сахналарды алдын ала рендерингтеуге немесе нақты уақытта жасауға болады. Алдын ала рендеринг – кино түсіру үшін қолданылатын баяу, көп есептеуді қажет ететін процесс, онда сахналар уақытынан бұрын жасалады, ал нақты уақыт рендеринг көбінесе 3D бейне ойындары мен көріністерді динамикалық түрде құруы керек басқа да қолданбалар үшін қолданылады. 3D аппараттық үдеткіштері нақты уақыт рендерингтің өнімділігін жақсарта алады.
Rendering or image synthesis is the process of generating a photorealistic or non photorealistic image from a 2D or 3D model by means of a computer program. The resulting image is referred to as the render. Multiple models can be defined in a scene file containing objects in a strictly defined language or data structure. The scene file contains geometry, viewpoint, textures, lighting, and shading information describing the virtual scene. The data contained in the scene file is then passed to a rendering program to be processed and output to a digital image or raster graphics image file. The term "rendering" is analogous to the concept of an artist's impression of a scene. The term "rendering" is also used to describe the process of calculating effects in a video editing program to produce the final video output. A software application or component that performs rendering is called a rendering engine, render engine, rendering system, graphics engine, or simply a renderer. Rendering is one of the major sub topics of 3D computer graphics, and in practice it is always connected to the others. It is the last major step in the graphics pipeline, giving models and animation their final appearance. With the increasing sophistication of computer graphics since the 1970s, it has become a more distinct subject. Rendering has uses in architecture, video games, simulators, movie and TV visual effects, and design visualization, each employing a different balance of features and techniques. A wide variety of renderers are available for use. Some are integrated into larger modeling and animation packages, some are stand alone, and some are free open source projects. On the inside, a renderer is a carefully engineered program based on multiple disciplines, including light physics, visual perception, mathematics, and software development. Though the technical details of rendering methods vary, the general challenges to overcome in producing a 2D image on a screen from a 3D representation stored in a scene file are handled by the graphics pipeline in a rendering device such as a GPU. A GPU is a purpose built device that assists a CPU in performing complex rendering calculations. If a scene is to look relatively realistic and predictable under virtual lighting, the rendering software must solve the rendering equation. The rendering equation does not account for all lighting phenomena, but instead acts as a general lighting model for computer generated imagery. In the case of 3D graphics, scenes can be pre rendered or generated in realtime. Pre rendering is a slow, computationally intensive process that is typically used for movie creation, where scenes can be generated ahead of time, while real time rendering is often done for 3D video games and other applications that must dynamically create scenes. 3D hardware accelerators can improve realtime rendering performance.
Қолданылуы
Алдын ала кескін (көбінесе сымдық эскиз) дайын болғаннан кейін, рендеринг қолданылады, ол бит картасының немесе процедуралық текстуралардың, жарықтардың, рельефтік картаның және басқа объектілерге шағылысты орналасудың қосылуын қамтамасыз етеді. Соның нәтижесінде, тұтынушының немесе көрерменнің көретін толыққанды суреті пайда болады. Мультфильмдер үшін көптеген суреттер (кадрлар) рендерингтен өтуі керек және олар осы типтегі анимация жасауға мүмкіндік беретін бағдарламада біріктірілуі керек. Көптеген 3D графикалық редакторлар мұны істей алады.
Активтер
CAD кітапханаларында 3D модельдер, текстуралар, bump карталары, HDRИ және рендерленуге арналған әртүрлі компьютерлік графикалық жарық көздері сияқты материалдар кездеседі.
Сканерлеу желісін рендеринг және растерлеу
Суреттің жоғары деңгейдегі бейнелеуі міндетті түрде пикселдерден өзге домендегі элементтерді қамтиды. Бұл элементтер примитивтер деп аталады. Мысалы, схемалық суретте сызық сегменттері мен қисықтар примитивтер бола алады. Графикалық пайдаланушы интерфейсінде терезелер мен түймелер примитивтер болуы мүмкін. 3D модельдерді көрсетуде кеңістіктегі үшбұрыштар мен көпбұрыштар примитивтер болып табылуы мүмкін. Егер рендерингке пиксел бойынша (бейне ретімен) тәсіл кейбір тапсырмалар үшін тиімсіз немесе тым баяу болса, онда примитив бойынша (объект ретімен) тәсіл пайдалы болуы мүмкін. Бұл жағдайда, әрбір примитив бойынша бір рет цикл жасалып, ол суреттегі қандай пикселдерге әсер ететіні анықталады және олар тиісінше өзгертіледі. Бұл растерлеу деп аталады және қазіргі барлық графикалық карталар қолданатын рендеринг әдісі. Растерлеу көбінесе пиксел бойынша рендерингке қарағанда жылдам. Біріншіден, суреттің үлкен бөліктері примитивтерден бос болуы мүмкін; растерлеу осы бөліктерді елемейді, ал пиксел бойынша рендеринг олар арқылы өтуі керек. Екіншіден, растерлеу кэш сәйкестігін жақсартады және бір примитивпен толған пикселдердің суретте тікелей орналасуын пайдаланып, артық жұмысты азайтады. Осы себептерге байланысты, растерлеу интерактивті рендеринг қажет болғанда әдетте таңдалатын тәсіл болып табылады; алайда, пиксел бойынша тәсіл көбінесе жоғары сапалы суреттерді шығарады және растерлеу сияқты сурет туралы көптеген болжамдарға тәуелді болмағандықтан, әмбебап. Растерлеудің ескі түрі бүкіл бетті (примитивті) бір түспен көрсетумен сипатталады. Балама ретінде, растерлеуді күрделірек жолмен жасауға болады, яғни алдымен беттің төбелерін көрсетіп, содан кейін беттің пикселдерін төбелердің түстерін араластыру арқылы көрсетуге болады. Растерлеудің бұл нұсқасы ескі әдісті басып озды, өйткені ол күрделі текстураларсыз графиканың ағынға түсуіне мүмкіндік береді (бетке-бет қолданылған растерленген сурет, егер күрделі текстуралармен жабылмаса, өте блоктық эффектіге ие болады; беттер тегіс емес, өйткені бір примитивтен екіншісіне түс біртіндеп өспейді). Растерлеудің бұл жаңа әдісі графикалық картаның күшті көлеңкелеу функцияларын пайдаланады, бірақ жадыда сақталатын қарапайым текстуралар аз орын алатындықтан, бұрынғыдан да жақсы өнімділікке қол жеткізеді. Кейде дизайнерлер кейбір беттерде бір растерлеу әдісін, ал басқа беттерде екінші әдісті қолданады, бұл беттердің арасындағы бұрышқа байланысты, осылайша жылдамдықты арттырып, жалпы эффектіге зиян келтірмейді.
Жарық құю
Жарықпен құюда модельденген геометрия пиксельден пикселге, жолдан жолға, көзқарас нүктесінен сыртқа қарай, көзқарас нүктесінен сәулелерді шығару сияқты өңделеді. Объект қиылысқан кезде, нүктедегі түс мәнін бірнеше әдіспен бағалауға болады. Ең қарапайым жағдайда, қиылысу нүктесіндегі объектінің түс мәні сол пикселдің мәніне тең болады. Түс текстуралық картадан анықталуы мүмкін. Күрделірек әдіс – түс мәнін жарықтандыру коэффициентімен өзгерту, бірақ имитацияланған жарық көзімен байланысты есептемеу. Артефакттарды азайту үшін, сәл әртүрлі бағыттағы бірнеше сәулелердің орташа мәні алынуы мүмкін. Жарықпен құю – "көріс бағытын" (камера орнынан) есептеу және 3D кеңістіктегі әрбір нүктеден алынған мәнді жинақтап, сахнадағы "қатты 3D объектілер" арқылы "сәуле жолын" қадамдық түрде іздеуді қамтиды. Бұл "сәуле іздеуге" ұқсас, бірақ жарықпен құю кезінде сәулелер әдетте беттерден "кері шағылыспайды" (ал "сәуле іздеу" жарықтың жолын, соның ішінде шағылыстарды да іздейді). "Жарықпен құю" жарық сәулесінің түзу сызықпен жүретінін білдіреді (оның ішінде жартылай мөлдір объектілер арқылы өтуі мүмкін). Сәуле – камерадан немесе көрініс нүктесінен ("артқа қарай" немесе "алға қарай") басталатын вектор. Кейде соңғы жарық мәні "көшіру функциясы" арқылы алынады, ал кейде тікелей қолданылады. Оптикалық қасиеттердің шамамен моделін қосымша қолдануға болады: объектіден көзқарас нүктесіне дейінгі сәуленің қарапайым есептелуі жасалады. Жарық көзінен келетін жарық сәулелерінің түсу бұрышы есептеледі, содан кейін жарық көздерінің белгіленген қарқындылығымен бірге пикселдің мәні есептелінеді. Басқа модельдеу радиоздық алгоритмнен немесе осы екеуінің комбинациясынан алынған жарықтандыруды пайдаланады.
Жарық ізін табу
Жарық іздеу (ray tracing) жарықтың табиғи ағынын бөлшектер ретінде симуляциялауға бағытталған. Көбінесе, жарық іздеу әдістері Монте-Карло әдістерін қолдану арқылы рендерлеу теңдеуінің шешімін шамалау үшін пайдаланылады. Ең көп қолданылатын әдістердің кейбіреулері – жол іздеу (path tracing), екі бағытты жол іздеу (bidirectional path tracing) немесе Метрополис жарық көлігі (Metropolis light transport), сондай-ақ жартылай реалистік әдістер де қолданылады, мысалы, Уиттид стиліндегі жарық іздеу (Whitted Style Ray Tracing) немесе гибридтік әдістер. Көптеген іске асыруларда жарық тура сызықтармен таратылса, салыстырмалы кеңістік-уақыт эффекттерін (relativistic spacetime effects) симуляциялауға арналған қолданбалар да бар. Жарық іздеу жұмысының соңғы, өндірістік сапалы көрсетуінде әр пиксел үшін бірнеше сәулелер жіберіледі және олар тек алғашқы қиылысқан объектіге ғана емес, сонымен қатар бірқатар реттік "секірулерден" өтеді, оптиканың белгілі заңдарын қолдана отырып, мысалы, "жарылу бұрышы бейнелеу бұрышына тең" және сыну (refraction) мен беттік тегіссіздіктерге (surface roughness) қатысты одан да күрделі заңдарды пайдаланады. Сәуле жарық көзіне тап болғаннан кейін немесе, көбінесе, шекті санды секірулер саналғаннан кейін, жоғарыда сипатталған әдістерді қолдана отырып, осы соңғы нүктедегі беттің жарықтылығы бағаланады, ал түрлі секірулер арқылы жол бойындағы өзгерістер көріс нүктесінде байқалатын мәнді бағалау үшін ескеріледі. Бұл әрбір үлгі үшін, әрбір пиксел үшін қайталанады. Бөлшектік жарық іздеуде (distribution ray tracing) қиылысқан әр нүктеде бірнеше сәулелер туындауы мүмкін. Алайда, жол іздеуде (path tracing) Монте-Карло эксперименттерінің статистикалық сипатын пайдалана отырып, әр қиылыста тек бір ғана сәуле немесе ешқандай сәуле жіберілмейді. Физикалық негіздегі рендеринг (physically based rendering) деп аталатын тәсілдің бір бөлігі ретінде жол іздеу реалистік көріністерді көрсетудің басым әдісіне айналды, фильмдердегі эффекттерді қоса алғанда. Мысалы, танымал ашық кодты 3D бағдарламалық жасақтама Blender өзінің Cycles рендерерінде жол іздеуді қолданады. Жол іздеу арқылы жасалған кескіндер, әдетте, радиоздықты (radiosity) пайдаланғаннан гөрі шулырақ болады (негізгі бәсекелес алгоритм), бірақ радиоздықты күрделі көріністерге қолдану қиын болуы мүмкін және сәулеленудің тезельдік бейнелеуін (tessellated representation) пайдаланудан туындайтын артефакттарға бейім. Жол іздеудің салыстырмалы қарапайымдығы және Монте-Карло әдісі (бір пикселге жүздеген немесе мыңдаған жолдарды іріктеу) оны GPU-да, әсіресе Nvidia RTX және OptiX сияқты жарық іздеуді жылдамдату технологиясын қолдайтын соңғы GPU-ларда іске асыруды тартымды етеді. Жол іздеудің нәтижесін жою үшін көптеген әдістер әзірленді, бұл кейбір егжей-тегжейліліктерді жоғалту немесе шудан гөрі жағымсыз шағын артефакттарды енгізу қаупі бар, қолайлы сапаға жету үшін қажетті жолдардың санын азайту; қазір бұл мақсатта нейрондық желілер кеңінен қолданылады. GPU технологиясының жетістіктері ойындарда нақты уақыт жарық іздеуді мүмкін етті, бірақ қазіргі уақытта ол көбінесе растерлеумен (rasterization) бірге қолданылады. Бұл тек растерлеумен қиын болатын визуалды эффекттерді қамтамасыз етеді, соның ішінде қисық беттер мен өзара шағылыстыратын объектілердің шағылысуын және қашықтықтар мен беттік бағыттар бойынша дәл болатын көлеңкелерді. Жарық іздеу қолдауы DirectX, Metal және Vulkan сияқты ойындарда қолданылатын графикалық API-лердің соңғы нұсқаларына енгізілген.
Нейрологиялық рендеринг
Нейрорендеринг – жасанды нейрондық желілерді қолданатын рендеринг әдісі. Нейрорендерингке екі өлшемді суреттерден үш өлшемді модельдерді қайта құруға арналған сурет негізіндегі рендеринг әдістері кіреді. (VRML немесе 3D аппараттық үдеткіштеріне арналған OpenGL және DirectX сияқты API сияқты қарапайым 3D файл форматтарымен салыстырыңыз). Басқа рендерлер (оның ішінде жекеменшік рендерлер) де қолданылуы мүмкін, бірақ көптеген басқа рендерлер жақсы текстура сүзгілеу, текстура кэштеу, бағдарламаланатын шейдерлер, сұраныс бойынша тесселяция, геометрия кэштеу, геометрия кэштеумен сәуле трассировкасы, жоғары сапалы көлеңке проекциясы, жылдамдық немесе патентсіз іске асыру сияқты қажетті мүмкіндіктердің бірін немесе бірнешеуін ұсынуы мүмкін. Қазіргі таңдағы аса қажетті мүмкіндіктердің қатарында интерактивті фотореалистік рендеринг (IPR) және аппараттық рендеринг/көлеңкелендіру бар.