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

Принципы генерации ландшафтов на сферической поверхности (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
20:14, 19 янв 2017

Нда. Ну Вы, прошу прощенья, и напридумывали себе проблем...
Изобретение велосипедов видимо никогда не выйдет из моды.
А по теме могу сказать, что не стоит придумывать. Такие штуки решаются в лоб.

#31
20:29, 19 янв 2017

zameran
"В лоб" Вы имеете ввиду так, как я писал тут
> каждый раз буду создавать "хороший" буфер (полученный после CDLOD), а потом грузить его в видеопамять
?

#32
20:47, 19 янв 2017

kasom
Да. Только не переборщите.
У меня, в SpaceW для генерации используется несколько буфферов. Промежуточные и окончательные.
Ессно они занимают память в GPU. Поэтому после генерации я удаляю все буфферы, кроме окончательного. Из него у меня всё и рисуется.

#33
23:09, 19 янв 2017

zameran
> кроме окончательного
Но я же правильно понимаю, что этот самый окончательный Вы все равно вынуждены полностью пересчитывать для каждого кадра, так как изменяется положение камеры => изменяются LOD'ы => появляются новые/исчезают старые вершины?

#34
12:52, 20 янв 2017

kasom
Я не использую CDLOD. Все расчёты для одного квада происходят один раз.

#35
13:14, 20 янв 2017

zameran
Ааа, тогда понятно. Спасибо за наводки.

#36
1:27, 27 янв 2017

Вот тоже вариант, но здесь попроще как описывал Aslan, при том что все выводиться glBegin/glEnd FPS 1000 в сравнении с Unity3d получается 200-60 (но в релизе я не проверял).

+ Вот такой вот не затейливый итерационный алгоритм
#37
21:46, 27 янв 2017

foxes
все три EXE пишут
OpenGL Error: недопустимая операция
CallStack:
Shader::link [...\glsl.h:70]

У меня GF5200FX 128Mb

center - центр планеты?
непонимаю смысл 

dot = edge_center[i].dot(d.norm())

У меня:
Флаг стороны = (расстояние до хотябы одной из вершин стороны < k * длина стороны, k>1)
Если хотябы один флаг стороны  - разбиваю грань
В каждой стороне беру среднюю точку, если флаг стороны - добавляю смещение (шум)
Еще суммирую нормали в вершинах (переданных по ссылке в рекурсию) перед отрисовкой

Можно перевести на VBO - начинать с кусков 16x16 треугольников/квадратов  и при нужде бить их средними точками на 4 части
Для усреднения нормалей на краю с соседними кусками проще включить ободок из треугольников/квадратов с соседнего куска (дублирующиеся вершины, рисовать их ненужно)
Но лень этим заниматся :(

#38
23:04, 27 янв 2017

Aslan
> все три EXE пишут
> OpenGL Error: недопустимая операция
У меня работало, там есть x32 и x64.
Aslan
> У меня GF5200FX 128Mb
GTS 450 1 ГБ
Aslan
> center - центр планеты?
Да, центр объекта - вектор от камеры до центра объекта.
Aslan
> непонимаю смысл
Эти строчки вообще можно выкинуть.

      double dot = edge_center[i].dot(d.norm());
      angle[i] = acos(clamp(dot, -1, 1));

Это для отсечения задних граней.
Aslan
> Можно перевести на VBO
Я этот алгоритм на геометрическом шейдере реализовал, там максимум 4 уровня детализации влезло. Так как чем ближе к поверхности тем меньше уровней видно, то есть можно всего 4-8 последних итерации выводить. Единственное что нужно пересчитывать это первый уровень на CPU.

#39
23:11, 27 янв 2017

6-faces Geometry Clipmaps с инстансингом, в vs по формуле из 1#, SVT

#40
23:26, 27 янв 2017

foxes
у меня Win32, видно шейдеры не тянет

> Центр объекта - вектор от камеры до центра объекта
ясно

> Я этот алгоритм на геометрическом шейдере реализовал
а можно на VBO

#41
23:32, 27 янв 2017

Aslan
> Для усреднения нормалей на краю с соседними кусками проще включить ободок из
> треугольников/квадратов с соседнего куска
В приведенной мной реализации состыковка разных сегментов происходит автоматически, так как на грани у них вычисляются одни и те же вершины, а переход к детализированному уровню происходит в середине треугольника.

+ стыки между детализациями
+ покрытие 4 уровней детализации

Aslan
> а можно на VBO
А зачем? на шейдере все в видеокарте.

#42
0:26, 28 янв 2017

foxes
> В приведенной мной реализации состыковка разных сегментов происходит автоматически
у меня тоже стыковка граней автоматически

> А зачем? на шейдере все в видеокарте
чтобы не вычислять каждый кадр
Случайный Космос

#43
0:38, 28 янв 2017

Aslan
> чтобы не вычислять каждый кадр
VBO это буфер в видеопамяти для вершин - как VBO связанно с НЕ вычислением вершин?

#44
14:37, 28 янв 2017

foxes
> как VBO связанно с НЕ вычислением вершин?
вычислить нод один раз, при увеличении детализации вычислить субноды, при уменьшении - отбросить, т.о. имеем дерево

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

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