fix(src): merge master

This commit is contained in:
thinkinggis 2019-03-25 20:10:49 +08:00
commit 9015a3f513
25 changed files with 209 additions and 72 deletions

View File

@ -46,17 +46,14 @@ window.scene = scene;
scene.on('loaded', () => { scene.on('loaded', () => {
$.get('https://gw.alipayobjects.com/os/rmsportal/epnZEheZeDgsiSjSPcCv.json', data => { $.get('https://gw.alipayobjects.com/os/rmsportal/epnZEheZeDgsiSjSPcCv.json', data => {
const circleLayer = scene.PointLayer({ const circleLayer = scene.PointLayer({
zIndex: 2 zIndex: 2,
}) })
.source(data,{ .source(data)
scale:{ .shape('circle')
min:0, .size('value', [ 2, 30]) // default 1
max:1000, .scale('value', {
type:'linear' type:'log',
}
}) })
.shape('2d:circle')
.size('value', [ 2, 80]) // default 1
//.size('value', [ 10, 300]) // default 1 //.size('value', [ 10, 300]) // default 1
.active(true) .active(true)
.filter('value', field_8 => { .filter('value', field_8 => {
@ -69,7 +66,9 @@ scene.on('loaded', () => {
opacity: 1. opacity: 1.
}) })
.render(); .render();
console.log(circleLayer);
var a = circleLayer.getLegendCfg('type','color');
console.log(a);
circleLayer.on('click',(e)=>{ circleLayer.on('click',(e)=>{
console.log(e); console.log(e);
}) })

View File

@ -1,6 +1,6 @@
{ {
"name": "@antv/l7", "name": "@antv/l7",
"version": "1.1.3", "version": "1.1.6",
"description": "Large-scale WebGL-powered Geospatial Data Visualization", "description": "Large-scale WebGL-powered Geospatial Data Visualization",
"main": "build/l7.js", "main": "build/l7.js",
"browser": "build/l7.js", "browser": "build/l7.js",

View File

@ -84,6 +84,9 @@ const ColorUtil = {
const rgba = this.toRGB(str); const rgba = this.toRGB(str);
return rgba.map(v => v / 255); return rgba.map(v => v / 255);
}, },
colorArray2RGBA(arr) {
return `rgba(${arr[0] * 255},${arr[1] * 255},${arr[2] * 255},${arr[3]})`;
},
color2RGBA(str) { color2RGBA(str) {
return this.color2Arr(str); return this.color2Arr(str);
}, },

View File

@ -42,10 +42,11 @@ class Size extends Base {
_scaling(scale, v) { _scaling(scale, v) {
if (scale.type === 'identity') { if (scale.type === 'identity') {
return v; return v;
} else if (scale.type === 'linear') {
const percent = scale.scale(v);
return this.getLinearValue(percent);
} }
const percent = scale.scale(v);
return this.getLinearValue(percent);
// else if (scale.type === 'linear') {
} }
getLinearValue(percent) { getLinearValue(percent) {

View File

@ -31,8 +31,6 @@ RenderPass.prototype = {
render: function ( renderer, writeBuffer, readBuffer, delta ) { render: function ( renderer, writeBuffer, readBuffer, delta ) {
this.scene.overrideMaterial = this.overrideMaterial; this.scene.overrideMaterial = this.overrideMaterial;
const oldAutoClear = renderer.autoClear;
// renderer.autoClear = false;
if ( this.clearColor ) { if ( this.clearColor ) {
this.oldClearColor.copy( renderer.getClearColor() ); this.oldClearColor.copy( renderer.getClearColor() );
@ -43,7 +41,7 @@ RenderPass.prototype = {
} }
renderer.render( this.scene, this.camera, readBuffer, this.clear ); renderer.render( this.scene, this.camera, readBuffer, this.clear );
// if(this.clear)renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );
if ( this.clearColor ) { if ( this.clearColor ) {
@ -52,7 +50,6 @@ RenderPass.prototype = {
} }
this.scene.overrideMaterial = null; this.scene.overrideMaterial = null;
renderer.autoClear = oldAutoClear;
} }

View File

@ -0,0 +1,74 @@
// jscs:disable
/* eslint-disable */
import * as THREE from '../three';
/**
* @author alteredq / http://alteredqualia.com/
*/
var ShaderPass = function( shader, textureID ) {
this.textureID = ( textureID !== undefined ) ? textureID : "tDiffuse";
if ( shader instanceof THREE.ShaderMaterial ) {
this.uniforms = shader.uniforms;
this.material = shader;
}
else if ( shader ) {
this.uniforms = THREE.UniformsUtils.clone( shader.uniforms );
this.material = new THREE.ShaderMaterial( {
defines: shader.defines || {},
uniforms: this.uniforms,
vertexShader: shader.vertexShader,
fragmentShader: shader.fragmentShader
} );
}
this.renderToScreen = false;
this.enabled = true;
this.needsSwap = true;
this.clear = true;
this.camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
this.scene = new THREE.Scene();
this.quad = new THREE.Mesh( new THREE.PlaneBufferGeometry( 2, 2 ), null );
this.scene.add( this.quad );
};
ShaderPass.prototype = {
render: function( renderer, writeBuffer, readBuffer, delta ) {
if ( this.uniforms[ this.textureID ] ) {
this.uniforms[ this.textureID ].value = readBuffer.texture;
}
renderer.autoClear = false;
this.quad.material = this.material;
if ( this.renderToScreen ) {
renderer.render( this.scene, this.camera );
} else {
renderer.render( this.scene, this.camera, writeBuffer, this.clear );
}
renderer.autoClear = true;
}
};
export default ShaderPass;

View File

@ -5,6 +5,7 @@
import Base from './base'; import Base from './base';
import * as THREE from './three'; import * as THREE from './three';
import ColorUtil from '../attr/color-util'; import ColorUtil from '../attr/color-util';
import Controller from './controller/index';
import source from './source'; import source from './source';
import pickingFragmentShader from '../core/engine/picking/picking_frag.glsl'; import pickingFragmentShader from '../core/engine/picking/picking_frag.glsl';
// import PickingMaterial from '../core/engine/picking/pickingMaterial'; // import PickingMaterial from '../core/engine/picking/pickingMaterial';
@ -31,8 +32,10 @@ export default class Layer extends Base {
minZoom: 0, minZoom: 0,
maxZoom: 22, maxZoom: 22,
rotation: 0, rotation: 0,
option: {},
attrOptions: { attrOptions: {
}, },
scaleOptions: {},
scales: {}, scales: {},
attrs: {}, attrs: {},
// 样式配置项 // 样式配置项
@ -152,6 +155,16 @@ export default class Layer extends Base {
this._createAttrOption('size', field, values, Global.size); this._createAttrOption('size', field, values, Global.size);
return this; return this;
} }
scale(field, cfg) {
const options = this.get('scaleOptions');
const scaleDefs = options;
if (Util.isObject(field)) {
Util.mix(scaleDefs, field);
} else {
scaleDefs[field] = cfg;
}
return this;
}
shape(field, values) { shape(field, values) {
if (field.split(':').length === 2) { if (field.split(':').length === 2) {
this.shapeType = field.split(':')[0]; this.shapeType = field.split(':')[0];
@ -207,11 +220,13 @@ export default class Layer extends Base {
this.set('styleOptions', styleOptions); this.set('styleOptions', styleOptions);
return this; return this;
} }
filter(field, values) { filter(field, values) {
this._needUpdateFilter = true; this._needUpdateFilter = true;
this._createAttrOption('filter', field, values, true); this._createAttrOption('filter', field, values, true);
return this; return this;
} }
animate(field, cfg) { animate(field, cfg) {
let animateOptions = this.get('animateOptions'); let animateOptions = this.get('animateOptions');
if (!animateOptions) { if (!animateOptions) {
@ -247,10 +262,11 @@ export default class Layer extends Base {
return this; return this;
} }
_createScale(field) { _createScale(field) {
// TODO scale更新
const scales = this.get('scales'); const scales = this.get('scales');
let scale = scales[field]; let scale = scales[field];
if (!scale) { if (!scale) {
scale = this.layerSource.createScale(field); scale = this.createScale(field);
scales[field] = scale; scales[field] = scale;
} }
return scale; return scale;
@ -277,8 +293,30 @@ export default class Layer extends Base {
} }
this._setAttrOptions(attrName, attrCfg); this._setAttrOptions(attrName, attrCfg);
} }
_initControllers() {
const scales = this.get('scaleOptions');
const scaleController = new Controller.Scale({
defs: {
...scales
}
});
this.set('scaleController', scaleController);
}
createScale(field) {
const data = this.layerSource.data.dataArray;
const scales = this.get('scales');
let scale = scales[field];
const scaleController = this.get('scaleController');
if (!scale) {
scale = scaleController.createScale(field, data);
scales[field] = scale;
}
return scale;
}
// 初始化图层 // 初始化图层
init() { init() {
this._initControllers();
this._initAttrs(); this._initAttrs();
this._scaleByZoom(); this._scaleByZoom();
this._mapping(); this._mapping();
@ -295,11 +333,16 @@ export default class Layer extends Base {
this.off('mouseleave', resetHander); this.off('mouseleave', resetHander);
} }
} }
setActive(id, color) { setActive(id, color) {
this._activeIds = id; this._activeIds = id;
this.layerMesh.material.setUniformsValue('u_activeId', id); this.layerMesh.material.setUniformsValue('u_activeId', id);
this.layerMesh.material.setUniformsValue('u_activeColor', ColorUtil.color2RGBA(color)); if (!Array.isArray(color)) {
color = ColorUtil.color2RGBA(color);
}
this.layerMesh.material.setUniformsValue('u_activeColor', color);
} }
_addActiveFeature(e) { _addActiveFeature(e) {
const { featureId } = e; const { featureId } = e;
this._activeIds = featureId; this._activeIds = featureId;
@ -315,6 +358,7 @@ export default class Layer extends Base {
} }
} }
} }
_updateAttr(type) { _updateAttr(type) {
const self = this; const self = this;
const attrs = this.get('attrs'); const attrs = this.get('attrs');
@ -354,6 +398,7 @@ export default class Layer extends Base {
} }
this.emit('sizeUpdated', this.zoomSizeCache[zoom]); this.emit('sizeUpdated', this.zoomSizeCache[zoom]);
} }
_mapping() { _mapping() {
const self = this; const self = this;
const attrs = self.get('attrs'); const attrs = self.get('attrs');
@ -388,6 +433,7 @@ export default class Layer extends Base {
} }
this.layerData = mappedData; this.layerData = mappedData;
} }
// 更新地图映射 // 更新地图映射
_updateMaping() { _updateMaping() {
const self = this; const self = this;
@ -416,6 +462,7 @@ export default class Layer extends Base {
} }
} }
} }
// 获取属性映射的值 // 获取属性映射的值
_getAttrValues(attr, record) { _getAttrValues(attr, record) {
const scales = attr.scales; const scales = attr.scales;
@ -505,9 +552,11 @@ export default class Layer extends Base {
} }
const feature = this.layerSource.getSelectFeature(featureId); const feature = this.layerSource.getSelectFeature(featureId);
const lnglat = this.scene.containerToLngLat(point2d); const lnglat = this.scene.containerToLngLat(point2d);
const style = this.layerData[featureId - 1];
const target = { const target = {
featureId, featureId,
feature, feature,
style,
pixel: point2d, pixel: point2d,
type, type,
lnglat: { lng: lnglat.lng, lat: lnglat.lat } lnglat: { lng: lnglat.lng, lat: lnglat.lat }
@ -648,6 +697,34 @@ export default class Layer extends Base {
this.scene.off('zoomchange', this._zoomchangeHander); this.scene.off('zoomchange', this._zoomchangeHander);
this.destroyed = true; this.destroyed = true;
} }
/**
* 获取图例配置项
* @param {*} field 字段
* @param {*} type 图例类型 color, size
* @return {*} 图例配置项
*/
getLegendCfg(field, type = 'color') {
// todo heatmap
if (this.type === 'heatmap' && this.shapeType === 'heatmap') {
return this.get('styleOptions').rampColors;
}
const scales = this.get('scales');
const scale = scales[field];
const colorAttrs = this.get('attrs')[type];
const lengendCfg = {};
if (scale) {
const ticks = scale.ticks;
lengendCfg.value = ticks;
lengendCfg.type = scale.type;
const values = ticks.map(value => {
const v = this._getAttrValues(colorAttrs, { [field]: value });
return type === 'color' ? ColorUtil.colorArray2RGBA(v) : v;
});
lengendCfg[type] = values;
}
return lengendCfg;
}
preRender() { preRender() {
} }

View File

@ -1,5 +1,4 @@
import Base from './base'; import Base from './base';
import Controller from './controller/index';
import { getTransform, getParser } from '../source'; import { getTransform, getParser } from '../source';
import { extent, tranfrormCoord } from '../util/geo'; import { extent, tranfrormCoord } from '../util/geo';
import { getMap } from '../map/index'; import { getMap } from '../map/index';
@ -10,6 +9,7 @@ export default class Source extends Base {
defs: {}, defs: {},
parser: {}, parser: {},
transforms: [], transforms: [],
scaledefs: {},
scales: {}, scales: {},
options: {} options: {}
}; };
@ -18,13 +18,15 @@ export default class Source extends Base {
super(cfg); super(cfg);
const transform = this.get('transforms'); const transform = this.get('transforms');
this._transforms = transform || []; this._transforms = transform || [];
this._initControllers(); const mapType = this.get('mapType');
this.projectFlat = getMap(mapType).project;
// 数据解析 // 数据解析
this._excuteParser(); this._excuteParser();
// 数据转换 统计,聚合,分类 // 数据转换 统计,聚合,分类
this._executeTrans(); this._executeTrans();
// 坐标转换 // 坐标转换
this._projectCoords(); this._projectCoords();
} }
_excuteParser() { _excuteParser() {
const parser = this.get('parser'); const parser = this.get('parser');
@ -55,27 +57,6 @@ export default class Source extends Base {
data.coordinates = tranfrormCoord(data.coordinates, this._coorConvert.bind(this)); data.coordinates = tranfrormCoord(data.coordinates, this._coorConvert.bind(this));
}); });
} }
createScale(field) {
const data = this.data.dataArray;
const scales = this.get('scales');
let scale = scales[field];
const scaleController = this.get('scaleController');
if (!scale) {
scale = scaleController.createScale(field, data);
scales[field] = scale;
}
return scale;
}
_initControllers() {
const defs = this.get('defs');
const mapType = this.get('mapType');
this.projectFlat = getMap(mapType).project;
const scaleController = new Controller.Scale({
defs
});
this.set('scaleController', scaleController);
}
_getCoord(geo) { _getCoord(geo) {
if (geo.geometry) { if (geo.geometry) {
// GeoJSON feature // GeoJSON feature

View File

@ -8,7 +8,7 @@ export default class PointLineMaterial extends Material {
u_stroke: { value: [ 1.0, 1.0, 1.0, 1.0 ] }, u_stroke: { value: [ 1.0, 1.0, 1.0, 1.0 ] },
u_strokeWidth: { value: 1.0 }, u_strokeWidth: { value: 1.0 },
u_zoom: { value: 10 }, u_zoom: { value: 10 },
u_activeId: { value: 0 }, u_activeId: { value: -1 },
u_activeColor: { value: [ 1.0, 0, 0, 1.0 ] } u_activeColor: { value: [ 1.0, 0, 0, 1.0 ] }
} }

View File

@ -1,5 +1,4 @@
varying float v_lineU; varying float v_lineU;
uniform float u_opacity;
uniform float u_dashSteps; uniform float u_dashSteps;
uniform float u_dashSmooth; uniform float u_dashSmooth;
uniform float u_dashDistance; uniform float u_dashDistance;
@ -7,5 +6,5 @@ varying vec4 v_color;
void main() { void main() {
float lineUMod = mod(v_lineU, 1.0/ u_dashSteps) * u_dashSteps; float lineUMod = mod(v_lineU, 1.0/ u_dashSteps) * u_dashSteps;
float dash = smoothstep(u_dashDistance, u_dashDistance+u_dashSmooth, length(lineUMod-0.5)); float dash = smoothstep(u_dashDistance, u_dashDistance+u_dashSmooth, length(lineUMod-0.5));
gl_FragColor = vec4(v_color.xyz * vec3(dash), v_color.a*u_opacity * dash); gl_FragColor = vec4(v_color.xyz * vec3(dash), v_color.a * dash);
} }

View File

@ -3,6 +3,7 @@ attribute float a_miter;
attribute vec4 a_color; attribute vec4 a_color;
attribute float a_size; attribute float a_size;
uniform float u_zoom; uniform float u_zoom;
uniform float u_opacity;
varying vec4 v_color; varying vec4 v_color;
attribute float a_distance; attribute float a_distance;
varying float v_lineU; varying float v_lineU;
@ -13,6 +14,7 @@ void main() {
mat4 matModelViewProjection = projectionMatrix * modelViewMatrix; mat4 matModelViewProjection = projectionMatrix * modelViewMatrix;
vec3 pointPos = position.xyz + vec3(normal * a_size * pow(2.0,20.0-u_zoom) / 2.0 * a_miter); vec3 pointPos = position.xyz + vec3(normal * a_size * pow(2.0,20.0-u_zoom) / 2.0 * a_miter);
v_color = a_color; v_color = a_color;
v_color.a *= u_opacity;
if(pickingId == u_activeId) { if(pickingId == u_activeId) {
v_color = u_activeColor; v_color = u_activeColor;
} }

View File

@ -1,8 +1,5 @@
precision highp float; precision highp float;
uniform float u_opacity;
varying vec4 v_color; varying vec4 v_color;
void main() { void main() {
vec4 color = v_color; gl_FragColor = v_color;
gl_FragColor = color;
gl_FragColor.a =color.a*u_opacity;
} }

View File

@ -4,6 +4,7 @@ attribute vec4 a_color;
uniform float u_xOffset; uniform float u_xOffset;
uniform float u_yOffset; uniform float u_yOffset;
uniform float u_coverage; uniform float u_coverage;
uniform float u_opacity;
uniform float u_activeId; uniform float u_activeId;
uniform vec4 u_activeColor; uniform vec4 u_activeColor;
varying vec4 v_color; varying vec4 v_color;
@ -11,6 +12,7 @@ varying vec4 v_color;
void main() { void main() {
mat4 matModelViewProjection = projectionMatrix * modelViewMatrix; mat4 matModelViewProjection = projectionMatrix * modelViewMatrix;
v_color = a_color; v_color = a_color;
v_color.a *= u_opacity;
if(pickingId == u_activeId) { if(pickingId == u_activeId) {
v_color = u_activeColor; v_color = u_activeColor;
} }

View File

@ -4,5 +4,4 @@
void main() { void main() {
vec4 color = v_color; vec4 color = v_color;
gl_FragColor = color; gl_FragColor = color;
gl_FragColor.a =color.a*u_opacity;
} }

View File

@ -3,6 +3,7 @@ attribute vec2 miter;
attribute vec4 a_color; attribute vec4 a_color;
uniform float u_radius; uniform float u_radius;
uniform float u_coverage; uniform float u_coverage;
uniform float u_opacity;
uniform float u_angle; uniform float u_angle;
uniform float u_activeId; uniform float u_activeId;
uniform vec4 u_activeColor; uniform vec4 u_activeColor;
@ -12,6 +13,7 @@ void main() {
mat4 matModelViewProjection = projectionMatrix * modelViewMatrix; mat4 matModelViewProjection = projectionMatrix * modelViewMatrix;
mat2 rotationMatrix = mat2(cos(u_angle), sin(u_angle), -sin(u_angle), cos(u_angle)); mat2 rotationMatrix = mat2(cos(u_angle), sin(u_angle), -sin(u_angle), cos(u_angle));
v_color = a_color; v_color = a_color;
v_color.a *= u_opacity;
if(pickingId == u_activeId) { if(pickingId == u_activeId) {
v_color = u_activeColor; v_color = u_activeColor;
} }

View File

@ -1,5 +1,4 @@
precision highp float; precision highp float;
uniform float u_opacity;
varying vec4 v_color; varying vec4 v_color;
varying float vTime; varying float vTime;
void main() { void main() {
@ -12,5 +11,4 @@
color.a= color.a * vTime * 1.5; color.a= color.a * vTime * 1.5;
#endif #endif
gl_FragColor = color; gl_FragColor = color;
gl_FragColor.a =color.a*u_opacity;
} }

View File

@ -2,6 +2,7 @@ precision highp float;
attribute vec4 a_color; attribute vec4 a_color;
uniform float currentTime; uniform float currentTime;
uniform float u_time; uniform float u_time;
uniform float u_opacity;
varying float vTime; varying float vTime;
varying vec4 v_color; varying vec4 v_color;
uniform float u_activeId; uniform float u_activeId;
@ -9,6 +10,7 @@ uniform vec4 u_activeColor;
void main() { void main() {
mat4 matModelViewProjection = projectionMatrix * modelViewMatrix; mat4 matModelViewProjection = projectionMatrix * modelViewMatrix;
v_color = a_color; v_color = a_color;
v_color.a *= u_opacity;
if(pickingId == u_activeId) { if(pickingId == u_activeId) {
v_color = u_activeColor; v_color = u_activeColor;
} }

View File

@ -6,7 +6,6 @@ precision highp float;
uniform float u_strokeWidth; uniform float u_strokeWidth;
uniform vec4 u_stroke; uniform vec4 u_stroke;
uniform float u_opacity;
uniform sampler2D u_texture; uniform sampler2D u_texture;
varying vec2 v_rs; varying vec2 v_rs;
@ -29,7 +28,7 @@ void main() {
#endif #endif
if(v_color.a == 0.) if(v_color.a == 0.)
discard; discard;
vec4 pcolor = v_color * u_opacity; vec4 pcolor = v_color;
float ro = v_rs.x; float ro = v_rs.x;
float ri = v_rs.y; float ri = v_rs.y;
float d = 0.0; float d = 0.0;
@ -54,7 +53,7 @@ void main() {
gl_FragColor = vec4(u_stroke.xyz,u_stroke.a*(ro- dis2center)); gl_FragColor = vec4(u_stroke.xyz,u_stroke.a*(ro- dis2center));
return; return;
}else if(dis2center>ri){ }else if(dis2center>ri){
gl_FragColor= u_stroke * alpha ; gl_FragColor= u_stroke;
return; return;
} }
} }
@ -71,7 +70,6 @@ void main() {
} else{ } else{
gl_FragColor= pcolor; gl_FragColor= pcolor;
} }
gl_FragColor *= u_opacity;
} }

View File

@ -1,9 +1,6 @@
precision highp float; precision highp float;
uniform float u_strokeOpacity;
uniform vec4 u_stroke;
uniform float u_activeId;
uniform vec4 u_activeColor;
varying float v_pickingId; varying float v_pickingId;
varying vec4 v_color;
void main() { void main() {
if(v_pickingId < -0.1) { if(v_pickingId < -0.1) {
discard; discard;
@ -13,9 +10,5 @@ void main() {
discard; discard;
} }
#endif #endif
gl_FragColor = u_stroke; gl_FragColor = v_color;
gl_FragColor.a = u_stroke.a * u_strokeOpacity ;
if(v_pickingId == u_activeId) {
gl_FragColor = u_activeColor;
}
} }

View File

@ -3,10 +3,15 @@ attribute float a_miter;
attribute vec3 a_size; attribute vec3 a_size;
attribute vec3 a_shape; attribute vec3 a_shape;
uniform float u_strokeWidth; uniform float u_strokeWidth;
uniform float u_strokeOpacity;
uniform vec4 u_activeColor;
uniform float u_activeId;
uniform vec4 u_stroke;
uniform float u_zoom; uniform float u_zoom;
uniform float u_time; uniform float u_time;
varying float vTime; varying float vTime;
varying float v_pickingId; varying float v_pickingId;
varying vec4 v_color;
void main() { void main() {
mat4 matModelViewProjection = projectionMatrix * modelViewMatrix; mat4 matModelViewProjection = projectionMatrix * modelViewMatrix;
float scale = pow(2.0,(20.0 - u_zoom)); float scale = pow(2.0,(20.0 - u_zoom));
@ -14,7 +19,12 @@ void main() {
#ifdef ANIMATE #ifdef ANIMATE
vTime = 1.0- (mod(u_time*50.,3600.)- position.z) / 100.; vTime = 1.0- (mod(u_time*50.,3600.)- position.z) / 100.;
#endif #endif
v_pickingId = pickingId; v_color = u_stroke;
v_color.a *= u_strokeOpacity;
if(v_pickingId == u_activeId) {
v_color = u_activeColor;
}
v_pickingId = pickingId;
//vec3 pointPos = newposition.xyz + vec3(normal * u_strokeWidth * pow(2.0,20.0-u_zoom) / 2.0 * a_miter); //vec3 pointPos = newposition.xyz + vec3(normal * u_strokeWidth * pow(2.0,20.0-u_zoom) / 2.0 * a_miter);
vec3 pointPos = newposition.xyz + vec3(normal * u_strokeWidth * scale / 2.0 * a_miter); vec3 pointPos = newposition.xyz + vec3(normal * u_strokeWidth * scale / 2.0 * a_miter);
gl_Position = matModelViewProjection * vec4(pointPos, 1.0); gl_Position = matModelViewProjection * vec4(pointPos, 1.0);

View File

@ -15,6 +15,7 @@ uniform vec4 u_activeColor;
void main() { void main() {
mat4 matModelViewProjection = projectionMatrix * modelViewMatrix; mat4 matModelViewProjection = projectionMatrix * modelViewMatrix;
v_color = a_color; v_color = a_color;
v_color.a *= u_opacity;
if(pickingId == u_activeId) { if(pickingId == u_activeId) {
v_color = u_activeColor; v_color = u_activeColor;
} }

View File

@ -1,5 +1,4 @@
precision highp float; precision highp float;
uniform float u_opacity;
uniform sampler2D u_texture; uniform sampler2D u_texture;
uniform vec4 u_baseColor; uniform vec4 u_baseColor;
uniform vec4 u_brightColor; uniform vec4 u_brightColor;
@ -58,7 +57,7 @@ void main() {
#ifdef ANIMATE #ifdef ANIMATE
if(v_texCoord.x < 0.) { //顶部颜色 if(v_texCoord.x < 0.) { //顶部颜色
vec3 foggedColor = fog(baseColor.xyz + vec3(0.12*0.9,0.2*0.9,0.3*0.9),fogColor,depth); vec3 foggedColor = fog(baseColor.xyz + vec3(0.12*0.9,0.2*0.9,0.3*0.9),fogColor,depth);
gl_FragColor = vec4( foggedColor, v_color.w * u_opacity); gl_FragColor = vec4( foggedColor, v_color.w);
}else { // 侧面颜色 }else { // 侧面颜色
vec2 st = v_texCoord; vec2 st = v_texCoord;
vec2 UvScale = v_texCoord; vec2 UvScale = v_texCoord;
@ -107,7 +106,7 @@ void main() {
gl_FragColor = vec4(foggedColor,1.0); gl_FragColor = vec4(foggedColor,1.0);
} }
#else #else
gl_FragColor = vec4(v_color.xyz , v_color.w * u_opacity); gl_FragColor = vec4(v_color.xyz , v_color.w);
#endif #endif
} }

View File

@ -7,6 +7,7 @@ attribute vec2 faceUv;
attribute vec3 a_shape; attribute vec3 a_shape;
attribute vec3 a_size; attribute vec3 a_size;
uniform float u_zoom; uniform float u_zoom;
uniform float u_opacity;
varying vec2 v_texCoord; varying vec2 v_texCoord;
varying vec4 v_color; varying vec4 v_color;
varying float v_lightWeight; varying float v_lightWeight;
@ -25,6 +26,7 @@ void main() {
v_texCoord = faceUv; v_texCoord = faceUv;
if(normal == vec3(0.,0.,1.)){ if(normal == vec3(0.,0.,1.)){
v_color = a_color; v_color = a_color;
v_color.a *= u_opacity;
if(pickingId == u_activeId) { if(pickingId == u_activeId) {
v_color = u_activeColor; v_color = u_activeColor;
} }

View File

@ -18,6 +18,7 @@ void main() {
fract(16.0 * (1.0 - value1)), fract(16.0 * (1.0 - value1)),
floor(16.0 * (1.0 - value1)) / 16.0); floor(16.0 * (1.0 - value1)) / 16.0);
v_color = texture2D(u_colorTexture,ramp_pos); v_color = texture2D(u_colorTexture,ramp_pos);
v_color.a *= u_opacity;
vec2 range = u_extent.zw - u_extent.xy; vec2 range = u_extent.zw - u_extent.xy;
gl_Position = matModelViewProjection * vec4(position.xy, value*100., 1.0); gl_Position = matModelViewProjection * vec4(position.xy, value*100., 1.0);

View File

@ -2,7 +2,7 @@ import HeatmapBuffer from '../../../geom/buffer/heatmap/heatmap';
import { createColorRamp } from '../../../geom/buffer/heatmap/heatmap'; import { createColorRamp } from '../../../geom/buffer/heatmap/heatmap';
import { HeatmapIntensityMaterial, HeatmapColorizeMaterial } from '../../../geom/material/heatmapMateial'; import { HeatmapIntensityMaterial, HeatmapColorizeMaterial } from '../../../geom/material/heatmapMateial';
// import Renderpass from '../../../core/engine/renderpass.bak'; // import Renderpass from '../../../core/engine/renderpass.bak';
import Renderpass from '../../../core/engine/renderPass'; import RenderPass from '../../../core/engine/renderpass';
import ShaderPass from '../../../core/engine/ShaderPass'; import ShaderPass from '../../../core/engine/ShaderPass';
import EffectComposer from '../../../core/engine/EffectComposer'; import EffectComposer from '../../../core/engine/EffectComposer';
import * as THREE from '../../../core/three'; import * as THREE from '../../../core/three';
@ -49,7 +49,7 @@ function heatmapPass(layer) {
const zoom = layer.scene.getZoom(); const zoom = layer.scene.getZoom();
mesh.material.setUniformsValue('u_zoom', zoom); mesh.material.setUniformsValue('u_zoom', zoom);
}; };
const pass = new Renderpass(scene, camera); const pass = new RenderPass(scene, camera);
return pass; return pass;
} }
function copyPass(layer) { function copyPass(layer) {