ПредишенСледващото

Тъй като вече не се страхува от човекоядец и започна да го направи една игра

От техническа гледна точка в графика можем след това силно фокусирана върху вида на играта Torchlayt. Но душата поиска повече, защото успоредно с развитието на графичната част на двигателя отиде и художествено търсене.

Тъй като вече не се страхува от човекоядец и започна да го направи една игра

Тъй като вече не се страхува от човекоядец и започна да го направи една игра

Kruzisa призрак със своите стотици крушки не е позволено да спи през нощта. Решено бе да отида на разсрочено направи (разсрочено рендер или чрез предаване на запис). Когато отлага за рендиране генерира набор от "крайната" изображение без изчисляване на сенките: изображението на цвят, изображение и изображението дълбочина от нормалните. Познаването на положението на източника на светлина, дълбочината на нормалните пиксели и за оцветяване може да бъде изчислена.
В сравнение с прогнозни оказване имаме няколко кифлички:
1) Увеличаване на FPS се дължи на факта, че геометрията се оказва само веднъж
2) Възможност за работа с различни източници на светлина: добавяне на нов източник на светлина има малък ефект върху производителността.
3) Ускорение на определени видове пост-обработка, по-ефективно изпълнение на меките частици и възможност за добавяне на лечение екран пространство размисъл. Меки частици, както и пост-обработка ефекти (DOF, SSR, SSAO) изискват дълбочина карта и нормали. Директен рендиране не дава тези карти, и те трябва да бъдат предоставени отделно. Когато отложено отразяване на тези карти ще се сервират на сребърен поднос.

Взехме под внимание три варианта за изпълнение на разсрочено осветление:

Вариант А:

Тъй като вече не се страхува от човекоядец и започна да го направи една игра

Изчисление на покритие се разделя на два етапа:
1. Първият етап се изготвя всички непрозрачен геометрия 4 текстура. (Дифузно, огледален, гланц, нормална дълбочина карта и картата на емисиите)
-дифузен, огледален, гланц се взема директно от геометрията на текстура,
-екстрахира от нормалното нормална карта калибрира чрез геометрията и се превръща в камера координира пространство.
-Карта на луминесценция се получава чрез добавяне самосветене карти, RIM осветление, околно осветление + слаба осветеност дифузна към камерата.
2. Използване на нормална карта, дълбочината, дифузна и огледален блясък изчислява дифузна и огледален осветяването на всяка точка за всеки източник на светлина и единичната стойност се добавя към картата на емисиите. По същия минувач да се проверяват всяка точка на екрана в картите в сянка.

Това е стандартната версия на разсрочено осветление, внедрена в повечето игри.

Вариант Б:

Тъй като вече не се страхува от човекоядец и започна да го направи една игра

Изчисляване на осветление е разделена на 3 етапа:
1. На първо място, всички геометрия е направен непрозрачен текстура 1 (извършени нормални карти, дълбочина и блясък)
2. При нормална карти, гланц и дълбочина постановено две карти: дифузната и огледален осветление за всеки източник на светлина.
3. В третата стъпка на крайния постановено картинката: всички непрозрачен геометрия се изтегля отново, но с разпространението и огледален и осветеността на всяка точка се изчислява, като се умножи дифузно осветление на картата дифузни + огледален осветление работи по огледален карта джанта осветление + + + карта самосветене светлина от камера.

Недостатък на този метод е един - два пъти извършени цялата геометрия. Въпреки това, втори път могат да бъдат извършени с готови Z-буфер, получен в първия етап.

Вариант Б:

Тъй като вече не се страхува от човекоядец и започна да го направи една игра

Изчисляване на осветление е разделена на 3 етапа:
1. Първият етап се изготвя в целия текстурата непрозрачен геометрия 4 (дифузно, огледален, гланц, Нормално, дълбочина луминисценция карта и карта (като сума от добавяне на самостоятелно осветление на картата, RIM осветление, дифузно осветление + слабо осветление от камерата)).
2. При нормална карти, гланц и дълбочина постановено две карти: дифузната и огледален осветление за всеки източник на светлина.
3. В третата стъпка на крайния постановено картинката: осветеност на всяка точка се изчислява, като се умножи дифузно осветление на картата дифузни + огледален осветление работи по огледален карта карта самосветене ...

Това изпълнение - смес от първите две изпълнения. В сравнение с вариант А, получаваме печалбата в скоростта поради особеното вариант Б: вместо четири проби от текстурата отива само един.

Сега ние сме внедрили първата версия на разсрочено sovescheniya. Всички канали, които се използват, за да направи окончателното изображение могат да бъдат показани в режим на отстраняване на грешки.

Тъй като вече не се страхува от човекоядец и започна да го направи една игра

След оказване на крайния образ след обработката се извършва: тук има ефект на дълбочина на рязкост и корекция на цветовете се извършва. В същото етап на размисъл, изготвен технология SSR.

SSR (Screen Space Reflection) - това alogoritm създаването на реалистични отражения в сцената с помощта на данните, които вече са били предоставени на екрана. Накратко, от камерата впуска лъч да се пресичат със сцената. Използване на нормалата в точката на пресичане се счита отражение. По този отражение на дълбочина карта лъч проследяване настъпва до Преди да влезе в геометрия, като резултат резултати светимост точка на приема и умножава по огледален отразява точки и се записва в отражателен точката на блясък.
Сега реализирани два алгоритъма място на екрана Reflections:
1) Трейс случва в координатите на камерата - бавни, но дава вярна картина.
2) проследяване случва в координатите на текстурата - бърз, но дава грешка при ниски ъгли.

Тъй като вече не се страхува от човекоядец и започна да го направи една игра

Тъй като вече не се страхува от човекоядец и започна да го направи една игра

Ние използваме нашата мрежа и игри двигател. Двигателят графики - Ogre3D, Физическо - Bullet. Скриптове: Lua, C # (моно). По време на развитие тя е значително dopilivat Ogre3D и отстраняване на грешки с един куп Blender ... планира да се свържете с разработчиците на Ogra и предлагат да се включат завършването му в следващия Ogre събрание.

В момента, това е, точно сега, това е нашата втора кампания за набиране на средства на Kickstarter.

Използвани езици за програмиране: C ++, PHP, Lua, C #, Python, Java, Groovy, CG, GLSL, HLSL.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!