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

Текстурирование ландшафта (смешивание текстур) OpenGL - пост N 36 (2 стр)

Страницы: 1 2 3 4 5 Следующая »
#15
0:25, 7 апр 2008

d.m.k
Мне надо OpenGL

#16
0:28, 7 апр 2008

тебе нужен конкретный пример с кодом вызовов функций GL или сам шейдер?... Если только шейдер, то приведенный HLSL код достаточно просто перевести на GLSL...

#17
0:47, 7 апр 2008

d.m.k
А выигрышь вот в чем. Мой ландшафта это 13*13 квадратов с регулярной сеткой от 48*48 квадов, каждый такой квадрат имеет свою текстуру смешивания (маску) и 5 цветных текстур(трава, земля, камень и тд) причем отдельные текстуры могут повторятся. На квадрат я накладываю текстуры с повторение 48*48 разрешением 512*512, а маска 32 * 32.
Считаем:
13 * 13 * 32 * 32 * 4 = 692224 (байт занимают маски)
в среднем на вот такой вот шмат 13 * 13 квадратов уходит 25 уникальных текстур
512 * 512 * 3 * 25 = 19660800 (байт цветные текстуры)
итого ~21 мега байт

Если это всё сделать одной большой текстурой выйдет
512 * 512 * 3 * 48 * 48 * 13 * 13 = 306217746432 тоесть около 307 гига байт %)))

#18
0:51, 7 апр 2008

и маска получается меньшего разрешения, это не сильно сказывается на результате, можешь скрин показать? =)

#19
1:05, 7 апр 2008
0 | Текстурирование ландшафта (смешивание текстур) OpenGL - пост N 36

1 | Текстурирование ландшафта (смешивание текстур) OpenGL - пост N 36

2 | Текстурирование ландшафта (смешивание текстур) OpenGL - пост N 36

А с тера байтами то я перепрыгнул случайно исправляю :)

#20
1:39, 7 апр 2008

Вобщем кажется я понял в чем вобще принцип. Вот такой вопрос:

Как мне смешать 2 текстуры, так что б в зависимости от альфа текстуры тускнели участки на текстуре травы? Ну надеюсь доступно написано.
Хотелось бы увидеть это на расширениях.

#21
9:03, 7 апр 2008

Hedge
не плохо ) только на плоскости не очень эффектно )

Vel I
ты вообще работал с шейдерами? что бы хоть знать от чего "плясать"

чтобы мешать текстуры по альфе достаточно GL_ARB_multitexture, чтобы мешать по комбинированной маске нужен шейдер! В GLSL есть стандартная функция mix вроде как...

#22
9:07, 7 апр 2008

Hedge
мне только вот это не понятно:
>а если сума R+G+B+A меньше 1 то вес пятого слоя считаетя как 1 - сума весов R+G+B+A
насколько мне известно каждый из r, g, b или a может быть 1.0, т.е. в сумме дадут 4.0, получается ты должен контроллировать чтобы маски со значениями близкими к 1.0 не накладывались (т.е. нельзя все четыре тектсуры "замесить" сразу)
так?

#23
9:37, 7 апр 2008

Можно и все четыре, и любые три, и две и одну!

вот примерная табличка RGBA и результатов

0.00 0.00 0.00 0.00 = Texture0
1.00 0.00 0.00 0.00 = Texture1
0.00 1.00 0.00 0.00 = Texture2
0.00 0.00 1.00 0.00 = Texture3
0.00 0.00 0.00 1.00 = Texture4

0.50 0.00 0.00 0.00 = ( Texture0 + Texture1 ) / 2.0
0.00 0.50 0.00 0.00 = ( Texture0 + Texture2 ) / 2.0
0.00 0.00 0.50 0.00 = ( Texture0 + Texture3 ) / 2.0
0.00 0.00 0.00 0.50 = ( Texture0 + Texture4 ) / 2.0

0.50 0.00 0.00 0.00 = ( Texture1 + Texture0 ) / 2.0
0.50 0.50 0.00 0.00 = ( Texture1 + Texture2 ) / 2.0
0.50 0.00 0.50 0.00 = ( Texture1 + Texture3 ) / 2.0
0.50 0.00 0.00 0.50 = ( Texture1 + Texture4 ) / 2.0

0.33 0.33 0.00 0.00 = ( Texture0 + Texture1 + Texture2 ) / 3.0
0.33 0.00 0.33 0.00 = ( Texture0 + Texture1 + Texture3 ) / 3.0
0.33 0.00 0.00 0.33 = ( Texture0 + Texture1 + Texture4 ) / 3.0

0.33 0.33 0.03 0.00 = ( Texture0 + Texture1 + Texture2 ) / 3.0
0.33 0.33 0.33 0.00 = ( Texture1 + Texture2 + Texture3 ) / 3.0
0.33 0.33 0.00 0.33 = ( Texture1 + Texture2 + Texture4 ) / 3.0

0.25 0.25 0.25 0.25 = ( Texture1 + Texture2 + Texture3 + Texture4 ) / 4.0
0.00 0.25 0.25 0.25 = ( Texture0 + Texture2 + Texture3 + Texture4 ) / 4.0

0.20 0.20 0.20 0.20 = ( Texture0 + Texture1 + Texture2 + Texture3 + Texture4 ) / 5.0

#24
9:41, 7 апр 2008

Кстати на первом скрине буквы H, e, d, g, e это 5 разных текстур,
а их "фон" это все пять смешаны тоесть TexM == vec4( 0.2, 0.2, 0.2, 0.2 );

Ах да чуть не забыл, сума компонент маски R+G+B+A <= 1 иначе текстуры будут не смешиваться а накладыватся и будет "засвет"

А насчет плоскости, скоро (уже очень скоро) доделаю редактор, можно будет глянуть "в живую" думаю будет ефектно :)

#25
11:23, 7 апр 2008

d.m.k
Как загружать в OpenGL знаю. Я ж и хочу узнать как это делается.
Hedge
Можешь дать ссылки на инфу по которой ты делал шейдер?

#26
14:44, 7 апр 2008

Vel I
http://www.gamedev.ru/code/forum/?id=73356&page=2

пост №21

#27
16:25, 7 апр 2008

0r@ngE
Wo2lf там отжог, буду пробовать. У тебя вобще получилось по такому принципу сделать?

#28
16:38, 7 апр 2008

Vel I
да, немного по своему, но принцып тотже, у мя за проход максимум 6 слоев мешается,
вопщем Wo2lf Respect!

#29
16:44, 7 апр 2008

0r@ngE
Тогда к тебе вопрос, я чота непонял, получается для каждого слоя нада рисовать ландшафт заново чтоли?

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

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