コード例 #1
0
        public void CorrectLabelsAssigned(double radius, double[] center, int positives,
                                          int negatives)
        {
            var data = _sphereGenerator.Generate(center.Length, radius, center, positives, negatives);

            foreach (var point in data)
            {
                var correctLabel =
                    Math.Sqrt(point.Coordinates.Zip(center, (d1, d2) => Math.Pow(d1 - d2, 2)).Sum()) <=
                    radius;
                Assert.AreEqual(point.Label, correctLabel);
            }
        }
コード例 #2
0
 public static void RenderPlanetNoise()
 {
     if (Prefs.DevMode && DebugViewSettings.drawRecordedNoise)
     {
         if (NoiseDebugUI.currentPlanetNoise != null)
         {
             if (NoiseDebugUI.planetNoiseMesh == null)
             {
                 List <int> triangles;
                 SphereGenerator.Generate(6, 100.3f, Vector3.forward, 360f, out NoiseDebugUI.planetNoiseMeshVerts, out triangles);
                 NoiseDebugUI.planetNoiseMesh      = new Mesh();
                 NoiseDebugUI.planetNoiseMesh.name = "NoiseDebugUI";
                 NoiseDebugUI.planetNoiseMesh.SetVertices(NoiseDebugUI.planetNoiseMeshVerts);
                 NoiseDebugUI.planetNoiseMesh.SetTriangles(triangles, 0);
                 NoiseDebugUI.lastDrawnPlanetNoise = null;
             }
             if (NoiseDebugUI.lastDrawnPlanetNoise != NoiseDebugUI.currentPlanetNoise)
             {
                 NoiseDebugUI.UpdatePlanetNoiseVertexColors();
                 NoiseDebugUI.lastDrawnPlanetNoise = NoiseDebugUI.currentPlanetNoise;
             }
             Graphics.DrawMesh(NoiseDebugUI.planetNoiseMesh, Vector3.zero, Quaternion.identity, WorldMaterials.VertexColor, WorldCameraManager.WorldLayer);
         }
     }
 }
コード例 #3
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        SphereGenerator generator = (SphereGenerator)target;
        int             edges     = EditorGUILayout.IntSlider("Edges", generator.Edges, 3, 20);
        int             layers    = EditorGUILayout.IntSlider("Layers", generator.Layers, 2, 20);

        generator.Resize(edges, layers);
        generator.Generate();
    }
コード例 #4
0
ファイル: DustScene.cs プロジェクト: 0000duck/MiniRTS
        private void AddAsteroidField()
        {
            var asteroid = SphereGenerator.Generate(this.Device, 15);
            var material = new Material(this.Assets.AlbedoPixel(Color.Red), this.Assets.NormalPixel(), this.Assets.MetalicnessPixel(0.3f), this.Assets.RoughnessPixel(0.5f), this.Assets.AmbientOcclussionPixel(1.0f));
            var model    = new GeometryModel(asteroid, material);

            var random     = new Random(255);
            var transforms = new Matrix[1024];
            var i          = 0;

            for (var x = -16; x < 16; x++)
            {
                for (var z = -16; z < 16; z++)
                {
                    var y = ((float)random.NextDouble() + 0.5f) * 10.0f;

                    var p = new Vector3(x * 2, y, z * 2);
                    transforms[i++] = Matrix.CreateTranslation(p);
                }
            }
            transforms[0] = Matrix.CreateScale(new Vector3(2.0f, 0.1f, 2.0f)) * Matrix.CreateTranslation(Vector3.Up * 30);

            (var geometry, var transform, var bounds, var instancing) = this.Geometry.Create(model, transforms);
        }
コード例 #5
0
        public void Load(ContentStack content)
        {
            var geometry = SphereGenerator.Generate(this.Device, 15);
            var material = new Material(this.Assets.WhitePixel, this.Assets.NormalPixel(), this.Assets.MetalicnessPixel(0.5f), this.Assets.RoughnessPixel(0.0f), this.Assets.AmbientOcclussionPixel(1.0f));

            var entity = this.Entities.Create();

            this.Components.Add(new GeometryComponent(entity, new GeometryModel(geometry, material)));
            this.Components.Add(new TransformComponent(entity));

            var transforms = new Matrix[1024];
            var i          = 0;

            for (var x = -16; x < 16; x++)
            {
                for (var y = -16; y < 16; y++)
                {
                    var p = new Vector3(x * 2, y * 2, 0.0f);
                    transforms[i++] = Matrix.CreateTranslation(p);
                }
            }

            this.Components.Add(InstancingComponent.Create(entity, transforms));
        }
コード例 #6
0
 public SphereLightVolume(GraphicsDevice device)
 {
     this.Sphere = SphereGenerator.Generate(device, 3);
 }
コード例 #7
0
        public void Load(ContentStack content)
        {
            var red = new Texture2D(this.Device, 1, 1);

            red.SetData(new Color[] { Color.White });
            content.Link(red);

            var white = new Texture2D(this.Device, 1, 1);

            white.SetData(new Color[] { Color.White });
            content.Link(white);

            var black = new Texture2D(this.Device, 1, 1);

            black.SetData(new Color[] { Color.Black });
            content.Link(black);

            var normal = new Texture2D(this.Device, 1, 1);

            normal.SetData(new Color[] { new Color(0.5f, 0.5f, 1.0f) });
            content.Link(normal);

            var blue  = content.Load <Texture2D>("Textures/Blue");
            var bumps = content.Load <Texture2D>("Textures/Bricks_Normal");

            var rows     = 7;
            var columns  = 7;
            var spacing  = 2.5f;
            var geometry = SphereGenerator.Generate(this.Device, 15);

            for (var row = 0; row < rows; row++)
            {
                var metalicness = row / (float)rows;

                var metalicnessTexture = new Texture2D(this.Device, 1, 1);
                metalicnessTexture.SetData(new Color[] { new Color(Vector3.One * metalicness) });
                content.Link(metalicnessTexture);

                for (var col = 0; col < columns; col++)
                {
                    var roughness        = Math.Clamp(col / (float)columns, 0.05f, 1.0f);
                    var roughnessTexture = new Texture2D(this.Device, 1, 1);
                    roughnessTexture.SetData(new Color[] { new Color(Vector3.One * roughness) });
                    content.Link(roughnessTexture);

                    var material = new Material(red, normal, metalicnessTexture, roughnessTexture, white);

                    var position = new Vector3((col - (columns / 2.0f)) * spacing, (row - (rows / 2.0f)) * spacing, 0.0f);
                    this.CreateSphere(geometry, material, position, Vector3.One);
                }
            }

            var backgroundGeometry = CubeGenerator.Generate(this.Device);

            this.CreateSphere(backgroundGeometry, new Material(bumps, GeneratedAssets.NormalPixel(), black, white, white), Vector3.Forward * 20, new Vector3(200, 200, 1));

            this.CreateLight(new Vector3(-10, 10, 10), Color.Red, 30.0f);
            this.CreateLight(new Vector3(10, 10, 10), Color.Blue, 30.0f);
            this.CreateLight(new Vector3(-10, -10, 10), Color.Green, 30.0f);
            this.CreateLight(new Vector3(10, -10, 10), Color.White, 30.0f);

            this.CreateSpotLight(new Vector3(0, 0, 10), Vector3.Forward, 1500.0f);
        }