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); }