Показать сообщение отдельно
Старый 12.08.2014, 16:46   #152
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений
(для 634 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

У каждой переменной есть область видимости (scope), которая обычно задается фигурными скобками {}. Объявленная внутри них переменная не может использоваться вне своей зоны видимости. Поэтому можно вынести объявление lit за пределы конструкции if-else:
float lit;
if ( whatFace < -1 ) {
    lit = dot( -input.normal, -lightDirection );
} else {
    lit = dot( input.normal, -lightDirection );
}
return diffuse * entityColor * lit * lightColor;
Вообще синтаксис и семантика HLSL (да и GLSL) во многом схожи с языком С. Поэтому если у тебя есть время - почитай книжки всякие про него. В отличие от С++, С не так трудно начинать изучать.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (12.08.2014)