private void Form_Load(object sender, EventArgs e) { { var camera = new Camera( new vec3(5, 4, 3) * 4, new vec3(0, 0, 0), new vec3(0, 1, 0), CameraType.Perspecitive, this.glCanvas1.Width, this.glCanvas1.Height); var rotator = new SatelliteManipulater(); rotator.Bind(camera, this.glCanvas1); this.camera = camera; this.rotator = rotator; this.scene = new Scene(camera, this.glCanvas1); this.glCanvas1.Resize += this.scene.Resize; } { var renderer = ConditionalRenderer.Create(); renderer.Initialize(); SceneObject obj = renderer.WrapToSceneObject(name: "Conditional Renderer Demo"); this.scene.RootObject.Children.Add(obj); this.conditionalRenderer = renderer; } //{ // var uiAxis = new UIAxis(AnchorStyles.Left | AnchorStyles.Bottom, // new Padding(3, 3, 3, 3), new Size(128, 128)); // uiAxis.Initialize(); // this.scene.UIRoot.Children.Add(uiAxis); //} { var builder = new StringBuilder(); builder.AppendLine("O: to select image."); builder.AppendLine("1: Scene's property grid."); builder.AppendLine("2: Canvas's property grid."); MessageBox.Show(builder.ToString()); } }
private void Application_Idle(object sender, EventArgs e) { this.Text = string.Format("{0} - FPS: {1}", this.GetType().Name, this.glCanvas1.FPS.ToShortString()); ConditionalRenderer renderer = this.conditionalRenderer; if (conditionalRenderer != null) { this.lblState.Text = string.Format( "box:{0}, target:{1}, Conditional Rendering:{2}", renderer.RenderBoundingBox, renderer.RenderTargetModel, renderer.ConditionalRendering); } }
public static ConditionalRenderer Create() { var result = new ConditionalRenderer(); { var wallRenderer = SimpleRenderer.Create(new Cube(new vec3(unitLengths.x * 2, unitLengths.y * 2, 0.1f) * new vec3(xside, yside, zside))); wallRenderer.WorldPosition = new vec3(0, 0, 6); var boxRenderer = SimpleRenderer.Create(new Cube(new vec3(unitLengths.x * 2, unitLengths.y * 2, 0.1f) * new vec3(xside, yside, zside))); boxRenderer.WorldPosition = new vec3(0, 0, 6); var query = new Query(); result.coupleList.Add(new Tuple <SimpleRenderer, RendererBase, Query>(boxRenderer, wallRenderer, query)); } for (int x = 0; x < xside; x++) { for (int y = 0; y < yside; y++) { for (int z = 0; z < zside; z++) { var model = new RandomPointsModel(unitLengths, pointCount); RandomPointsRenderer renderer = RandomPointsRenderer.Create(model); renderer.PointColor = Color.FromArgb( (int)((float)(x + 1) / (float)xside * 255), (int)((float)(y + 1) / (float)yside * 255), (int)((float)(z + 1) / (float)zside * 255)); renderer.WorldPosition = (new vec3(x, y, z) * unitLengths * scaleFactor) - (new vec3(xside - 1, yside - 1, zside - 1) * unitLengths * scaleFactor * 0.5f); var cubeRenderer = SimpleRenderer.Create(new Cube(unitLengths)); cubeRenderer.WorldPosition = renderer.WorldPosition; var query = new Query(); result.coupleList.Add(new Tuple <SimpleRenderer, RendererBase, Query>(cubeRenderer, renderer, query)); } } } result.ModelSize = new vec3(xside + 1, yside + 1, zside + 1) * unitLengths * scaleFactor; return(result); }
public static RendererBase Create(Type rendererType) { RendererBase renderer = null; if (rendererType == typeof(AnalyzedPointSpriteRenderer)) { int particleCount = 10000; renderer = AnalyzedPointSpriteRenderer.Create(particleCount); } else if (rendererType == typeof(BufferBlockRenderer)) { renderer = BufferBlockRenderer.Create(); } else if (rendererType == typeof(ConditionalRenderer)) { renderer = ConditionalRenderer.Create(); } else if (rendererType == typeof(EmitNormalLineRenderer)) { var model = new Teapot(); renderer = EmitNormalLineRenderer.Create(model, Teapot.strPosition, Teapot.strNormal, model.Lengths); } else if (rendererType == typeof(ImageProcessingRenderer)) { renderer = new ImageProcessingRenderer(); } else if (rendererType == typeof(KleinBottleRenderer)) { renderer = KleinBottleRenderer.Create(new KleinBottleModel()); } else if (rendererType == typeof(OrderDependentTransparencyRenderer)) { var model = new Teapot(); renderer = OrderDependentTransparencyRenderer.Create(model, model.Lengths, Teapot.strPosition, Teapot.strColor); } else if (rendererType == typeof(OrderIndependentTransparencyRenderer)) { var model = new Teapot(); renderer = new OrderIndependentTransparencyRenderer(model, model.Lengths, Teapot.strPosition, Teapot.strColor); } else if (rendererType == typeof(ParticleSimulatorRenderer)) { renderer = new ParticleSimulatorRenderer(); } else if (rendererType == typeof(PointCloudRenderer)) { var list = new List <vec3>(); using (var reader = new StreamReader(@"Resources\data\19PointCloud.txt")) { while (!reader.EndOfStream) { string line = reader.ReadLine(); string[] parts = line.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); float x = float.Parse(parts[0]); float y = float.Parse(parts[1]); float z = float.Parse(parts[2]); list.Add(new vec3(x, y, z)); } } renderer = PointCloudRenderer.Create(new PointCloudModel(list)); } else if (rendererType == typeof(PointSpriteRenderer)) { const int particleCount = 10000; renderer = PointSpriteRenderer.Create(particleCount); } else if (rendererType == typeof(RaycastVolumeRenderer)) { renderer = new RaycastVolumeRenderer(); } else if (rendererType == typeof(RayTracingRenderer)) { renderer = RayTracingRenderer.Create(); } else if (rendererType == typeof(ShaderToyRenderer)) { renderer = ShaderToyRenderer.Create(); } else if (rendererType == typeof(SimpleComputeRenderer)) { renderer = SimpleComputeRenderer.Create(); } else if (rendererType == typeof(SimplexNoiseRenderer)) { renderer = SimplexNoiseRenderer.Create(); } else if (rendererType == typeof(UniformArrayRenderer)) { renderer = UniformArrayRenderer.Create(); } else if (rendererType == typeof(UniformBlockRenderer)) { renderer = UniformBlockRenderer.Create(); } else if (rendererType == typeof(UniformStructRenderer)) { renderer = UniformStructRenderer.Create(); } else if (rendererType == typeof(WaterRenderer)) { renderer = WaterRenderer.Create(waterPlaneLength: 4); } else if (rendererType == typeof(ZeroAttributeRenderer)) { renderer = ZeroAttributeRenderer.Create(); } return(renderer); }