UNPKG

@luma.gl/shadertools

Version:

Shader module system for luma.gl

129 lines (99 loc) 3.17 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.convertToVec4 = convertToVec4; exports.getPassthroughFS = getPassthroughFS; exports.getQualifierDetails = getQualifierDetails; exports.typeToChannelCount = typeToChannelCount; exports.typeToChannelSuffix = typeToChannelSuffix; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _utils = require("../utils"); var FS100 = "void main() {gl_FragColor = vec4(0);}"; var FS_GLES = "out vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}"; var FS300 = "#version 300 es\n".concat(FS_GLES); function getQualifierDetails(line, qualifiers) { qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers]; var words = line.replace(/^\s+/, '').split(/\s+/); var _words = (0, _slicedToArray2.default)(words, 3), qualifier = _words[0], type = _words[1], definition = _words[2]; if (!qualifiers.includes(qualifier) || !type || !definition) { return null; } var name = definition.split(';')[0]; return { qualifier: qualifier, type: type, name: name }; } function getPassthroughFS() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _options$version = options.version, version = _options$version === void 0 ? 100 : _options$version, input = options.input, inputType = options.inputType, output = options.output; if (!input) { if (version === 300) { return FS300; } else if (version > 300) { return "#version ".concat(version, "\n").concat(FS_GLES); } return FS100; } var outputValue = convertToVec4(input, inputType); if (version >= 300) { return "#version ".concat(version, " ").concat(version === 300 ? 'es' : '', "\nin ").concat(inputType, " ").concat(input, ";\nout vec4 ").concat(output, ";\nvoid main() {\n ").concat(output, " = ").concat(outputValue, ";\n}"); } return "varying ".concat(inputType, " ").concat(input, ";\nvoid main() {\n gl_FragColor = ").concat(outputValue, ";\n}"); } function typeToChannelSuffix(type) { switch (type) { case 'float': return 'x'; case 'vec2': return 'xy'; case 'vec3': return 'xyz'; case 'vec4': return 'xyzw'; default: (0, _utils.assert)(false); return null; } } function typeToChannelCount(type) { switch (type) { case 'float': return 1; case 'vec2': return 2; case 'vec3': return 3; case 'vec4': return 4; default: (0, _utils.assert)(false); return null; } } function convertToVec4(variable, type) { switch (type) { case 'float': return "vec4(".concat(variable, ", 0.0, 0.0, 1.0)"); case 'vec2': return "vec4(".concat(variable, ", 0.0, 1.0)"); case 'vec3': return "vec4(".concat(variable, ", 1.0)"); case 'vec4': return variable; default: (0, _utils.assert)(false); return null; } } //# sourceMappingURL=shader-utils.js.map