Cheb's Game Engine

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: Cheb's Game Engine

Сообщение Cheb » 12.10.2018 15:23:26

все-же 8.1 против 9.0 на GeForce FX 5200

Упс. Попутал его с 9500.
Нет, ниже GLSL и SM 2.0 я спускаться не буду, просто потому, что задуманное без шейдеров тупо невозможно.

Я просто старался обратить внимание на тот факт что оно ВАЖНО (и очень сильно влияет на восприятие картинки... )

А то. Освещение - это очень интересный вопрос. За основу взял майнкрафт. Главной головоломкой для меня стала та проблема, что в майнкрафте решается... Скажем так, некрасиво. Под открытым небом - голубой туман, с которым сбленживаются дали. В пещерах - темнота, с которой сбленживаются дали. Майнкрафт тупо меняет цвет тумана, при входе в темноту делая его чёрным. При этом вид из пещеры наружу... Фу. Вид издали под нависающий козырёк - тоже фу.

А у меня ещё усугубляется тем, что дали будут сбленживаться не с цветом, а с замыленным рендером дальней зоны (от 50 м до горизонта). Пробовал и так, и этак, насиловал себе мозг в стиле "как же ёжики ******?". Больше одного прохода *крайне* нежелательно, их и так уже два. Чтение из глубины целевая платформа не держит.

Потом догадался поставить лошадь впереди паровоза: любой шейдер, рендерящий ближнюю зону (т.е. основную) в качестве одного из входов получает текстуру дальней зоны. Это его, конечно, утяжеляет, но а) дальняя зона низкого разрешения (мыло, мыло везде!) и б) передавать ничего не надо, достаточно одного юниформного вектора чтобы пиксельный шейдер взял свои экранные координаты, перевёл их в координаты бекграунда и прочитал оттуда.

В комбинации с четырёхкомпонентным освещением "красный-зелёный-синий-дневной_свет" это решает проблему элегантным хаком. А поскольку прозрачности не будет (на самом деле будет, но только на основе дизеринга / шума / того и другого вместе, можно без хлеба) то и проблем с блендингом от такого хака нет.

Теней у меня не будет (разве что размытый кружок, как в третьем квейке): в качестве нижнего лода часто встречающихся объектов будут применяться спрайты, пререндерённые из соответствующих моделей. Причём, шестикомпонентные: глубина/альфа, амбиент оклюжен, s в скине, t в скине, бинормаль, тангента. Чтобы на этот спрайт можно было, например, натянуть металик environment mapping или использовать параметры материала из скина.
Хотел четырёхкомпонентные, с предзапечёным углом между вектором взгляда и вектором освещения, но нормальный металлик это не позволило бы.

(Кстати нативный Ку2 отличный пример как можно испортить весь графон если использовать совсем уж "невидимое" и кривое освещение ...

Оптимизация, десу. Насколько помню, для моделей брали освещённость из лайтмапы под ногами, а вектора там нету и его брали с потолка. Чтобы осветить модели так же хорошо, как стены, понадобился бы нереальный объём памяти с 3d лайтмапами, вычислением и хранением векторов... А мужики за каждый байт бились.
Ну, по крайней мере, софтредер в 320х200 выглядел норм. 640х480 мой комп не тянул, а Voodoo2 я обзавёлся много позже. Предзапечённый амбиент оклюжен из ку2 - до сих пор эталон качества.

Разумеется СЕЙЧАС это реальный мод . но представь какой был бы "шок и трепет" если бы q2 СРАЗУ мог бы выдать подобное изображение !

Ну, не знаю. Для своего времени и ванильный вполне шок и трепет был.
Увы, для бампа нужно запекать в лайтмапу не просто освещение, а направленное освещение (вот, как во второй халфе) и нужен пиксельный шейдер. А до девятого директикса это всё было уделом титанов от программирования и юзверей с титаническим кошельком.

4 Про "подводный" мод ку2: Я все же "догадался"( ну правда при помощи поиска

Рабочая ссылка http://chebmaster.com/q2facelift/index_ru.html
Мод наивно полагает, что все мониторы на свете - 4:3. Может понадобиться выставить квадратное разрешение рабочего стола перед запуском.
Для перекомпиляции нужен Turbo Delphi и исходники проекта Quake 2 Delphi: я вложил в архив только те файлы, что изменил сам (включая исправление самого уродливого бага с динамическим освещением, лол)
Ланцош рулит и нагибает: Изображение
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 685
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 14.10.2018 03:54:33

Скажу честно для меня первая часть про шедеры, дальние зоны и т.д. пока ну очень далека от моего уровня практики кодрера (я пока с трудом одну модель в OpenGL с грехом пополам из файла в своем проекте загружаю ) ... А "теорию" знакомую мне со времен "игровой практики" за крайние десять лет я уже капитально подзабыл. Но все-же что за проблемы проблемы с прозрачностью ? Странно как-то звучит! То есть если рендер ближнего плана получает текстуру дальнего плана то, что мешает сделать шейдерный ( или софт) пересчет для небольшого количества прозрачных текстур ? (Вода + витражи + например вазы ) Понимаю что сравнение малость неуместно, однако даже у меня что-то отдаленно похожее действует ( да по принципу "шоб було " но красиво ведь !)

Изображение
тупо смешивает по RGB с коэффициентом + маска (черный фон после моего кривого Open GL "рендера" но тормозит там чем угодно но только не "прозрачностью " )
Зы
Вообщем неужели нельзя этот с позволения сказать "код"
Код: Выделить всё
  pd[x*3]:=round((1-Amount)*ps1[x*3]+Amount*ps2[x*3]);
  pd[x*3+1]:=round((1-Amount)*ps1[x*3+1]+Amount*ps2[x*3+1]);
  pd[x*3+2]:=round((1-Amount)*ps1[x*3+2]+Amount*ps2[x*3+2]);

в шейдер вставить или в софт режиме для пары тройки полигонов посчитать (чтобы хотя-бы воду сделать ) ? :roll:
Зы
Кстати воду вообще можно считать отдельно как "пост процесс"... Закрасив например края прозрачных контуров "невозможным цветом". (Кстати всякие эффекты преломления искажения и тд в этом варианте делаются просто "на ура"! )
Зы Зы
Извини если написал чушь с точки зрения технологии 3д-рендаринга... Я действительно еще сильно в ней "плаваю". (Кажется "простая прозрачность" есть как базовое свойство в том же OpenGL но вроде она там тормозит не чахло и хуже ее только отражения ... ) По освещению : Мне кажется что все красивости современных эффектов освещения можно делать на уровне подготовки тектур (Вот там можно для простой локатации действительно предварительно посчитать от 18 до 180 вариантов текстуры стен для всех возможны углов обзора (хоть с бампом , хоть с "рефлексией" с бликами хоть с тенями от стационарных ламп и т.д . ) ) :idea:
Хм интересно ! Можно протестировать на валяющейся у меня где-то демке с "кбической" панорамой .
А вообще уровень моих знаний в области 3д-рендаринга явно нуждается в капитальном "освежении", а то чувствую, что даже в простом обсуждении ничего путного предложить не могу . :roll: Позор мне ленивому !
Alex2013
энтузиаст
 
Сообщения: 1002
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 17.10.2018 19:01:43

Предрасчёт - круто, но память не резиновая, и у видяхи - потолок возможностей "текселей в секунду". Т.е. чем больше разных текстур - тем меееедленнее рисует. Обычные законы физического мира: текстура - это память, а у памяти - полоса пропускания и латентность. И то, и другое растёт с прогрессом оооочень медненно.
DDR3 ненамного быстрее DDR2, а латентность - так вообще одинаковая, ибо уже лет как десять достигнут физический предел. Перескочил на другое место памяти за пределами кеша - жди 10 наносекунд пока твой сильномогучий шейдер простаивает, ожижая от неё отклика. Если такая байда происходит на каждый из двух мегапикселов FullHD - ничтожные 10нс сложатся в +20мс на кадр просто тупого ожидания. А это уже 30 FPS или даже меньше.

Прозрачность - гугли на тему "порядконезависимая прозрачность" и проникайся. Только расчёску не забудь, потому что к концу чтения у тебя волосы будут стоять дыбом.

Блендинг - вся веселуха в том, что блендинг выполняет специальный аппаратный блок, который *не программируется*. От слова никак. Есть несколько режимов как интерпретировать альфу и цвет - и на этом всё.
Причём, пиксельный шейдер *не может знать*, с чем будет смешивать его вывод блолк блендинга. То есть, из рендер буфера *нельзя читать*. Это фундаментальное ограничение архитектуры, без которого видяхи были бы в 10 раз медленнее. Если надо читать из глубины (для мягких партиклов, например) - то делают в несколько проходов.
1. отрендерить с буфером глубины.
2. отсоединить буфер глубины и переквалифицировать его в пригодную для чтения текстуру
3. отрендерить мягкие частицы, читая из бывшего буфера глубины как из текстуры.
А если тебе вдруг понадобилось знать значения цветового или глубинного буфера, в который рендеришь - извиняй, бро, тебе не повезло. Меняй архитектуру, извращайся, разбивая на два прохода.
Например, прозрачные объекты: куда они в данной схеме попадают? Мало того, что их надо сортировать перед отрисовкой (а полигоны модели, которая может заслонять сама себя - вообще не отсортируешь). Если ты их рендеришь с отключённой записью в глубину - то наложенные вторым проходом мягкие частицы и туман наложатся некорректно, слишком густо, как если бы там был задний план, который позади прозрачного объекта. Если с включённой записью в глубину - мягкие частицы и туман обработают прозрачный объект как свою дальнюю границу и наложатся некорректно, как если бы позади прозрачногоо объекта была колонна чистого воздуха вплоть до самого задника.
Чувствуешь всю глубину ануса? :evil:

И вот поэтому я буду использовать для прозрачности stipple alpha на дизеринге, и никакого блендинга. Только да/нет. А сглаживать тот факт, что король-то голый, будут темпоральный шум и суперсэмплинг.

З.Ы. Когда в обливионе или третьем фолауте твой перс заходит в воду - его волосы исчезают, обрезанные поверхностью воды, и под водой он оказывается лысый. Это к вопросу полупрозрачных объектов, которые взаимопересекаются.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 685
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 18.10.2018 21:35:24

Да уж "глубина потенциальной задницы бесконечное анизотропное множество" .... :roll:

С темпоралкой может быть неплохо ... но она вроде действует только при движении или "статическом шуме " живого видео ... или это про эффект "старое кино" ?
А суперсэмплинг ? Если я верно понимаю то это то чем "убили" почти всю атмосферу в сталкере.
Это альфа 2002 года ! Карл врубаешься ? (это значит что делать начинали еще в прошлом веке! :idea: )
Изображение

Изображение
Изображение
http://stalker-epos.com/ol/1114.html

А это "типа релиз и далее"..
Изображение
Изображение
Впрочем два скирина выше это Лост Альфа где гафоний еще пытались как-то "укротить" а вот релиз как он есть...
Изображение
Красиво ? Безусловно ! Но ... честное слово мне захотелось играть в черно белом варианте
(Впрочем уменьшение насыщенности цветов все равно не помогло ... мазня она всюду мазня ! :idea: )
http://www.gamershell.com/static/screen ... 9_full.jpg
Разница в атмосфере и реалистичности (особенно с поправкой на то что в первых альфах и бетах графон все-же значительно менее детальный) плющит и ужасает! :evil:
Зы
Возможно уже писал тут что-то похожее так что извиняясь за самоповтор ... но графика в "пост-релизоном" Сталкере это прямо таки даже не эпическое а хотническое разочарование ! После более чем пяти лет ожидания ... :cry: оставалось лишь поставить свечку несбывшимся надеждам ! :idea: :idea: :idea:
Alex2013
энтузиаст
 
Сообщения: 1002
Зарегистрирован: 03.04.2013 11:59:44

Пред.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru