Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
fuzhenn committed Jan 12, 2018
2 parents 12b5677 + c550ab1 commit 767ba6e
Show file tree
Hide file tree
Showing 15 changed files with 96 additions and 78 deletions.
46 changes: 34 additions & 12 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,52 @@ const gulp = require('gulp'),
BundleHelper = require('maptalks-build-helpers').BundleHelper;
const bundleHelper = new BundleHelper(pkg);

// https://github.com/mrdoob/three.js/blob/dev/rollup.config.js#L1
function glsl() {
return {
transform(code, id) {
if (/\.glsl$/.test(id) === false) return undefined;

const transformedCode = 'export default ' + JSON.stringify(
code
.replace(/[ \t]*\/\/.*\n/g, '') // remove //
.replace(/[ \t]*\/\*[\s\S]*?\*\//g, '') // remove /* */
.replace(/\n{2,}/g, '\n') // # \n+ to \n
) + ';';

return {
code: transformedCode,
map: {
mappings: ''
}
};
}
};
}

gulp.task('build', () => {
return bundleHelper.bundle('src/maptalks.webgl.js');
const config = bundleHelper.getDefaultRollupConfig();
config.plugins.unshift(glsl());
return bundleHelper.bundle('src/index.js', config);
});

gulp.task('minify', ['build'], () => {
bundleHelper.minify();
});

gulp.task('watch', () => {
//gulp.watch(['src/**/*.js'], ['build']);
const config = bundleHelper.getDefaultRollupConfig();
config.input = 'src/maptalks.webgl.js';
config.plugins.unshift(glsl());
config.input = 'src/index.js';
const year = new Date().getFullYear();
const banner = `/*!\n * ${pkg.name} v${pkg.version}\n * LICENSE : ${pkg.license}\n * (c) 2016-${year} maptalks.org\n */`;
config.banner = banner;
config.output = [
{
file: `dist/${pkg.name}.js`,
format: 'umd',
name: 'maptalks',
extend : true
}
];
config.output = [{
file: `dist/${pkg.name}.js`,
format: 'umd',
name: 'maptalks',
extend: true
}];
const watcher = rollup.watch(config);
watcher.on('event', e => {
if (e.code === 'START') {
Expand All @@ -55,4 +78,3 @@ gulp.task('connect', ['watch'], () => {
});

gulp.task('default', ['connect']);

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
"url": "https://github.com/maptalks/maptalks.biglayer.git"
},
"main": "dist/maptalks.biglayer.js",
"module": "src/maptalks.biglayer.es.js",
"jsnext:main": "src/maptalks.biglayer.es.js",
"module": "dist/maptalks.biglayer.es.js",
"jsnext:main": "dist/maptalks.biglayer.es.js",
"scripts": {
"preversion": "npm run lint",
"version": "gulp minify && git add -A dist",
Expand Down
2 changes: 2 additions & 0 deletions src/Renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,9 @@ export default class WebglRenderer extends maptalks.renderer.CanvasRenderer {
// doesn't need to flip Y with headless-gl, unknown reason
mat4.scale(m, m, [1, -1, 1]);
}
// m1: projection matrix
mat4.copy(m1, m);
// m2: view matrix
const m2 = this._getLookAtMat();
mat4.multiply(m, m1, m2);
return m;
Expand Down
8 changes: 5 additions & 3 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
export { default as WebglRenderer } from './Renderer';
// export renderer and painters with package 'webgl'.
import * as webgl from './webgl';

export * from './painter';
export { webgl };

export { default as Shader } from './shader/Shader';
// export layers as maptalks.Big*Layer
export * from './layer';
7 changes: 0 additions & 7 deletions src/maptalks.webgl.js

This file was deleted.

53 changes: 32 additions & 21 deletions src/shader/Shader.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,38 @@
import lineFragment from './line.fragment';
import lineVertex from './line.vertex';
import pointFragment from './point.fragment';
import pointVertex from './point.vertex';
import polygonFragment from './polygon.fragment';
import polygonVertex from './polygon.vertex';
import extrudeFragment from './extrude.fragment';
import extrudeVertex from './extrude.vertex';
import { maxUniformLength } from './common';
import lineFragment from './line.fragment.glsl';
import lineVertex from './line.vertex.glsl';
import pointFragment from './point.fragment.glsl';
import pointVertex from './point.vertex.glsl';
import polygonFragment from './polygon.fragment.glsl';
import polygonVertex from './polygon.vertex.glsl';
import extrudeFragment from './extrude.fragment.glsl';
import extrudeVertex from './extrude.vertex.glsl';

export default {
'line': {
'fragmentSource' : lineFragment,
'vertexSource' : lineVertex
const shaders = {
line: {
fragmentSource: lineFragment,
vertexSource: lineVertex
},
'point': {
'fragmentSource' : pointFragment,
'vertexSource' : pointVertex
point: {
fragmentSource: pointFragment,
vertexSource: pointVertex
},
'polygon' : {
'fragmentSource' : polygonFragment,
'vertexSource' : polygonVertex
polygon: {
fragmentSource: polygonFragment,
vertexSource: polygonVertex
},
'extrude' : {
'fragmentSource' : extrudeFragment,
'vertexSource' : extrudeVertex
extrude: {
fragmentSource: extrudeFragment,
vertexSource: extrudeVertex
}
};

const re = /maxUniformLength/g;

for (const name in shaders) {
const program = shaders[name];
program.fragmentSource = program.fragmentSource.replace(re, maxUniformLength);
program.vertexSource = program.vertexSource.replace(re, maxUniformLength);
}

export default shaders;
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
export default
`
precision mediump float;

varying vec4 v_texcoord;
Expand All @@ -8,4 +6,4 @@ varying float v_opacity;

void main() {
gl_FragColor = v_texcoord * v_opacity;
}`;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import { maxUniformLength } from './common';
export default
`attribute vec4 a_pos;
attribute vec4 a_pos;
attribute vec4 a_normal;
//tex_idx * 100 + opacity * 10
attribute float a_fill_style;
Expand All @@ -12,7 +10,7 @@ uniform lowp float u_lightintensity;
// uniform vec3 u_ambientlight;

uniform mat4 u_matrix;
uniform float u_fill_styles[${maxUniformLength}];
uniform float u_fill_styles[maxUniformLength];

varying float v_opacity;
varying vec4 v_texcoord;
Expand Down Expand Up @@ -75,4 +73,4 @@ void main() {
// // }

// v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));
}`;
}
5 changes: 2 additions & 3 deletions src/shader/line.fragment.js → src/shader/line.fragment.glsl
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
export default
`#ifdef GL_ES
#ifdef GL_ES
precision mediump float;
#else
#define lowp
Expand Down Expand Up @@ -41,4 +40,4 @@ void main() {
#ifdef OVERDRAW_INSPECTOR
gl_FragColor = vec4(1.0);
#endif
}`;
}
9 changes: 3 additions & 6 deletions src/shader/line.vertex.js → src/shader/line.vertex.glsl
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import { maxUniformLength } from './common';
export default
`#ifdef GL_ES
#ifdef GL_ES
precision highp float;
#else
#define lowp
Expand All @@ -18,7 +16,7 @@ attribute float a_style;

uniform mat4 u_matrix;
uniform float u_scale;
uniform float u_styles[${maxUniformLength}];
uniform float u_styles[maxUniformLength];

varying vec2 v_linenormal;
varying float v_linewidth;
Expand Down Expand Up @@ -60,5 +58,4 @@ void main() {
//
v_texture_normal = sign(a_normal.y);
}
}`;
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
export default
`
precision mediump float;
uniform sampler2D u_sampler;
varying vec3 v_texCoord;
void main() {
gl_FragColor = texture2D(u_sampler, vec2(v_texCoord[0] + gl_PointCoord[0] * v_texCoord[1], 1.0 + gl_PointCoord[1] * v_texCoord[2]));
}`;
}
7 changes: 2 additions & 5 deletions src/shader/point.vertex.js → src/shader/point.vertex.glsl
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import { maxUniformLength } from './common';
export default
`
// marker's 2d point at max zoom
attribute vec4 a_pos;

Expand All @@ -16,7 +13,7 @@ uniform float u_scale;
// a sprite has 6 integers:
// 0 : northwest's x, 1 : width, 2: height, 3: sprite size, 4: offset x, 5: offset y
// array's length is not dynamic, support maximum count / 6 sprites
uniform float u_sprite[${maxUniformLength}];
uniform float u_sprite[maxUniformLength];

varying vec3 v_texCoord;

Expand All @@ -33,4 +30,4 @@ void main() {

// texture coord
v_texCoord = vec3(u_sprite[idx], u_sprite[idx + 1], u_sprite[idx + 2]);
}`;
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
export default
`
precision mediump float;

varying vec4 v_texcoord;
varying float v_opacity;
void main() {
gl_FragColor = v_texcoord * v_opacity;
}`;
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import { maxUniformLength } from './common';
export default
`attribute vec4 a_pos;
attribute vec4 a_pos;
//tex_idx * 100 + opacity * 10
attribute float a_fill_style;

uniform mat4 u_matrix;
uniform float u_fill_styles[${maxUniformLength}];
uniform float u_fill_styles[maxUniformLength];

varying float v_opacity;
varying vec4 v_texcoord;
Expand All @@ -16,4 +14,4 @@ void main() {
v_texcoord = vec4(u_fill_styles[tex_idx], u_fill_styles[tex_idx + 1], u_fill_styles[tex_idx + 2], u_fill_styles[tex_idx + 3]);

gl_Position = u_matrix * a_pos;
}`;
}
5 changes: 5 additions & 0 deletions src/webgl.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export { default as WebglRenderer } from './Renderer';

export * from './painter';

export { default as Shader } from './shader/Shader';

0 comments on commit 767ba6e

Please sign in to comment.