Я хочу создать случайный фрактальный ландшафт на gpu (с помощью вычислительного шейдера). Я начал с реализации маршевых кубов http.developer.nvidia.com/GPUGems3/gpugems3_ch01.html, и он работает очень хорошо. marching cubes on the gpu Тем не менее, маршевые кубы не могут извлечь острые объекты или использовать адаптивное разрешение.случайный воксель на gpu (dc vs. cms)
Итак, я искал усовершенствованный алгоритм извлечения изосульфата и нашел двойную контурную обработку www.cs.wustl.edu/~taoju/research/dualContour.pdf. Поэтому я применил dc в Java, чтобы протестировать этот алгоритм, и он отлично выглядит dc on the cpu (есть некоторые дыры в сетке и никаких острых функций, но мне было слишком лениво реализовать/исправить это, потому что это единственный прототип).
Но я заметил, что некоторые негативные аспекты:
-Intercelldependent (я понятия не имею, как порт это в ОГПУ, единственный ресурс, я нашел это ngildea.blogspot.de/2015/06 /dual-contouring-with-opencl.html)
-I не»знают, как создать систему куска, потому что нет никаких„четких“границ i.stack.imgur.com/62dy6.png
Итак, я продолжил поиск лучшего алгоритма и нашел кубические маршевые квадраты www.csie.ntu.edu.tw/~cyy/publications/papers/Ho2005CMS.pdf. Это, по-видимому, идеальный алгоритм для меня: межсетевые независимые, адаптивные, острые черты, первичная структура и даже многообразие. К сожалению, нет никакого ресурса, как реализовать этот алгоритм, кроме этого (grassovsky.files.wordpress.com/2014/09/thesis1.pdf). Я думаю, я понимаю две части алгоритма: создать сетку, для каждой ячейки:
Subdivide пока максимальная глубина не будет достигнута или нет необходимости делать это.
Разделите каждую ячейку на 6 лиц, извлеките их поверхность и соедините их вместе.
Но я не знаю, как соединить эти две части (особенно часть с переходными гранями, стр. 38).
Итак, кто-нибудь знает, как реализовать dc как шейдер, как внедрить cms или даже лучший алгоритм (возможно, двойные маршевые кубы, я думаю, что у него такая же проблема, как у dc, но я еще не тестировал его) ?
Удивительное исследование, хороший вопрос, вы нашли некоторые больше ресурсов для этого? я добавлю щедрость, если это поможет вам найти ответ. классная тема. Мне интересно узнать больше, если вы знаете себя, а если и другие знают. –