public override void Draw(IRenderer r, Node n) { Material m = new Material(); m.wire = Wireframe; r.SetMaterial(m); Shader s = Root.Instance.ResourceManager.LoadShader("terrain.supcom.shader"); r.UseShader(s); r.SetUniform(s.GetUniformLocation("LowerAlbedo"), new int[] { 0 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(MapFile.Layers[0].PathTexture).Id, 0); r.SetUniform(s.GetUniformLocation("Albedo0"), new int[] { 1 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(MapFile.Layers[1].PathTexture).Id, 1); r.SetUniform(s.GetUniformLocation("Albedo1"), new int[] { 2 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(MapFile.Layers[2].PathTexture).Id, 2); r.SetUniform(s.GetUniformLocation("Albedo2"), new int[] { 3 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(MapFile.Layers[3].PathTexture).Id, 3); r.SetUniform(s.GetUniformLocation("Albedo3"), new int[] { 4 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(MapFile.Layers[4].PathTexture).Id, 4); r.SetUniform(s.GetUniformLocation("UpperAlbedo"), new int[] { 5 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(MapFile.Layers[5].PathTexture).Id, 5); r.SetUniform(s.GetUniformLocation("Mask"), new int[] { 6 }); r.BindTexture(Mask.Id, 6); r.SetUniform(s.GetUniformLocation("NormalMap"), new int[] { 7 }); r.BindTexture(Normal.Id, 7); r.SetUniform(s.GetUniformLocation("TerrainScale"), new float[] { 5.0f }); r.SetUniform(s.GetUniformLocation("LowerAlbedoTile"), new float[] { MapFile.Layers[0].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo0Tile"), new float[] { MapFile.Layers[1].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo1Tile"), new float[] { MapFile.Layers[2].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo2Tile"), new float[] { MapFile.Layers[3].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo3Tile"), new float[] { MapFile.Layers[4].ScaleTexture }); r.SetUniform(s.GetUniformLocation("UpperAlbedoTile"), new float[] { MapFile.Layers[5].ScaleTexture }); base.Draw(r, n); }
public void Draw(IRenderer r, Node n) { if (Age > LifeTime) { return; } r.SetMode(RenderMode.Draw3D); r.SetMaterial(Mat); r.BindTexture(Mat.diffusemap.Id); r.UseShader(Shader); r.SetUniform(Shader.GetUniformLocation("Alpha"), new float[] { CurrentAlpha }); float s = CurrentSize / 2; Matrix4 m = BaseMatrix * Matrix4Extensions.FromScale(s, s, s); r.PushMatrix(); r.MultMatrix(m); r.Draw(Vertices, PrimitiveType.QUADS, 0, 4, null); r.PopMatrix(); }
public void Draw(IRenderer r, Node n) { if (Age > LifeTime) return; r.SetMode(RenderMode.Draw3D); r.SetMaterial(Mat); r.BindTexture(Mat.diffusemap.Id); r.UseShader(Shader); r.SetUniform(Shader.GetUniformLocation("Alpha"), new float[] { CurrentAlpha }); float s = CurrentSize / 2; Matrix4 m = BaseMatrix * Matrix4Extensions.FromScale(s, s, s); r.PushMatrix(); r.MultMatrix(m); r.Draw(Vertices, PrimitiveType.QUADS, 0, 4, null); r.PopMatrix(); }
public void Draw(IRenderer r, Node n) { //r.SetMode(RenderMode.Draw3D); //r.SetMode(RenderMode.Draw3DPointSprite); r.UseShader(Root.Instance.ResourceManager.LoadShader("terrain.shader")); Material.NoLighting = false; r.SetMaterial(Material); Material.Apply(Root.Instance.ResourceManager.LoadShader("terrain.shader"), r); //r.BindTexture(Color,0); //r.BindTexture(Detail,1); if (scamap != null) { Shader s = Root.Instance.ResourceManager.LoadShader("terrain.supcom.shader"); r.UseShader(s); r.SetUniform(s.GetUniformLocation("LowerAlbedo"), new int[] { 0 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[0].PathTexture).Id, 0); r.SetUniform(s.GetUniformLocation("Albedo0"), new int[] { 1 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[1].PathTexture).Id, 1); r.SetUniform(s.GetUniformLocation("Albedo1"), new int[] { 2 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[2].PathTexture).Id, 2); r.SetUniform(s.GetUniformLocation("Albedo2"), new int[] { 3 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[3].PathTexture).Id, 3); r.SetUniform(s.GetUniformLocation("Albedo3"), new int[] { 4 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[4].PathTexture).Id, 4); r.SetUniform(s.GetUniformLocation("UpperAlbedo"), new int[] { 5 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[5].PathTexture).Id, 5); r.SetUniform(s.GetUniformLocation("Mask"), new int[] { 6 }); r.BindTexture(Material.diffusemap.Id, 6); r.SetUniform(s.GetUniformLocation("NormalMap"), new int[] { 7 }); r.BindTexture(Material.DetailMap.Id, 7); r.SetUniform(s.GetUniformLocation("TerrainScale"), new float[] { 10.0f}); r.SetUniform(s.GetUniformLocation("LowerAlbedoTile"), new float[] { scamap.Layers[0].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo0Tile"), new float[] { scamap.Layers[1].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo1Tile"), new float[] { scamap.Layers[2].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo2Tile"), new float[] { scamap.Layers[3].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo3Tile"), new float[] { scamap.Layers[4].ScaleTexture }); r.SetUniform(s.GetUniformLocation("UpperAlbedoTile"), new float[] { scamap.Layers[5].ScaleTexture }); } else { r.UseShader(Root.Instance.ResourceManager.LoadShader("terrain.shader")); r.SetMaterial(Material); Material.Apply(Root.Instance.ResourceManager.LoadShader("terrain.shader"), r); } /*for(int x=0;x<PatchCount;++x) { for(int y=0;y<PatchCount;++y) { Patches[y][x].Visible=false; } }*/ ArrayList list=new ArrayList(); Tree.GetVisibleLeafs(Root.Instance.Scene.camera,list); int frame=Root.Instance.frame; foreach(QuadTree q in list) { Patches[q.Position.Y][q.Position.X].VisibleFrame=frame; } int x,y; //for(int x=0;x<PatchCount;++x) { //for(int y=0;y<PatchCount;++y) foreach(QuadTree q in list) { x=q.Position.X; y=q.Position.Y; //if(Patches[y][x].Visible) Patches[y][x].Level=CalcLevel(x,y,Root.Instance.Scene.camera); } } //for(int x=0;x<PatchCount;++x) { //for(int y=0;y<PatchCount;++y) { //if(Patches[y][x].Visible) foreach(QuadTree q in list) { x=q.Position.X; y=q.Position.Y; Patches[y][x].FixCracks(); Patches[y][x].Draw(r,n); } } } /*for(int x=0;x<PatchCount;++x) { for(int y=0;y<PatchCount;++y) { if(Patches[y][x].Visible) } }*/ //r.SetMode(RenderMode.Draw2D); //DrawInfo(r); }
public void Draw(IRenderer r, Node n) { //r.SetMode(RenderMode.Draw3D); //r.SetMode(RenderMode.Draw3DPointSprite); r.UseShader(Root.Instance.ResourceManager.LoadShader("terrain.shader")); Material.NoLighting = false; r.SetMaterial(Material); Material.Apply(Root.Instance.ResourceManager.LoadShader("terrain.shader"), r); //r.BindTexture(Color,0); //r.BindTexture(Detail,1); if (scamap != null) { Shader s = Root.Instance.ResourceManager.LoadShader("terrain.supcom.shader"); r.UseShader(s); r.SetUniform(s.GetUniformLocation("LowerAlbedo"), new int[] { 0 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[0].PathTexture).Id, 0); r.SetUniform(s.GetUniformLocation("Albedo0"), new int[] { 1 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[1].PathTexture).Id, 1); r.SetUniform(s.GetUniformLocation("Albedo1"), new int[] { 2 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[2].PathTexture).Id, 2); r.SetUniform(s.GetUniformLocation("Albedo2"), new int[] { 3 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[3].PathTexture).Id, 3); r.SetUniform(s.GetUniformLocation("Albedo3"), new int[] { 4 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[4].PathTexture).Id, 4); r.SetUniform(s.GetUniformLocation("UpperAlbedo"), new int[] { 5 }); r.BindTexture(Root.Instance.ResourceManager.LoadTexture(scamap.Layers[5].PathTexture).Id, 5); r.SetUniform(s.GetUniformLocation("Mask"), new int[] { 6 }); r.BindTexture(Material.diffusemap.Id, 6); r.SetUniform(s.GetUniformLocation("NormalMap"), new int[] { 7 }); r.BindTexture(Material.DetailMap.Id, 7); r.SetUniform(s.GetUniformLocation("TerrainScale"), new float[] { 10.0f }); r.SetUniform(s.GetUniformLocation("LowerAlbedoTile"), new float[] { scamap.Layers[0].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo0Tile"), new float[] { scamap.Layers[1].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo1Tile"), new float[] { scamap.Layers[2].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo2Tile"), new float[] { scamap.Layers[3].ScaleTexture }); r.SetUniform(s.GetUniformLocation("Albedo3Tile"), new float[] { scamap.Layers[4].ScaleTexture }); r.SetUniform(s.GetUniformLocation("UpperAlbedoTile"), new float[] { scamap.Layers[5].ScaleTexture }); } else { r.UseShader(Root.Instance.ResourceManager.LoadShader("terrain.shader")); r.SetMaterial(Material); Material.Apply(Root.Instance.ResourceManager.LoadShader("terrain.shader"), r); } /*for(int x=0;x<PatchCount;++x) * { * for(int y=0;y<PatchCount;++y) * { * Patches[y][x].Visible=false; * } * }*/ ArrayList list = new ArrayList(); Tree.GetVisibleLeafs(Root.Instance.Scene.camera, list); int frame = Root.Instance.frame; foreach (QuadTree q in list) { Patches[q.Position.Y][q.Position.X].VisibleFrame = frame; } int x, y; //for(int x=0;x<PatchCount;++x) { //for(int y=0;y<PatchCount;++y) foreach (QuadTree q in list) { x = q.Position.X; y = q.Position.Y; //if(Patches[y][x].Visible) Patches[y][x].Level = CalcLevel(x, y, Root.Instance.Scene.camera); } } //for(int x=0;x<PatchCount;++x) { //for(int y=0;y<PatchCount;++y) { //if(Patches[y][x].Visible) foreach (QuadTree q in list) { x = q.Position.X; y = q.Position.Y; Patches[y][x].FixCracks(); Patches[y][x].Draw(r, n); } } } /*for(int x=0;x<PatchCount;++x) * { * for(int y=0;y<PatchCount;++y) * { * if(Patches[y][x].Visible) * } * }*/ //r.SetMode(RenderMode.Draw2D); //DrawInfo(r); }