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)); }
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); }
public LineDeviceBufferesUpdater(LineShaderSpecification shader) : base(shader) { }