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