Частые глюки компилятора MS порождают такие комментарии в коде:
...;// std::vector/deque or boost::ptr_vector/ptr_deque
// generate a mysterious spell - "MS's compiller error".
// Seems like std::list have a resistance from that magic
Так и живём.
^_^
Частые глюки компилятора MS порождают такие комментарии в коде:
...;// std::vector/deque or boost::ptr_vector/ptr_deque
// generate a mysterious spell - "MS's compiller error".
// Seems like std::list have a resistance from that magic
Автор:
Timai
на
01:39
0
коммент.
Ярлыки: fun
Лод на то и лод, чтобы быть простым и быстрым. Но ведь хочеться чтобы, вдобавок, было и красиво.
Что мы имеем изначально:
Освещение не очень, правда? Как можно это исправить? Правильно, картой нормалей. Откуда её взять? Ну уж не рисовать самому конечно =) У нас же есть высокодетализированная геометрия ландшафа( патчи ).
Выствляем матрицы:
view = math::matrix_look_at_lh( |
_Winnie C++ Colorizer |
float4 ps_main( in float3 norm : TEXCOORD0 ) : COLOR |
_Winnie C++ Colorizer |
Иногда так хочеться написать:
std::vector< const some_type & > foo
А низя =(
Автор:
Timai
на
00:24
0
коммент.
Ярлыки: thoughts
Ландшафт будем строить по уже сложившейся схеме. Лод + патчи.
Лод для ландшафта генериться на этапе загрузки. Делается это очень просто, поэтому описание я опущу.
Размер лода и патчей берутся из настроек карты. Чтобы твикать было удобнее.
Рисум так - сначала лод, после - патчи вокруг камеры. Радиус видимости патчей так же берём из настроек.
Маленькая хитрость - очищать Zbuffer после отрисовки лода. Ибо могут вылезти артефакты. Так же иногда лод нужно немного опустить вниз по Y. Тоже для борьбы с артефактами. Тоже берётся из настроек карты.
Разница между сеткой лода и патчами:
Более подробно про отрисовку пачтей чуть позже.
Автор:
Timai
на
19:16
1 коммент.
Техника построения ланшафта по карте высот далеко не нова. К тому же это настолько просто, что реализовать её может практически любой школьник, хоть немного разбирающийся в программировани.
Но иногда вылазят мелкие пакости, которые портят жизнь.
Рассмотрим вариант, где количество вершин соответсвует количеству пикселей в карте высот. А высота вершины считается как lerp( min_height, max_height, pixel / 255 )
При незначительном перепаде высот всё будет выглядеть хорошо. Но стоит нам его увеличить как вылезут артефакты:
Появляется некая "ступенчатость". Почему? Дело в том что при использованнии карты высот с разрешением 8 бит на пиксель, мы имеем рабочий диапазон значений 0-255. При перепаде высот, скажем, в 100 метров, минимальный шаг между высотами оказывается: 100 / 256 ~ 0.39м.
Именно это низкое разрешение и является причиной "ступенчатости"
Как это побороть? Самый простой способ - увеличить рабочий диапазон. К примеру, до 16 бит, вместо 8ми. Тогда диапазон значений 0-65535. Что даст нам шаг в 100 / 65536 ~ 0.001м. Неплохо, да?
Но это повлечёт за собой увелечение размера карты высот в 2 раза. Что, зачастую, нежелательно.
Есть ещё один путь, требующий небольшого количества телодвижений. Размытие. Или, если будет угодно "усреднение значений".
Блурим в 2 прохода( горизонтальный + вертикальный ) результирующие высоты с небольшим радиусом и получаем приятную картинку =)
Артефакты пропали. Разница очевидна.
Такие дела.
Автор:
Timai
на
00:37
2
коммент.
Работа в геймдеве временно приостановлена. И неизвестно, как скоро я туда вернусь. А навыки терять не хочеться =)
Буду делать небольшие демки и объединять всё в один домашний проект. Получится эдакое портфолио.
А тут буду писать заметки по проделаной работе.
Автор:
Timai
на
13:24
1 коммент.
Ярлыки: demo
Дабы отделить зерна от плевел личное от рабочего буду писать тут на около и рабочую тематику. Привет.
p.s. Для всего остального - моя жжешечка
Автор:
Timai
на
18:36
2
коммент.