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

Программирование шейдеров на HLSL. (Комментарии к статье) (7 стр)

Страницы: 16 7 8 9 10 Следующая »
#90
20:29, 16 июня 2006

Неплохо, но с каких пор cos(pi/2)=1 (и даже больше)??? А ноги у этого растут вот здесь:
Чем больше угол β, тем ярче бликовое освещение
Т.е. выходит, если в глаз ничего вообще не отражается, то будет полный засвет?


#91
21:32, 16 июня 2006

DK
>Неплохо, но с каких пор cos(pi/2)=1 (и даже больше)???
вот тут объяснена причина такого явления:
http://bash.org.ru/quote.php?num=22198

#92
13:45, 27 авг. 2006

Интересная и нужная статья.

Правда нашел одну ошибку.

Если в вершынном шейдере написать так, как предложил автор
Out.Pos = mul(mvp,Pos);,
то на екране будет твориться маленький армагеддон :-).

Происходит ето от того, что умножение матриц- операция не комутативная (A*B!=B*A).

Если поменять местами матрицу и вектор
Out.Pos = mul(Pos,mvp);
то все рисуется хорошо.

Прошло более 11 месяцев
#93
11:15, 20 авг. 2007

возник вопрос:
...
//Рассчитываем нормаль поверхности и сохраняем для фрагментного шейдера.
    Out_struct.normal  = normalize(mul(mat_world,In_struct.normal));
...
насколько я понял mul(mat_world,In_struct.normal) - выполняет преобразование вектора нормали так же как mul(mvp,Pos); преобразовывает координаты (с учетом того что их мы в последствии проецируем). Вопрос зачем мы применяем normalize для вектора нормали?

#94
17:04, 20 авг. 2007

кажется я понял, нормализованным вектор является когда его длана =1 а при мировом приобразовании она изменяется. Поправьте если я не прав )

#95
0:37, 21 авг. 2007

возможно когда-нить будет свободное редактирование статей..
и тогда будет мега правка, если эта статья еще будет актуальна :)

#96
11:13, 21 авг. 2007

Иннокентий
Ай да на википедию! :))

#97
0:49, 2 сен. 2007

Листать тему с начала нет желания, так что может быть на эту ошибку уже указывали. Автор при формировании declaration в приложении(не шейдере) сотворил маленький саботаж со смещениями. (Пример с бампом)

Прошло более 8 месяцев
#98
15:49, 8 мая 2008

F'lar
по-моему это зависит от того как ты mvp посчитал, вот у меня наоборот - если mul(Pos,mvp) то  лажа

и в диффузном освещении чет не понятно, L это положение источника света или направление света? т.е. свет у нас точечный и направленный?

#99
17:16, 13 мая 2008

и вообще я тут поразбирался с диффузным освещением, там какая-то глупость либо я торможу:

в ПИКСЕЛЬНОМ шейдере есть такое

return diffuse_color * diffuse_intensity * dot(normal,light);

а нафига считать дот-продакт в пиксельном если он определяется глобальным направлением света и нормалью которая одна на вершину, т.е. весь дот-продакт можно в вершинном шейдере посчитать. и соотв сыкономить кучу вычислений.

#100
17:21, 13 мая 2008

и еще зачем предавть верктор света в вершинный шойдер, если он нужен в пиксельном?

#101
17:24, 13 мая 2008

Barbar1an
> которая одна на вершину
Потому что на площади треугольника нормали не обязательно равны нормали в вершине. Кроме того нормали на тексельном уровне могут быть заданы нормал мапом и проч. методами

#102
18:42, 13 мая 2008

wat
может вопрос и ламерский но разве нормали интерполируются от вершины к вершине?*

#103
19:14, 13 мая 2008

Barbar1an

В чистом виде нормали не передаются в писксельный шейдер, но в вершинном шейдере ты можешь записать в текстурную кординату или в колор значение нормали. Которое уже придёт интерполированное.

#104
20:18, 13 мая 2008

wat
не, эт я понимаю
я не понимаю это: у полигона есть 3 нормали допустим, так вот если я передам нормаль из вершинного шейдера(который вызвается для каждой вершины) в пиксельный, какая туда нормаль прийдёт? интерполированная в данном пикселе от 3-х вершинных нормалей?

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

Страницы: 16 7 8 9 10 Следующая »
ПрограммированиеФорумГрафика

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