romanshuvalov
> Получится примерно так:
Какой-то странный конус. Почему у него по периметру плотность выше, чем посередине? Ты уверен, что интеграл берётся без ошибок?
Ну а так да, для нормальной работы алгоритма надо, что у самого фога изначально были достаточно плавные границы, лучи от лазеров и прожекторы в снегу, разумеется, таким способом не нарисуются. Из скринов в №0, мне кажется, там свечения достаточно плавные, кроме, может, разве что фонаря на третьем изображении (свечение на проводах выглядит скорее как эффект частиц, хотя по неподвижному скрину точно не скажешь).
Короче, ты спросил про объёмный туман подешевле — я ответил. В играх на UE1 повертексный туман работал — так что с самой по себе техникой всё в порядке. Если она у тебя не работает, то это уже конкретно твоя ситуация: либо просто неправильно реализовал, либо неподходящие начальные условия — слишком густой и резкий туман на недостаточно тесселированной геометрии — но это уже, сам понимаешь, такой трейдофф между физической точностью и фреймрейтом. Это равносильно как предъявлять, например, чтобы скринспейс- и кубомап-отражения работали как честный ртх.
Имбирная Ведьмочка
> Какой-то странный конус. Почему у него по периметру плотность выше, чем
> посередине? Ты уверен, что интеграл берётся без ошибок?
Я просто нарисовал картинку в блендере.
Имбирная Ведьмочка
> Короче, ты спросил про объёмный туман подешевле — я ответил. В играх на UE1 повертексный туман работал — так что с самой по себе техникой всё в порядке.
Ок. Но мне с дешевизной хотелось бы еще без сильной просадки в качестве.
Я, кстати, почти решил проблему пересекающихся (вернее, визуально накладывающихся друг на друга) объёмов через
glBlendEquation(GL_MAX);
Некоторые артефакты есть, но надо проверять на реальной сцене, а не на искусственном тестовом массиве источников света.
И осталось решить вопрос с размытием краёв у фигур (первый пост на этой странице).
> Как покрасивей и подешевле нарисовать объект с размытыми краями?
С этим вроде разобрался, простое и рабочее решение:
Наложение нескольких таких объёмов даёт артефакты по краям. Как решить не знаю, скорее всего никак (без увеличения количества текстур).
romanshuvalov
По первому вопросу - рисуешь все источники света в альфаканал бэкбуфера, потом построцессом блуришь и накладываешь на остальной бэкбуфер. Это ЧБ, для цветного уже альфаканалом не обойдёшься, придётся второй RGB буфер делать.
Mikle
> потом построцессом блуришь
Нельзя, дорого.
Как блюрить без постпроцесса я уже сообразил, последняя картинка.
А вот как понять, какие из источников скрыты геометрией - задачка сложнее. Пока решил сохранением глубины в соседний канал. Короче, всё то, что написано в конце нулевого поста. Ничего нового пока мне не подсказали.
romanshuvalov
Что за проект над которым работаешь?
romanshuvalov
> Не на телефоне, на VR-устройстве с Qualcomm Snapdragon XR2 и разрешением
> 1440х1560 в каждый глаз.
Quick sanity check: Есть ли игры для квеста с такими эффектами? Есть ли постмортем разборы этих игр на gdcvault или в других подобных местах?
Vitorio
> Что за проект над которым работаешь?
Кое-что для виара.
GLoom
> Есть ли игры для квеста с такими эффектами?
Я, кажется, не видел ни одну. Но справедливости ради я мало играл в нативные квестовые игры, в основном на ПК.
На квесте в основном игры из юнити и анрила, которые очень слабо заточены под мобильное железо и для любой красивости требуют многопроходный рендер с постпроцессом. А своих движков никто не делает.

с 1:30, внимание на прожекторы. И чуть дальше на 1:55.
А на 5:33 тот самый объёмный свет, создающий атмосферу, которого на квесте 2 не сделали.
Причём я считаю, что почти весь графон из правой половины видоса (PSVR2) спокойно можно сделать на квесте 2, если приложить немножко усилий.
Кстати, вопросы из нулевого поста можно считать решёнными, сегодня всё допроверяю и покажу, что получилось. Вкратце: большое количество фигур объёмного света сделать без артефактов не удалось, вместо этого совместил первые 2 варианта, теперь вместо тяжелого шейдера, умеющего только в кружки (1-й вариант) мы имеем маленький вспомогательный фреймбуфер и более легковесный шейдер, умеющий 4 любых фигуры (по одной на каждый канал RGBA-текстуры). Причём на месте фигур могут быть, например, анимированные спрайты или вообще все что угодно.
romanshuvalov
> > потом построцессом блуришь
> Нельзя, дорого.
Не дорого, я делал блур на мобилках и работало даже на дохлых мали Т830.
Хотя все относительно, я не помню сколько времени такой проход занимал и как я его оптимизировал, помню что на десктопах один вариант работает быстрее, а на мобилках другой.
Если много источников освещения, то постпроцесс выигрывает за счет константного времени.
Еще формат RGBA8 использует хардварное сжатие, что увеличивает производительность.
upd: нашел результаты на G52 MP2
Экран: 2200х1360
Трафик: чтение 525Мб/с, запись 438Мб/с
Блур: 2.5мс
/A\
> Блур: 2.5мс
Это слишком дофига, в виаре минимум 90 фпс, это менее 11 мс на кадр, а с запасом получается и того меньше. Ну и в моём случае постпроцесс сильно невыгодный, источников мало, в кадре вряд ли будут больше четырёх одновременно.
Кроме того, постпроцесс не сделает вот так:
![]()
Будет просто конусообразная фигура с некрасиво размытыми краями.
Будет просто конусообразная фигура с некрасиво размытыми краями.
Смотря что за пп. Облака в пп делал через SDF - вполне мягенько. С конусами там тоже проблем, вроде, нет. Но задавать сцену сложно. Там набор параметрических фигур
romanshuvalov
Советую покурить вольюм Фог в крайзисе
Grobozavr
> Смотря что за пп.
Посмотри на картинку двумя постами выше, такой "конус" невозможно размыть так красиво на постпроцессе. Уже решил, что задавать буду параметрически, кое-чего даже посчитал, будет что показать - покажу.
innuendo
> Советую покурить вольюм Фог в крайзисе
Вижу туториалы, как его включить в редакторе движка, пока не вижу подробностей реализации. Но он там слишком красивый и замороченный, вряд ли подойдет для моей задачи.
romanshuvalov
Посмотри шейдера
romanshuvalov
Так его и не надо размывать. Он считается как полупрозрачный обьём сразу. Правда не уверен, что это подходит для мобилок, однако конкретно с качеством там проблем точно нет никаких. Собственно можно сделать физически корректно.
Тема в архиве.