Ejemplo n.º 1
0
        protected override void UpdateObject(Microsoft.Xna.Framework.GameTime gt, PloobsEngine.Cameras.ICamera cam, IWorld world)
        {
            // Tell the animation player to compute the latest bone transform matrices.
            SkinnedModel.AnimationPlayer.UpdateBoneTransforms(gt.ElapsedGameTime, true);

            Matrix[] boneTransforms = new Matrix[SkinnedModel.SkinningData.BindPose.Count];
            // Copy the transforms into our own array, so we can safely modify the values.
            SkinnedModel.AnimationPlayer.GetBoneTransforms().CopyTo(boneTransforms, 0);

            // Modify the transform matrices for the head and upper-left arm bones.
            int headIndex = SkinnedModel.SkinningData.BoneIndices["Head"];

            ///some bone manipulation
            headRotation += step;
            if (headRotation > 0.7f || headRotation < -0.7f)
            {
                step *= -1;
            }

            Matrix headTransform = Matrix.CreateRotationX(headRotation);

            boneTransforms[headIndex] = headTransform * boneTransforms[headIndex];

            // Tell the animation player to recompute the world and skin matrices.
            SkinnedModel.AnimationPlayer.UpdateWorldTransforms(Matrix.Identity, boneTransforms);
            SkinnedModel.AnimationPlayer.UpdateSkinTransforms();

            ForwardSkinnedShader.SetBones(SkinnedModel.AnimationPlayer.GetSkinTransforms());
            base.UpdateObject(gt, cam, world);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Normal Drawn Function.
        /// </summary>
        /// <param name="gt">The gt.</param>
        /// <param name="obj">The obj.</param>
        /// <param name="cam">The cam.</param>
        /// <param name="lights">The lights.</param>
        /// <param name="render">The render.</param>
        public void Drawn(GameTime gt, PloobsEngine.SceneControl.IObject obj, PloobsEngine.Cameras.ICamera cam, System.Collections.Generic.IList <PloobsEngine.Light.ILight> lights, PloobsEngine.SceneControl.RenderHelper render)
        {
            if (first)
            {
                _terrainModel.Initialize(cam, render.device);
                first = false;
            }

            if (_terrainModel.Effect is IEffectMatrices)
            {
                IEffectMatrices effectMatrices = (IEffectMatrices)_terrainModel.Effect;
                effectMatrices.World      = obj.WorldMatrix;
                effectMatrices.View       = cam.View;
                effectMatrices.Projection = cam.Projection;
            }

            render.SetSamplerStates(SamplerState.LinearWrap, 6);
            _terrainModel.Draw();
            render.SetSamplerStates(ginfo.SamplerState, 6);
        }
Ejemplo n.º 3
0
        protected override void Draw(GameTime gt, IObject obj, RenderHelper render, PloobsEngine.Cameras.ICamera cam, IList <PloobsEngine.Light.ILight> lights)
        {
            //render.PushRenderTarget(rt);

            Effect.Parameters["lightMapping"].SetValue(true);
            Effect.Parameters["projection"].SetValue(cam.Projection);
            Effect.Parameters["view"].SetValue(cam.View);

            for (int i = 0; i < obj.Modelo.MeshNumber; i++)
            {
                BatchInformation[] bi = obj.Modelo.GetBatchInformation(i);
                for (int j = 0; j < bi.Count(); j++)
                {
                    Effect.Parameters["diffuse"].SetValue(obj.Modelo.getTexture(PloobsEngine.Modelo.TextureType.DIFFUSE, i, j));
                    Effect.Parameters["uvcorrection"].SetValue(new Vector2(1, 1));
                    Effect.Parameters["world"].SetValue(bi[j].ModelLocalTransformation * obj.WorldMatrix);
                    render.RenderBatch(bi[j], Effect);
                }
            }

            //render.PopRenderTarget();
            //rt.SaveAsPng(...)
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Pos drawn Function.
 /// Called after all objects are Draw
 /// </summary>
 /// <param name="gt">The gt.</param>
 /// <param name="obj">The obj.</param>
 /// <param name="cam">The cam.</param>
 /// <param name="lights">The lights.</param>
 /// <param name="render">The render.</param>
 public void PosDrawnPhase(GameTime gt, PloobsEngine.SceneControl.IObject obj, PloobsEngine.Cameras.ICamera cam, System.Collections.Generic.IList <PloobsEngine.Light.ILight> lights, PloobsEngine.SceneControl.RenderHelper render)
 {
 }
Ejemplo n.º 5
0
        protected override void UpdateObject(Microsoft.Xna.Framework.GameTime gt, PloobsEngine.Cameras.ICamera cam, IWorld world)
        {
            TaskResult tr = task.Execute(this, gt);

            base.UpdateObject(gt, cam, world);
        }
Ejemplo n.º 6
0
        public override void PosDrawPhase(GameTime gt, PloobsEngine.SceneControl.IObject obj, PloobsEngine.SceneControl.RenderHelper render, PloobsEngine.Cameras.ICamera cam, IList <PloobsEngine.Light.ILight> lights)
        {
            render.PushRasterizerState(cullMode);
            render.PushBlendState(BlendState.NonPremultiplied);
            alphagradative.Parameters["camCenter"].SetValue(cam.Position);

            for (int i = 0; i < obj.Modelo.MeshNumber; i++)
            {
                BatchInformation[] bi = obj.Modelo.GetBatchInformation(i);

                for (int j = 0; j < bi.Count(); j++)
                {
                    alphagradative.Parameters["colorMap"].SetValue(obj.Modelo.getTexture(TextureType.DIFFUSE, i, j));
                    Matrix w1 = Matrix.Multiply(obj.WorldMatrix, bi[j].ModelLocalTransformation);
                    alphagradative.Parameters["wvp"].SetValue(w1 * cam.ViewProjection);
                    alphagradative.Parameters["w"].SetValue(w1);

                    render.RenderBatch(bi[j], alphagradative);
                }
            }
            render.PopBlendState();
            render.PopRasterizerState();
        }
Ejemplo n.º 7
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)
        {
            this._shader.Parameters["FarClip"].SetValue(cam.FarPlane);
            this._shader.Parameters["View"].SetValue(cam.View);
            this._shader.Parameters["Projection"].SetValue(cam.Projection);

            Matrix wld = obj.WorldMatrix;

            for (int i = 0; i < obj.Modelo.MeshNumber; i++)
            {
                BatchInformation[] bi = obj.Modelo.GetBatchInformation(i);
                for (int j = 0; j < bi.Count(); j++)
                {
                    Matrix w1 = Matrix.Multiply(bi[j].ModelLocalTransformation, wld);
                    this._shader.Parameters["World"].SetValue(w1);
                    this._shader.Parameters["VPIT"].SetValue(Matrix.Transpose(Matrix.Invert(w1 * cam.View)));
                    render.RenderBatch(bi[j], _shader);
                }
            }
        }
Ejemplo n.º 8
0
        public override void PosDrawPhase(GameTime gt, PloobsEngine.SceneControl.IObject obj, PloobsEngine.SceneControl.RenderHelper render, PloobsEngine.Cameras.ICamera cam, IList <PloobsEngine.Light.ILight> lights)
        {
            Matrix wld = obj.WorldMatrix;

            for (int i = 0; i < obj.Modelo.MeshNumber; i++)
            {
                BatchInformation[] bi = obj.Modelo.GetBatchInformation(i);
                for (int j = 0; j < bi.Count(); j++)
                {
                    this._shader2.Parameters["DiffuseMap"].SetValue(obj.Modelo.GetTextureInformation(i)[j].getTexture(TextureType.DIFFUSE));
                    Matrix w1 = Matrix.Multiply(bi[j].ModelLocalTransformation, wld);
                    this._shader2.Parameters["worldViewProjection"].SetValue(w1 * cam.ViewProjection);
                    this._shader2.Parameters["lightSamplerBuffer"].SetValue(render[PrincipalConstants.lightRt]);
                    this._shader2.Parameters["LightBufferPixelSize"].SetValue(new Vector2(0.5f / render[PrincipalConstants.lightRt].Width, 0.5f / render[PrincipalConstants.lightRt].Height));
                    render.RenderBatch(bi[j], _shader2);
                }
            }
        }
Ejemplo n.º 9
0
        public void PreDrawnPhase(Microsoft.Xna.Framework.GameTime gt, PloobsEngine.SceneControl.IWorld mundo, PloobsEngine.SceneControl.IObject obj, PloobsEngine.Cameras.ICamera cam, IList <PloobsEngine.Light.ILight> lights, PloobsEngine.SceneControl.RenderHelper render)
        {
            Vector3 pos = obj.PhysicObject.Position;

            render.PushRasterizerState(d);
            render.RenderSceneToTextureCube(RenderTargetCube,
                                            Color.AliceBlue, mundo, ref pos, gt, true, false, new List <PloobsEngine.SceneControl.IObject>()
            {
                obj
            });
            render.PopRasterizerState();
        }
Ejemplo n.º 10
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)
 {
     render.PushBlendState(laser_blends);
     effect.CurrentTechnique = effect_technique;
     world.SetValue(obj.WorldMatrix);
     wvp.SetValue(shader_matrices_combined[1] = obj.WorldMatrix * cam.View * cam.Projection);
     effect_color.SetValue(color.ToVector4());
     effect_center_to_viewer.SetValue(cam.Position);
     render.RenderBatch(obj.Modelo.GetBatchInformation(0)[0], effect);
     render.PopBlendState();
 }
Ejemplo n.º 11
0
 public void PosDrawnPhase(Microsoft.Xna.Framework.GameTime gt, PloobsEngine.SceneControl.IObject obj, PloobsEngine.Cameras.ICamera cam, IList <PloobsEngine.Light.ILight> lights, PloobsEngine.SceneControl.RenderHelper render)
 {
 }
Ejemplo n.º 12
0
 public void Drawn(Microsoft.Xna.Framework.GameTime gt, PloobsEngine.SceneControl.IObject obj, PloobsEngine.Cameras.ICamera cam, IList <PloobsEngine.Light.ILight> lights, PloobsEngine.SceneControl.RenderHelper render)
 {
     ForwardEnvironmentShader.iDraw(gt, obj, render, cam, lights);
 }
Ejemplo n.º 13
0
 protected override void UpdateObject(Microsoft.Xna.Framework.GameTime gt, PloobsEngine.Cameras.ICamera cam, IWorld world)
 {
     particleSystem.Emitter.PositionData.Position = this.PhysicObject.Position;
     particleSystem.Emitter.PositionData.Velocity = this.PhysicObject.Velocity;
     base.UpdateObject(gt, cam, world);
 }
Ejemplo n.º 14
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();
        }
Ejemplo n.º 15
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);
        }