Beispiel #1
0
        public override void Initialize(Renderer renderer)
        {
            base.Initialize(renderer);
            //Prepare the render state used by the grid/axis
            var rs = new RenderState();

            rs.DepthTest = true;
            rs.DepthMask = true;

            //Define the memory layout of the vertex declaration
            vd.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Position);
            vd.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.VertexColor);
            //compile shader from SPIR-V source code and specify
            var src = new SPIRVSource()
            {
                VertexShader   = Shaders.GridVertex,
                FragmentShader = Shaders.GridFragment
            };

            shader = renderer.RenderFactory.CreateShaderProgram(src);
            //bake the graphic render pipeline
            pipeline = renderer.RenderFactory.CreatePipeline(shader, rs, vd, DrawOperation.Lines);

            ms = new MemoryStream(16 * 4);
            w  = new BinaryWriter(ms);
        }
        public override void Initialize(Renderer renderer)
        {
            //compile the shader
            var src = new SPIRVSource()
            {
                VertexShader   = Shaders.BackgroundVertex,
                FragmentShader = Shaders.BackgroundFragment,
            };

            shader = renderer.RenderFactory.CreateShaderProgram(src);

            //prepare the render state
            var rs = new RenderState();

            rs.CullFace  = false;
            rs.DepthMask = false;

            //Bake the render pipeline
            //This entity rendering does not need a vertex buffer
            //so the vertex declaration is an empty definition here
            var vd = new VertexDeclaration();

            pipeline = renderer.RenderFactory.CreatePipeline(shader, rs, vd, DrawOperation.Triangles);

            //The data used by the shader's push constant
            float[] data =
            {
                1000,     0,     0, 0,    //height
                0.22f, 0.2f, 0.13f, 1.0f, //upper color
                0.2f,  0.3f,  0.3f, 1.0f  //lower color
            };
            constants = new byte[data.Length * 4];
            Buffer.BlockCopy(data, 0, constants, 0, constants.Length);
        }
        /// <summary>
        /// Initialize the renderer
        /// </summary>
        /// <param name="renderer"></param>
        public override void Initialize(Renderer renderer)
        {
            base.Initialize(renderer);
            //create the shader program from the precompiled SPIR-V byte code
            var src = new SPIRVSource()
            {
                VertexShader   = Shaders.NormalsVertex,
                FragmentShader = Shaders.NormalsFragment
            };

            shader = renderer.RenderFactory.CreateShaderProgram(src);
            //default render state
            var rs = new RenderState();
            //Define the memory layout of the vertex
            var vd = new VertexDeclaration();

            vd.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Position);
            //create the pipeline and vertex buffer
            pipeline = renderer.RenderFactory.CreatePipeline(shader, rs, vd, DrawOperation.Lines);
            buffer   = renderer.RenderFactory.CreateVertexBuffer(vd);
        }
Beispiel #4
0
        public override void Initialize(Renderer renderer)
        {
            //compile the shader
            var src = new SPIRVSource()
            {
                VertexShader   = Shaders.BackgroundVertex,
                FragmentShader = Shaders.BackgroundFragment,
            };

            shader = renderer.RenderFactory.CreateShaderProgram(src);

            //prepare the render state
            var rs = new RenderState();

            rs.CullFace  = false;
            rs.DepthMask = false;

            //Bake the render pipeline
            //This entity rendering does not need a vertex buffer
            //so the vertex declaration is an empty definition here
            var vd = new VertexDeclaration();

            pipeline = renderer.RenderFactory.CreatePipeline(shader, rs, vd, DrawOperation.Triangles);
        }