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

В чём обоснование "для огня нужен аддитивный блендинг"?

Страницы: 1 2 3 Следующая »
#0
14:53, 6 июня 2015

Сабжевое утверждение, вроде бы, conventional wisdom?

Где-то сформулировано - почему?
Порядок отрисовки? Гаммапроблемы? Диапазон?

Вон товарищи из NVIDIA делали (давно) альфа-блендингом:
http://http.developer.nvidia.com/GPUGems/gpugems_ch06.html
Вроде выглядит вполне:

+ Показать


#1
15:34, 6 июня 2015

Аддитивный блендинг используется тогда, когда среду можно с достаточной точностью считать прозрачной.
Для светящегося газа, т. е., собственно, пламени, а также всякой неонки, можно считать, что это условие выполняется.
Однако, при наличии дыма, т. е. взвеси частиц сажи, это уже неверно и надо использовать альфа-блендинг.

#2
16:06, 6 июня 2015

}:+()___ [Smile]
>Для светящегося газа, т. е., собственно, пламени, а также всякой неонки, можно считать, что это условие выполняется.
Мне казалось, что оптическая толщина пламени свечки порядка 1. Попытался нагуглить - не получилось.

#3
16:38, 6 июня 2015

FordPerfect
> Мне казалось, что оптическая толщина пламени свечки порядка 1. Попытался нагуглить - не получилось.
Чистый газ поглощает/рассеивает свет в узких линиях спектра, остальное проходит свободно.
Причем, именно в этих узких линиях он и излучает, поэтому эффектом поглощения можно пренебречь на фоне сильной засветки и переизлучения.
При увеличении температуры ширина линий растет, поэтому плазма, действительно, рассеивает все.
Короче, обычный фейк, как и все в реалтайм графике.

#4
20:19, 6 июня 2015

FordPerfect
> Вроде выглядит вполне:
шутка?
я не разбираюсь в графике, но на вид этот огонь не светится. Вообще.

#5
20:45, 6 июня 2015

Stranger087
Соглашусь, огонь не подарок.
На видео чуть подробнее
https://www.youtube.com/watch?v=tuj4bGc5ZTk
но примерно то же самое.

Интересно формализовать "не светится".

Т. е. сначала понять, что мы хотим получить, а уж потом - как это фейкать.

#6
21:25, 6 июня 2015

Нашёл чуть теории в "Physically Based Modeling and Animation of Fire", но там чуть о другом.

#7
21:55, 6 июня 2015

Да очень просто все. У огня чем ярче(больше температура), тем желтее, и наоборот в красноту. При сложении красного типа RGB(200,50,0) в месте скопления партиклов получается RGB(255,255,0), чего собственно и хотелось. Другими словами, аддитивный блендинг лучше моделирует поведение огня малыми усилиями.

#8
22:44, 6 июня 2015

FordPerfect
> Интересно формализовать "не светится".

ну поидее когда что-то прозрачное светится, оно именно добавляет свет. У огня всегла есть полупрозрачные моменты на краях.
Соответственно в жизни свет от объекта который за огнем, складывается со светом от огня. И получается ярче чем огонь. А при альфе на полупрозрачных участках огня получается наоборот, менее ярко чем сам огонь.

#9
4:43, 7 июня 2015

если в жизни посмотреть на огонь на фоне абсолютно белого листа бумаги, огонь будет отчётливо виден. если ту же ситуацию смоделировать, используя аддитивный блендинг и r8g8b8, то лист как был белым(255, 255, 255), так и останется, потому что цвет просто клэмпится по максимальному значению. собственно, именно из-за подобных проблем с перезасветкой аддитивный блендинг в простом случае и не является слишком физически корректным.

#10
7:27, 7 июня 2015

Suslik
От этой и кучи других проблем избавляет сам знаешь что.

#11
11:06, 7 июня 2015

Suslik
что это за листок такой 255 255 255, это прожектор какой-то, а не листок))

#12
16:29, 7 июня 2015

Stranger087
> что это за листок такой 255 255 255, это прожектор какой-то, а не листок))
это диффузный цвет. светимость обычно задаётся через luminance или подобный параметр вообще-то.

#13
16:54, 7 июня 2015

Suslik
Причем тут вообще светимость, если речь о финальном цвете изображения? Если у тебя не видно огня на фоне листка, значит у тебя листок светится ярче, чем огонь.

#14
18:01, 7 июня 2015

Идеальный вариант, это рендерить все частицы огня отдельно с аддитивным блендингом, и затем получившуюся текстуру огня отрисовывать обычным блендингом на экран. Суммирование цвета частиц придает огню правильную форму и окраску. Белый цвет в местах максимальной концентрации частиц (в центре), желтый, оранжевый, красный и т.д. по мере перехода в более разряженную область огня (к краю). При обычном блендинге, огонь будет равномерно окрашен, что и можно наблюдать здесь http://http.developer.nvidia.com/GPUGems/gpugems_ch06.html

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

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