ввообщем проблема сделать бамп для стрипа+вывести это через vbo
честно говоря я непонимаю как мне посчитать нормаль и потом её использовать ведь нормаль должна быть к полигону, а в одной вершине сходится не один треугольник сетка не равномерная потому я ввообще в растерянности что делать
нада чтоб был бамп от солнца на ландшафт есть текстура и карта нормалей и положение источника света
реализовать всёравно на чём(кроме ati)
uss
>ввообщем проблема сделать бамп для стрипа+вывести это через vbo
бамп и стрип с vbo - вещи находящиеся в свободном полёте друг от друга
>честно говоря я непонимаю как мне посчитать нормаль и потом её использовать
>ведь нормаль должна быть к полигону, а в одной вершине сходится не один
>треугольник сетка не равномерная потому я ввообще в растерянности что делать
в вершине усреднённая нормаль от соседних полигонов (ну как обычно)
на треугольнике - линейная интерполяция от нормалей в врешинах,
например в диффуз загоняешь значения нормалей:
компонета колора = (координата нормали+1)/2
в текстурный комбайнер передаётся например по диффузу.
потом
"диффуз" dot3 нормал_мап
вот тебе и бамп
умножаешь его на колор текстуры.
Если маппинг текстуры не параллельный сверху а завёрнут по геометрии треугольников, тогда тангент спейс понадобится.
а.. блин.. направление источника света не прикрутил :(
неужели всё так плохо?!!!!!!
это выходит нада через glBegin glEnd всё что с бампом рисоват если хочу чтобы учитывалось положение треугольника по отношению к источнику света
но ведь это медленно до немогу + это даже в дисплейный список не влепиш(состояния ведь нельзя сохранить)
может както можна на шейдерах замутить
uss
Шейдером очень даже можно, вместе с VBO... имхо
uss
> это выходит нада через glBegin glEnd всё что с бампом рисоват
неее...
имеется в ввиду, что ты можешь это делать, через что угодно. Хоть так, хоть через VBO, хоть через поинтеры.. не зависит
Zemedelec
КАК ??
wat
тогда проблема в стрипе?
насколько я понимаю нада сделать так:
находим нормаль к треугольнику
Nt=N1+N2+N3;// слагаем нормали в вершинах тр
temp=митрицы вида на базисе(Nt) *векторно L; находим резентирующее напр света учётом вектора нормали(перевод вектора в пространство треугольника)
temp.norm();
бамп текстура=бамп текстура *скалярно temp;
на выход текстура *скалярно бамп текстуру
или я сильно ошибаюсь?
>находим нормаль к треугольнику
>Nt=N1+N2+N3;// слагаем нормали в вершинах тр
самому это делать не нужно. после вершинного блока в растеризатор идут интерполированные значения. Как обычно.
Дополнительно, ты можешь улучшить результат - получив нормированные нормали, через нормал куб мап.
wat
но как это сделать хотябы для треугольников главное vbo?
пример не нвидиа можете дать?(самодостаточный без api в 10 метров)
можна без vbo главное с корректным бампом+вывод массивами
у меня только при ручном расчёте выходит чтото сносное....
я конечное понимаю что многие это переживали выплюнули и забыли но... пожалуйста бросте кто исходник или обьясните как это делается
Тема в архиве.