2D Вода в Единстве - PullRequest
       6

2D Вода в Единстве

0 голосов
/ 25 апреля 2018

Я запрограммировал 2D Water Effect с Springs, похожим на this one.Теперь я хочу реализовать его в Vertex Shader (в Unity).Но для распространения волны мне нужно знать левых и правых соседей (чтобы рассчитать силу воздействия) текущей вершины и каким-то образом сохранить полученную силу для следующей итерации.Я понятия не имею, как это сделать.

1 Ответ

0 голосов
/ 26 апреля 2018

Вы должны создать текстурное представление смещений, необходимых для манипулирования вершинами, а затем использовать tex2lod () в вашем вершинном шейдере - они поддерживаются в шейдерной модели 3 и выше.

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

Ваш вершинный шейдер может выглядеть примерно так:

sampler2D _OffsetMap;

// vertex shader
vert_data vert (appdata_base v) {
     vert_data v_out;
     float4 vertexPos = v.vertex;
     vertexPos += tex2Dlod (_OffsetMap, float4(vertexPos.xz, 0, 0));
     v_out.position = UnityObjectToClipPos (vertexPos);
     return v_out;
}

Вы также можете использовать ту же выборку для манипулирования нормалями вершин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...