У меня вопрос по конвейеру рендеринга OpenGL.
Недавно я читал теорию о геометрическом шейдере GLSL. Я думаю, что я понимаю основы того, как испускать новую геометрию и назначать цвета для новых вершин. Однако я не уверен, какой цвет получит фрагмент, если одна из этих новых вершин будет иметь ту же позицию, что и входящая из вершинного шейдера.
Рассмотрим этот пример:
Насколько я понимаю, я могу обрабатывать одну вершину с помощью вершинного шейдера. Я делаю некоторые преобразования и сохраняю позицию в glPosition. Кроме того, можно назначить цвет этой вершине, например, сохраняя его в glFrontColor. В качестве примера я даю красный цвет. Если все каналы имеют 32 бита, это будет 0xFFFFFFFF'00000000'00000000'00000000, верно?
Далее задействован шейдер Geometry. Я хочу, чтобы мой геометрический шейдер испускал некоторые дополнительные вершины. По крайней мере один из них находится в той же позиции, что и исходная вершина, поступающая из вершинного шейдера. Однако ему назначается другой цвет, например зеленый. Это будет 0x00000000'FFFFFFFF'00000000'00000000, верно?
Рано или поздно, после обработки каждой вершины, происходит растеризация. Как я понимаю, обе вершины растеризуются и поэтому станут одним и тем же фрагментом. Итак, поехали. Какого цвета этот конкретный фрагмент получит? Есть ли какое-то автоматическое смешивание, и фрагмент становится желтым? Или красный или скорее зеленый?
Этот вопрос может быть глупым. Но я просто не совсем уверен в этом и был бы признателен, если бы кто-то мог это прояснить для меня.
Если нет смешения (что я предполагаю), как я могу создать эффект смешения?
Большое спасибо
Walter