Фрагментный шейдер - рисование линии?

Меня интересовало, как нарисовать линию определенной ширины (или несколько линий) с помощью фрагментного шейдера. Я наткнулся на этот пост что, кажется, объясняет это.

Передо мной стоит задача понять логику этого.

Пара вопросов:

  1. Наше координатное пространство в этом примере (0,0-1,0,0,0-1,0), правильно?
  2. Если да, то для чего нужна переменная "uv". Поскольку толщина равна 500, переменная «uv» будет очень маленькой. Следовательно, расстояния от него до точек 1 и 2 (хранятся в переменных a и b)?
  3. Наконец, какова логика переменной h?

person Stefan    schedule 21.10.2013    source источник


Ответы (1)


Я постараюсь ответить на все ваши вопросы по очереди:

1) Да, это действительно так.

2) В трехмерной компьютерной графике координаты (в определенных границах) обычно выражаются значениями с плавающей запятой от 0 до 1 (или от -1 до 1). Прежде всего, это позволяет довольно легко решить, пересекает ли данное значение указанную границу или нет, и абстрагируется от концепции «пиксель» как дискретной единицы изображения; кроме того, эту обычную практику можно найти практически везде (подумайте о координатах устройства или координатах текстуры)

Не бойтесь, что ценности, с которыми вы работаете, меньше единицы; Фактически, в компьютерной графике вы обычно имеете дело с арифметикой с плавающей запятой, а типы FLOAT довольно хорошо выражают линию вещественных значений вокруг точки «1».

3) Формула для h состоит из двух частей: квадратного корня и коэффициента 2 / c. Часть квадратного корня должна быть хорошо известна из школьных математических классов - это формула Герона для площади треугольника (между a, b, c). 2 / c извлекает высоту упомянутого треугольника, которая сохраняется в h, а также является расстоянием между точкой uv и «линией земли» треугольника. Затем это расстояние используется для определения того, где uv относительно линии p1-p2.

person Pavel Beliy    schedule 21.10.2013