/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/surfacecurve-shaderbuilder@0.0.11/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
var _=require("underscore"),package=require("./package.json"),util={};function Builder(){this._nodes={},this._materials={},this._templates={},this._loadDefaultResources()}util.leftDedent=function(e){for(var t,n=(e=(e=(e=e.replace(/\r/g,"")).replace(/^(\s*\n)+/,"")).replace(/(\n\s*)+$/,"")).split("\n"),a=0;a<n.length;++a){var r;if(r=n[a].match(/^(\s*)[^\s]/)){var i=r[1].length;t=void 0===t?i:Math.min(t,i)}}var o=[];for(a=0;a<n.length;++a)o.push(n[a].substr(t));return e=o.join("\n")},Builder.prototype._loadDefaultResources=function(){var e=require("./resources/shaderbuilder-bundle.json").shaderbuilder;this.loadTemplates(e.templates.vertex,e.templates.fragment),_.each(e.nodes,(function(e,t){this.loadNode(t,e)}),this),_.each(e.materials,(function(e,t){this.loadMaterial(t,e)}),this)},_.extend(Builder.prototype,{loadTemplates:function(e,t){function n(e){var t=_.template(e.replace(/\r/g,""));return function(e){return t(e).replace(/^REM[^\n]*\n/gm,"")}}this._templates.vertexShader=n(e),this._templates.fragmentShader=n(t)},loadNode:function(e,t){var n=t.indexOf("<source>"),a=new Function("return "+t.substr(0,n)).call();_.each(a.input,(function(e,t){a.input[t]={type:e[0],default:e[1],semantic:e[2]}})),a.code=util.leftDedent(t.substr(n+8).replace("</source>","")),a.name=e,this._nodes[e]=a},loadMaterial:function(e,t){var n=new Function("return "+t+";");this._materials[e]=n()},materials:function(){return _.keys(this._materials)},build:function(e,t){var n=this;if(void 0===e)throw new Error("UNDEFINED_MATERIAL");"string"==typeof e&&(e=this._materials[e]);_.extend({},t);var a={builder:{name:package.name,version:package.version},constants:{PI:{type:"float",value:3.141592653589793}},uniforms:{},functions:{},statements:[],activation:{}},r={nodeName:"",nodeId:0};function i(e){var t=_.keys(e)[0],o=(e=_.extend({name:t},e[t]),n._nodes[e.name]);if(!o)throw console.log("Unrecognized node type: "+e.name),console.log("From",e),"INVALID_SHADERBUILDER_NODE_TYPE";!function(e){if(!e)throw new Error("INVALID_SHADERBUILDER_NODE");if(!a.functions[e.name]){var t={name:e.name,type:e.output,inputs:[]};t.code="    "+e.code.split("\n").join("\n    "),t.inputs=_.map(e.input,(function(e,t){return{type:e.type,name:t}})),t.paramList=_.map(t.inputs,(function(e){return[e.type,e.name].join(" ")})).join(", "),a.functions[e.name]=t}}(o);var s=r.nodeName=r.nodeId++,u=[];_.each(o.input,(function(t,n){var r=["n",s,"_input_",n].join(""),o=function(e,t,n){var r,o,s=t.type;return t.semantic,n||(n=t.default),_.isObject(n)&&!_.isArray(n)?["n",i(n),"_value"].join(""):(r=n,o={name:"unif_"+e.replace("input_",""),type:s,default:t.default},a.uniforms[o.name]=o,a.activation[o.name]=r,o.name)}(r,t,e[n]),l=[t.type," ",r," = ",o].join("");a.statements.push(l),u.push(r)}));var l=[o.output," n",s,"_value = ",o.name,"(",u.join(","),")"].join("");return a.statements.push(l),s}i(e);var o={};return o.vertexShader=this._templates.vertexShader({}),o.fragmentShader=this._templates.fragmentShader(a),o.activation=a.activation,o}}),exports.ShaderBuilder=Builder;
//# sourceMappingURL=/sm/1e9fc625bd07422079ae80b12263ff9efbf782b23a058b37258f457e9d08964d.map