UNPKG

ami-cjs.js

Version:

<p align="center"> <img src="https://cloud.githubusercontent.com/assets/214063/23213764/78ade038-f90c-11e6-8208-4fcade5f3832.png" width="60%"> </p>

81 lines (63 loc) 5.33 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _shaders = require('./interpolation/shaders.interpolation'); var _shaders2 = _interopRequireDefault(_shaders); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ShadersFragment = function () { // pass uniforms object function ShadersFragment(uniforms) { _classCallCheck(this, ShadersFragment); this._uniforms = uniforms; this._functions = {}; this._main = ''; } _createClass(ShadersFragment, [{ key: 'functions', value: function functions() { if (this._main === '') { // if main is empty, functions can not have been computed this.main(); } var content = ''; for (var property in this._functions) { content += this._functions[property] + '\n'; } return content; } }, { key: 'uniforms', value: function uniforms() { var content = ''; for (var property in this._uniforms) { var uniform = this._uniforms[property]; content += 'uniform ' + uniform.typeGLSL + ' ' + property; if (uniform && uniform.length) { content += '[' + uniform.length + ']'; } content += ';\n'; } return content; } }, { key: 'main', value: function main() { // need to pre-call main to fill up the functions list this._main = '\nvoid main(void) {\n\n // draw border if slice is cropped\n // float uBorderDashLength = 10.;\n\n if( uCanvasWidth > 0. &&\n ((gl_FragCoord.x > uBorderMargin && (gl_FragCoord.x - uBorderMargin) < uBorderWidth) ||\n (gl_FragCoord.x < (uCanvasWidth - uBorderMargin) && (gl_FragCoord.x + uBorderMargin) > (uCanvasWidth - uBorderWidth) ))){\n float valueY = mod(gl_FragCoord.y, 2. * uBorderDashLength);\n if( valueY < uBorderDashLength && gl_FragCoord.y > uBorderMargin && gl_FragCoord.y < (uCanvasHeight - uBorderMargin) ){\n gl_FragColor = vec4(uBorderColor, 1.);\n return;\n }\n }\n\n if( uCanvasHeight > 0. &&\n ((gl_FragCoord.y > uBorderMargin && (gl_FragCoord.y - uBorderMargin) < uBorderWidth) ||\n (gl_FragCoord.y < (uCanvasHeight - uBorderMargin) && (gl_FragCoord.y + uBorderMargin) > (uCanvasHeight - uBorderWidth) ))){\n float valueX = mod(gl_FragCoord.x, 2. * uBorderDashLength);\n if( valueX < uBorderDashLength && gl_FragCoord.x > uBorderMargin && gl_FragCoord.x < (uCanvasWidth - uBorderMargin) ){\n gl_FragColor = vec4(uBorderColor, 1.);\n return;\n }\n }\n\n // get texture coordinates of current pixel\n vec4 dataCoordinates = uWorldToData * vPos;\n vec3 currentVoxel = vec3(dataCoordinates.x, dataCoordinates.y, dataCoordinates.z);\n vec4 dataValue = vec4(0., 0., 0., 0.);\n vec3 gradient = vec3(0., 0., 0.);\n ' + (0, _shaders2.default)(this, 'currentVoxel', 'dataValue', 'gradient') + '\n\n // how do we deal wil more than 1 channel?\n if(uNumberOfChannels == 1){\n float intensity = dataValue.r;\n\n // rescale/slope\n intensity = intensity*uRescaleSlopeIntercept[0] + uRescaleSlopeIntercept[1];\n\n float windowMin = uWindowCenterWidth[0] - uWindowCenterWidth[1] * 0.5;\n float windowMax = uWindowCenterWidth[0] + uWindowCenterWidth[1] * 0.5;\n intensity = ( intensity - windowMin ) / uWindowCenterWidth[1];\n\n dataValue.r = dataValue.g = dataValue.b = intensity;\n dataValue.a = 1.0;\n }\n\n // Apply LUT table...\n //\n if(uLut == 1){\n // should opacity be grabbed there?\n dataValue = texture2D( uTextureLUT, vec2( dataValue.r , 1.0) );\n }\n\n if(uInvert == 1){\n dataValue = vec4(1.) - dataValue;\n // how do we deal with that and opacity?\n dataValue.a = 1.;\n }\n\n gl_FragColor = dataValue;\n\n // if on edge, draw line\n // float xPos = gl_FragCoord.x/512.;\n // float yPos = gl_FragCoord.y/512.;\n // if( xPos < 0.05 || xPos > .95 || yPos < 0.05 || yPos > .95){\n // gl_FragColor = vec4(xPos, yPos, 0., 1.);//dataValue;\n // //return;\n // }\n\n}\n '; } }, { key: 'compute', value: function compute() { var shaderInterpolation = ''; // shaderInterpolation.inline(args) //true/false // shaderInterpolation.functions(args) return '\n// uniforms\n' + this.uniforms() + '\n\n// varying (should fetch it from vertex directly)\nvarying vec4 vPos;\n\n// tailored functions\n' + this.functions() + '\n\n// main loop\n' + this._main + '\n '; } }]); return ShadersFragment; }(); exports.default = ShadersFragment; module.exports = exports['default'];