private static void Main()
        {
            GameTime gameTime = new GameTime();
            var      window   = new ExampleWindow();


            var orbit = window.GameWindow.CreateOrbitingCameraController(15f, 90, 0.1f, 500f);

            orbit.View.Azimuth   = 250;
            orbit.View.Elevation = 40;
            orbit.View.TargetY   = 10;

            Voronoi voronoi = new Voronoi(30, 30, new Vector3(10, 5, 10));

            var additionalMeshes = new Dictionary <Shared.Enums.EntityType, Tuple <DefaultMesh, Vector4> >();

            additionalMeshes.Add(Shared.Enums.EntityType.Voronoi, Tuple.Create(voronoi.Mesh, new Vector4(.1f, 1, 0.5f, 0)));

            var visual = new MainView(window.RenderContext.RenderState, window.ContentLoader, additionalMeshes);
            var model  = new MainModel();

            foreach (var key in voronoi.Crystals.Keys)
            {
                foreach (var crystal in voronoi.Crystals[key])
                {
                    model.AddEntity(key, crystal.Position, Vector3.UnitY * crystal.RotationFactor, crystal.ScaleFactor);
                }
            }

            window.Update             += (period) => model.Update(gameTime.DeltaTime);
            window.Render             += () => visual.Render(model.Entities.ToViewEntities(), gameTime.AbsoluteTime, orbit);
            window.Resize             += visual.Resize;
            window.GameWindow.KeyDown += (sender, e) =>
            {
                if (e.Key == OpenTK.Input.Key.Space)
                {
                    visual.Bloom = !visual.Bloom;
                }
            };
            window.Run();
        }