public void Run(SignedDistanceFieldGenerator _generator, SignedDistanceField _target) { generator = _generator; target = _target; tex = new Texture2D(generator.m_x_dims, generator.m_y_dims, TextureFormat.RGBAFloat, false); outside_grid = new float[generator.m_pixels.Length]; inside_grid = new float[generator.m_pixels.Length]; col_buff = new Color[generator.m_pixels.Length]; target.m_texture = tex; target.StartCoroutine(SweepRoutine()); }
private void Update() { //little bit of code to run an animated sweep from blog if (Input.GetKeyDown(KeyCode.Space)) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(); generator.LoadFromTextureAntiAliased(Resources.Load <Texture2D>("cat")); AnimatedGridSweep anim = new AnimatedGridSweep(); anim.Run(generator, this); } if (Application.isPlaying) { m_noise_anim = Time.time; } }
public override void OnInspectorGUI() { serializedObject.Update(); DrawDefaultInspector(); SignedDistanceField field = (SignedDistanceField)target; if (GUILayout.Button("BF line")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(16, 16); generator.BFLine(new Vector2(3.5f, 8.5f), new Vector2(12.5f, 8.5f)); field.m_texture = generator.End(); } if (GUILayout.Button("1 BF circle")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(16, 16); generator.BFCircle(new Vector2(8, 8), 4); field.m_texture = generator.End(); } if (GUILayout.Button("1 BF rectangle")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(16, 16); generator.BFRect(new Vector2(3, 5), new Vector2(12, 10)); field.m_texture = generator.End(); } if (GUILayout.Button("2 BF circles")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(16, 16); generator.BFCircle(new Vector2(5, 7), 3); generator.BFCircle(new Vector2(10, 8), 3.5f); field.m_texture = generator.End(); } if (GUILayout.Button("2 close BF rectangles")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(64, 64); generator.BFRect(new Vector2(4, 4), new Vector2(60, 35)); generator.BFRect(new Vector2(4, 34), new Vector2(60, 60)); field.m_texture = generator.End(); } if (GUILayout.Button("1 padded line")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(32, 32); generator.PLine(new Vector2(8, 15), new Vector2(23, 20), 5); field.m_texture = generator.End(); } if (GUILayout.Button("1 padded circle")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(32, 32); generator.PCircle(new Vector2(16, 16), 7, 5); field.m_texture = generator.End(); } if (GUILayout.Button("1 padded rectangle")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(32, 32); generator.PRect(new Vector2(10, 12), new Vector2(20, 18), 5); field.m_texture = generator.End(); } if (GUILayout.Button("Clear none edge pixels")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(64, 64); //generator.BFRect(new Vector2(4, 4), new Vector2(60, 35)); //generator.BFRect(new Vector2(4, 34), new Vector2(60, 60)); generator.PCircle(new Vector2(20, 28), 12, 5); generator.PCircle(new Vector2(40, 32), 14, 5); generator.ClearAndMarkNoneEdgePixels(); field.m_texture = generator.End(); } if (GUILayout.Button("Sweep close rectangle pixels")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(64, 64); generator.BFRect(new Vector2(4, 4), new Vector2(60, 35)); generator.BFRect(new Vector2(4, 34), new Vector2(60, 60)); generator.Sweep(); field.m_texture = generator.End(); } if (GUILayout.Button("Sweep close circles")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(512, 512); generator.PCircle(new Vector2(160, 224), 92, 5); generator.PCircle(new Vector2(340, 256), 103, 5); generator.EikonalSweep(); field.m_texture = generator.End(); } if (GUILayout.Button("Load texture")) { SignedDistanceFieldGenerator generator = new SignedDistanceFieldGenerator(); generator.LoadFromTextureAntiAliased(Resources.Load <Texture2D>("cathires")); generator.EikonalSweep(); generator.Downsample(); generator.Soften(3); field.m_texture = generator.End(); } if (GUILayout.Button("Make noise texture")) { field.m_noise_texture = new Texture2D(256, 256, TextureFormat.RGBAFloat, false); Color[] cols = GenerateNoiseGrid(256, 256, 4, 8f, 2f, 0.5f); field.m_noise_texture.SetPixels(cols); field.m_noise_texture.Apply(); } serializedObject.ApplyModifiedProperties(); }