Да, по крайней мере, вроде (хотя, конечно, в современном коде вы выполняете большую часть этих вычислений в шейдерах).
Одна типичная возможность - использовать uniform
s для вашего окружающего цвета (s), положение (а) освещения, положение глаз и т. д. Затем настройте пару varying
s, которые будут использоваться для передачи диффузного и зеркального цвета из вашего вершинного шейдера в ваш фрагментный шейдер.Ваш вершинный шейдер вычисляет значения для этих varying
s на основе входных данных uniform
.
Затем фрагментный шейдер получает (например) текстуру и varying
s, упомянутые выше, и объединяет их вместе (наряду с любыми другими входными данными, которые вам могут потребоваться), чтобы получить окончательный цвет для фрагмента (который он назначает gl_FragColor
).