public void Update(Microsoft.Xna.Framework.GameTime gametime, SceneControl.IObject obj, IWorld world) { ICamera cam = world.CameraManager.ActiveCamera; QuadTerrain.UpdateTerrain(cam.Position, cam.BoundingFrustum, LOD); isupdated = true; }
public override void DepthExtractor(GameTime gt, IObject obj, ref Matrix View, ref Matrix projection, RenderHelper render) { isupdated = false; Matrix x = Matrix.Invert(View); Vector3 camPos = new Vector3(x.M41, x.M42, x.M43); Matrix vp = View * projection; QuadTerrain.UpdateTerrain(camPos, new BoundingFrustum(vp), LOD); this.getDepth.Parameters["WVP"].SetValue(obj.PhysicObject.WorldMatrix * vp); QuadTerrain.DrawTerrain(getDepth, render.device); }
/// <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(Microsoft.Xna.Framework.GameTime gt, SceneControl.IObject obj, Cameras.ICamera cam, IList <Light.ILight> lights, SceneControl.RenderHelper render) { WorldMatrix.SetValue(obj.PhysicObject.WorldMatrix); ViewMatrix.SetValue(cam.View); ProjectionMatrix.SetValue(cam.Projection); TerrainShader.CurrentTechnique = TerrainShader.Techniques["Technique1"]; TerrainShader.CurrentTechnique.Passes[0].Apply(); QuadTerrain.DrawTerrain(TerrainShader, render.device); render.ResyncStates(); }
public DeferredTerrainMaterial(QuadTerrain QuadTerrain, float lod = 3.5f) { TerrainShader = QuadTerrain.factory.GetEffect("terrainShader", false, true); getDepth = QuadTerrain.factory.GetEffect("ShadowDepth", false, true); this.QuadTerrain = QuadTerrain; CanAppearOfReflectionRefraction = false; CanCreateShadow = false; IsVisible = true; LOD = lod; WorldMatrix = TerrainShader.Parameters["World"]; ViewMatrix = TerrainShader.Parameters["View"]; ProjectionMatrix = TerrainShader.Parameters["Projection"]; }
public ForwardTerrainMaterial(QuadTerrain QuadTerrain, float lod = 3.5f) { TerrainShader = QuadTerrain.factory.GetEffect("terrainShader", false, true); this.QuadTerrain = QuadTerrain; CanAppearOfReflectionRefraction = false; CanCreateShadow = false; IsVisible = true; LOD = lod; WorldMatrix = TerrainShader.Parameters["World"]; ViewMatrix = TerrainShader.Parameters["View"]; ProjectionMatrix = TerrainShader.Parameters["Projection"]; sunDir = TerrainShader.Parameters["sunlightVector"]; sunCol = TerrainShader.Parameters["lightColour"]; ambCol = TerrainShader.Parameters["ambientColour"]; }
public override void BasicDraw(GameTime gt, IObject obj, ref Matrix view, ref Matrix projection, IList <Light.ILight> lights, RenderHelper render, Plane?clippingPlane, bool useAlphaBlending = false) { isupdated = false; Matrix x = Matrix.Invert(view); Vector3 camPos = new Vector3(x.M41, x.M42, x.M43); QuadTerrain.UpdateTerrain(camPos, new BoundingFrustum(view * projection), LOD); WorldMatrix.SetValue(obj.PhysicObject.WorldMatrix); ViewMatrix.SetValue(view); ProjectionMatrix.SetValue(projection); TerrainShader.CurrentTechnique = TerrainShader.Techniques["Technique1"]; TerrainShader.CurrentTechnique.Passes[0].Apply(); QuadTerrain.DrawTerrain(TerrainShader, render.device); render.SetSamplerStates(ginfo.SamplerState, 8); }
/// <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(Microsoft.Xna.Framework.GameTime gt, SceneControl.IObject obj, Cameras.ICamera cam, IList <Light.ILight> lights, SceneControl.RenderHelper render) { if (isupdated == false) { QuadTerrain.UpdateTerrain(cam.Position, cam.BoundingFrustum, LOD); } WorldMatrix.SetValue(obj.PhysicObject.WorldMatrix); ViewMatrix.SetValue(cam.View); ProjectionMatrix.SetValue(cam.Projection); TerrainShader.CurrentTechnique = TerrainShader.Techniques["Technique2"]; TerrainShader.CurrentTechnique.Passes[0].Apply(); QuadTerrain.DrawTerrain(TerrainShader, render.device); render.ResyncStates(); isupdated = false; render.SetSamplerStates(ginfo.SamplerState, 6); }
public void CleanUp(Engine.GraphicFactory factory) { QuadTerrain.CleanUp(); }