Детерминированный вычислительный шейдер для симплексного шума в Unity

Поэтому я пытался использовать мощь вычислительных шейдеров, чтобы ускорить процесс генерации симплексного шума для создания рельефа моей карты в единстве. Проблема в том, что для работы игры требуется, чтобы все было детерминировано, чтобы предотвратить рассинхронизацию в ее синхронной симуляции. Для этого мне нужно использовать какую-то математику с фиксированной точкой, чтобы избежать недетерминированного беспорядка, который является плавающим :(. Интересно, может ли кто-нибудь помочь с этим, поскольку не могу понять, как добиться этого в разумное время выполнения


person samrichards    schedule 30.04.2017    source источник


Ответы (1)


Существует тип данных fixed, который вы можете использовать в шейдерах. Его значение колеблется от -2,0 до 2,0 с шагом ровно 1/256. Это должно сделать это.

Если диапазон не работает для вас, вам придется обойтись целыми числами, которые не поддерживаются на старых платформах (даже если они эмулируются внутри с использованием плавающих запятых, а это не то, что вам нужно).

См. https://docs.unity3d.com/Manual/SL-DataTypesAndPrecision.html

person Thomas Hilbert    schedule 30.04.2017