12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /*
- * @Description: 动态扩散墙的墙体效果(参考开源代码)(不同高度透明度不同)
- * @Version: 1.0
- * @Author: Julian
- * @Date: 2022-03-07 19:50:46
- * @LastEditors: Julian
- * @LastEditTime: 2022-03-08 13:34:04
- */
- class WallDiffuseMaterialProperty {
- constructor(options) {
- this._definitionChanged = new Cesium.Event();
- this._color = undefined;
- this.color = options.color;
- };
- get isConstant() {
- return false;
- }
- get definitionChanged() {
- return this._definitionChanged;
- }
- getType(time) {
- return Cesium.Material.WallDiffuseMaterialType;
- }
- getValue(time, result) {
- if (!Cesium.defined(result)) {
- result = {};
- }
- result.color = Cesium.Property.getValueOrDefault(this._color, time, Cesium.Color.RED, result.color);
- return result
- }
- equals(other) {
- return (this === other ||
- (other instanceof WallDiffuseMaterialProperty &&
- Cesium.Property.equals(this._color, other._color))
- )
- }
- }
- Object.defineProperties(WallDiffuseMaterialProperty.prototype, {
- color: Cesium.createPropertyDescriptor('color'),
- })
- Cesium.WallDiffuseMaterialProperty = WallDiffuseMaterialProperty;
- Cesium.Material.WallDiffuseMaterialProperty = 'WallDiffuseMaterialProperty';
- Cesium.Material.WallDiffuseMaterialType = 'WallDiffuseMaterialType';
- Cesium.Material.WallDiffuseMaterialSource =
- `
- uniform vec4 color;
- czm_material czm_getMaterial(czm_materialInput materialInput){
- czm_material material = czm_getDefaultMaterial(materialInput);
- vec2 st = materialInput.st;
- material.diffuse = color.rgb * 2.0;
- material.alpha = color.a * (1.0 - fract(st.t)) * 0.8;
- return material;
- }
-
- `
- Cesium.Material._materialCache.addMaterial(Cesium.Material.WallDiffuseMaterialType, {
- fabric: {
- type: Cesium.Material.WallDiffuseMaterialType,
- uniforms: {
- color: new Cesium.Color(1.0, 0.0, 0.0, 1.0),
- },
- source: Cesium.Material.WallDiffuseMaterialSource
- },
- translucent: function(material) {
- return true;
- }
- })
- export default WallDiffuseMaterialProperty;
|