UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

2 lines (1 loc) 6.65 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var e=require("./core/util.js"),t=require("./core/vendor.js"),r=/uniform\s+(bool|float|int|vec2|vec3|vec4|ivec2|ivec3|ivec4|mat2|mat3|mat4|sampler2D|samplerCube)\s+([\s\S]*?);/g,n=/attribute\s+(float|int|vec2|vec3|vec4)\s+([\s\S]*?);/g,i=/#define\s+(\w+)?(\s+[\d-.]+)?\s*;?\s*\n/g,a={bool:"1i",int:"1i",sampler2D:"t",samplerCube:"t",float:"1f",vec2:"2f",vec3:"3f",vec4:"4f",ivec2:"2i",ivec3:"3i",ivec4:"4i",mat2:"m2",mat3:"m3",mat4:"m4"};function s(e){for(var t=[],r=0;r<e;r++)t[r]=0;return t}var o={bool:function(){return!0},int:function(){return 0},float:function(){return 0},sampler2D:function(){return null},samplerCube:function(){return null},vec2:function(){return s(2)},vec3:function(){return s(3)},vec4:function(){return s(4)},ivec2:function(){return s(2)},ivec3:function(){return s(3)},ivec4:function(){return s(4)},mat2:function(){return s(4)},mat3:function(){return s(9)},mat4:function(){return s(16)},array:function(){return[]}},u=["POSITION","NORMAL","BINORMAL","TANGENT","TEXCOORD","TEXCOORD_0","TEXCOORD_1","COLOR","JOINT","WEIGHT"],f=["SKIN_MATRIX","VIEWPORT_SIZE","VIEWPORT","DEVICEPIXELRATIO","WINDOW_SIZE","NEAR","FAR","TIME"],c=["WORLD","VIEW","PROJECTION","WORLDVIEW","VIEWPROJECTION","WORLDVIEWPROJECTION","WORLDINVERSE","VIEWINVERSE","PROJECTIONINVERSE","WORLDVIEWINVERSE","VIEWPROJECTIONINVERSE","WORLDVIEWPROJECTIONINVERSE","WORLDTRANSPOSE","VIEWTRANSPOSE","PROJECTIONTRANSPOSE","WORLDVIEWTRANSPOSE","VIEWPROJECTIONTRANSPOSE","WORLDVIEWPROJECTIONTRANSPOSE","WORLDINVERSETRANSPOSE","VIEWINVERSETRANSPOSE","PROJECTIONINVERSETRANSPOSE","WORLDVIEWINVERSETRANSPOSE","VIEWPROJECTIONINVERSETRANSPOSE","WORLDVIEWPROJECTIONINVERSETRANSPOSE"],l={vec4:4,vec3:3,vec2:2,float:1},m={},p={};function v(e){return e.replace(/[ \t]*\/\/.*\n/g,"").replace(/[ \t]*\/\*[\s\S]*?\*\//g,"")}function O(e,r){for(var n=/[,=\(\):]/,i=r.replace(/:\s*\[\s*(.*)\s*\]/g,"="+e+"($1)").replace(/\s+/g,"").split(/(?=[,=\(\):])/g),a=[],s=0;s<i.length;s++)i[s].match(n)?a.push(i[s].charAt(0),i[s].slice(1)):a.push(i[s]);var o,l=0,m={},p=null;function v(e){var t=e.match(/\[(.*?)\]/);o=e.replace(/\[(.*?)\]/,""),m[o]={},t&&(m[o].isArray=!0,m[o].arraySize=t[1])}v((i=a)[0]);for(s=1;s<i.length;s++){var O=i[s];if(O)if("="!==O)if(":"!==O)if(","!==O)if(")"!==O)if("("!==O)if(O.indexOf("vec")>=0){if(1!==l&&4!==l)break;l=2,p=[]}else if(1!==l)if(4!==l)v(O),l=0;else{var E=O;u.indexOf(E)>=0||f.indexOf(E)>=0||c.indexOf(E)>=0?m[o].semantic=E:"ignore"===E||"unconfigurable"===E?m[o].ignore=!0:m[o].value="bool"===e?"true"===E:parseFloat(E)}else m[o].value="bool"===e?"true"===O:parseFloat(O),p=null;else{if(2!==l)break;if(!(p instanceof Array))break;p.push(+i[++s])}else m[o].value=new t.default.Float32Array(p),p=null,l=5;else if(2===l){if(!(p instanceof Array))break;p.push(+i[++s])}else l=5;else l=4;else{if(0!==l&&3!==l)break;l=1}}return m}function E(t,r){"object"==typeof t&&(r=t.fragment,t=t.vertex),t=v(t),r=v(r),this._shaderID=function(t,r){var n="vertex:"+t+"fragment:"+r;if(m[n])return m[n];var i=e.default.genGUID();return m[n]=i,p[i]={vertex:t,fragment:r},i}(t,r),this._vertexCode=E.parseImport(t),this._fragmentCode=E.parseImport(r),this.attributeSemantics={},this.matrixSemantics={},this.uniformSemantics={},this.matrixSemanticKeys=[],this.uniformTemplates={},this.attributes={},this.textures={},this.vertexDefines={},this.fragmentDefines={},this._parseAttributes(),this._parseUniforms(),this._parseDefines()}E.prototype={constructor:E,createUniforms:function(){var e={};for(var t in this.uniformTemplates){var r=this.uniformTemplates[t];e[t]={type:r.type,value:r.value()}}return e},_parseImport:function(){this._vertexCode=E.parseImport(this.vertex),this._fragmentCode=E.parseImport(this.fragment)},_addSemanticUniform:function(e,t,r){if(u.indexOf(r)>=0)this.attributeSemantics[r]={symbol:e,type:t};else if(c.indexOf(r)>=0){var n=!1,i=r;r.match(/TRANSPOSE$/)&&(n=!0,i=r.slice(0,-9)),this.matrixSemantics[r]={symbol:e,type:t,isTranspose:n,semanticNoTranspose:i}}else f.indexOf(r)>=0&&(this.uniformSemantics[r]={symbol:e,type:t})},_addMaterialUniform:function(e,t,r,n,i,a){a[e]={type:r,value:i?o.array:n||o[t],semantic:null}},_parseUniforms:function(){var e={},t=this;function n(e){return null!=e?function(){return e}:null}function i(r,i,s){var o=O(i,s),u=[];for(var f in o){var c=o[f],l=c.semantic,m=f,p=a[i],v=n(o[f].value);o[f].isArray&&(m+="["+o[f].arraySize+"]",p+="v"),u.push(m),t._uniformList.push(f),c.ignore||("sampler2D"!==i&&"samplerCube"!==i||(t.textures[f]={shaderType:"fragment",type:i}),l?t._addSemanticUniform(f,p,l):t._addMaterialUniform(f,i,p,v,o[f].isArray,e))}return u.length>0?"uniform "+i+" "+u.join(",")+";\n":""}this._uniformList=[],this._vertexCode=this._vertexCode.replace(r,i),this._fragmentCode=this._fragmentCode.replace(r,i),t.matrixSemanticKeys=Object.keys(this.matrixSemantics),this.uniformTemplates=e},_parseAttributes:function(){var e={},t=this;this._vertexCode=this._vertexCode.replace(n,(function(r,n,i){var a=O(n,i),s=l[n]||1,o=[];for(var f in a){var c=a[f].semantic;if(e[f]={type:"float",size:s,semantic:c||null},c){if(u.indexOf(c)<0)throw new Error('Unkown semantic "'+c+'"');t.attributeSemantics[c]={symbol:f,type:n}}o.push(f)}return"attribute "+n+" "+o.join(",")+";\n"})),this.attributes=e},_parseDefines:function(){var e=this;function t(t,r,n){var i=e.fragmentDefines;return i[r]||(i[r]="false"!==n&&("true"===n||(n?isNaN(parseFloat(n))?n.trim():parseFloat(n):null))),""}this._vertexCode=this._vertexCode.replace(i,t),this._fragmentCode=this._fragmentCode.replace(i,t)},clone:function(){var e=p[this._shaderID];return new E(e.vertex,e.fragment)}},Object.defineProperty&&(Object.defineProperty(E.prototype,"shaderID",{get:function(){return this._shaderID}}),Object.defineProperty(E.prototype,"vertex",{get:function(){return this._vertexCode}}),Object.defineProperty(E.prototype,"fragment",{get:function(){return this._fragmentCode}}),Object.defineProperty(E.prototype,"uniforms",{get:function(){return this._uniformList}}));var h=/(@import)\s*([0-9a-zA-Z_\-\.]*)/g;E.parseImport=function(e){return e=e.replace(h,(function(e,t,r){return(e=E.source(r))?E.parseImport(e):""}))};var I=/(@export)\s*([0-9a-zA-Z_\-\.]*)\s*\n([\s\S]*?)@end/g;E.import=function(e){e.replace(I,(function(e,t,r,n){if(n=n.replace(/(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+\x24)/g,"")){for(var i,a=r.split("."),s=E.codes,o=0;o<a.length-1;)s[i=a[o++]]||(s[i]={}),s=s[i];s[i=a[o]]=n}return n}))},E.codes={},E.source=function(e){for(var t=e.split("."),r=E.codes,n=0;r&&n<t.length;){r=r[t[n++]]}return"string"!=typeof r?"":r},exports.default=E;