public QuadNode(NodeType nodeType, int nodeSize, int nodeDepth, QuadNode parent, QuadTree parentTree, int positionIndex) { NodeType = nodeType; _nodeSize = nodeSize; _nodeDepth = nodeDepth; _positionIndex = positionIndex; _parent = parent; _parentTree = parentTree; //Add the 9 vertices AddVertices(); Bounds = new BoundingBox(_parentTree.Vertices[VertexTopLeft.Index].Position, _parentTree.Vertices[VertexBottomRight.Index].Position); if (nodeSize >= 4) AddChildren(); //Make call to UpdateNeighbors from the parent node. //This will update all neighbors recursively for the //children as well. This ensures all nodes are created //prior to updating neighbors. if (_nodeDepth == 1) { AddNeighbors(); VertexTopLeft.Activated = true; VertexTopRight.Activated = true; VertexCenter.Activated = true; VertexBottomLeft.Activated = true; VertexBottomRight.Activated = true; } }
public void DrawReflectionMap(GameCamera.FreeCamera camera, float time, LightsAndShadows.Shadow shadow, LightsAndShadows.Light light, QuadTree tree) { Plane reflectionPlane = CreatePlane(waterHeight - 0.5f, new Vector3(0, -1, 0), camera.reflectionViewMatrix, true); //device.ClipPlanes[0].Plane = reflectionPlane; //device.ClipPlanes[0].IsEnabled = true; //device.SetRenderTarget(0, reflectionRenderTarget); effect.Parameters["ClipPlane0"].SetValue(new Vector4(reflectionPlane.Normal, reflectionPlane.D)); //effect.Parameters["ClipPlane0"].SetValue(new Vector4(-reflectionPlane.Normal, -reflectionPlane.D)); effect.Parameters["Clipping"].SetValue(true); // Allows the geometry to be clipped for the purpose of creating a refraction map device.SetRenderTarget(reflectionRenderTarget); device.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.Black, 1.0f, 0); sky.DrawSkyDome(camera); // tree.Draw(camera, time, shadow, light); //device.ClipPlanes[0].IsEnabled = false; effect.Parameters["Clipping"].SetValue(false); //device.SetRenderTarget(0, null); device.SetRenderTarget(null); reflectionMap = reflectionRenderTarget; //System.IO.Stream ss = System.IO.File.OpenWrite("C:\Test\Reflection.jpg"); //reflectionRenderTarget.SaveAsJpeg(ss, 500, 500); //ss.Close(); }
public Control(Texture2D _texture, QuadTree quad) { this.texture = _texture; this.heights = quad.Vertices.heightData; double a = Math.Sqrt(heights.Length); this.width = (int)a; this.length = (int)a; }
public void DrawReflectionMap( FreeCamera camera,QuadTree tree) { Plane reflectionPlane = CreatePlane(waterHeight - 0.5f , new Vector3(0, 1, 0), camera.reflectionViewMatrix, true); effect.Parameters["ClipPlane0"].SetValue(new Vector4(reflectionPlane.Normal, reflectionPlane.D)); effect.Parameters["Clipping"].SetValue(true); // Allows the geometry to be clipped for the purpose of creating a refraction map device.SetRenderTarget(reflectionRenderTarget); device.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.Black, 1.0f, 0); sky.DrawSkyDome(camera); // tree.Draw(camera, 0); effect.Parameters["Clipping"].SetValue(false); device.SetRenderTarget(null); reflectionMap = reflectionRenderTarget; }
public void DrawRefractionMap(GameCamera.FreeCamera camera, float time, LightsAndShadows.Shadow shadow, LightsAndShadows.Light light,QuadTree tree) { waterPlane = CreatePlane(waterHeight + 1.5f, new Vector3(0, -1, 0), camera.View, false); //refractionPlane = CreatePlane(30.0045F, new Vector3(0, -1, 0), viewMatrix, false); effect.Parameters["ClipPlane0"].SetValue(new Vector4(waterPlane.Normal, waterPlane.D)); effect.Parameters["Clipping"].SetValue(true); // Allows the geometry to be clipped for the purpose of creating a refraction map device.SetRenderTarget(refractionRenderTarget); device.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.Black, 1.0f, 0); // tree.Draw(camera, time, shadow, light); device.SetRenderTarget(null); effect.Parameters["Clipping"].SetValue(false); // Make sure you turn it back off so the whole scene doesnt keep rendering as clipped refractionMap = refractionRenderTarget; }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { PresentationParameters pp = graphics.GraphicsDevice.PresentationParameters; pp.DepthStencilFormat = DepthFormat.Depth24Stencil8; pp.BackBufferHeight = 600; pp.BackBufferWidth = 800; device = GraphicsDevice; spriteBatch = new SpriteBatch(GraphicsDevice); _spr_font = Content.Load<SpriteFont>("Fonts/FPS");// you have on your project List<Texture2D> texture = new List<Texture2D>(); texture.Add(Content.Load<Texture2D>("Textures/Ground/grass")); texture.Add(Content.Load<Texture2D>("Textures/Ground/sand")); texture.Add(Content.Load<Texture2D>("Textures/Ground/rock")); texture.Add(Content.Load<Texture2D>("Textures/Ground/snow")); texture.Add(Content.Load<Texture2D>("HeighMaps/terrain")); texture.Add(Content.Load<Texture2D>("Textures/Bilboard/tree")); texture.Add(Content.Load<Texture2D>("HeighMaps/treeMap")); texture.Add(Content.Load<Texture2D>("HeighMaps/colorHeigh")); texture.Add(Content.Load<Texture2D>("Textures/lisc")); texture.Add(Content.Load<Texture2D>("Textures/Ground/grass")); texture.Add(Content.Load<Texture2D>("Textures/muszle")); texture.Add(Content.Load<Texture2D>("Textures/select2")); camera = new FreeCamera( new Vector3(texture[4].Width * 1 / 2, texture[4].Width * 1 / 3, texture[4].Width * 1 / 2), MathHelper.ToRadians(0), // Turned around 153 degrees MathHelper.ToRadians(-45), // Pitched up 13 degrees GraphicsDevice); quadTree = new QuadTree(Vector3.Zero, texture, device, 3, Content, (FreeCamera)camera); quadTree.Cull = true; quadTree.shadow.RenderTarget = new RenderTarget2D(device, pp.BackBufferWidth, pp.BackBufferHeight, true, device.DisplayMode.Format, DepthFormat.Depth24Stencil8); water = new Water(device, Content, texture[4].Width, 3); lastMouseState = Mouse.GetState(); BoundingSphereRenderer.InitializeGraphics(device, 33); CreatorController.content = Content; CreatorController.device = device; CreatorController.models.AddRange(models); // CreatorController.models.Add(m); }
public void DrawRefractionMap(FreeCamera camera,QuadTree tree) { Plane refractionPlane = CreatePlane(waterHeight + 1.5f, new Vector3(0, -1, 0), camera.View, false); effect.Parameters["ClipPlane0"].SetValue(new Vector4(refractionPlane.Normal, refractionPlane.D)); effect.Parameters["Clipping"].SetValue(true); // Allows the geometry to be clipped for the purpose of creating a refraction map device.SetRenderTarget(refractionRenderTarget); device.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.Black, 1.0f, 0); sky.DrawSkyDome(camera); // tree.Draw(camera, 0); device.SetRenderTarget(null); effect.Parameters["Clipping"].SetValue(false); // Make sure you turn it back off so the whole scene doesnt keep rendering as clipped refractionMap = refractionRenderTarget; }