Я пытаюсь создать вершинный/фрагментарный шейдер каркаса в Unity. Кажется возможным в соответствии с this paper. Общие идеи, похоже, состоят в том, что вы передаете вектор расстояния, вычисленный в вершинном шейдере, каждому фрагменту в шейдере фрагмента, который он может использовать, чтобы определить, какую яркость рисовать линию каркаса в зависимости от его положения в полигоне.Можно ли получить доступ ко всем вершинам в многоугольнике в вершинном шейдере?
Из всего остального, что я прочитал, похоже, что вы получаете доступ только к одной вершине в вершинном шейдере. Мне нужен доступ ко всем соседним вершинам в многоугольнике для вершины ecah. В документе, по-видимому, подразумевается, что геометрический шейдер не нужен, что хорошо, потому что Unity еще не поддерживает их.
Что мне не хватает? Невозможно ли доступ к соседним вершинам в вершинном шейдере? Я пытаюсь сделать невозможным без геометрических шейдеров?
Спасибо за помощь. Знаете ли вы, что эти ограничения могут быть преодолены в движке Unity? Возможно ли передать эту дополнительную информацию в шейдере Cg, как те, которые использует Unity? Откуда будет проходить эта передача? – aardvarkk
@aardvarkk Эти ограничения не могут быть преодолены, поскольку они являются ограничениями основного оборудования/интерфейса, а не языка двигателя или затенения. Вершинный шейдер имеет доступ только к одной вершине, и вам нужно дать два других атрибута этой вершины. У меня нет опыта работы с Unity, но у Cg, конечно, есть атрибуты per-vertex, и я уверен, что Unity имеет некоторые средства для предоставления пользовательских атрибутов вершин вашей модели. –
@aardvarkk Итак, есть ли у вас какие-либо дополнительные вопросы относительно вашего первоначального вопроса (если вы можете обращаться к соседям в VS и если ваша цель невозможна без GS)? Вы не получите никаких других ответов от тех, кто понимает вершинные и геометрические шейдеры. Unity не имеет к этому никакого отношения, поскольку он не может магически преодолеть ограничения основного графического оборудования. –