Example #1
0
        public GlowFilter(int screenw, int screenh)
        {
            Log.Assert(Util.IsPowerOf2(screenw));
            Log.Assert(Util.IsPowerOf2(screenh));
            width         = screenw;
            height        = screenh;
            hGlowShader   = Resources.TheResources.GetShader("glow1");
            vGlowShader   = Resources.TheResources.GetShader("glow2");
            combineShader = Resources.TheResources.GetShader("glow3");
            // XXX: This could be more efficient somehow...
            matrix = Matrix4.CreateOrthographic(1, 1, 0, 10f);

            // Create back-buffer
            DestTexture1 = new Texture(width, height);
            DestTexture2 = new Texture(width, height);

            // Create framebuffer
            fbo1 = new FramebufferObject(DestTexture1);
            fbo2 = new FramebufferObject(DestTexture2);
            //this.bb = Starmaze.Content.Images.Billboard();

            // Make a billboard to render to.
            // XXX: Aspect ratio...
            var aspectRatio = 4.0f / 3.0f;
            var bb          = new VertexList(VertexLayout.TextureVertex);

            var halfHeight = 1.0f / 2;
            var halfWidth  = 1.0f / 2;

            bb.AddTextureVertex(
                new Vector2(-halfWidth, -halfHeight),
                Color4.White,
                new Vector2(0, 0)
                );
            bb.AddTextureVertex(
                new Vector2(-halfWidth, halfHeight),
                Color4.White,
                new Vector2(0, (1.0f / aspectRatio))
                );
            bb.AddTextureVertex(
                new Vector2(halfWidth, halfHeight),
                Color4.White,
                new Vector2(1, (1.0f / aspectRatio))
                );
            bb.AddTextureVertex(
                new Vector2(halfWidth, -halfHeight),
                Color4.White,
                new Vector2(1, 0)
                );
            var indices = new uint[] {
                0, 1, 2,
                0, 2, 3,
            };

            bb1 = new VertexArray(hGlowShader, bb, idxs: indices);
            bb2 = new VertexArray(vGlowShader, bb, idxs: indices);
            bb3 = new VertexArray(combineShader, bb, idxs: indices);
        }
Example #2
0
 public PostprocPipeline(int width, int height)
 {
     this.width  = (int)SMath.RoundUpToPowerOf2(width);
     this.height = (int)SMath.RoundUpToPowerOf2(height);
     // Sanity checking.
     Log.Assert(Util.IsPowerOf2(this.width));
     Log.Assert(Util.IsPowerOf2(this.height));
     steps      = new List <IPostprocStep>();
     fboTexture = new Texture(this.width, this.height);
     fbo        = new FramebufferObject(fboTexture);
 }
Example #3
0
        public PostprocStep(Shader shader, int screenw, int screenh)
        {
            Log.Assert(Util.IsPowerOf2(screenw));
            Log.Assert(Util.IsPowerOf2(screenh));
            width       = screenw;
            height      = screenh;
            this.shader = shader;
            // XXX: This could be more efficient somehow...
            matrix = Matrix4.CreateOrthographic(1, 1, 0, 10f);

            // Create back-buffer
            // XXX: Is ActiveTexture needed?  I THINK so...
            //GL.ActiveTexture(TextureUnit.Texture0);
            DestTexture = new Texture(width, height);

            // Create framebuffer
            fbo = new FramebufferObject(DestTexture);
            //this.bb = Starmaze.Content.Images.Billboard();

            // Make a billboard to render to.
            // XXX: Aspect ratio...
            var aspectRatio = 4.0f / 3.0f;
            var bb          = new VertexList(VertexLayout.TextureVertex);

            var halfHeight = 1.0f / 2;
            var halfWidth  = 1.0f / 2;

            bb.AddTextureVertex(
                new Vector2(-halfWidth, -halfHeight),
                Color4.White,
                new Vector2(0, 0)
                );
            bb.AddTextureVertex(
                new Vector2(-halfWidth, halfHeight),
                Color4.White,
                new Vector2(0, (1.0f / aspectRatio))
                );
            bb.AddTextureVertex(
                new Vector2(halfWidth, halfHeight),
                Color4.White,
                new Vector2(1, (1.0f / aspectRatio))
                );
            bb.AddTextureVertex(
                new Vector2(halfWidth, -halfHeight),
                Color4.White,
                new Vector2(1, 0)
                );
            var indices = new uint[] {
                0, 1, 2,
                0, 2, 3,
            };

            this.bb = new VertexArray(shader, bb, idxs: indices);
        }