UNPKG

@deck.gl/experimental-layers

Version:

Experimental layers for deck.gl

39 lines (32 loc) 2.73 kB
/* 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