~ X ~
А разница какая? Ты боишься, что будет переполнение signed integer? Ну это же несуразно. Зато от unsigned один непрерывный геморрой под названием "signed/unsigned mismatch".
Сегодня я расскажу вам о зеркалах в волатиле. Подумаешь, зеркала, скажете вы. Где мы их не видели? Всё правильно, зеркала есть в любом приличном движке. Теперь они есть и в волатиле.
В принципе, зеркала не требуют шейдеров для рисования (т.е. работают даже в режиме fallback, когда почти все фичи отключаются). Однако если шейдеры поддерживаются, то можно получить интересный эффект искажения отражения по нормалмапе:
Этот эффект можно использовать для "нанесения" на зеркала трещин и, конечно же, для искажения отражения в воде (но для воды в будущем будет свой специальный шейдер).
Любопытным нововведением новой версии движка является поддержка рекурсии, настраиваемой через шейдерный скрипт. Глубина рекурсии, в принципе, может быть любой, но на практике накладываются некоторые технические ограничения и, конечно же, ожидаемое падение фпс. Отражения в зеркалах совершенно честные - в них есть и свет, и бамп, и тени, в общем, всё как полагается. А т.к. текстура зеркала наносится на базовую текстуру с некоторой альфой (также настраивается в шейдерном скрипте), то мы можем получить плавное затухание рекурсивного отражения.
Готов спорить, что вы тут же захотели посмотреть на скриншот комнаты-коробки, все поверхности которой - зеркала?
Глубина рекурсии тут выставлена 2, 3 движок уже не потянет - слишком много переотражений.
В дальнейшем, помимо зеркал, будут сделаны рекурсивные порталы и экраны, принцип в целом тот же самый.
Конечно же, чуда не произошло, и все эти зеркала-порталы по прежнему изрядно кушают фпс, т.к. многократно увеличивают работу рендера. Поэтому использовать их нужно будет с осторожностью, особенно в режиме рекурсии.
XaeroX писал: 3 движок уже не потянет - слишком много переотражений.
А возможности упростить сцену при переотражении нет? Ну там разрешение вьюпорта уменьшить, тени почикать, особенно которые далеко находятся, ещё что-то скрыть. Не обязательно отражать на 100% честно зеркало в зеркале. Потому что некоторых вещей не будет заметно. Ну это я так, к слову. Рекурсивные отражения в зеркалах навряд ли где могут понадобиться.
Давай уже показывай всё остальное, зеркала мы и в HLFX видели, хоть и без рекурсии. И когда релиз будет? Меня ограничения халфы достали уже, кодить тяжело
Добавлено 28-05-2015 в 10:09:
И эта, минимум 100fps новая волатила выдаёт стабильно на GTX 275 во всех сценариях?
С мультиплеером как? А то от ксаша не дождешься. Был бы там предиктинг, давно бы бросил голдсорс, и накодил нужные мелочи прям в движке, чтоб не писать хаки для одной и той же фичи на сервере, клиенте и в пмуве.
Ku2zoff писал: А возможности упростить сцену при переотражении нет? Ну там разрешение вьюпорта уменьшить, тени почикать, особенно которые далеко находятся, ещё что-то скрыть.
Разрешение уменьшить можно (команда r_portalPicmip). Но это мало на что влияет в условиях избытка видеопамяти и мощного GPU, коим является GTX275. "Что-то скрыть", вообще говоря, нетривиально - движок не может сам догадаться, что будет видно хорошо, а что плохо. Тут задача левел-дизайнера - аккуратно размещать зеркала и продумывать, что откуда видно. То же самое касается и динамических источников света - знатных любителей покушать фпс.
Цитата:
Ku2zoff писал: Не обязательно отражать на 100% честно зеркало в зеркале. Потому что некоторых вещей не будет заметно.
Не обязательно, но крайне желательно. Отсутствие всяких "мелочей" очень режет глаз на практике. Потому что если мелочи не нужны - проще кубемапу налепить.
Цитата:
Ku2zoff писал: Рекурсивные отражения в зеркалах навряд ли где могут понадобиться.
Ситуации, где зеркало видно из зеркала, не так уж редки, как тебе кажется. В том же Deus Ex (как сейчас помню) в доме Эверетта были два зеркала напротив друг друга. Разумеется, с переотражениями (ибо движок Unreal).
И да, игру Portal все помним?
Цитата:
Ku2zoff писал: Давай уже показывай всё остальное, зеркала мы и в HLFX видели, хоть и без рекурсии. И когда релиз будет?
Я показываю по мере того, как появляется что-нибудь интересное. Релиз будет "как только - так сразу", подбором подходящих времён года я, подобно отдельным товарищам, никогда не увлекался.
Цитата:
Ku2zoff писал: И эта, минимум 100fps новая волатила выдаёт стабильно на GTX 275 во всех сценариях?
Фпс зависит от сложности сцены, количества динамических источников света, зеркал и т.п.
На последнем скрине вон 69 фпс всего. Причём тормозит не расчёт проходов, не программный скиннинг моделей - это всё делается за 1 мс. Тормозит отрисовка - смена рендертаргетов, обновление буферов, переключение стейтов и т.д.
И да, пока говорить о фпс я не хочу, т.к. возможно, будут ещё работы по оптимизации. Хотя я их веду постоянно. Изначально задача стояла в том, чтобы новая версия волатилы выдавала значительно больший фпс при тех же условиях, что и старая. И это, в общем-то, достигнуто.
Цитата:
Ku2zoff писал: С мультиплеером как?
Будет, с предиктингом, разумеется. Всему своё время.
XaeroX
Великолепные зеркала! Рекурсия через стенсил реализована? Или у классического рендера в текстуру матрицу удалось настроить? Возможно ли создать рекурсивные зеркала с искажениями?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
XaeroX
Чтобы что-то нравилось, нужно это что-то более менее знать, правильно? Ну, а Волатилу я почти не видел, за исключением того, что у меня прилично тормозило :/