UNPKG

cione-comp-lib

Version:

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

2 lines (1 loc) 3.08 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var e=require("../Texture2D.js"),t=require("../TextureCube.js"),a=require("../core/vendor.js"),r=require("../prePass/EnvironmentMap.js"),n=require("../plugin/Skybox.js"),d=require("../Scene.js"),i=require("./dds.js"),u=require("./hdr.js"),o={loadTexture:function(a,r,n,d){var l;if("function"==typeof r?(d=n=r,r={}):r=r||{},"string"==typeof a){if(a.match(/.hdr$/)||"hdr"===r.fileType)return l=new e.default({width:0,height:0,sRGB:!1}),o._fetchTexture(a,(function(e){u.default.parseRGBE(e,l,r.exposure),l.dirty(),n&&n(l)}),d),l;a.match(/.dds$/)||"dds"===r.fileType?(l=new e.default({width:0,height:0}),o._fetchTexture(a,(function(e){i.default.parse(e,l),l.dirty(),n&&n(l)}),d)):((l=new e.default).load(a),l.success(n),l.error(d))}else"object"==typeof a&&void 0!==a.px&&((l=new t.default).load(a),l.success(n),l.error(d));return l},loadPanorama:function(e,t,a,r,n,d){var i=this;"function"==typeof r?(d=n=r,r={}):r=r||{},o.loadTexture(t,r,(function(t){t.flipY=r.flipY||!1,i.panoramaToCubeMap(e,t,a,r),t.dispose(e),n&&n(a)}),d)},panoramaToCubeMap:function(e,t,a,i){var u=new r.default,o=new n.default({scene:new d.default});return o.setEnvironmentMap(t),(i=i||{}).encodeRGBM&&o.material.define("fragment","RGBM_ENCODE"),a.sRGB=t.sRGB,u.texture=a,u.render(e,o.scene),u.texture=null,u.dispose(e),a},heightToNormal:function(e,t){var a=document.createElement("canvas"),r=a.width=e.width,n=a.height=e.height,d=a.getContext("2d");d.drawImage(e,0,0,r,n),t=t||!1;for(var i=d.getImageData(0,0,r,n),u=d.createImageData(r,n),o=0;o<i.data.length;o+=4){if(t){var l=i.data[o],f=i.data[o+1],s=i.data[o+2];if(Math.abs(l-f)+Math.abs(f-s)>20)return e}var c,h,g,p;o%(4*r)==0?(c=i.data[o],g=i.data[o+4]):o%(4*r)==4*(r-1)?(c=i.data[o-4],g=i.data[o]):(c=i.data[o-4],g=i.data[o+4]),o<4*r?(h=i.data[o],p=i.data[o+4*r]):o>r*(n-1)*4?(h=i.data[o-4*r],p=i.data[o]):(h=i.data[o-4*r],p=i.data[o+4*r]),u.data[o]=c-g+127,u.data[o+1]=h-p+127,u.data[o+2]=255,u.data[o+3]=255}return d.putImageData(u,0,0),a},isHeightImage:function(e,t,a){if(!e||!e.width||!e.height)return!1;var r=document.createElement("canvas"),n=r.getContext("2d"),d=t||32;a=a||20,r.width=r.height=d,n.drawImage(e,0,0,d,d);for(var i=n.getImageData(0,0,d,d),u=0;u<i.data.length;u+=4){var o=i.data[u],l=i.data[u+1],f=i.data[u+2];if(Math.abs(o-l)+Math.abs(l-f)>a)return!1}return!0},_fetchTexture:function(e,t,r){a.default.request.get({url:e,responseType:"arraybuffer",onload:t,onerror:r})},createChessboard:function(t,a,r,n){t=t||512,a=a||64,r=r||"black",n=n||"white";var d=Math.ceil(t/a),i=document.createElement("canvas");i.width=t,i.height=t;var u=i.getContext("2d");u.fillStyle=n,u.fillRect(0,0,t,t),u.fillStyle=r;for(var o=0;o<d;o++)for(var l=0;l<d;l++){(l%2?o%2:o%2-1)&&u.fillRect(o*a,l*a,a,a)}return new e.default({image:i,anisotropic:8})},createBlank:function(t){var a=document.createElement("canvas");a.width=1,a.height=1;var r=a.getContext("2d");return r.fillStyle=t,r.fillRect(0,0,1,1),new e.default({image:a})}},l=o;exports.default=l;