/// <summary>
        ///		Default constructor.
        /// </summary>
        public SimpleRenderable()
        {
            materialName = "BaseWhite";
            material = MaterialManager.Instance.GetByName("BaseWhite");
            name = "SimpleRenderable" + nextAutoGenName++;

            material.Load();
        }
        /// <summary>
        ///		Default constructor.
        /// </summary>
        public SimpleRenderable()
        {
            materialName = "BaseWhite";
            material     = MaterialManager.Instance.GetByName("BaseWhite");
            name         = "SimpleRenderable" + nextAutoGenName++;

            material.Load();
        }
Exemplo n.º 3
0
 public RSQuadOperation(CompositorInstance instance, uint pass_id, Material mat)
 {
     this.mat      = mat;
     this.instance = instance;
     this.pass_id  = pass_id;
     mat.Load();
     instance.FireNotifyMaterialSetup(pass_id, mat);
     technique = mat.GetTechnique(0);
     Debug.Assert(technique != null);
 }
Exemplo n.º 4
0
		public RSQuadOperation( CompositorInstance instance, uint pass_id, Material mat )
		{
			Material = mat;
			Instance = instance;
			PassId = pass_id;
			QuadLeft = -1;
			QuadRight = 1;
			QuadTop = 1;
			QuadBottom = -1;

			mat.Load();
			instance.OnMaterialSetup( new CompositorInstanceMaterialEventArgs( PassId, Material ) );
			Technique = mat.GetTechnique( 0 );
			Debug.Assert( Technique != null, "Material has no supported technique." );
		}
 public RSQuadOperation(CompositorInstance instance, uint pass_id, Material mat)
 {
     this.mat = mat;
     this.instance = instance;
     this.pass_id = pass_id;
     mat.Load();
     instance.FireNotifyMaterialSetup(pass_id, mat);
     technique = mat.GetTechnique(0);
     Debug.Assert(technique != null);
 }
 public TreeBillboardRenderer()
 {
     billboardMaterial = MaterialManager.Instance.GetByName("SpeedTree/Billboard");
     billboardMaterial.Load();
     parentNode = TerrainManager.Instance.RootSceneNode;
 }
Exemplo n.º 7
0
			public void Build( bool stencilShadows, int logLevel )
			{
				if ( logLevel <= 1 )
					LogManager.Instance.Write( "MaterialBucket.Build: Building material {0}", materialName );
				material = (Material)MaterialManager.Instance[ materialName ];
				if ( null == material )
					throw new AxiomException( "Material '{0}' not found.", materialName );
				material.Load();
				// tell the geometry buckets to build
				foreach ( GeometryBucket gbucket in geometryBucketList )
					gbucket.Build( stencilShadows, logLevel );
			}
 public int Build(bool stencilShadows, bool logDetails)
 {
     int bucketCount = 0;
     if (logDetails)
         log.InfoFormat("MaterialBucket.Build: Building material {0}", materialName);
     material = MaterialManager.Instance.GetByName(materialName);
     if (material == null)
         log.ErrorFormat("MaterialBucket.Build: Could not find material {0}", materialName);
     else {
         material.Load();
         // tell the geometry buckets to build
         foreach (GeometryBucket gbucket in geometryBucketList) {
             gbucket.Build(stencilShadows, logDetails);
             bucketCount++;
         }
     }
     return bucketCount;
 }
Exemplo n.º 9
0
        void selectMenu_SelectedIndexChanged( object sender, System.EventArgs e )
        {
            SelectMenu menu = sender as SelectMenu;
            if ( menu != null )
            {
                currentMaterial = menu.SelectionIndex;
                activeMaterial = (Material)MaterialManager.Instance.GetByName( materialControlsContainer[ currentMaterial ].MaterialName );
                activeMaterial.Load();
                int numShaders = materialControlsContainer[ currentMaterial ].ShaderControlsCount;
                numPages = ( numShaders / ControlsPerPage ) + ( numShaders % ControlsPerPage == 0 ? 0 : 1 );
                ChangePage( 0 );

                if ( oceanSurfaceEnt != null )
                    oceanSurfaceEnt.MaterialName = materialControlsContainer[ currentMaterial ].MaterialName;
            }
        }
        public override void LoadWorldGeometry(string fileName)
        {
            TerrainOptions options = new TerrainOptions();

            DataSet optionData = new DataSet();
            optionData.ReadXml(fileName);
            DataTable table = optionData.Tables[0];
            DataRow row = table.Rows[0];

            string terrainFileName = "";
            string detailTexture = "";
            string worldTexture = "";

            if(table.Columns["Terrain"] != null)
            {
                terrainFileName = (string)row["Terrain"];
            }

            if(table.Columns["DetailTexture"] != null)
            {
                detailTexture = (string)row["DetailTexture"];
            }

            if(table.Columns["WorldTexture"] != null)
            {
                worldTexture = (string)row["WorldTexture"];
            }

            if(table.Columns["MaxMipMapLevel"] != null)
            {
                options.maxMipmap = Convert.ToInt32(row["MaxMipMapLevel"]);
            }

            if(table.Columns["DetailTile"] != null)
            {
                options.detailTile = Convert.ToInt32(row["DetailTile"]);
            }

            if(table.Columns["MaxPixelError"] != null)
            {
                options.maxPixelError = Convert.ToInt32(row["MaxPixelError"]);
            }

            if(table.Columns["TileSize"] != null)
            {
                options.size = Convert.ToInt32(row["TileSize"]);
            }

            if(table.Columns["ScaleX"] != null)
            {
                options.scalex = StringConverter.ParseFloat((string)row["ScaleX"]);
            }

            if(table.Columns["ScaleY"] != null)
            {
                options.scaley = StringConverter.ParseFloat((string)row["ScaleY"]);
            }

            if(table.Columns["ScaleZ"] != null)
            {
                options.scalez = StringConverter.ParseFloat((string)row["ScaleZ"]);
            }

            if(table.Columns["VertexNormals"] != null)
            {
                options.isLit = ((string)row["VertexNormals"]) == "yes" ? true : false;
            }

            scale = new Vector3(options.scalex, options.scaley, options.scalez);
            tileSize = options.size;

            // load the heightmap
            Image image = Image.FromFile(terrainFileName);

            // TODO: Check terrain size for 2^n + 1

            // get the data from the heightmap
            options.data = image.Data;

            options.worldSize = image.Width;

            float maxx = options.scalex * options.worldSize;
            float maxy = 255 * options.scaley;
            float maxz = options.scalez * options.worldSize;

            Resize(new AxisAlignedBox(Vector3.Zero, new Vector3(maxx, maxy, maxz)));

            terrainMaterial = CreateMaterial("Terrain");

            if(worldTexture != "")
            {
                terrainMaterial.GetTechnique(0).GetPass(0).CreateTextureUnitState(worldTexture, 0);
            }

            if(detailTexture != "")
            {
                terrainMaterial.GetTechnique(0).GetPass(0).CreateTextureUnitState(detailTexture, 1);
            }

            terrainMaterial.Lighting = options.isLit;
            terrainMaterial.Load();

            terrainRoot = (SceneNode)RootSceneNode.CreateChild("TerrainRoot");

            numTiles = (options.worldSize - 1) / (options.size - 1);

            tiles = new TerrainRenderable[numTiles, numTiles];

            int p = 0, q = 0;

            for(int j = 0; j < options.worldSize - 1; j += (options.size - 1))
            {
                p = 0;

                for(int i = 0; i < options.worldSize - 1; i += (options.size - 1))
                {
                    options.startx = i;
                    options.startz = j;

                    string name = string.Format("Tile[{0},{1}]", p, q);

                    SceneNode node = (SceneNode)terrainRoot.CreateChild(name);
                    TerrainRenderable tile = new TerrainRenderable();
                    tile.Name = name;

                    tile.SetMaterial(terrainMaterial);
                    tile.Init(options);

                    tiles[p,q] = tile;

                    node.AttachObject(tile);

                    p++;
                }

                q++;
            }

            int size1 = tiles.GetLength(0);
            int size2 = tiles.GetLength(1);

            for(int j = 0; j < size1; j++)
            {
                for(int i = 0; i < size2; i++)
                {
                    if(j != size1 - 1)
                    {
                        ((TerrainRenderable)tiles[i,j]).SetNeighbor(Neighbor.South, (TerrainRenderable)tiles[i, j + 1]);
                        ((TerrainRenderable)tiles[i,j + 1]).SetNeighbor(Neighbor.North, (TerrainRenderable)tiles[i, j]);
                    }

                    if(i != size2 - 1)
                    {
                        ((TerrainRenderable)tiles[i,j]).SetNeighbor(Neighbor.East, (TerrainRenderable)tiles[i + 1, j]);
                        ((TerrainRenderable)tiles[i + 1,j]).SetNeighbor(Neighbor.West, (TerrainRenderable)tiles[i, j]);
                    }
                }
            }

            #if NOT_USED
            if(false) // && options.isLit) //TODO: Fix
            {
                for(int j = 0; j < size1; j++)
                {
                    for(int i = 0; i < size2; i++)
                    {
                        ((TerrainRenderable)tiles[i,j]).CalculateNormals();
                    }
                }
            }
            #endif
            this.terrainOptions = options; //we need these later for GetHeightAt, so make them a member variable
        }