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); } }
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); } } }
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(); }
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); }
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)); }
public SphereLightVolume(GraphicsDevice device) { this.Sphere = SphereGenerator.Generate(device, 3); }
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); }