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)); }
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)); }