Exemple #1
0
 public Task ModifyVertices(SQT.Core.Context context, SQT.Core.Node node, CancellationTokenSource cancellation)
 {
     return(Task.Factory.StartNew(() =>
     {
         for (int i = 0; i < node.positions.Length; i++)
         {
             Perlin.PerlinSample sample = GetSample(node.positions[i]);
             node.positions[i] += node.normals[i] * sample.value;
             node.normals[i] = (node.normals[i] - sample.derivative).normalized;
         }
     }));
 }
Exemple #2
0
        Perlin.PerlinSample GetSample(Vector3 position)
        {
            float strength  = this.strength;
            float frequency = this.frequency;

            Perlin.PerlinSample sum = GetSample(position, frequency) * strength;
            for (int i = 1; i < octaves; i++)
            {
                strength  *= persistence;
                frequency *= lacunarity;
                Perlin.PerlinSample sample = GetSample(position, frequency) * strength;
                sum += sample;
            }
            return(sum);
        }
Exemple #3
0
    public Perlin.PerlinSample GetSample(Vector3 position)
    {
        float strength  = this.properties.strength;
        float frequency = this.properties.frequency;

        Perlin.PerlinSample sum = this.GetSample(position, frequency) * strength;
        for (int i = 1; i < this.properties.octaves; i++)
        {
            strength  *= this.properties.persistence;
            frequency *= this.properties.lacunarity;
            Perlin.PerlinSample sample = this.GetSample(position, frequency) * strength;
            sum += sample;
        }
        return(sum + 1f);
    }
Exemple #4
0
 Perlin.PerlinSample GetSample(Vector3 position, float frequency)
 {
     Perlin.PerlinSample sample = perlin.Sample(position * frequency);
     sample.derivative *= frequency;
     return(sample);
 }