Трансляция вихря частиц в OpenGL Shader - PullRequest
0 голосов
/ 25 февраля 2019

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

Я работаю над некоторой сеткой и гибридной системой частиц, и я хочу создать вихрь с несколькими рассеянными частицами, которые расположены в сетке.Элементы в сетке содержат значения от -1,0 до 1,0.

Очень просто, я позволил сетке вращаться в вихре, установив значения моего векторного поля равными v = {y, -x}

Ура, они вращаются.Теперь я хочу куда-то перенести свой вихрь.Я получаю странные результаты.Так что я упростил все это, теперь не используй вихрь и просто двигай свою сетку.Конечно, я могу изменить свои начальные значения, и сетка переместится.Если я вращаю сетку, все частицы все еще движутся вокруг (0,0), которая все еще находится в центре сетки, например, она вращается не вокруг ее центра, а как вокруг ее правого угла.

Я перевожу сеткувнутри моего компьютерного шейдера в центр, вращайся и переводи обратно.Так что это должно работать, но это вызывает у меня странное поведение.«Некоторые» частицы движутся в левый нижний угол.F

Простой код моего вычислительного шейдера для того, что происходит на последнем рисунке, таков: (вершинный шейдер отправляет только значения gridVortex фрагментному шейдеру)

void main()
{
    uint INDEX = gl_GlobalInvocationID.x;

    gridVortex[INDEX].xy += 0.0002f;
    gridVortex[INDEX].xy -= 0.0002f;
}

Как вы можетевидите, я просто перемещаю каждую частицу на 0,0002 и обратно без чего-либо еще.Ожидаемый результат не видел бы никакой разницы.СМ знает, почему.Может быть, у вас есть подсказка для меня?: -)

The Grid Spinning VortexOnly translate and restranslate

...