# cesium-materials-pack
**Repository Path**: mitengda/cesium-materials-pack
## Basic Information
- **Project Name**: cesium-materials-pack
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-08-19
- **Last Updated**: 2024-05-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
**Cesium Material Pack**: A plugin with procedurally-shaded materials such as bricks, wood, and noise patterns.
Check out the [demo](http://analyticalgraphicsinc.github.io/cesium-materials-pack/Example/).
| Name | Screenshot | Description |
|:-----|:-----------|:------------|
| `Asphalt` |
| Asphalt generated with a combination of simplex and cellular noise. |
| `Blob` |
| Blob generated with cellular noise. Resembles water, but clumped in a cell pattern. |
| `Brick` |
| Brick generated with a combination of a simple brick pattern and simplex noise for roughness. |
| `Cement` |
| Cement generated with simplex noise. |
| `Erosion` |
| Animated erosion. |
| `Facet` |
| Facet generated with cellular noise. |
| `Fresnel` |
| A view-dependent combination of reflection and refraction. Similar to water, when the viewer is looking straight down, the material refracts light; as the viewer looks more edge on, the material refracts less and reflects more. |
| `Grass` |
| Grass generated with simplex noise. |
| `Reflection` |
| Cube map reflection for mirror-like surfaces that reflect light, e.g., paint on a car. |
| `Refraction` |
| Cube map refraction for translucent surfaces that refract light, e.g., glass. |
| `TieDye` |
| Tie-dye generated with simplex noise. |
| `Wood` |
| Wood generated with simplex noise. |
**Cesium version**: Tested against [1.0](http://cesiumjs.org/downloads.html). Most likely works with older and newer versions. Post a message to the [Cesium forum](http://cesiumjs.org/forum.html) if you have compatibility issues.
**License**: Apache 2.0. Free for commercial and non-commercial use. See [LICENSE.md](LICENSE.md).
**Usage**
Prebuilt minified and unminified versions of the plugin are in the [Build](Build/) directory. Include the `MaterialPack.js` file using a `script` tag after the `Cesium.js` `script` tag.
```html
```
Uniforms are used to change material properties. For example:
```javascript
rectangle.material = new Cesium.Material({
fabric : {
type : 'Wood',
uniforms : {
lightWoodColor : new Cesium.Color(0.7, 0.4, 0.1, 1.0),
darkWoodColor : new Cesium.Color(0.3, 0.1, 0.0, 1.0),
ringFrequency : 4.0,
noiseScale : new Cesium.Cartesian2(0.4, 0.8),
grainFrequency : 18.0
}
}
});
```
Material uniforms:
* `Asphalt`
* `asphaltColor`: rgba color object for the asphalt's color.
* `bumpSize`: Number for the size of the asphalt's bumps.
* `roughness`: Number that controls how rough the asphalt looks.
* `Blob`
* `lightColor`: rgba color object for the light color.
* `darkColor`: rgba color object for the dark color.
* `frequency`: Number that controls the frequency of the pattern.
* `Brick`
* `brickColor`: rgba color object for the brick color.
* `mortarColor`: rgba color object for the mortar color.
* `brickSize`: Number between 0.0 and 1.0 where 0.0 is many small bricks and 1.0 is one large brick.
* `brickPct`: Number for the ratio of brick to mortar where 0.0 is all mortar and 1.0 is all brick.
* `brickRoughness`: Number between 0.0 and 1.0 representing how rough the brick looks.
* `mortarRoughness`: Number between 0.0 and 1.0 representing how rough the mortar looks.
* `Cement`
* `cementColor`: rgba color object for the cement's color.
* `grainScale`: Number for the size of rock grains in the cement.
* `roughness`: Number that controls how rough the cement looks.
* `Erosion`
* `color`: diffuse color and alpha.
* `time`: Time of erosion. 1.0 is no erosion; 0.0 is fully eroded.
* `Facet`
* `lightColor`: rgba color object for the light color.
* `darkColor`: rgba color object for the dark color.
* `frequency`: Number that controls the frequency of the pattern.
* `Fresnel`
* `reflection`: Reflection Material.
* `refraction`: Refraction Material.
* `Grass`
* `grassColor`: rgba color object for the grass' color.
* `dirtColor`: rgba color object for the dirt's color.
* `patchiness`: Number that controls the size of the color patches in the grass.
* `Reflection`
* `cubeMap`: Object with positiveX, negativeX, positiveY, negativeY, positiveZ, and negativeZ image paths.
* `channels`: Three character string containing any combination of r, g, b, and a for selecting the desired image channels.
* `Refraction`
* `cubeMap`: Object with positiveX, negativeX, positiveY, negativeY, positiveZ, and negativeZ image paths.
* `channels`: Three character string containing any combination of r, g, b, and a for selecting the desired image channels.
* `indexOfRefractionRatio`: Number representing the refraction strength where 1.0 is the lowest and 0.0 is the highest.
* `TieDye`
* `lightColor`: rgba color object for the light color.
* `darkColor`: rgba color object for the dark color.
* `frequency`: Number that controls the frequency of the pattern.
* `Wood`
* `lightWoodColor`: rgba color object for the wood's base color.
* `darkWoodColor`: rgba color object for the color of rings in the wood.
* `ringFrequency`: Number for the frequency of rings in the wood.
* `noiseScale`: Object with x and y values specifying the noisiness of the ring patterns in both directions.
* `grainFrequency`: Number for the frequency of grains in the wood.
For more on how to use Cesium materials, see [code for the example](Example/index.html) and the [Fabric tutorial](https://github.com/AnalyticalGraphicsInc/cesium/wiki/Fabric). To run the example locally, run `npm install`, then run `node server.js` and navigate to [http://localhost:8080](http://localhost:8080) and select the example application to run.
**Build**
To build, run `npm install`, then run `node build.js`.
**Contributions**
Contributions welcome. We use the [same CLA as Cesium](https://github.com/AnalyticalGraphicsInc/cesium/blob/master/CONTRIBUTING.md). Please email yours before opening a pull request.