Симплексный шум против шума Perlin
Я хотел бы знать, почему шум Перлина по-прежнему так популярен сегодня после выхода симплекса. Симплексный шум был сделан самим Кеном Перлином, и он должен был взять на себя его старый алгоритм, который был медленным для более высоких измерений и с лучшим качеством (без видимых артефактов).
Симплексный шум вышел в 2001 году, и за эти 10 лет я только видел, как люди говорят о шуме Перлина, когда дело доходит до создания карт высот для ландшафтов, создания процедурных текстур и т. д так далее.
может ли кто-нибудь помочь мне, есть ли какой-то недостаток Симплексного шума? Я слышал слухи, что шум Perlin быстрее, когда дело доходит до 1D и 2D шума, но я не знаю, правда это или нет.
спасибо!
7 ответов
" если он не сломан, не чините его."
посмотрите, можете ли вы найти кого-нибудь, кто скажет вам, почему Симплекс лучше. "Это быстрее и распространяется на несколько измерений" и "симплексные шумовые попытки уменьшить сложность функций шума более высоких размеров" были тем, что я нашел. Большинство из нас работает в двух или трех измерениях, может быть, в четырех, если нам повезет что-то делать со временем.
Я думаю, что справедливо сказать, что в реальном времени мало использования Perlin, которое слишком медленно дескриптор, что для большинства целей достаточно стандартного шума Perlin. В предварительном рендеринге (например, в киноиндустрии) время не очень важно, так как рендеринги в любом случае медленные; и в симуляциях в реальном времени у нас достаточно способов уменьшить объем текущей обработки, что маловероятно, что вы будете генерировать массивные карты шума каждые несколько нано/миллисекунд-это просто базовая оптимизация в реальном времени.
Я бы совсем не удивился, если бы это было просто из-за имени. Вы должны выбрать между шумом Perlin и Симплексным шумом. Последняя новее и имеет некоторые преимущества. Но, вы знаете, это звучит как "простая" версия двух. Я пойду с более сложным; шум должен быть сложным, не так ли?
люди, как правило, довольно иррациональны.
некоторые предпочтения для классического шума Perlin могут исходить из возможности использовать известные значения, приводящие к известным визуальным характеристикам, в отличие от инвестирования времени, необходимого для поиска входных параметров, необходимых для получения эквивалентного выхода с использованием симплексного шума.
[симплексный шум] имеет немного другой визуальный характер, поэтому он не всегда является прямой заменой классического шума. Применения которые зависят от детальных характеристик классики шум, как и точный размер объекта, точный диапазон значений или статистика более высокого порядка, может нуждаться в некоторой модификации, чтобы хорошо выглядеть при использовании симплексного шума.
шум Симплекс демистифицированный
Кен Перлин запатентовал свой симплексный алгоритм шума. Насколько мне известно, его классический алгоритм не запатентован.
просто какой-то анекдотический опыт, причина, по которой я использовал классический шум Перлина, заключалась в том, что у Кена Перлина был реализация C классицистического шума Perlin, пока обеспечивающ реализация Java улучшенного шума Perlin. Как бы глупо это ни звучало, классический Perlin noise было легче скопировать и вставить в мою программу, поэтому я использовал его. Я всегда намеревался обойти портирование этой реализации Java, но классический Perlin, казалось, работал достаточно хорошо, поэтому я никогда потрудился добавить.
Стефан Густавсон имеет некоторые очень хорошие реализации Симплексного шума C, здесь
Я еще не работал с симплексным шумом, но я могу подумать о нескольких причинах:
- возможно, потому, что мы привыкли к квадратам и углам 90°? Квадраты, Кубики,... гораздо более естественна для нас, чем треугольников, tetraeders или Hyper-tetraeders.
- каждый слой в шуме perlin - это просто растровое изображение.
- выход шума perlin легко tileable квадраты. И текстуры часто плитки квадраты.
- вы обычно используете низкий мерный шум. По моему опыту 2D и 3D наиболее распространены.
- Симплексный шум просто сложнее понять реализацию
- вероятно, сэмплеры в графической карте могут выполнять интерполяцию для ортогональных растровых изображений, используемых в шуме Перлина, но не интерполяцию на 60-градусных углах растровых изображений, используемых в симплексном шуме. (этот момент может быть неправильным, я не работал с графическими картами в течение нескольких лет)
Я бы ответил на вопрос прямо, я бы сказал, что это потому, что шум Перлина очень прост, чтобы получить вашу голову. Симплексный шум, с другой стороны, гораздо более сложный и волосатый зверь. Получение реализации Perlin и запуск намного проще, чем simplex и, таким образом, получает больше использования. Это не помогает симплексу, что оба очень похожи в визуальных эффектах (особенно после того, как вы немного манипулируете шумом).
Кеннет Перлин сам разработал симплекс алгоритм для аппаратной реализации и, таким образом, принял проектные решения, которые делают это проще. Одним из примеров этого можно увидеть в этом quoute, из патента.
потребность в табличной памяти: исходный алгоритм шума опирался на ряд табличных поисков, которые вполне разумны в программной реализации, но которые в аппаратной реализации дороги и представляют собой узкое место стоимости, особенно когда несколько экземпляров Функция шума необходима параллельно. В идеале реализация шума не должна зависеть от наличия таблиц значительного размера.