А пому Hedge на первой странице проще сделал. 5 слоев, одна маска (красный зеленый синий альфа + черный цвет как я поал тоже слой). Рисуй сее в фотошопе и не парься. Пому проще...
0r@ngE
так сам принцип понятен
есть пара вопросов
у тебя высота точки несет в себе
1 высота точки
2 используемые для этой точки текстуры
3 текстурные координаты для каждой текстуры
4 веса этих текстур
тут в принципе все ясно вопрос вот в чем
редактор сразу сбрасывает chunk ? или уже движок бьет всю сетку на chunk's ? если сразу то в заголовке каждого чанка держим именна текстур и количество ? или каждая точка держит в себе количество текстур ?
получает структура точки ~ такая
typedef struct { int numUseTex; - !? int tex[5]; int height; vector2 texCoor[5]; float alphaTex[5]; {structHeight;
если не сложно скинь простую карту, можно один чанк, у меня пока редактор не готов
и еще вопрос, каким образом формируется альфа для каждой текстуры ?
и вопросик по редактору
как кинуть сетку понятно, далее грузим текстуру, тут тоже ясно, а вот как оптимальнее двигать эту текстуру по ландшафту ?
тоесть понятно вначале пускаем луч, чтобы узнать в какую текстуру попали, дальше считаем сдвиг мыши и ? вот что делать с тектурой ? менять текстурные координаты у всех точек что под текстурой ? или на время сдвига создать под текстурой полигон и двигать его, а при отпускании мыши уже считать на какие вершины легла текстура и уже там дело техники ?
как лучше делать ?
Спасибо за интересную темку =)) Почитав - почитав у меня получилось вот что :
При отрисовке каждого квадрата в шейдер передается 4 текстурки ( текстура этого квадрата , текстура верхнего квадрата , текстура правого квадрата и текстура верхнего правого квадрата )
Коэффициентом видимости для каждой текстуры являются ее координаты )
Вот так вот все считается :
uniform sampler2D tex;
uniform sampler2D tex1;
uniform sampler2D tex2;
uniform sampler2D tex3;
varying vec2 Texcoord;
void main( void )
{
vec4 color1 = ((texture2D(tex, Texcoord)*(Texcoord.x))
+(texture2D(tex1, Texcoord)*(1-Texcoord.x)))*(Texcoord.y);
vec4 color2 = ((texture2D(tex2,Texcoord)*Texcoord.x)
+(texture2D(tex3, Texcoord)*(1-Texcoord.x)))*(1-Texcoord.y);
gl_FragColor = (color1+color2)*(color1+color2)*1.5;
}
Это позволяет использовать сколько угодно текстур без всяких слоев =))
Щас прикручу бамп и скорее всего все таки через маску сделаю смешивание , а то так как то по дурацкцки трава в камень переходит =)))
смешивание цветов можно спокойно и без щейдеров делать.
я например через функции комбинировани текстур делал.
Borland C++ Builder detected.
Я думал я последний в этом мире кто его использует :D
Mr.TyanVary
> Я думал я последний в этом мире кто его использует :D
ты не последний. хотя я недавно отказался. но считаю как ни прискорбно, но кроме билдера и vcl ничего лучше не придумали. хоть там и малость все криовато, но он все равно достойно смотрится даже на фоне самых последних достижений майкрософт.
EvilSpirit
+1
Дельфово-Билдеровский дизайнер очень удобный
И что ты выбрал на замену?
P.S. Я делал смешивание цветов на FFP
Aslan
> И что ты выбрал на замену?
gnu c++ compiler, code blocks. явно идейное сочетание, но от формошлепства далековато)
EvilSpirit
Меня интересует именно формошлепство :)
wxDesign, Glade (Gtk)
Aslan
> Меня интересует именно формошлепство :)
пишу свою либу)
EvilSpirit
Нет нужды, все есть готовое
В Code:Blocks встроен дизайнер для wxWidgets
Тема в архиве.