Проблеми с проследяване на лъчи - от бъдещето в реално време
Предговор
Но всъщност законите, приети от народните представители, вкусовете на избирателите, тоест потребителите, и научно-технологичния напредък в далечни области ще повлияят в много по-голяма степен на перспективите за проследяване на лъчи.
Въведение
Нека накратко подчертаем същността на метода за (проследяване) на лъчите. В метода на растеризация, използван в съвременната графика в реално време, за да се нарисува обект, има проекция върху равнината на екрана на триъгълниците, които изграждат обекта. И те се рисуват пиксел по пиксел, запълвайки буфера за дълбочина, тоест разстоянието до равнината на екрана. Буферът за дълбочина се изисква, така че триъгълниците, най-близки до наблюдателя, да нарисуват отдалечените, а не обратното. И всички останали ефекти се извършват въз основа на растеризацията.
При обратното проследяване на лъчите, от друга страна, изобразяването идва от пиксели на екрана, а не от обекти. През всяка точка на екрана се изтегля въображаем лъч в посока от наблюдателя. Той симулира лъч светлина, идващ към наблюдателя от дадена посока. И за всеки лъч изглежда с кой обект първо се пресича. И цветът на областта на обекта, съответстващ на пресечната точка, ще зададе цвета на този пиксел. Но тогава забавлението започва. След като пресече обекта, лъчът започва своето пътуване през сцената. Лъчите се провеждат по посока на източниците на светлина, за да се провери дали дадена точка на този обект е засенчена, можете да проведете отражен лъч, ако обектът има огледални свойства, можете да проведете пречупен лъч, ако обектът е полупрозрачен.

В този случай точката на обекта е пряко осветена само от един източник на светлина, а вторият е засенчен от друг обект.
По този начин има известна симулация на разпространението на светлината. Методът има много сложни модификации, но те се основават на „проследяване на лъчи“, тоест намиране на пресичането на лъч (светлина) със сценични обекти.
Въпреки че методът за проследяване ви позволява да нарисувате сцена със светлинни ефекти, прозрачност и отражения, той е изчислително изключително скъп. Операцията за намиране на пресичането на произволен лъч с обекти в сложна сцена е доста нетривиална. И не може да бъде толкова лесно ускорено от специални (доста прости) „ускорители“, колкото математически простата операция на растеризиране на триъгълници. Следователно в игровата графика се използва метод на растеризация, който ви позволява бързо да рисувате геометрия, тоест обектни форми и текстури с всякакви шейдъри. А осветлението на почти цялата сцена е статично. Само за избрани движещи се модели се използват частни техники за засенчване. Те също се основават на растеризацията: сенките по същество са просто нарисувани.
Най-простият пример: силуетът на обект се изчертава в отделен буфер, от гледна точка на източника на светлина и освен това съдържанието на този буфер, като текстура, се нанася върху повърхността под обекта. Получават се такива динамични бягащи сенки. Те могат да се видят в много компютърни игри за дълго време. Методът може да бъде подобрен, можете да проектирате този силует върху стени, върху извити повърхности. Структурата на този силует може да бъде размита, за да се създаде модел в сива скала, а не просто отчетлив черно-бял силует. И тогава, когато се наслагвате, получавате мек преход от тъмнина към светлина, така наречената мека сянка. Това няма да е физически правилна сянка, но изглежда подобно.
Меката сянка, конструирана с помощта на трасиране на лъчи, ще бъде по-реалистична, но е много по-скъпа за изчисляване. И първият въпрос, геймърът, ще ли забележи ли възбудата от, например, компютърна стрелба, разликата между тясно нарисувана сянка и по-физически правилна? Тук стигаме до въпроса за субективното възприятие на хората, тоест геймърите, графиките. В крайна сметка картината на екрана на монитора само приблизително приближава реалността. И ако използваме различни критерии, мярката на това приближение ще се промени.
Оказа се и е очевидно, че за мнозинството решаващият критерий за сближаване е геометричните детайли. Освен това, с известна разлика, висококачествена текстура. По отношение на текстурирането, методът за проследяване на лъчите е приблизително равен на растеризацията, няма да разглеждаме особено въпросите за текстурирането и шейдърите на материали.
Но не е изгодно да се рисува геометрия на сцената с проследяване на лъчи, въпреки че зависи от сцената. По-ефективно е да се нарисуват сцени от определен план чрез проследяване, но сцените от съвременните игри са далеч от този клас.
По-нататък в статията ще разгледаме подробно различни проекти в областта на проследяването, но например по едно време Intel демонстрира изобразяването на нива от Quake III с помощта на проследяване. Ниските поли нива с ниска разделителна способност бяха бавно изтеглени в много скъпа и усъвършенствана система, далеч от потребителския пазар. Номерът беше, че можете да рисувате динамични сенки и сложни отражения.
Но човешкото зрение и възприятие е така подредено, че е много адаптивно към осветлението. Всъщност всякакви сенки само пречат на човешкото око да подчертае обектите, от които се нуждае. Например, по време на лов, типично занимание на нашите предци, плячката може да бъде скрита в сенките на дърветата. Сенките трябва да бъдат премахнати от виртуалното изображение, формиращо се в мозъка.
Друг момент е, че действителното осветление на една сцена може да бъде невероятно разнообразно, в зависимост от отразяващите свойства на повърхностите и свойствата на околната среда, по-специално въздуха, както и от свойствата на светлинния източник. Това не означава огледални отражения, а разсейването на светлината от обекти. Както виждаме, в самия ъгъл е по-тъмно, колкото по-близо до прозореца, защото в самия ъгъл най-тъмният в крайна сметка получава по-малък брой фотони светлина, пътуващи из стаята. Самият въздух също може да разсейва светлината по различни начини. И за приблизителен опростен модел на осветление, използван в много игри, можете да изберете реалистични параметри за отразяващите свойства на повърхностите, свойствата на въздуха, източника на светлина, за да възпроизведете приблизително осветлението на игровите сцени в действителност.
Игрите често използват и предварително изобразено осветление за сцената, което се изчислява предварително, като се използва същия метод за проследяване на лъчи и се записва в текстурите на материалите на обектите. Добре, през повечето време виждаме статична светлина в реалния живот. Слънцето върви бавно през небето, но когато влезем в стаята, включваме светлината, ако тя вече не е там. След това вземаме картечницата и стреляме по крушките, светлината се изключва. Всичко това може да се изчисли предварително и да се постави в специални текстури, наречени lightmap (за да се спести място, те са с по-ниска резолюция от материалните текстури, тъй като осветлението се променя плавно и може качествено да се интерполира за всяка точка с помощта на малки текстури). Или изчислете осветлението за всеки връх на триъгълниците на силно детайлна сцена и нарисувайте сенки от движещи се модели приблизително с помощта на един от частните методи.