Использование модификаторов шейдеров для анимации текстур в SceneKit приводит к дрожанию текстур с течением времени

Я пишу сцену в SceneKit для iOS.

Я пытаюсь применить текстуру к объекту, используя лист спрайта. Я перебираю изображения на этом листе с этим кодом:

happyMaterial = [SCNMaterial new];
happyMaterial.diffuse.contents = happyImage;
happyMaterial.diffuse.wrapS = SCNWrapModeRepeat;
happyMaterial.diffuse.wrapT = SCNWrapModeRepeat;
happyMaterial.shaderModifiers = @{ SCNShaderModifierEntryPointGeometry : @"_geometry.texcoords[0] = vec2((_geometry.texcoords[0].x+floor(u_time*30.0))/10.0, (_geometry.texcoords[0].y+floor(u_time*30.0/10.0))/7.0);" };

Все хорошо. За исключением времени, текстура начинает приобретать случайное дрожание, особенно вдоль оси x.

Кто-то упомянул, что это может быть связано с «проблемами точности с плавающей точкой», но я не уверен, как это диагностировать или исправить.

Кроме того: я не уверен, как записывать данные из кода шейдера. Было бы здорово иметь возможность просматривать переменные типа «u_time» и точно видеть, что происходит.

Ответы на вопрос(2)

Ваш ответ на вопрос