Exemplo n.º 1
0
        static BoundingBoxRenderableComponent GetBoundingBoxCom(BoundingBox box)
        {
            var name = "BoundingBoxShader";

            var compiler = new D3DShaderCompilator(null);

            var vertex = new ShaderInMemoryInfo(name + "Vertex", VertexShaderText,
                                                compiler.Compile(VertexShaderText,
                                                                 "VShaderBoundingBox", ShaderStages.Vertex.ToString()),
                                                ShaderStages.Vertex.ToString(), "VShaderBoundingBox");

            var pixel = new ShaderInMemoryInfo(name + "Pixel", PixelShaderText,
                                               compiler.Compile(PixelShaderText,
                                                                "PShaderBoundingBox", ShaderStages.Fragment.ToString()),
                                               ShaderStages.Fragment.ToString(), "PShaderBoundingBox");

            var geometry = new ShaderInMemoryInfo(name + "Geometry", GeometryShaderText,
                                                  compiler.Compile(GeometryShaderText,
                                                                   "GShaderBoundingBox", ShaderStages.Geometry.ToString()),
                                                  ShaderStages.Geometry.ToString(), "GShaderBoundingBox");

            var pass = new ShaderTechniquePass(new IShaderInfo[] { vertex, geometry, pixel, });

            var shader = new LineShaderSpecification(new[] { pass });

            return(new BoundingBoxRenderableComponent(shader, new LineDeviceBufferesUpdater(shader), box));
        }
Exemplo n.º 2
0
        public static void Build(IContextState context, Vector3[] points)
        {
            IShaderInfo[] lineShaders =
            {
                new D3DShaderInfo(
                    Path.Combine(AppContext.BaseDirectory, "Shaders", "Line"),
                    $"line-{ShaderStages.Vertex}",
                    ShaderStages.Vertex.ToString(),
                    "VShaderLines"),
                //new ShaderInfo{ Path= $"{Path.Combine(AppContext.BaseDirectory, "Shaders", "Line", "line")}-{ShaderStages.Geometry}.hlsl",
                //    Stage = ShaderStages.Geometry.ToString(), EntryPoint = "GShaderLines"},
                new D3DShaderInfo(
                    Path.Combine(AppContext.BaseDirectory, "Shaders", "Line"),
                    $"line-{ShaderStages.Fragment}",
                    ShaderStages.Fragment.ToString(),
                    "PShaderLinesFade")
            };

            var mb = new Std.Engine.Helpers.MeshBulder();
            //var box = mb.BuildBox(Vector3.Zero, 1, 1, 1);

            var lb = new Std.Engine.Helpers.LineBuilder();

            //var box = lb.Build(mb.BuildBox(Vector3.Zero, -20, 20, 20).Positions);// points.ToList().GetRange(0,20));
            var dd     = points.ToList().GetRange(0, 5).ToList();
            var box    = lb.Build(points);
            var shader = new LineShaderSpecification(new[] { new ShaderTechniquePass(lineShaders) });
            //
            var line = context.GetEntityManager()
                       .CreateEntity(new ElementTag("LineEntity"))
                       .AddComponent(new LineGeometryRenderComponent(
                                         shader,
                                         new LineDeviceBufferesUpdater(shader),
                                         box
                                         // new Std.Engine.Helpers.LineBuilder().Build(box.Positions.GetRange(0,3))
                                         ));

            context.EntityOrder.RegisterOrder <VeldridRenderSystem>(line.Tag);
        }
Exemplo n.º 3
0
 public LineDeviceBufferesUpdater(LineShaderSpecification shader) : base(shader)
 {
 }