Esempio n. 1
0
        public override void Draw()
        {
            GL.Enable(EnableCap.ClipDistance0);

            float dist = 2 * (EngineCore.gameCamera.position.Y - position.Y);

            EngineCore.gameCamera.position.Y -= dist;
            EngineCore.gameCamera.rotation.X *= -1;
            EngineCore.gameCamera.CalculateMatrices(false);

            EngineCore.shaders["Default"].SetClippingPlane(new Vector4(0, 1, 0, -position.Y + 0.1f));
            reflection.Bind();
            EngineCore.RenderWithout(this);
            reflection.UnBind();

            EngineCore.gameCamera.position.Y += dist;
            EngineCore.gameCamera.rotation.X *= -1;
            EngineCore.gameCamera.CalculateMatrices(false);


            EngineCore.shaders["Default"].SetClippingPlane(new Vector4(0, -1, 0, position.Y + 0.1f));
            refraction.Bind();
            EngineCore.RenderWithout(this);
            refraction.UnBind();

            EngineCore.shaders["Default"].SetClippingPlane(new Vector4(0, 0, 0, 0));

            GL.Disable(EnableCap.ClipDistance0);

            GL.UseProgram(GetShader().ProgramID);

            GL.BindVertexArray(GetMesh().vaoID);
            GetShader().currentObject = this;
            GetShader().Start();

            GL.ActiveTexture(TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, reflection.textureAttachment);

            GL.ActiveTexture(TextureUnit.Texture1);
            GL.BindTexture(TextureTarget.Texture2D, refraction.textureAttachment);

            GL.ActiveTexture(TextureUnit.Texture2);
            GL.BindTexture(TextureTarget.Texture2D, GetTexture().texID); //DuDv Map

            GL.ActiveTexture(TextureUnit.Texture3);
            GL.BindTexture(TextureTarget.Texture2D, GetNormalMap().texID);

            GL.ActiveTexture(TextureUnit.Texture4);
            GL.BindTexture(TextureTarget.Texture2D, refraction.depthTextureAttachment);

            GL.DrawElements(PrimitiveType.Triangles, GetMesh().indices.Count, DrawElementsType.UnsignedInt, 0);

            GetShader().Stop();
            GL.BindVertexArray(0);
        }
Esempio n. 2
0
 public void Update()
 {
     depths.Bind();
     depths.UnBind();
 }