2014-01-28 2 views
0

Мне было интересно, как вы потемнеете, чтобы полная яркость была нормальной. Я использую плоское затенение и вычисляю нормали поверхности. Смогу ли я просто уменьшить величину нормы? Я пробовал вычитать из normal.x, normal.y и normal.z, но эффект только темнее, если смотреть под правильным углом.Потемнение яркости нормального? Плоское затенение

+0

Вы даже используете шейдеры? – Vallentin

+0

Вы имеете в виду GLSL? Файлы .fs и .vs? Нет. Должен ли я, как это поможет? –

+0

@AlphaCentauriAB Какую версию OpenGL вы используете? – rhughes

ответ

2

Если вы хотите, чтобы затемнить плоские затененные поверхности щипая только нормалей, вы должны умножить их на коэффициент:

  • менее 1, чтобы сделать их темнее (менее чувствительны к свету) более
  • чем 1 чтобы сделать их более восприимчивыми к свету (светлее только при освещении)

Однако это не будет работать во всех случаях (например, плавное затенение), потому что нормали интерполируются и нормализуются в плавных вычислениях.

Однако я настоятельно рекомендую оставить нормали нормализованными.

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

+0

+1 для «правильного решения» – rhughes

Смежные вопросы