Как использовать Ka, Kd и Ks во фрагментном шейдере (OpenGL ES2.0 / материал формы волны) - PullRequest
0 голосов
/ 24 января 2019

У меня есть следующий материал в модели, который был предоставлен мне из Google Poly (https://poly.google.com/view/0gW8WUfqJnN):

newmtl mat0
  Kd 0.73 0.41 0.78

Насколько я понимаю, это только размытый цвет, что означает, что для источника света требуетсяЯ испытываю затруднения с получением правильных цветов, и я предполагаю, что это неправильное понимание использования этих цветов.

Скажем, у меня есть рассеянный свет с цветом vec3(1, 1, 1) и интенсивностью 0,5.направленный свет, который также белый, интенсивность 0,2, с направлением vec3(-0.1, -1.0, -1.0) (X направлен вправо, Y направлен вверх, Z направлен за пределы экрана к пользователю). Из моего понимания я бы обычно делал что-то вроде vec3 ambient = ambient_color * Ka * ambient_intensity; ТогдаЯ бы рассчитал рассеянный цвет на основе направленного света и Kd (я не собираюсь включать этот расчет). Затем я бы рассчитал зеркальный свет на основе камеры и Ks. Наконец, сложите все это вместе.не работает, если Ka не указан. По умолчанию значение не имеет смысла.

Что мне делать?делать в таких случаях?Лучшее, что я придумал, - это когда Ка и Кс отсутствуют, чтобы скопировать Кд.Похоже, это дает мне результаты, похожие на визуализатор на сайте Google Poly, но я не могу найти документацию, поддерживающую это решение?Как правильно поступить?

БОНУС: Я не хочу задавать для этого совершенно новый вопрос, но я сделаю это, если он окажется более сложным, чем я себе представляю.Для модели Donut (https://poly.google.com/view/6LSB0OZK8I7) во всех материалах указано d 0.00000, что, как я думал, означает полностью прозрачный. Почему рендеринг выглядит сплошным?

...