Как сделать штриховку Гуро?
Может ли кто-нибудь объяснить мне, как Гуро затеняет? Я могу пойти дальше и Google "растушевывать", но это не имеет особого смысла для меня. У меня есть 3 вершины с позицией (x, y) и цветом int[r,g,b]. Я хочу линейно интерполировать (не уверен, что это означает) цвета вершин для затенения в треугольнике. Какова логика для этого?
1 ответ
Вы будете выполнять билинейную интерполяцию.
Сканируйте треугольник сверху вниз, следуя за рядами пикселей. Каждая строка будет пересекать треугольник дважды, вдоль двух разных ребер.
Сначала вы выполните две линейные интерполяции вдоль этих ребер, вычислив смесь компонентов RGB в вершинах, взвешенных с расстояниями до них (вес Db/(Da+Db)
для цвета a
а также Da/(Da+Db)
для цвета b
).
Затем вы будете сканировать пиксели между пересечениями, выполняя еще одну линейную интерполяцию между двумя цветами, которые вы только что рассчитали.
Таким образом, вы будете заполнять треугольник плавным градиентом, таким образом, чтобы он был непрерывным с соседними треугольниками, если таковые имеются.