コード例 #1
0
        public TerrainRenderManager(World w)
        {
            world               = w;
            world.chunkAdded   += handleChunkAdded;
            world.chunkRemoved += handleChunkRemoved;
            world.chunksReset  += handleChunksReset;

            TriangleVisualizer vis = new TriangleVisualizer(this);

            Renderer.registerVisualizer("terrain", vis);

            ShaderProgramDescriptor sd;
            ShaderProgram           sp;
            List <ShaderDescriptor> desc = new List <ShaderDescriptor>();

            desc.Add(new ShaderDescriptor(ShaderType.VertexShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-vs.glsl", ShaderDescriptor.Source.File));
            desc.Add(new ShaderDescriptor(ShaderType.GeometryShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-gs.glsl", ShaderDescriptor.Source.File));
            desc.Add(new ShaderDescriptor(ShaderType.FragmentShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-ps.glsl", ShaderDescriptor.Source.File));
            sd = new ShaderProgramDescriptor(desc, null, "terrain:perpixel");
            sp = Renderer.resourceManager.getResource(sd) as ShaderProgram;
            vis.registerEffect("forward-lighting", new PerPixelSolidEffect(sp));
            vis.registerEffect("forward-lighting", new PerPixelTransparentEffect(sp));

            desc.Clear();
            desc.Add(new ShaderDescriptor(ShaderType.VertexShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-vs.glsl", ShaderDescriptor.Source.File));
            desc.Add(new ShaderDescriptor(ShaderType.GeometryShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-gs.glsl", ShaderDescriptor.Source.File));
            desc.Add(new ShaderDescriptor(ShaderType.FragmentShader, "..\\src\\Terrain\\rendering\\shaders\\water-ps.glsl", ShaderDescriptor.Source.File));
            sd = new ShaderProgramDescriptor(desc, null, "terrain:water");
            sp = Renderer.resourceManager.getResource(sd) as ShaderProgram;
            vis.registerEffect("forward-lighting", new PerPixelWaterEffect(sp));
        }
コード例 #2
0
        public void init()
        {
            world.chunkAdded   += handleChunkAdded;
            world.chunkRemoved += handleChunkRemoved;
            world.chunksReset  += handleChunksReset;

            Vector2 size = new Vector2(1920, 1280);

            myWaterColorBuffer = new Texture((int)size.X, (int)size.Y, PixelInternalFormat.Rgba8);
            myWaterDepthBuffer = new Texture((int)size.X, (int)size.Y, PixelInternalFormat.DepthComponent32f);

            List <RenderTargetDescriptor> rtdesc = new List <RenderTargetDescriptor>();

            rtdesc.Add(new RenderTargetDescriptor()
            {
                attach = FramebufferAttachment.ColorAttachment0, tex = myWaterColorBuffer
            });                                                                                                                                 //uses an existing texture
            rtdesc.Add(new RenderTargetDescriptor()
            {
                attach = FramebufferAttachment.DepthAttachment, tex = myWaterDepthBuffer
            });                                                                                                                                //uses an existing texture
            myWaterRenderTarget = new RenderTarget((int)size.X, (int)size.Y, rtdesc);

            TriangleVisualizer vis = new TriangleVisualizer(this);

            Renderer.registerVisualizer("terrain", vis);

            ShaderProgramDescriptor sd;
            ShaderProgram           sp;
            List <ShaderDescriptor> desc = new List <ShaderDescriptor>();

            desc.Add(new ShaderDescriptor(ShaderType.VertexShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-vs.glsl", ShaderDescriptor.Source.File));
            desc.Add(new ShaderDescriptor(ShaderType.GeometryShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-gs.glsl", ShaderDescriptor.Source.File));
            desc.Add(new ShaderDescriptor(ShaderType.FragmentShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-ps.glsl", ShaderDescriptor.Source.File));
            sd = new ShaderProgramDescriptor(desc, null, "terrain:perpixel");
            sp = Renderer.resourceManager.getResource(sd) as ShaderProgram;
            vis.registerEffect("forward-lighting", new PerPixelSolidEffect(sp));
            vis.registerEffect("forward-lighting", new PerPixelTransparentEffect(sp));

            desc.Clear();
            desc.Add(new ShaderDescriptor(ShaderType.VertexShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-vs.glsl", ShaderDescriptor.Source.File));
            desc.Add(new ShaderDescriptor(ShaderType.GeometryShader, "..\\src\\Terrain\\rendering\\shaders\\terrainTri-gs.glsl", ShaderDescriptor.Source.File));
            desc.Add(new ShaderDescriptor(ShaderType.FragmentShader, "..\\src\\Terrain\\rendering\\shaders\\water-ps.glsl", ShaderDescriptor.Source.File));
            sd = new ShaderProgramDescriptor(desc, null, "terrain:water");
            sp = Renderer.resourceManager.getResource(sd) as ShaderProgram;
            vis.registerEffect("forward-lighting", new PerPixelWaterEffect(sp));
        }