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