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

Fog (Туман) (комментарии)

Страницы: 1 2 Следующая »
#0
2:42, 1 фев 2010

Fog (Туман) (комментарии)

Это сообщение сгенерировано автоматически.

#1
2:42, 1 фев 2010

Ты пишешь формулу:
f = (Zfogend – d)/(Zfogend – Zfogstart)

В шейдере:
float f = (mFog.x - d.z)/(mFog.x - mFog.y);

Если у тебя "x – начало тумана, y – конец тумана", то правильно так:
float f = (mFog.y - d.z)/(mFog.y - mFog.x);

#2
9:54, 1 фев 2010

Scripter01
> Если у тебя "x – начало тумана, y – конец тумана", то правильно так:
всё зависит от того, как потом считать во фрагментном шейдере. можно сказать, что f - это результирующая интенсивность тумана, а можно - прозрачность.

статья нормальная, только неплохо бы сделать что-то с форматированием кода и сделать хоть какие-то физические выкладки. мне почему-то не показалось очевидным, откуда в показателе экспоненты берётся квадрат.

#3
15:10, 1 фев 2010

Suslik
> откуда в показателе экспоненты берётся квадрат.

ну например так, затухание - падение плотности света 1 / x^2 , ну и поглощение в материале по exp - такой простой расклад не устроит ? :)

#4
19:13, 1 фев 2010

innuendo
> ну например так, затухание - падение плотности света 1 / x^2 , ну и поглощение
> в материале по exp - такой простой расклад не устроит ? :)
ну, вообще говоря, в трёхмерном случае плотность энергии уменьшается порядка минус третьей степени расстояния, да и не совсем тут в нём дело, ну да ладно

#5
21:11, 1 фев 2010

Suslik
> ну, вообще говоря, в трёхмерном случае плотность энергии уменьшается порядка
> минус третьей степени расстояния, да и не совсем тут в нём дело, ну да ладно
приближение в 3D графике  - обратный трёхчлен

ну если, volumetric fog  - там можно и как-нибудь поизворотнее

Прошло более 1 года
#6
22:37, 1 фев 2011

Я вот тут туманом занимался.
Искал способ, как, задавая только параметры для линейного тумана (начало и конец), получать плотность для экспоненциального, чтоб они, эти туманы, были примерно похожи.
Пришлось вспомнить, как решать всякие уравнения.
Допустим, в линейном тумане у нас есть расстояние, при котором туман будет 75%.
Расстояние это: d = start+(end-start)*0.75
Формула экспоненциального тумана: 1/pow(e, (d*g)^2)
Нужно найти g, при котором эта формула вернёт 0.25, то есть будет 75% тумана.
1/pow(e, (d*g)^2)=0.25
pow(e, (d*g)^2)=4
(d*g)^2 = ln(4)
d*g=sqrt(ln(4))
g=sqrt(ln(4))/d <- формула

При этой плотности экспоненциальный туман примерно похож на линейный.
Ну что, крутой способ? :)

#7
22:39, 1 фев 2011

JohnSmith
> чтоб они, эти туманы, были примерно похожи.

в чем смысл ?

#8
22:43, 1 фев 2011

innuendo
> в чем смысл ?
Включать линейный туман на старых картах, экспоненциальный - на новых.

#9
22:46, 1 фев 2011

JohnSmith
на старых и exp в vs считать можно :)

#10
22:47, 1 фев 2011

> В этом случае, плотность тумана более быстро и плавно уменьшается чем в случае с линейным туманом
?
Судя по уравнениям, плотность тумана g как раз таки постоянна.

#11
22:49, 1 фев 2011

JohnSmith
переходи к volumetric fog аля крайзис

#12
22:51, 1 фев 2011

innuendo
> переходи к volumetric fog аля крайзис
убить крайзис всегда успею)

#13
22:52, 1 фев 2011

JohnSmith
> скал способ, как, задавая только параметры для линейного тумана (начало и
> конец), получать плотность для экспоненциального, чтоб они, эти туманы, были
> примерно похожи.
madskills :D

#14
22:53, 1 фев 2011

Suslik
> в трёхмерном случае плотность энергии уменьшается порядка минус третьей степени
> расстояния
Orly?

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

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