示例#1
0
    public void OnLoad(object sender)
    {
        InputHandlerInitialize();

        Resourcepack.Loadresources();

        Service.Tiling.LoadTilesFromMap("tilemap",
                                        new TilemapCell("grass", 640, 0, 32, 32),
                                        new TilemapCell("tree", 384, 448, 64, 64),
                                        new TilemapCell("wall", 384, 320, 32, 32),
                                        new TilemapCell("floor", 0, 640, 32, 32));

        map          = new World();
        inputContext = new InputContext();

        var graphics = CreateGraphics();

        Input.Initialize(inputContext);
        GraphicsAPI.Initialize(Width, Height, new System.Runtime.InteropServices.HandleRef(graphics, graphics.GetHdc()));
    }
示例#2
0
文件: Enums.cs 项目: msgfx/renderdoc
        public static string Str(this ShaderStageType stage, GraphicsAPI apitype)
        {
            if (apitype.IsD3D())
            {
                switch (stage)
                {
                case ShaderStageType.Vertex: return("Vertex");

                case ShaderStageType.Hull: return("Hull");

                case ShaderStageType.Domain: return("Domain");

                case ShaderStageType.Geometry: return("Geometry");

                case ShaderStageType.Pixel: return("Pixel");

                case ShaderStageType.Compute: return("Compute");
                }
            }
            else if (apitype == GraphicsAPI.OpenGL || apitype == GraphicsAPI.Vulkan)
            {
                switch (stage)
                {
                case ShaderStageType.Vertex: return("Vertex");

                case ShaderStageType.Tess_Control: return("Tess. Control");

                case ShaderStageType.Tess_Eval: return("Tess. Eval");

                case ShaderStageType.Geometry: return("Geometry");

                case ShaderStageType.Fragment: return("Fragment");

                case ShaderStageType.Compute: return("Compute");
                }
            }

            return(stage.ToString());
        }
示例#3
0
        public static RenderCommand DrawGeometry(CameraData camera, Matrix4 cameraTransform)
        {
            return(new RenderCommand("Draw Geometry", (ref RenderContext context) =>
            {
                if (!context.TryGetData(out GeometryRenderData geometryData))
                {
                    return;
                }

                if (!context.TryGetData(out LightsRenderData lightData))
                {
                    return;
                }

                //if (MainDevWindowGL.Window.KeyboardState.IsKeyDown(OpenTK.Windowing.GraphicsLibraryFramework.Keys.I))
                //    yaw += 0.1f;

                //if (MainDevWindowGL.Window.KeyboardState.IsKeyDown(OpenTK.Windowing.GraphicsLibraryFramework.Keys.O))
                //    yaw -= 0.1f;

                //if (MainDevWindowGL.Window.KeyboardState.IsKeyDown(OpenTK.Windowing.GraphicsLibraryFramework.Keys.K))
                //    pitch += 0.1f;

                //if (MainDevWindowGL.Window.KeyboardState.IsKeyDown(OpenTK.Windowing.GraphicsLibraryFramework.Keys.L))
                //    pitch -= 0.1f;

                Ogl.Viewport(0, 0, AppScreen.Resolution.x, AppScreen.Resolution.y);
                Ogl.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

                Light mainLight = lightData.lights[0];
                Matrix4 projection = camera.CalculateProjection();

                List <MeshRenderGroup> renderGroups = geometryData.GetRenderGroups();
                for (int i = 0; i < renderGroups.Count; i++)
                {
                    MeshRenderGroup renderGroup = renderGroups[i];

                    RenderMesh pair = renderGroup.MeshRender;
                    List <Matrix4> positions = renderGroup.Transforms;

                    pair.mat.SetDepthMap(new DepthTexture(mainLight.Framebuffer.DepthBuffer));
                    GraphicsAPI.UseMeshMaterial(pair.mesh, pair.mat);


                    //Update camera pos for material
                    //TODO: Use 'Uniform buffer objects' to globally share this data
                    pair.mat.SetMatrix("view", cameraTransform);
                    pair.mat.SetMatrix("projection", projection);

                    pair.mat.SetVector3("directionalLight", new Vector3(1, 1, 1));
                    pair.mat.SetVector3("ambientLight", new Vector3(0.5f, 0.5f, 0.5f));
                    pair.mat.SetVector3("directionalDir", LIGHT_FORWARD_NORMALIZED);
                    pair.mat.SetMatrix("lightSpace", LIGHT_VIEW * mainLight.GetProjection());

                    for (int p = 0; p < positions.Count; p++)
                    {
                        pair.mat.SetMatrix("model", positions[p]);

                        GraphicsAPI.DrawTriangles(pair.mesh.GetIndiceCount());
                    }

                    GraphicsAPI.FreeMeshMaterial(pair.mesh, pair.mat);
                }
            }));
示例#4
0
文件: Enums.cs 项目: msgfx/renderdoc
        public static string Str(this ResourceUsage usage, GraphicsAPI apitype)
        {
            if (apitype.IsD3D())
            {
                switch (usage)
                {
                case ResourceUsage.VertexBuffer: return("Vertex Buffer");

                case ResourceUsage.IndexBuffer: return("Index Buffer");

                case ResourceUsage.VS_Constants: return("VS - Constant Buffer");

                case ResourceUsage.GS_Constants: return("GS - Constant Buffer");

                case ResourceUsage.HS_Constants: return("HS - Constant Buffer");

                case ResourceUsage.DS_Constants: return("DS - Constant Buffer");

                case ResourceUsage.CS_Constants: return("CS - Constant Buffer");

                case ResourceUsage.PS_Constants: return("PS - Constant Buffer");

                case ResourceUsage.All_Constants: return("All - Constant Buffer");

                case ResourceUsage.SO: return("Stream Out");

                case ResourceUsage.VS_Resource: return("VS - Resource");

                case ResourceUsage.GS_Resource: return("GS - Resource");

                case ResourceUsage.HS_Resource: return("HS - Resource");

                case ResourceUsage.DS_Resource: return("DS - Resource");

                case ResourceUsage.CS_Resource: return("CS - Resource");

                case ResourceUsage.PS_Resource: return("PS - Resource");

                case ResourceUsage.All_Resource: return("All - Resource");

                case ResourceUsage.VS_RWResource: return("VS - UAV");

                case ResourceUsage.HS_RWResource: return("HS - UAV");

                case ResourceUsage.DS_RWResource: return("DS - UAV");

                case ResourceUsage.GS_RWResource: return("GS - UAV");

                case ResourceUsage.PS_RWResource: return("PS - UAV");

                case ResourceUsage.CS_RWResource: return("CS - UAV");

                case ResourceUsage.All_RWResource: return("All - UAV");

                case ResourceUsage.InputTarget: return("Colour Input");

                case ResourceUsage.ColourTarget: return("Rendertarget");

                case ResourceUsage.DepthStencilTarget: return("Depthstencil");

                case ResourceUsage.Indirect: return("Indirect argument");

                case ResourceUsage.Clear: return("Clear");

                case ResourceUsage.GenMips: return("Generate Mips");

                case ResourceUsage.Resolve: return("Resolve");

                case ResourceUsage.ResolveSrc: return("Resolve - Source");

                case ResourceUsage.ResolveDst: return("Resolve - Dest");

                case ResourceUsage.Copy: return("Copy");

                case ResourceUsage.CopySrc: return("Copy - Source");

                case ResourceUsage.CopyDst: return("Copy - Dest");

                case ResourceUsage.Barrier: return("Barrier");
                }
            }
            else if (apitype == GraphicsAPI.OpenGL || apitype == GraphicsAPI.Vulkan)
            {
                bool vk = (apitype == GraphicsAPI.Vulkan);

                switch (usage)
                {
                case ResourceUsage.VertexBuffer: return("Vertex Buffer");

                case ResourceUsage.IndexBuffer: return("Index Buffer");

                case ResourceUsage.VS_Constants: return("VS - Uniform Buffer");

                case ResourceUsage.GS_Constants: return("GS - Uniform Buffer");

                case ResourceUsage.HS_Constants: return("HS - Uniform Buffer");

                case ResourceUsage.DS_Constants: return("DS - Uniform Buffer");

                case ResourceUsage.CS_Constants: return("CS - Uniform Buffer");

                case ResourceUsage.PS_Constants: return("PS - Uniform Buffer");

                case ResourceUsage.All_Constants: return("All - Uniform Buffer");

                case ResourceUsage.SO: return("Transform Feedback");

                case ResourceUsage.VS_Resource: return("VS - Texture");

                case ResourceUsage.GS_Resource: return("GS - Texture");

                case ResourceUsage.HS_Resource: return("HS - Texture");

                case ResourceUsage.DS_Resource: return("DS - Texture");

                case ResourceUsage.CS_Resource: return("CS - Texture");

                case ResourceUsage.PS_Resource: return("PS - Texture");

                case ResourceUsage.All_Resource: return("All - Texture");

                case ResourceUsage.VS_RWResource: return("VS - Image/SSBO");

                case ResourceUsage.HS_RWResource: return("HS - Image/SSBO");

                case ResourceUsage.DS_RWResource: return("DS - Image/SSBO");

                case ResourceUsage.GS_RWResource: return("GS - Image/SSBO");

                case ResourceUsage.PS_RWResource: return("PS - Image/SSBO");

                case ResourceUsage.CS_RWResource: return("CS - Image/SSBO");

                case ResourceUsage.All_RWResource: return("All - Image/SSBO");

                case ResourceUsage.InputTarget: return("FBO Input");

                case ResourceUsage.ColourTarget: return("FBO Colour");

                case ResourceUsage.DepthStencilTarget: return("FBO Depthstencil");

                case ResourceUsage.Indirect: return("Indirect argument");

                case ResourceUsage.Clear: return("Clear");

                case ResourceUsage.GenMips: return("Generate Mips");

                case ResourceUsage.Resolve: return(vk ? "Resolve" : "Framebuffer blit");

                case ResourceUsage.ResolveSrc: return(vk ? "Resolve - Source" : "Framebuffer blit - Source");

                case ResourceUsage.ResolveDst: return(vk ? "Resolve - Dest" : "Framebuffer blit - Dest");

                case ResourceUsage.Copy: return("Copy");

                case ResourceUsage.CopySrc: return("Copy - Source");

                case ResourceUsage.CopyDst: return("Copy - Dest");

                case ResourceUsage.Barrier: return("Barrier");
                }
            }

            return("Unknown Usage String");
        }
示例#5
0
文件: Enums.cs 项目: msgfx/renderdoc
 public static bool IsD3D(this GraphicsAPI apitype)
 {
     return(apitype == GraphicsAPI.D3D11 || apitype == GraphicsAPI.D3D12);
 }
 public ZenTarget(Platform platform, GraphicsAPI graphicsAPI, EngineMode engineMode)
 {
     Platform    = platform;
     GraphicsAPI = graphicsAPI;
     EngineMode  = engineMode;
 }
 public PlatformFileExt(string InFileExt, Platform InPlatformMask, GraphicsAPI graphicMask = 0)
 {
     FileExt      = InFileExt;
     PlatformMask = InPlatformMask;
     GraphicMask  = graphicMask;
 }
示例#8
0
 /// <summary>
 /// Prüft, ob die gegebene Grafik-API zur Verfügung steht.
 /// </summary>
 /// <param name="GraphicsAPI">Die Grafik-API.</param>
 /// <returns>True, wenn die Grafik-API zur Verfügung steht, ansonsten false.</returns>
 public static bool IsSupported(GraphicsAPI GraphicsAPI)
 {
     return(graphicsAPIs.Contains(GraphicsAPI));
 }
示例#9
0
        public static string Str(this ShaderStageType stage, GraphicsAPI apitype)
        {
            if (apitype.IsD3D())
            {
                switch (stage)
                {
                    case ShaderStageType.Vertex: return "Vertex";
                    case ShaderStageType.Hull: return "Hull";
                    case ShaderStageType.Domain: return "Domain";
                    case ShaderStageType.Geometry: return "Geometry";
                    case ShaderStageType.Pixel: return "Pixel";
                    case ShaderStageType.Compute: return "Compute";
                }
            }
            else if (apitype == GraphicsAPI.OpenGL || apitype == GraphicsAPI.Vulkan)
            {
                switch (stage)
                {
                    case ShaderStageType.Vertex: return "Vertex";
                    case ShaderStageType.Tess_Control: return "Tess. Control";
                    case ShaderStageType.Tess_Eval: return "Tess. Eval";
                    case ShaderStageType.Geometry: return "Geometry";
                    case ShaderStageType.Fragment: return "Fragment";
                    case ShaderStageType.Compute: return "Compute";
                }
            }

            return stage.ToString();
        }
示例#10
0
        public static string Str(this ResourceUsage usage, GraphicsAPI apitype)
        {
            if (apitype.IsD3D())
            {
                switch (usage)
                {
                    case ResourceUsage.VertexBuffer: return "Vertex Buffer";
                    case ResourceUsage.IndexBuffer: return "Index Buffer";

                    case ResourceUsage.VS_Constants: return "VS - Constant Buffer";
                    case ResourceUsage.GS_Constants: return "GS - Constant Buffer";
                    case ResourceUsage.HS_Constants: return "HS - Constant Buffer";
                    case ResourceUsage.DS_Constants: return "DS - Constant Buffer";
                    case ResourceUsage.CS_Constants: return "CS - Constant Buffer";
                    case ResourceUsage.PS_Constants: return "PS - Constant Buffer";
                    case ResourceUsage.All_Constants: return "All - Constant Buffer";

                    case ResourceUsage.SO: return "Stream Out";

                    case ResourceUsage.VS_Resource: return "VS - Resource";
                    case ResourceUsage.GS_Resource: return "GS - Resource";
                    case ResourceUsage.HS_Resource: return "HS - Resource";
                    case ResourceUsage.DS_Resource: return "DS - Resource";
                    case ResourceUsage.CS_Resource: return "CS - Resource";
                    case ResourceUsage.PS_Resource: return "PS - Resource";
                    case ResourceUsage.All_Resource: return "All - Resource";

                    case ResourceUsage.VS_RWResource: return "VS - UAV";
                    case ResourceUsage.HS_RWResource: return "HS - UAV";
                    case ResourceUsage.DS_RWResource: return "DS - UAV";
                    case ResourceUsage.GS_RWResource: return "GS - UAV";
                    case ResourceUsage.PS_RWResource: return "PS - UAV";
                    case ResourceUsage.CS_RWResource: return "CS - UAV";
                    case ResourceUsage.All_RWResource: return "All - UAV";

                    case ResourceUsage.InputTarget: return "Colour Input";
                    case ResourceUsage.ColourTarget: return "Rendertarget";
                    case ResourceUsage.DepthStencilTarget: return "Depthstencil";

                    case ResourceUsage.Indirect: return "Indirect argument";

                    case ResourceUsage.Clear: return "Clear";

                    case ResourceUsage.GenMips: return "Generate Mips";
                    case ResourceUsage.Resolve: return "Resolve";
                    case ResourceUsage.ResolveSrc: return "Resolve - Source";
                    case ResourceUsage.ResolveDst: return "Resolve - Dest";
                    case ResourceUsage.Copy: return "Copy";
                    case ResourceUsage.CopySrc: return "Copy - Source";
                    case ResourceUsage.CopyDst: return "Copy - Dest";

                    case ResourceUsage.Barrier: return "Barrier";
                }
            }
            else if (apitype == GraphicsAPI.OpenGL || apitype == GraphicsAPI.Vulkan)
            {
                bool vk = (apitype == GraphicsAPI.Vulkan);

                switch (usage)
                {
                    case ResourceUsage.VertexBuffer: return "Vertex Buffer";
                    case ResourceUsage.IndexBuffer: return "Index Buffer";

                    case ResourceUsage.VS_Constants: return "VS - Uniform Buffer";
                    case ResourceUsage.GS_Constants: return "GS - Uniform Buffer";
                    case ResourceUsage.HS_Constants: return "HS - Uniform Buffer";
                    case ResourceUsage.DS_Constants: return "DS - Uniform Buffer";
                    case ResourceUsage.CS_Constants: return "CS - Uniform Buffer";
                    case ResourceUsage.PS_Constants: return "PS - Uniform Buffer";
                    case ResourceUsage.All_Constants: return "All - Uniform Buffer";

                    case ResourceUsage.SO: return "Transform Feedback";

                    case ResourceUsage.VS_Resource: return "VS - Texture";
                    case ResourceUsage.GS_Resource: return "GS - Texture";
                    case ResourceUsage.HS_Resource: return "HS - Texture";
                    case ResourceUsage.DS_Resource: return "DS - Texture";
                    case ResourceUsage.CS_Resource: return "CS - Texture";
                    case ResourceUsage.PS_Resource: return "PS - Texture";
                    case ResourceUsage.All_Resource: return "All - Texture";

                    case ResourceUsage.VS_RWResource: return "VS - Image/SSBO";
                    case ResourceUsage.HS_RWResource: return "HS - Image/SSBO";
                    case ResourceUsage.DS_RWResource: return "DS - Image/SSBO";
                    case ResourceUsage.GS_RWResource: return "GS - Image/SSBO";
                    case ResourceUsage.PS_RWResource: return "PS - Image/SSBO";
                    case ResourceUsage.CS_RWResource: return "CS - Image/SSBO";
                    case ResourceUsage.All_RWResource: return "All - Image/SSBO";

                    case ResourceUsage.InputTarget: return "FBO Input";
                    case ResourceUsage.ColourTarget: return "FBO Colour";
                    case ResourceUsage.DepthStencilTarget: return "FBO Depthstencil";

                    case ResourceUsage.Indirect: return "Indirect argument";

                    case ResourceUsage.Clear: return "Clear";

                    case ResourceUsage.GenMips: return "Generate Mips";
                    case ResourceUsage.Resolve: return vk ? "Resolve" : "Framebuffer blit";
                    case ResourceUsage.ResolveSrc: return vk ? "Resolve - Source" : "Framebuffer blit - Source";
                    case ResourceUsage.ResolveDst: return vk ? "Resolve - Dest" : "Framebuffer blit - Dest";
                    case ResourceUsage.Copy: return "Copy";
                    case ResourceUsage.CopySrc: return "Copy - Source";
                    case ResourceUsage.CopyDst: return "Copy - Dest";

                    case ResourceUsage.Barrier: return "Barrier";
                }
            }

            return "Unknown Usage String";
        }
示例#11
0
        //public void DrawIndexed(int indexCount, uint instanceCount, uint indexStart, int vertexOffset, uint instanceStart)
        //{
        // Issue a Draw command for a single instance with 4 indices.
        //veldridCommandList.DrawIndexed(Convert.ToUInt32(indexCount), instanceCount, indexStart, vertexOffset, instanceStart);
        //}
        #endregion

        #region Internal API
        /// <summary>
        /// Initialises the GraphicsDevice
        /// </summary>
        /// <param name="graphicsAPI"></param>
        internal void Initialise(VesselWindow window, ApplicationConfig config)
        {
            GraphicsAPI = config.GraphicsAPI;

            GraphicsDeviceOptions options = new GraphicsDeviceOptions
            {
                PreferStandardClipSpaceYDirection = true,
                PreferDepthRangeZeroToOne         = true,
                SyncToVerticalBlank = config.VSync,
                Debug = config.DebugMode,
            };

            DefaultGraphicsAPI = (GraphicsAPI)VeldridStartup.GetPlatformDefaultBackend();

            if (config.GraphicsAPI == GraphicsAPI.Default)
            {
                veldridGraphicsDevice = VeldridStartup.CreateGraphicsDevice(window.WindowInternal, options, (GraphicsBackend)DefaultGraphicsAPI);
            }
            else
            {
                veldridGraphicsDevice = VeldridStartup.CreateGraphicsDevice(window.WindowInternal, options, (GraphicsBackend)config.GraphicsAPI);
            }

            //Create the Graphics Resources
            ResourceFactory factory = veldridGraphicsDevice.ResourceFactory;

            //TODO: Replace with ResourceFactory.Load("ShaderTest0");
            //shader = new ShaderTechnique(this,
            //System.IO.File.ReadAllBytes(@"E:\Data\Projects\Vessel\VesselSharp\VesselSharp\ShaderTests\ShaderTest0.vert.spv"),
            //System.IO.File.ReadAllBytes(@"E:\Data\Projects\Vessel\VesselSharp\VesselSharp\ShaderTests\ShaderTest0.frag.spv"),
            //"ShaderTest0");

            // TODO: Move pipeline to Shader class
            // TODO: Shader => ShaderTechnique; ComputeShader
            // TODO: Assets can be compiled (i.e. banks) or directories (i.e. folder of compiled assets (eg shader.shd), assets aren't packaged into an archive though) - for use during dev cuz packaging archives will probably be time consuming as f**k and decimate workflows

            // Create pipeline

            /*
             * pipelineDescription = new GraphicsPipelineDescription();
             * pipelineDescription.BlendState = BlendStateDescription.SingleOverrideBlend;
             * pipelineDescription.DepthStencilState = new DepthStencilStateDescription(
             *      depthTestEnabled: true,
             *      depthWriteEnabled: true,
             *      comparisonKind: ComparisonKind.LessEqual);
             *
             * pipelineDescription.RasterizerState = new RasterizerStateDescription(
             *      cullMode: FaceCullMode.Back,
             *      fillMode: PolygonFillMode.Solid,
             *      frontFace: FrontFace.Clockwise,
             *      depthClipEnabled: true,
             *      scissorTestEnabled: false);
             *
             * pipelineDescription.PrimitiveTopology = PrimitiveTopology.TriangleStrip;
             * pipelineDescription.ResourceLayouts = System.Array.Empty<ResourceLayout>();
             * pipelineDescription.ShaderSet = new ShaderSetDescription(
             *      vertexLayouts: new VertexLayoutDescription[]
             *      {
             *              VertexPositionColor.VertexLayout,
             *      },
             *      shaders: shader.Programs);
             * pipelineDescription.Outputs = veldridGraphicsDevice.SwapchainFramebuffer.OutputDescription;
             *
             * veldridPipeline = factory.CreateGraphicsPipeline(pipelineDescription);
             */

            veldridCommandList = factory.CreateCommandList();
        }
示例#12
0
        /// <summary>
        /// This function initializes the AntTweakBar library. It must be called once at the beginning of the program, just after graphic mode is initialized.
        /// </summary>
        /// <param name="graphicsAPI">This parameter specifies which graphic API is used: OpenGL, OpenGL core profile (3.2 and higher), Direct3D 9, Direct3D 10 or Direct3D 11.</param>
        /// <param name="device">Pointer to the Direct3D device, or IntPtr.Zero for OpenGL.</param>
        public static void Init(GraphicsAPI graphicsAPI, IntPtr device)
        {
            if (graphicsAPI == GraphicsAPI.Unspecified) {
                throw new ArgumentOutOfRangeException("graphicsAPI");
            }

             if (!NativeMethods.TwInit(graphicsAPI, device)) {
                 throw new AntTweakBarException("TwInit failed.");
             }
        }
示例#13
0
 public static void BindTexture2d(int textureId, int textureUnit)
 {
     GraphicsAPI.BindTexture2d(textureId, textureUnit);
 }