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

Решение проблемы разрывов при визуализации ландшафтов с LOD - уровнями (комментарии) (5 стр)

Страницы: 14 5 6 710 Следующая »
#60
22:22, 14 окт. 2009

innuendo
> демку не выложишь ? ты сколько делал сабж ? я за 2-3 часа :)
молодец, возьми с полки пряник, там их 2 возьми средний

я делал 2 дня  но тогда я методом тыка учил DirectX8 да и сам язык программирования совсем хреново знал.

innuendo
> да ты не расстраивайся так :)
с чего бы вдруг?

innuendo
> Вот и топикастер сделал и его устроило. Потом пришёл ты и заварил кашу :)
гыг, но разве ты не согласен, что быстрее 1 раз переключить буфер чем (1*количество видимых чанков) + усреднение может на какомто знаке после запятой дать крохотную погрешность и тогда на стыках будут иногда проскакивать пиксели заднего фона! Это осоенно заметно на ATI картах (проверено)

innuendo
> демку не выложишь ?
нет после того как решил почистить говнокод  (он копился ещё с начала моего программирования под DX9) в проекте осталось пофиксить 400+ ошибок : )  а демку я обязательно выложу но чуть позже (как всё пофиксю, Гг)


#61
22:36, 14 окт. 2009

 L 
> гыг, но разве ты не согласен, что быстрее 1 раз переключить буфер чем
> (1*количество видимых чанков)

и пошло поехало :) а нас устраивает такой способ + у нас работает на все случая + задел для опитимизаций ala Crysis

 L 
> усреднение может на какомто знаке после запятой дать крохотную погрешность и
> тогда на стыках будут иногда проскакивать пиксели заднего фона! Это осоенно
> заметно на ATI картах (проверено)

а вот это странно, у меня такого нет - топикастер что-то намудрил

жду демку + подумай lod bias ala Crysis

#62
22:53, 14 окт. 2009

А можно же на ГПУ их считать и не лочить буферы вообще.
В дополнительной координате w каждой второй крайней вершины хранить заранее расчитанное "правильное" смещение, а для остальных вершин нули.
По-моему в пэйпере по geclipmaps что-то такое было.

#63
0:58, 15 окт. 2009

Maklay
> А можно же на ГПУ их считать и не лочить буферы вообще.
> В дополнительной координате w каждой второй крайней вершины хранить заранее
> расчитанное "правильное" смещение, а для остальных вершин нули.
ты чоооо  : )    а если у чанка LOD сменится??  тогда нуна лочить весь огромне буфер и менять эти числа у вершин

#64
9:02, 15 окт. 2009

 L 
когда демку выложишь  ?

#65
10:33, 15 окт. 2009

когда пофиксю оставшиеся 340+ ошибок в проектах  : )
да и не выложу  я тупо ландшафт или чонить ещё.. нужно интересное чтота сделать : )

#66
11:29, 15 окт. 2009

fanat
> иллюстрация к подсказке. (откопал:-)
хорошая демка. добавить бы ее к подсказке. Я так и не понял, сколько вершинных буферов для ладншафта у тебя? лок буферов не подсаживат производительность? ладншафт то небольшой 256x256

#67
11:31, 15 окт. 2009

Andrey
Андрей, тот же хрен что ты видел полгода назад - только частный случай :)

#68
11:32, 15 окт. 2009

Andrey
> лок буферов не подсаживат производительность?

а ты FarCry поизучай
повторю для тебя

<внимание, вопрос - если лоды тесселяции меняются раз в 0.5 сек при FPS =30 и обновлять не все чанки а лишь часть, сколько раз нужно обновлять VB и как это скажется на производительности ?>

#69
11:41, 15 окт. 2009

 L 
> ты чоооо : ) а если у чанка LOD сменится?? тогда нуна лочить весь огромне буфер и менять эти числа у вершин
Не очень понял, что имелось в виду=) У меня разные лоды будут находиться в одном VB друг за другом.
Я говорил не про ЛОД, а про изменение координаты каждой второй вершины.
Небольшой пример:

LOD | Решение проблемы разрывов при визуализации ландшафтов с LOD - уровнями (комментарии)

Координаты вершин:

A [10, 0,  0, 0]
B [20, 10, 0, 5] // здесь можно поменять Y на W
C [30, 20, 0, 0]
D [40, 10, 0, 5] // и здесь
E [50, 0,  0, 0]

Если рядом с этим чанком находится другой ЛОД, то рисуем шейдером, который заменяет Y на W, если нет, то обычным шейдером.
Также понадобятся те "9 разных" шейдеров для разных ситуаций, о которых уже говорили.
Они будут заменять координаты у левых, или правых, или верхних и т.д. вершин.(Это самый интересный момент=) могу объяснить как шейдер поймет, какие из них левые или правые.)
В таком случае можно нарисовать весь чанк за 1 дип и ничего не локать.
Но сам я так еще не делал, может ошибаюсь.

#70
13:34, 15 окт. 2009

Andrey
1 ландшафт процедурный
2 лодов - 9 всегда
3 вершин:
                всего в кадре - 1024*9
                после отсечения ~40%
4 VBO нет т.к. см п.1 и п. 3
5 Площадь покрытия - 8192*8192 вершин, т.е. это количество пришлось бы хранить в памяти при статическом размещении данных.

Т.к. ландшафт - процедурный (тупо перлин), то хранится ровно 9 буферов по 1024 вершины.

Обновляются буферы (лоды) по прохождении камерой расстояния равного шагу сетки на данном уровне, т.е. каждый следующий лод обновляется в два раза реже.

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

#71
13:39, 15 окт. 2009

fanat
> Т.к. период обновления для дальних лодов больше, то и морфинг идет более
> плавный.

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

#72
13:41, 15 окт. 2009

fanat
А тесселяцию через GS не думал ? Или Instanced Tesselation ?

#73
14:36, 15 окт. 2009

Maklay
> Также понадобятся те "9 разных" шейдеров для разных ситуаций, о которых уже
> говорили.
AFAIK переключение вершинного шейдера не легче переключения индексного буфера


кста вообще подумываю сделать проективный террайн.  стОит?  не?

#74
14:46, 15 окт. 2009

 L 
> AFAIK переключение вершинного шейдера не легче переключения индексного буфера
Зато не будет лока(вообще никогда) и вычисления среднего значения, плюс среднее значение вычисляется заранее с правильным округлением и не будет "мушек".
Думаю фпс в несколько раз поднимется =)

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

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