cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
2 lines (1 loc) • 3.35 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var e=require("./core/util.js"),t=require("./compositor/Compositor.js"),r=require("./compositor/SceneNode.js"),a=require("./compositor/TextureNode.js"),i=require("./compositor/FilterNode.js"),n=require("./Shader.js"),u=require("./Texture.js"),s=require("./Texture2D.js"),o=require("./TextureCube.js");require("./shader/registerBuiltinCompositor.js").default(n.default);var f=/^#source\((.*?)\)/;function p(e,t,u){var s,o,p,c,l=e.type||"filter";if("filter"===l){var v=e.shader.trim(),g=f.exec(v);if(g?s=n.default.source(g[1].trim()):"#"===v.charAt(0)&&(s=t.shaders[v.substr(1)]),s||(s=v),!s)return}if(e.inputs)for(var x in o={},e.inputs)"string"==typeof e.inputs[x]?o[x]=e.inputs[x]:o[x]={node:e.inputs[x].node,pin:e.inputs[x].pin};if(e.outputs)for(var x in p={},e.outputs){var w=e.outputs[x];p[x]={},null!=w.attachment&&(p[x].attachment=w.attachment),null!=w.keepLastFrame&&(p[x].keepLastFrame=w.keepLastFrame),null!=w.outputLastFrame&&(p[x].outputLastFrame=w.outputLastFrame),w.parameters&&(p[x].parameters=m(w.parameters))}if(c="scene"===l?new r.default({name:e.name,scene:u.scene,camera:u.camera,outputs:p}):"texture"===l?new a.default({name:e.name,outputs:p}):new i.default({name:e.name,shader:s,inputs:o,outputs:p})){if(e.parameters)for(var x in e.parameters){"string"==typeof(y=e.parameters[x])?"#"===(y=y.trim()).charAt(0)?y=t.textures[y.substr(1)]:c.on("beforerender",d(x,h(y))):"function"==typeof y&&c.on("beforerender",y),c.setParameter(x,y)}if(e.defines&&c.pass)for(var x in e.defines){var y=e.defines[x];c.pass.material.define("fragment",x,y)}}return c}function c(e,t){return e}function l(e,t){return t}function m(e){var t={};if(!e)return t;["type","minFilter","magFilter","wrapS","wrapT","flipY","useMipmap"].forEach((function(r){var a=e[r];null!=a&&("string"==typeof a&&(a=u.default[a]),t[r]=a)}));var r=e.scale||1;return["width","height"].forEach((function(a){if(null!=e[a]){var i=e[a];"string"==typeof i?(i=i.trim(),t[a]=(n=h(i),u=(u=r)||1,function(e){var t=e.getDevicePixelRatio(),r=e.getWidth()*u,a=e.getHeight()*u;return n(r,a,t)})):t[a]=i}var n,u})),t.width||(t.width=c),t.height||(t.height=l),null!=e.useMipmap&&(t.useMipmap=e.useMipmap),t}function d(e,t){return function(r){var a=r.getDevicePixelRatio(),i=r.getWidth(),n=r.getHeight(),u=t(i,n,a);this.setParameter(e,u)}}function h(e){var t=/^expr\((.*)\)$/.exec(e);if(t)try{var r=new Function("width","height","dpr","return "+t[1]);return r(1,1),r}catch(a){throw new Error("Invalid expression.")}}exports.default=function(r,a){var i=new t.default;a=a||{};var n={textures:{},parameters:{}};for(var u in r.parameters){var f=r.parameters[u];n.parameters[u]=m(f)}return function(t,r,a,i){if(!t.textures)return void i({});var n={},u=0,f=!1,p=a.textureRootPath;e.default.each(t.textures,(function(t,r){var a,c=t.path,l=m(t.parameters);if(Array.isArray(c)&&6===c.length)p&&(c=c.map((function(t){return e.default.relative2absolute(t,p)}))),a=new o.default(l);else{if("string"!=typeof c)return;p&&(c=e.default.relative2absolute(c,p)),a=new s.default(l)}a.load(c),u++,a.once("success",(function(){n[r]=a,0===--u&&(i(n),f=!0)}))})),0!==u||f||i(n)}(r,0,a,(function(e){n.textures=e,function(e,t){for(var u=0;u<r.nodes.length;u++){var s=p(r.nodes[u],n,a);s&&i.addNode(s)}}()})),i};