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

как сделать бамп на ландшафт от солнца

#0
17:54, 22 окт 2003

ввообщем проблема сделать бамп для стрипа+вывести это через vbo

честно говоря я непонимаю как мне посчитать нормаль и потом её использовать ведь нормаль должна быть к полигону, а в одной вершине сходится не один треугольник сетка не равномерная потому я ввообще в растерянности что делать

нада чтоб был бамп от солнца на ландшафт есть текстура и карта нормалей и положение источника света
реализовать всёравно на чём(кроме ati)

#1
18:11, 22 окт 2003

uss
>ввообщем проблема сделать бамп для стрипа+вывести это через vbo
бамп и стрип с vbo - вещи находящиеся в свободном полёте друг от друга

>честно говоря я непонимаю как мне посчитать нормаль и потом её использовать
>ведь нормаль должна быть к полигону, а в одной вершине сходится не один
>треугольник сетка не равномерная потому я ввообще в растерянности что делать
в вершине усреднённая нормаль от соседних полигонов (ну как обычно)
на треугольнике - линейная интерполяция от нормалей в врешинах,
например в диффуз загоняешь значения нормалей:
компонета колора = (координата нормали+1)/2
в текстурный комбайнер передаётся например по диффузу.
потом
"диффуз" dot3 нормал_мап
вот тебе и бамп
умножаешь его на колор текстуры.

Если маппинг текстуры не параллельный сверху а завёрнут по геометрии треугольников, тогда тангент спейс понадобится.

#2
18:15, 22 окт 2003

а.. блин.. направление источника света не прикрутил :(

#3
18:24, 22 окт 2003

неужели всё так плохо?!!!!!!

это выходит нада через glBegin glEnd всё что с бампом рисоват если хочу чтобы учитывалось положение треугольника по отношению к источнику света
но ведь это медленно до немогу + это даже в дисплейный список не влепиш(состояния ведь нельзя сохранить)

может както можна на шейдерах замутить

#4
18:37, 22 окт 2003

uss
Шейдером очень даже можно, вместе с VBO... имхо

#5
18:42, 22 окт 2003

uss
> это выходит нада через glBegin glEnd всё что с бампом рисоват
неее...
имеется в ввиду, что ты можешь это делать, через что угодно. Хоть так, хоть через VBO, хоть через поинтеры.. не зависит

#6
19:23, 22 окт 2003

Zemedelec
КАК ??

wat
тогда проблема в стрипе?

насколько я понимаю нада сделать так:

находим нормаль к треугольнику
Nt=N1+N2+N3;// слагаем нормали в вершинах тр
temp=митрицы вида на базисе(Nt) *векторно  L; находим резентирующее напр света учётом вектора нормали(перевод вектора в пространство треугольника)
temp.norm();
бамп текстура=бамп текстура *скалярно  temp;
на выход текстура  *скалярно  бамп текстуру

или я сильно ошибаюсь?

#7
20:03, 22 окт 2003

>находим нормаль к треугольнику
>Nt=N1+N2+N3;// слагаем нормали в вершинах тр
самому это делать не нужно. после вершинного блока в растеризатор идут интерполированные значения. Как обычно.
Дополнительно, ты можешь улучшить результат - получив нормированные нормали, через нормал куб мап.

#8
20:24, 22 окт 2003

wat
но как это сделать хотябы для треугольников главное vbo?

пример не нвидиа можете дать?(самодостаточный без api в 10 метров)
можна без vbo главное с корректным бампом+вывод массивами

у меня только при ручном расчёте выходит чтото сносное....

#9
22:18, 23 окт 2003

я конечное понимаю что многие это переживали выплюнули и забыли но... пожалуйста бросте кто исходник или обьясните как это делается

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

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