Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }