/// <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(); }
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 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; }
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; }
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 }