SHW писал(а):
На сколько я понял, вы решили сгладить неровности ландшафта на расстоянии, чтобы скрыть артефакт дрожания (smooth).
Ничё не скроешь от разраба!

Так и есть. В идеале, лод зависит от длины самой длинной грани ячейки. Детализация карты у меня подразумевается как 1 вершина на метр, поэтому если более широкое основание (или боковая сторона) трапециевидной ячейки имеет длину 1 метр, то выбирается нулевой лод. Если длина 2 метра - лод 1. Если длина 4 метра - лод 2; и т.д. Промежуточные лоды также используются (для простоты в примере не показал). Так вот коэффициент smooth виртуально умножает длину грани перед тем, как будет выбран соответствующий лод. Посему чем выше smooth, тем выше лод, тем глаже карта (ведь с увеличением лода картинка становится всё более размытой). Пробовали зеркальные горы? Отлично показывает плавное изменение детализации.
SHW писал(а):
Это, конечно, хороший вариант для гладких холмов или дюн, но для реальных гор с острыми пиками и гребнями выглядит несколько неестественно.
Обычная сетка, где три в ряд стоящих вершины сильно различаются по высоте (формируя гребень или пик) будет смотреться не лучше, чем автомобиль с восьмигранными колёсами. Такие резкие неровности ландшафта, ИМХО, в любом случае придётся делать накладываемыми объектами-декорациями.
SHW писал(а):
Кстати, поскольку у вас вблизи камеры не хилый такой оверсемплинг, то есть детализация разбиения больше, чем информации в сетке высот, то можно на близкой дистанции добавить детальную текстуру к высотам и получить прибавку к качеству.
Дело в том, что я мечтаю о двустадийном рендере ландшафта: на первом этапе в буффера кадра записываются нормали, бинормали, тангенты, заполняется буффер глубины и пикселы, отрисованные ландшафтом метятся в буффере трафарета. После этого на втором этапе наложением screen-aligned quad и фильтром трафарета накладываются и смешиваются текстуры. Так я планирую осуществить мультитекстурирование ландшафта и наложение отметин. Один проход растеризации карты ландшафта, и дальше несколько наложений текстур в экранном пространстве.
Микс писал(а):
Тоже делило на нуль, пока не поставил Rmin = 1. Мож оно в int конвертится?
Да нет же! Всё перепроверил. Скачал закачанное, распаковал, попробовал - у меня всё работает. Не втыкаю, что там у Вас?!
Как бы то ни было, кой-чё подкрутил, вот ехешник:
https://sites.google.com/site/shamanlab ... ects=0&d=1Добавлено спустя 6 минут 7 секунд:SHW писал(а):
Кстати, поскольку у вас вблизи камеры не хилый такой оверсемплинг, то есть детализация разбиения больше, чем информации в сетке высот, то можно на близкой дистанции добавить детальную текстуру к высотам и получить прибавку к качеству.
Пардон, не так Вас понял. Действительно, отличная идея! Паттернующуюся картинку бугорков для эмуляции гальки какой-нить. Будет шикарно.
Добавлено спустя 2 часа 12 минут 12 секунд:Шаман писал(а):
Пардон, не так Вас понял. Действительно, отличная идея! Паттернующуюся картинку бугорков для эмуляции гальки какой-нить. Будет шикарно.
А если использовать ту же текстуру, то супердетализованная земля реализуется всего лишь одной строчкой в шейдере!
Идея SHW реализуется заменой строчки
float M = texture2DLod( Texture5, TexCoord, LOD ).r;
на
float M = texture2DLod( Texture5, TexCoord, LOD ).r + texture2DLod( Texture5, TexCoord*100.0, 0.0 ).r*0.005;
в шейдере RasterLandscape.vrt. Попробуйте, очень круто!
Правда, таким простым способом не рассчитывается нормаль для субрельефа, т.е. рефлёнка чисто форменная. Но это лишь дело желания доработки. В полноценном варианте просто получится код шейдера в 2 раза больше.