вопрос очень расплывчатый, я знаю.Я думаю, это более логичный вопрос.
Я работаю над некоторой сеткой и гибридной системой частиц, и я хочу создать вихрь с несколькими рассеянными частицами, которые расположены в сетке.Элементы в сетке содержат значения от -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 и обратно без чего-либо еще.Ожидаемый результат не видел бы никакой разницы.СМ знает, почему.Может быть, у вас есть подсказка для меня?: -)