Exemple #1
0
        void CreatePerlinGradientTexture(byte[] permutations)
        {
            Vector4nsb[] gradients = new Vector4nsb[] {
                new Vector4nsb(1, 1, 0, 0), new Vector4nsb(-1, 1, 0, 0), new Vector4nsb(1, -1, 0, 0), new Vector4nsb(-1, -1, 0, 0),
                new Vector4nsb(1, 0, 1, 0), new Vector4nsb(-1, 0, 1, 0), new Vector4nsb(1, 0, -1, 0), new Vector4nsb(-1, 0, -1, 0),
                new Vector4nsb(0, 1, 1, 0), new Vector4nsb(0, -1, 1, 0), new Vector4nsb(0, 1, -1, 0), new Vector4nsb(0, -1, -1, 0),
                new Vector4nsb(1, 1, 0, 0), new Vector4nsb(0, -1, 1, 0), new Vector4nsb(-1, 1, 0, 0), new Vector4nsb(0, -1, -1, 0)
            };

            Vector4nsb[] data = new Vector4nsb[256];

#if false
            new NormalizedColor(0, -1, -1, -1),
            new NormalizedColor(0, -1, -1, 1),
            new NormalizedColor(0, -1, 1, -1),
            new NormalizedColor(0, -1, 1, 1),
            new NormalizedColor(0, 1, -1, -1),
            new NormalizedColor(0, 1, -1, 1),
            new NormalizedColor(0, 1, 1, -1),
            new NormalizedColor(0, 1, 1, 1),
            new NormalizedColor(-1, -1, 0, -1),
            new NormalizedColor(-1, 1, 0, -1),
            new NormalizedColor(1, -1, 0, -1),
            new NormalizedColor(1, 1, 0, -1),
            new NormalizedColor(-1, -1, 0, 1),
            new NormalizedColor(-1, 1, 0, 1),
            new NormalizedColor(1, -1, 0, 1),
            new NormalizedColor(1, 1, 0, 1),

            new NormalizedColor(-1, 0, -1, -1),
            new NormalizedColor(1, 0, -1, -1),
            new NormalizedColor(-1, 0, -1, 1),
            new NormalizedColor(1, 0, -1, 1),
            new NormalizedColor(-1, 0, 1, -1),
            new NormalizedColor(1, 0, 1, -1),
            new NormalizedColor(-1, 0, 1, 1),
            new NormalizedColor(1, 0, 1, 1),
            new NormalizedColor(0, -1, -1, 0),
            new NormalizedColor(0, -1, -1, 0),
            new NormalizedColor(0, -1, 1, 0),
            new NormalizedColor(0, -1, 1, 0),
            new NormalizedColor(0, 1, -1, 0),
            new NormalizedColor(0, 1, -1, 0),
            new NormalizedColor(0, 1, 1, 0),
            new NormalizedColor(0, 1, 1, 0),
#endif
            for (int i = 0; i < 256; i++)
            {
                data[i] = gradients[permutations[i] % gradients.Length];
            }

            var texture = new Texture2D();
            texture.Data(data.Length, 1, Formats.Vector4nsb, data);
            Program.Uniforms["PerlinGradientTexture"].Set(texture);
        }
 /// <summary>Read a <see cref="Vector4nsb"/>.</summary>
 public static void ReadVector4nsb(this BinaryReader reader , out Vector4nsb result)
 {
     result.X = reader.ReadNormalizedSByte();
                                 result.Y = reader.ReadNormalizedSByte();
                                 result.Z = reader.ReadNormalizedSByte();
                                 result.W = reader.ReadNormalizedSByte();
             return;
 }
 /// <summary>Read an array of <c>Vector4nsb</c> values.</summary>
 public static Vector4nsb[] ReadArrayVector4nsb(this BinaryReader reader, int count)
 {
     Vector4nsb[] array = new Vector4nsb[count]; reader.ReadArray(array, 0, count); return array;
 }
        void CreatePerlinGradientTexture(byte[] permutations)
        {
            Vector4nsb[] gradients = new Vector4nsb[] {
                new Vector4nsb(1, 1, 0, 0), new Vector4nsb(-1, 1, 0, 0), new Vector4nsb(1, -1, 0, 0), new Vector4nsb(-1, -1, 0, 0),
                new Vector4nsb(1, 0, 1, 0), new Vector4nsb(-1, 0, 1, 0), new Vector4nsb(1, 0, -1, 0), new Vector4nsb(-1, 0, -1, 0),
                new Vector4nsb(0, 1, 1, 0), new Vector4nsb(0, -1, 1, 0), new Vector4nsb(0, 1, -1, 0), new Vector4nsb(0, -1, -1, 0),
                new Vector4nsb(1, 1, 0, 0), new Vector4nsb(0, -1, 1, 0), new Vector4nsb(-1, 1, 0, 0), new Vector4nsb(0, -1, -1, 0)
            };

            Vector4nsb[] data = new Vector4nsb[256];

            #if false
            new NormalizedColor(0, -1, -1, -1),
            new NormalizedColor(0, -1, -1, 1),
            new NormalizedColor(0, -1, 1, -1),
            new NormalizedColor(0, -1, 1, 1),
            new NormalizedColor(0, 1, -1, -1),
            new NormalizedColor(0, 1, -1, 1),
            new NormalizedColor(0, 1, 1, -1),
            new NormalizedColor(0, 1, 1, 1),
            new NormalizedColor(-1, -1, 0, -1),
            new NormalizedColor(-1, 1, 0, -1),
            new NormalizedColor(1, -1, 0, -1),
            new NormalizedColor(1, 1, 0, -1),
            new NormalizedColor(-1, -1, 0, 1),
            new NormalizedColor(-1, 1, 0, 1),
            new NormalizedColor(1, -1, 0, 1),
            new NormalizedColor(1, 1, 0, 1),

            new NormalizedColor(-1, 0, -1, -1),
            new NormalizedColor(1, 0, -1, -1),
            new NormalizedColor(-1, 0, -1, 1),
            new NormalizedColor(1, 0, -1, 1),
            new NormalizedColor(-1, 0, 1, -1),
            new NormalizedColor(1, 0, 1, -1),
            new NormalizedColor(-1, 0, 1, 1),
            new NormalizedColor(1, 0, 1, 1),
            new NormalizedColor(0, -1, -1, 0),
            new NormalizedColor(0, -1, -1, 0),
            new NormalizedColor(0, -1, 1, 0),
            new NormalizedColor(0, -1, 1, 0),
            new NormalizedColor(0, 1, -1, 0),
            new NormalizedColor(0, 1, -1, 0),
            new NormalizedColor(0, 1, 1, 0),
            new NormalizedColor(0, 1, 1, 0),
            #endif
            for (int i = 0; i < 256; i++)
                data[i] = gradients[permutations[i] % gradients.Length];

            var texture = new Texture2D();
            texture.Data(data.Length, 1, Formats.Vector4nsb, data);
            Program.Uniforms["PerlinGradientTexture"].Set(texture);
        }