Пример #1
0
        protected override void Draw(Microsoft.Xna.Framework.GameTime gt, PloobsEngine.SceneControl.IObject obj, PloobsEngine.SceneControl.RenderHelper render, PloobsEngine.Cameras.ICamera cam, IList <PloobsEngine.Light.ILight> lights)
        {
            Effect.CurrentTechnique = Effect.Techniques["FLUID3"];
            Effect.Parameters["depth"].SetValue(r1);
            Effect.Parameters["normal"].SetValue(r3);
            Effect.Parameters["camPos"].SetValue(Vector3.Transform(cam.Position, cam.View));
            Effect.Parameters["invxView"].SetValue(Matrix.Invert(cam.View));

            render.RenderFullScreenQuadVertexPixel(Effect);
            //render.RenderTextureComplete(r3);

            render.SetSamplerStates(ginfo.SamplerState);
        }
Пример #2
0
        public override void PreDrawPhase(GameTime gt, PloobsEngine.SceneControl.IWorld world, PloobsEngine.SceneControl.IObject obj, PloobsEngine.SceneControl.RenderHelper render, PloobsEngine.Cameras.ICamera cam)
        {
            Effect.Parameters["InvertViewProjection"].SetValue(Matrix.Invert(cam.Projection));
            Effect.Parameters["halfPixel"].SetValue(ginfo.HalfPixel);

            Effect.Parameters["forward"].SetValue(Vector3.Normalize(cam.Target - cam.Position));
            Effect.Parameters["upVector"].SetValue(cam.Up);
            Effect.Parameters["xView"].SetValue(cam.View);
            Effect.Parameters["xProjection"].SetValue(cam.Projection);
            Effect.Parameters["scaleX"].SetValue(3.5f);
            Effect.Parameters["scaleY"].SetValue(3.5f);
            Effect.Parameters["sphereRadius"].SetValue(3f);
            Effect.CurrentTechnique = Effect.Techniques["FLUID0"];
            render.PushRenderTarget(r1);
            render.Clear(Color.Black);
            render.PushRasterizerState(RasterizerState);
            render.PushDepthStencilState(DepthStencilState.Default);
            render.RenderBatch(obj.Modelo.GetBatchInformation(0)[0], Effect);
            render.PopRasterizerState();
            render.PopDepthStencilState();
            render.PopRenderTarget();


            //Effect.CurrentTechnique = Effect.Techniques["FLUID2"];
            //render.PushRenderTarget(r2);
            //render.Clear(Color.Black);
            //Effect.Parameters["depth"].SetValue(r1);
            //Effect.Parameters["blurDepthFalloff"].SetValue(0);
            //Effect.Parameters["blurScale"].SetValue(1.5f);
            //Effect.Parameters["blurDir"].SetValue(new Vector2( 2 * ginfo.HalfPixel.X,0));
            //render.RenderFullScreenQuadVertexPixel(Effect);
            //render.PopRenderTarget();

            //Effect.CurrentTechnique = Effect.Techniques["FLUID2"];
            //render.PushRenderTarget(r1);
            //render.Clear(Color.Black);
            //Effect.Parameters["depth"].SetValue(r2);
            //Effect.Parameters["blurDepthFalloff"].SetValue(0);
            //Effect.Parameters["blurScale"].SetValue(1.5f);
            //Effect.Parameters["blurDir"].SetValue(new Vector2(0, 2 * ginfo.HalfPixel.Y));
            //render.RenderFullScreenQuadVertexPixel(Effect);
            //render.PopRenderTarget();

            Effect.Parameters["blurDepthFalloff"].SetValue(20);
            render.PushRenderTarget(r2);
            render.Clear(Color.Black);
            PerformGaussianBLur(render, r1);
            render.PopRenderTarget();

            render.PushRenderTarget(r1);
            render.Clear(Color.Black);
            PerformGaussianBLur(render, r2);
            render.PopRenderTarget();

            render.PushRenderTarget(r3);
            render.Clear(Color.Black);
            Effect.CurrentTechnique = Effect.Techniques["FLUID1"];
            Effect.Parameters["depth"].SetValue(r1);
            render.RenderFullScreenQuadVertexPixel(Effect);
            render.PopRenderTarget();

            //render.PushRenderTarget(r3);
            //render.Clear(Color.Black);
            //GaussianBlurPostEffect.Draw(r2, render, gt, ginfo, world, false);
            //render.PopRenderTarget();

            //render.PushRenderTarget(r2);
            //render.Clear(Color.Black);
            //GaussianBlurPostEffect.Draw(r3, render, gt, ginfo, world, false);
            //render.PopRenderTarget();
        }