Реализация шейдера контактов, который окрашивает объект в точках контакта

#unity3d #shader #collision-detection #collision #shader-graph

#unity3d #шейдер #обнаружение столкновений #столкновение #шейдер-граф

Вопрос:

В сцене в виртуальной реальности я пытаюсь реализовать шейдер с графом шейдеров, где в каждой точке контакта моей руки с кубом куб получает простую красную точку.

Моя идея состояла в том, чтобы создать текстуру, в которой я изменил цвет соответствующих вершин, а затем применил его к кубу, но я не нашел никакого способа применить текстуру к кубу. Затем я попытался изменить вершины напрямую с помощью узла «VertexColor», но я не знаю точно, как это работает, и документация мне не очень понятна.

Я также рассматривал возможность использования декалей, но я использую URP, для которого Unity не поддерживает проекторы и предпочел бы использовать шейдер.

Так что, если кто-нибудь может оказать какую-либо помощь, я был бы очень признателен.

Комментарии:

1. Вы можете передать точку контракта шейдеру, а затем установить цвет вершины на основе расстояния между вершиной и точкой контракта.

2. Привет, спасибо за ответ. Наверное, я все еще не совсем понимаю узел цвета вершины, представляет ли он конкретную вершину? Как я узнаю, с какой вершиной я вычисляю расстояние?

3. Каждая вершина может иметь свойство цвета docs.unity3d.com/Manual/SL-ShaderSemantics.html