ПрограммированиеФорумГрафика

Объёмный свет / объёмный туман (решено) (2 стр)

Страницы: 1 2 3 48 Следующая »
#15
15:01, 31 дек 2023

romanshuvalov
> затем еще раз поверх всего фреймбуфера нарисовать полупрозрачный квад - проиводительность упадёт ниже приемлимого уровня.
> Не на телефоне, на VR-устройстве с Qualcomm Snapdragon XR2 и разрешением 1440х1560 в каждый глаз.

Да, я понял. Но всё равно странно. Как же, тами hud рисуют и частицы?

#16
16:56, 31 дек 2023

Der FlugSimulator
Частицы мелкие, на порядки меньше площади экрана. Hud обычно только в меню, тоже небольшой и даже не всегда полупрозрачный

#17
20:32, 31 дек 2023

romanshuvalov
> Частицы мелкие, на порядки меньше площади экрана.

Я видимо что-то не понимаю. Там что, растеризация софтовая?
По моему, пиксельный размер квада особо не имеет значения, а вот их количество - да.

#18
20:54, 31 дек 2023

В аликс фроксели используют. На vr-мобиле норм потянет

#19
21:00, 31 дек 2023

Воксели это кубики.
Фроксели это лягушатами ?

#20
21:33, 31 дек 2023

ronniko
Фр от слова fart, т.е. пердоксели

#21
10:38, 1 янв 2024

romanshuvalov
> Допустим, мы имеем плоскую стену (один квад)
"Плоский" ещё не обязательно значит "один квад", стена может быть тесселирована.

#22
15:13, 1 янв 2024

Battle Angel Alita
> В аликс фроксели используют. На vr-мобиле норм потянет
За один проход сделать невозможно. Ну и от второго метода не сильно отличается.

Мисс_Самец
> > https://ijdykeman.github.io/graphics/simple_fog_shader
> для мобилки очень мило
> еще варианты есть?
Вот, жду, может кто что предложит.

Я тут подумал - можно совместить первые два варианта: сначала вторым рисуем фигуру, а затем используем первый, но перед применением домножаем на результат рендера фигуры.

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

Имбирная Ведьмочка
> "Плоский" ещё не обязательно значит "один квад", стена может быть
> тесселирована.
Как бы ни была тесселирована стена, попытка перевести расчёты в вершины ни к чему хорошему не приведёт, всё будет мелькать и всё будет мыльное.

А должно быть вот так:

HL Alyx Volumetrics 6 | Объёмный свет / объёмный туман (решено)

(Само собой, в данном примере можно заранее посчитать, что объекты переднего плана не попали под действие объемного освещения и рисовать их просто "как есть", но это частный случай, а я ищу общее решение.)

#23
15:31, 1 янв 2024

Подскажите про объёмный свет.
Ищу общее решение.

RTX on\ RTX off :)

#24
19:22, 1 янв 2024

romanshuvalov
> За один проход сделать невозможно. Ну и от второго метода не сильно отличается.
В смысле? Заполняешь 3d текстуру в начале каждра, потом в основном пассе сэмплишь её в шэйдере.

#25
20:29, 1 янв 2024

Battle Angel Alita
А, да. Но и заполнять, и считывать довольно большую 3d-текстуру довольно накладно. Разве что в глубину сделать её с очень коротким числом слоëв и сделать ось глубины ещё и нелинейной. Получится более сложная вариация на второй способ. Сработать сработает, но, думаю, дороговато в производительности.

#26
20:38, 1 янв 2024

Battle Angel Alita
Так, минуту, 3д-текстуру надо ведь сэмплить целиком? Если она глубиной 16 текселей, значит 16 выборок? Не годится, долго же. Лучше уж тогда отсортировать источники по глубине и раскидать их на несколько 2д-текстур (2-й способ), непересекающиеся пусть лежат на одной, пересекающиеся - на разных, будто на разных слоях. Звучит как неплохое решение "в лоб".

#27
21:16, 1 янв 2024

romanshuvalov
> (Само собой, в данном примере можно заранее посчитать, что объекты переднего
> плана не попали под действие объемного освещения и рисовать их просто "как
> есть", но это частный случай, а я ищу общее решение.)
Ты неправ. Нарисуй треугольники стены и перчаток на бумаге, с конусом света посередине между ними, и посчитай интеграл от волюма для каждой вершины руками. Никакой особой обработки для перчаток не нужно, ибо для них интеграл изначально должен получиться нулевой.

romanshuvalov
> Как бы ни была тесселирована стена, попытка перевести расчёты в вершины ни к
> чему хорошему не приведёт, всё будет мелькать и всё будет мыльное.
Снова неправ. Если ты рассчитываешь по вершинам — то, очевидно, интерполяция будет происходить по треугольникам меша, а не в скринспейсе.

#28
12:17, 2 янв 2024

Имбирная Ведьмочка
Кажется, я что-то не понимаю. Но что именно я не понимаю - я не понимаю.

Вот стена. Допустим, я расщедрился и разделил её аж на 64 квада. Для каждой вершины посчитал, попала она в конус или нет.

Получится примерно так:

8x8 quads | Объёмный свет / объёмный туман (решено)

И как мне это поможет?

#29
12:52, 2 янв 2024

В продолжение темы.

Как покрасивей и подешевле нарисовать объект с размытыми краями?

Поробовал привязать к альфу к нормали, ожидаемо, получился отстой:

semi-transparent cube | Объёмный свет / объёмный туман (решено)

(Хорошо работает только на сферах, даже капсула с торца некрасивая).

Поскольку объект почти всегда выпуклый - возникла такая мысль:
- на ЦПУ все вершины переводим в плоскость экрана
- считаем convex hull плоского объекта
- рисуем этот плоский convex hull, добавив уходящую в прозрачность полосу с отступом вдоль границы (операция "buffer", пример на картинке)

Изображение

Фигуры несложные, максимум на пару десятков вершин, вроде сработает.

Но, может, есть общепринятый способ попроще?

(Очень не хочется лезть в параметрическое задание фигур.)

Страницы: 1 2 3 48 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.