@deck.gl/experimental-layers
Version:
Experimental layers for deck.gl
39 lines (32 loc) • 2.73 kB
JavaScript
/* eslint-disable camelcase */
var INITIAL_STATE = {
outlineEnabled: false,
outlineRenderShadowmap: false,
outlineShadowmap: null
};
function getUniforms() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE,
outlineEnabled = _ref.outlineEnabled,
outlineRenderShadowmap = _ref.outlineRenderShadowmap,
outlineShadowmap = _ref.outlineShadowmap;
var uniforms = {};
if (outlineEnabled !== undefined) {
uniforms.outline_uEnabled = outlineEnabled; // ? 1.0 : 0.0;
}
if (outlineRenderShadowmap !== undefined) {
uniforms.outline_uRenderOutlines = outlineRenderShadowmap; // ? 1.0 : 0.0;
}
if (outlineShadowmap !== undefined) {
uniforms.outline_uShadowmap = outlineShadowmap;
}
return uniforms;
}
var vs = "varying float outline_vzLevel;\nvarying vec4 outline_vPosition;\n\n// Set the z level for the outline shadowmap rendering\nvoid outline_setZLevel(float zLevel) {\n outline_vzLevel = zLevel;\n}\n\n// Store an adjusted position for texture2DProj\nvoid outline_setUV(vec4 position) {\n // mat4(\n // 0.5, 0.0, 0.0, 0.0,\n // 0.0, 0.5, 0.0, 0.0,\n // 0.0, 0.0, 0.5, 0.0,\n // 0.5, 0.5, 0.5, 1.0\n // ) * position;\n outline_vPosition = vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\n}\n";
var fs = "uniform bool outline_uEnabled;\nuniform bool outline_uRenderOutlines;\nuniform sampler2D outline_uShadowmap;\n\nvarying float outline_vzLevel;\n// varying vec2 outline_vUV;\nvarying vec4 outline_vPosition;\n\nconst float OUTLINE_Z_LEVEL_ERROR = 0.01;\n\n// Return a darker color in shadowmap\nvec4 outline_filterShadowColor(vec4 color) {\n return vec4(outline_vzLevel / 255., outline_vzLevel / 255., outline_vzLevel / 255., 1.);\n}\n\n// Return a darker color if in shadowmap\nvec4 outline_filterDarkenColor(vec4 color) {\n if (outline_uEnabled) {\n float maxZLevel;\n if (outline_vPosition.q > 0.0) {\n maxZLevel = texture2DProj(outline_uShadowmap, outline_vPosition).r * 255.;\n } else {\n discard;\n }\n if (maxZLevel < outline_vzLevel + OUTLINE_Z_LEVEL_ERROR) {\n vec4(color.rgb * 0.5, color.a);\n } else {\n discard;\n }\n }\n return color;\n}\n\n// if enabled and rendering outlines - Render depth to shadowmap\n// if enabled and rendering colors - Return a darker color if in shadowmap\n// if disabled, just return color\nvec4 outline_filterColor(vec4 color) {\n if (outline_uEnabled) {\n return outline_uRenderOutlines ?\n outline_filterShadowColor(color) :\n outline_filterDarkenColor(color);\n }\n return color;\n}\n";
export default {
name: 'outline',
vs: vs,
fs: fs,
getUniforms: getUniforms
};
//# sourceMappingURL=outline.js.map