3D snoise has artifacts and periodic tendencies
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- csharp
- Área
- computer-graphics, game-dev
Línea de trabajo
Comienza ejecutando el PerlinNoiseGenJob proporcionado e inspeccionando la textura generada a partir de noise.snoise(float3(pnx, pny, z)) con las dimensiones y la frecuencia mostradas. Sigue la implementación de 3D snoise y sus pruebas o ejemplos, y verifica después que la salida generada ya no muestre la periodicidad diagonal ni los píxeles discontinuos -1/1 indicados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The provided 3D snoise function produces very low quality perlin noise and appears to be unusable for any practical application.
Here is a sample output of the algorithm, converted to PNG format:

As you can see, there is a diagonal periodic nature to it at higher scales. And, if you look very closely, you can see a pattern of discontinuous individual pixels (stuck at values -1 or 1).
Here is the code I used to generate this texture. Perhaps I made a mistake somewhere?
[BurstCompile]
public struct PerlinNoiseGenJob : IJob, IDisposable
{
public PerlinNoiseGenJob(int2 seed, float frequency, int2 origin, int2 dimensions, float valueMultiplier=1)
{
this.seed = seed;
this.frequency = frequency;
this.origin = origin;
this.dimensions = dimensions;
this.valueMultiplier = valueMultiplier;
perlinNoise = new NativeArray<float>(dimensions.x * dimensions.y, Allocator.TempJob, NativeArrayOptions.UninitializedMemory);
}
public int2 seed;
public float frequency;
public int2 origin;
public int2 dimensions;
public float valueMultiplier;
public NativeArray<float> perlinNoise;
public void Execute()
{
// float z = (float) hash(seed) / uint.MaxValue;
float z = 0;
for (int i = 0; i < perlinNoise.Length; i++)
{
int ox = i % dimensions.x;
int oy = i / dimensions.x;
float pnx = (origin.x + ox) * frequency;
float pny = (origin.y + oy) * frequency;
perlinNoise[i] = noise.snoise(float3(pnx, pny, z)) * valueMultiplier;
}
}
public void Dispose()
{
perlinNoise.Dispose();
}
}
public class PerlinNoiseTextureGenerator : MonoBehaviour
{
public Texture2D texture;
private void Start()
{
var dimensions = int2(1000,1000);
var job = new PerlinNoiseGenJob(int2(5,12), 1f/10, int2(0,0), dimensions);
var startTime = Time.realtimeSinceStartup;
var handle = job.Schedule();
handle.Complete();
Debug.Log("Run time: "+(Time.realtimeSinceStartup - startTime));
Color[] colors = new Color[dimensions.y * dimensions.x];
for (int i=0; i<job.perlinNoise.Length; i++)
{
colors[i] = new Color((job.perlinNoise[i]+1)/2, 0,0);
}
texture = new Texture2D(dimensions.x,dimensions.y);
texture.SetPixels(colors);
//AssetDatabase.CreateAsset(texture, "Assets/Generated/Perlin.asset");
File.WriteAllBytes("D:\\Perlin2.png", texture.EncodeToPNG());
job.Dispose();
}
}
- Lenguaje dominante
- C#
- Estrellas
- 1.4k
- Forks
- 159
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Unity-Technologies/Unity.Mathematics
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
-
64 Bit Quaternion RequestAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Unity-Technologies/Unity.Mathematics#245 · 3 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
Unity-Technologies/Unity.Mathematics#243 · 6 reacciones ·
Todos los issues de Unity-Technologies/Unity.Mathematics
Issues similares
-
[C#]:主页联网更新的提示投稿横幅指向错误Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
PCL-Community/PCL-CE#3652 ·
Los mantenedores suelen responder en 1 día
-
area:frontend bug FE P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
klasolsson81/jobbliggaren#2010 ·
Los mantenedores suelen responder en 1 día
-
[aw] Upgrade availableAbiertoagentic-workflows untriaged
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
area: homeblaze type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
RicoSuter/Namotion.Interceptor#630 ·
Los mantenedores suelen responder en 1 día
-
Akka.Hosting enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100