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); }
private List <PickableRenderer> GetPickableRenderers() { List <PickableRenderer> list = new List <PickableRenderer>(); { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Tetrahedron()); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Teapot()); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Sphere()); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Chain()); pickableRenderer.SwitchList.Add(new LineWidthSwitch(5)); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new BigDipper()); pickableRenderer.SwitchList.Add(new LineWidthSwitch(5)); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Axis(partCount: 6, radius: 1.0f)); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Cube(new vec3(5, 4, 3))); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { var points = new List <vec3>() { new vec3(-4.0f, 0.0f, 0.0f), new vec3(-6.0f, 4.0f, 0.0f), new vec3(6.0f, -4.0f, 0.0f), new vec3(4.0f, 0.0f, 0.0f), }; BezierRenderer pickableRenderer = BezierRenderer.Create(points, BezierType.Curve); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { // note: the points are not centered at (0, 0, 0). Thus the renderer will not be placed at (0, 0, 0). var points = new List <vec3>() { new vec3(-4.0f, 0.0f, 4.0f), new vec3(-2.0f, 4.0f, 4.0f), new vec3(4.0f, 0.0f, 4.0f), new vec3(-4.0f, 0.0f, 0.0f), new vec3(-2.0f, 4.0f, 0.0f), new vec3(4.0f, 0.0f, 0.0f), new vec3(-4.0f, 0.0f, -4.0f), new vec3(-2.0f, 4.0f, -4.0f), new vec3(4.0f, 0.0f, -4.0f) }; BezierRenderer pickableRenderer = BezierRenderer.Create(points, BezierType.Surface); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimplexNoiseRenderer pickableRenderer = SimplexNoiseRenderer.Create(); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { KleinBottleRenderer pickableRenderer = KleinBottleRenderer.Create(new KleinBottleModel()); pickableRenderer.Scale = new vec3(0.1f, 0.1f, 0.1f); pickableRenderer.Initialize(); list.Add(pickableRenderer); } return(list); }