Consideraría simplemente ir con ruido 3D y evaluarlo en la superficie de la esfera.
Para el ruido de gradiente que se encuentra naturalmente en el dominio de la superficie de la esfera, necesita un patrón regular de puntos de muestra en la superficie que tenga información de conectividad natural, con un área aproximadamente igual en cada celda, para que pueda interpolar o sumar valores adyacentes. Me pregunto si algo como una cuadrícula de Fibonacci podría funcionar:
No he analizado las matemáticas para determinar cuánto trabajo sería calcular los índices y la distancia a tus cuatro vecinos (ni siquiera sé si terminas teniendo cuatro vecinos bien definidos en todos los casos), y sospecho que puede ser menos eficiente que simplemente usar ruido 3D.
Editar: ¡ Alguien más ha analizado las matemáticas! Vea este nuevo documento sobre Mapeo esférico de Fibonacci . Parece que sería sencillo adaptarlo al ruido de la esfera.
Si está renderizando una esfera, no solo evaluando el ruido en la superficie de una esfera, y está de acuerdo con teselar su esfera a la resolución de su red de ruido, puede crear una cuadrícula geodésica en la superficie de la esfera (un icosaedro subdividido, generalmente):
Cada vértice de la esfera puede tener un gradiente generado aleatoriamente para el ruido de gradiente. Para llevar esta información al sombreador de píxeles (a menos que desee una interpolación directa como el ruido de valor), es posible que necesite una técnica como la representación de estructura alámbrica de este artículo con coordenadas barcéntricas: haga una representación no indexada, con cada vértice que contiene las coordenadas barcéntricas de ese vértice en el triángulo . Luego puede leer SV_PrimitiveID
(o el equivalente de OpenGL) en el sombreador de píxeles, leer los tres gradientes de ruido de los vértices en función del triángulo en el que se encuentre y utilizar el cálculo de ruido que desee utilizando las coordenadas barcéntricas interpoladas.
Creo que la parte más difícil de este método es idear un esquema para asignar su ID de triángulo a tres muestras para buscar los valores de ruido en cada vértice.
Si necesita varias octavas de ruido o ruido con una resolución más fina que su modelo de esfera, es posible que pueda hacer una grilla geodésica gruesa con vértices y hacer algunos niveles de subdivisión en el sombreador de píxeles. es decir, a partir de las coordenadas barcéntricas, calcule en qué triángulo subdividido estaría si la malla estuviera más teselada, y luego calcule cuál sería la ID primitiva y las coordenadas barcéntricas para ese triángulo.