Zastanowiłbym się nad pójściem z szumem 3D i ocenieniem go na powierzchni kuli.
W przypadku szumu gradientowego, który naturalnie znajduje się w dziedzinie powierzchni kuli, potrzebujesz regularnego wzoru punktów próbnych na powierzchni, które mają naturalne informacje o łączności, z mniej więcej równym obszarem w każdej komórce, aby można było interpolować lub sumować sąsiednie wartości. Zastanawiam się, czy coś takiego jak siatka Fibonacciego może działać:
Nie przeżułem matematyki, aby ustalić, ile pracy wymagałoby ustalenie wskaźników i odległości do twoich czterech sąsiadów (nawet nie wiem, czy we wszystkich przypadkach skończysz z czterema dobrze określonymi sąsiadami), i podejrzewam, że może to być mniej wydajne niż zwykłe używanie szumu 3D.
Edycja: Ktoś przeżuł matematykę! Zobacz ten nowy artykuł na temat mapowania sferycznego Fibonacciego . Wydaje się, że przystosowanie go do szumu kuli byłoby proste.
Jeśli renderujesz sferę, a nie tylko oceniasz hałas na powierzchni kuli, i dobrze Ci jest z teselacją kuli do rozdzielczości siatki szumów, możesz utworzyć siatkę geodezyjną na powierzchni kuli (podzielony dwudziestościan, zazwyczaj):
Każdy wierzchołek kuli może mieć losowo generowany gradient szumu gradientowego. Aby przekazać te informacje do modułu cieniującego piksele (chyba że chcesz prostej interpolacji, takiej jak szum wartości), możesz potrzebować techniki, takiej jak renderowanie szkieletu tego artykułu za pomocą współrzędnych barycentrycznych : wykonaj renderowanie w stanie nieindeksowanym, przy czym każdy wierzchołek zawiera współrzędne baricentryczne tego wierzchołka w trójkącie . Następnie możesz czytać z SV_PrimitiveID
(lub odpowiednika OpenGL) w module cieniującym pikseli, odczytywać trzy gradienty szumów z wierzchołków na podstawie tego, na jakim trójkącie się znajdujesz, i stosować dowolne obliczenia szumów, używając interpolowanych współrzędnych barycentrycznych.
Myślę, że najtrudniejszą częścią tej metody jest opracowanie schematu mapowania identyfikatora twojego trójkąta na trzy próbki, aby sprawdzić wartości szumu na każdym wierzchołku.
Jeśli potrzebujesz wielu oktaw szumu lub szumu w rozdzielczości lepszej niż model kuli, możesz być w stanie wykonać grubą siatkę geodezyjną z wierzchołkami i wykonać kilka poziomów podziału w module cieniującym piksele. czyli od barycentryczne współrzędnych, dowiedzieć się, które podzielone trójkąta ty by być w razie siatka została dodatkowo tessellated, a następnie dowiedzieć się, co prymitywne ID i barycentryczne współrzędne byłoby w tym trójkącie.