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

Атмосфера: вид из космоса и с поверхности (11 стр)

Страницы: 17 8 9 10 11 12 Следующая »
#150
11:52, 25 мая 2011

Neptune
> Так версия с загрузкой текстур из файла работает?
Так точно.

#151
15:16, 25 мая 2011

Neptune
> Такового и не было. Весь расчёт на GPU.
жаль, ну сам сделаю значит:)

Neptune
> Так это только на нвидиа проблема?
нет, у меня на АТИ тоже глючит. Оно компилится, но вешает машину, как я уже писал. А сейчас запустил твою демку и вижу. что оно ещё и считается неверно, когда срабатывает - результат другой сильно. А именно, у меня при включении нелинейной выборки из 4D карты атмосфера получается слишком непрозрачной. С твоей текстурой всё отлично работает.

ещё вопрос: Как оцениваешь шансы завести эту тему с несферической Землёй, то есть честный сфероид из WGS84 (с переменной толщиной атмосферы морочиться не буду, а вот форму планеты хочется сохранить правильной)? С одной стороны в 4D карте записывается функция от высоты над нижней кромкой атмосферы (с твоих слов...), а с другой стороны в коде расчёта радиус планеты присутствует много.

#152
0:53, 27 мая 2011

serpinf
> ещё вопрос: Как оцениваешь шансы завести эту тему с несферической Землёй, то
> есть честный сфероид из WGS84 (с переменной толщиной атмосферы морочиться не
> буду, а вот форму планеты хочется сохранить правильной)? С одной стороны в 4D
> карте записывается функция от высоты над нижней кромкой атмосферы (с твоих
> слов...), а с другой стороны в коде расчёта радиус планеты присутствует много.

Спм пока безуспешно пытался заставить эту атмосферу работать со сплюснутыми планетами, просто масштабируя всё по оси Y. Не получается, при приближении к полюсу всё съезжает. Поэтому в моём движке все газовые гиганты и звёзды пока идеально круглые.

Для Земли можно попробовать забить на несферичность. Сделать атмосферу сферичной, а форму Земли учесть просто самим ландшафтом. Т.е. высоты будут меняться не от 0 до 8848 м, а от 0 до 20+8848, если разница полярного и экваториального радиуса 20 км.

#153
6:11, 27 мая 2011

serpinf
> Оно компилится, но вешает машину
аналогично

#154
13:24, 14 июля 2011

Neptune
сделал адаптацию для сфероидальной планеты, идея следующая:
- для положения фрагмента и камеры вместо vec3(x,y,z), передаётся vec4(up, h), где up - направление вверх для данной точки, а h - высота над эллипсоидом планеты.
- далее рассчитываем

    Normal = normalize(ray.xyz);
    FragR   = max(1.000001*Radiuses.x, Radiuses.x+ray.w);
    FragPos = Normal * FragR;
    
    eyeNormal = normalize(EyePos_ray.xyz);
    EyeR   = max(1.000001*Radiuses.x, Radiuses.x+EyePos_ray.w);
    EyePos = eyeNormal * EyeR;
#155
16:57, 14 июля 2011

Не понял идею. Атмосфера и меш планеты остаются сферическими, но в шейдере делается хитрое масштабирование? Или как? Что такое vec4(up, h) и чему он соответствует в приведённом тобой коде?

#156
17:33, 14 июля 2011

Neptune
меш планеты и атмосферы рисуются эллипсоидом.
в коде:
variable vec4 ray; // (up, h) up - нормаль к поверхности эллипсоида, высота над эллипсоидом - для ФРАГМЕНТА
uniform vec4 EyePos_ray; // (up, h) up - нормаль к поверхности эллипсоида, высота над эллипсоидом - для КАМЕРЫ

дальше всё примерно так же как в твоём коде из #124

#157
20:41, 14 июля 2011

serpinf, спасибо, буду разбираться.

Прошло более 9 месяцев
#158
22:37, 17 апр 2012

Реализация атмосферы Брунетона в сочетании с deferred rendering. В pdf файле описание с исходниками шейдеров. Есть демка, шейдеры можно выдрать из неё. В отличие от Брунетоновской демки, здесь есть рельеф на шуме Перлина, с двухуровненым текстурированием (как я понял, все вычисляется и текстурируется на ходу, при рендере). Работает даже медленнее чем у меня, при моём forvard рендере и связанным с ним заметным овердровом, может из-за построения рельефа на ходу.

http://www.sperlhofer.com/university-work/master-thesis/atmospheric-scattering

#159
21:55, 10 июля 2012

Пробую реализовать шейдер с статьи http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter16.html
Оказалось код не так просто на HLSL переписать. Но вконце на екран что-то вывелось. Только вот артефакти тоже вылезли. Вот один такой:
Изображение
и еще:
Изображение
На втором скрине дуга заходит внутрь планеты(

Первые артефакты появляются только на определенном расстоянии.
И еще одно, незнаю баг ли ето, полное кольцо вокруг планеты можно видеть только если камера находится строго междусолнцем и планетой. Если немножко сдвинутся то ореол пропадает на больших расстояниях.

ЗЫ:
Артафакти вроде появляются, если камера на расстоянии 25 единиц от цонтра планеты. Радиус атмосферы  - 10,25  ,  планеты - 10.

Прошло более 1 года
#160
1:46, 10 окт 2013

Всё же очень тормозной код у мистера Брунетона. Провёл тест. Вид с поверхности планеты, всё лишнее отключено, только рельеф, 4 глобальных источника света (ну, 2 солнца и 2 луны :) ), Full HD, GeForce 9800 GTX+.
Атмосфера отключена - 114 фпс
Атмосфера включена - 28 фпс
Мда... самый жуткий код - в функции texture4D. Думал обращение к texture3D всё съедает, закомментил их и подставил вместо них vec4(0.0) - 52 фпс. Получается texture3D тормозит?
Но потом дошло, что добрый компилятор просо взял и заоптимизировал нафиг все расчёты, которые оказались не нужные, т.к. функция в итоге выдаёт ноль. Ладно, заменил на return vec4(uvw, tex4Dlerpf), чтобы компилятор не смог просто убрать весь этот код, а только обращение к texture3D (uvw и tex4Dlerpf это текстурные координаты для texture3D и коэффициент для mix, они-то тем жутким кодом и вычисляются). Получилось 33 фпс! Совсем не далеко от полного кода атмосферы, так что texture3D оказывается много и не съедали. Значит всё-таки надо как-то избавляться от промежуточных вычислений, загнать их сразу в ту самую 3D текстуру. Так можно будет как минимум вдвое поднять производительность.

#161
12:24, 10 окт 2013

Neptune
> Значит всё-таки надо как-то избавляться от промежуточных вычислений, загнать их
> сразу в ту самую 3D текстуру. Так можно будет как минимум вдвое поднять
> производительность.


Не всё так однозначно :) nvidia обычно быстрее в выборках, amd в математике - выбирай но осторожно

#162
23:21, 15 окт 2013

А что если реклама про увеличение члена - правда. А мы считаем что это развод? Цвет мошонки зависит от высоты.

#163
11:34, 16 окт 2013

А Chapman Grazing-Incidence из Gpu pro3 никто не пробовал реализовывать?

#164
17:53, 16 окт 2013

Vine
Во-первых не реалистично, а во-вторых не учитывает высоту.

Страницы: 17 8 9 10 11 12 Следующая »
ПрограммированиеФорумГрафика

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