oidn-web 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/oidn.js +507 -507
- package/dist/oidn.umd.cjs +10 -10
- package/lib/process.js +35 -35
- package/lib/process.js.map +1 -1
- package/package.json +1 -1
- package/src/process.ts +35 -35
package/dist/oidn.umd.cjs
CHANGED
|
@@ -3057,7 +3057,7 @@ const x1 =${Fh};
|
|
|
3057
3057
|
|
|
3058
3058
|
const normScale = ${Wh};
|
|
3059
3059
|
const rcpNormScale = ${Gh};
|
|
3060
|
-
`;class hx{constructor(t,e){V(this,"_inputPassAux");V(this,"_inputPassColor");V(this,"_outputPass");V(this,"_copyPass");V(this,"_isInputTexture");this._device=t,this._isHDR=e;const s=[{label:"inputScale",type:"f32",data:new Float32Array([1])},{label:"inputSize",type:"
|
|
3060
|
+
`;class hx{constructor(t,e){V(this,"_inputPassAux");V(this,"_inputPassColor");V(this,"_outputPass");V(this,"_copyPass");V(this,"_isInputTexture");this._device=t,this._isHDR=e;const s=[{label:"inputScale",type:"f32",data:new Float32Array([1])},{label:"inputSize",type:"vec2i",data:new Int32Array(2)},{label:"outputSize",type:"vec2i",data:new Int32Array(2)},{label:"inputOffset",type:"vec2i",data:new Int32Array(2)}];this._inputPassAux=new to("inputPassAux",this._device,{inputs:["color","albedo","normal"],outputs:["color","albedo","normal"],uniforms:s,csDefine:"",csMain:""}),this._inputPassColor=new to("inputPassColor",this._device,{inputs:["color"],outputs:["color"],uniforms:s,csDefine:"",csMain:""}),this._outputPass=new to("outputPass",this._device,{inputs:["color","raw"],outputs:["color"],uniforms:[{label:"inputScale",type:"f32",data:new Float32Array([1])},{label:"inputSize",type:"vec2i",data:new Int32Array(2)},{label:"outputSize",type:"vec2i",data:new Int32Array(2)},{label:"imageSize",type:"vec2i",data:new Int32Array(2)},{label:"inputOffset",type:"vec2i",data:new Int32Array(2)},{label:"outputOffset",type:"vec2i",data:new Int32Array(2)}],csDefine:"",csMain:""}),this._copyPass=new to("copyPass",this._device,{inputs:["color"],outputs:["color"],autoUpdateOutputBuffer:!1,uniforms:[{label:"size",type:"vec2i",data:new Int32Array(2)}],csMain:`
|
|
3061
3061
|
let outIdx = i32(globalId.x + globalId.y * u32(size.x));
|
|
3062
3062
|
out_color[outIdx] = textureLoad(in_color, globalId.xy, 0);
|
|
3063
3063
|
`}),this._inputPassAux.setOutputParams({color:{channels:3},albedo:{channels:3},normal:{channels:3}}),this._inputPassColor.setOutputParams({color:{channels:3}}),this._outputPass.setOutputParams({color:{channels:4}})}_updatePasses(t,e=!1){if(this._isInputTexture!=null&&this._isInputTexture===t)return;this._isInputTexture=t;const s=this._isHDR,r=`
|
|
@@ -3071,12 +3071,12 @@ fn PUForward(y: f32) -> f32 {
|
|
|
3071
3071
|
return e * log(y + f) + g;
|
|
3072
3072
|
}
|
|
3073
3073
|
}`;function o(a){return t?`textureLoad(in_${a}, globalId.xy + vec2u(inputOffset), 0)`:`in_${a}[inIdx]`}const i=`
|
|
3074
|
-
let x =
|
|
3075
|
-
let y =
|
|
3076
|
-
let inIdx =
|
|
3074
|
+
let x = i32(globalId.x);
|
|
3075
|
+
let y = i32(globalId.y);
|
|
3076
|
+
let inIdx = (y + inputOffset.y) * inputSize.x + (x + inputOffset.x);
|
|
3077
3077
|
let col = ${o("color")};
|
|
3078
3078
|
|
|
3079
|
-
let outIdx =
|
|
3079
|
+
let outIdx = y * outputSize.x + x;
|
|
3080
3080
|
|
|
3081
3081
|
if (${e}) {
|
|
3082
3082
|
// Denoise the inversed alpha. Or the anti aliased edge will be too dark after denoised
|
|
@@ -3108,13 +3108,13 @@ fn PUInverse(y: f32) -> f32 {
|
|
|
3108
3108
|
}
|
|
3109
3109
|
}
|
|
3110
3110
|
`,csMain:`
|
|
3111
|
-
let x =
|
|
3112
|
-
let y =
|
|
3111
|
+
let x = i32(globalId.x);
|
|
3112
|
+
let y = i32(globalId.y);
|
|
3113
3113
|
if (x >= outputSize.x || y >= outputSize.y) {
|
|
3114
3114
|
return;
|
|
3115
3115
|
}
|
|
3116
|
-
let inIdx =
|
|
3117
|
-
let outIdx =
|
|
3116
|
+
let inIdx = (y + inputOffset.y) * inputSize.x + x + inputOffset.x;
|
|
3117
|
+
let outIdx = (y + outputOffset.y) * imageSize.x + x + outputOffset.x;
|
|
3118
3118
|
let col = in_color[inIdx];
|
|
3119
3119
|
let raw = ${t?"textureLoad(in_raw, globalId.xy + vec2u(outputOffset), 0)":"in_raw[outIdx]"};
|
|
3120
3120
|
|
|
@@ -3131,7 +3131,7 @@ else if (${s}) {
|
|
|
3131
3131
|
else {
|
|
3132
3132
|
out_color[outIdx] = vec4f(col.rgb, raw.a);
|
|
3133
3133
|
}
|
|
3134
|
-
`})}setImageSize(t,e){this._inputPassAux.setUniform("inputSize",new Float32Array([t,e])),this._inputPassColor.setUniform("inputSize",new Float32Array([t,e])),this._outputPass.setUniform("imageSize",new Float32Array([t,e])),this._outputPass.setSize(t,e),this._copyPass.setSize(t,e),this._copyPass.setUniform("size",new Float32Array([t,e]))}setInputTile(t){const e=new Float32Array([t.width,t.height]);[this._inputPassAux,this._inputPassColor].forEach(s=>{s.setUniform("inputOffset",new Float32Array([t.x,t.y])),s.setUniform("outputSize",e),s.setSize(e[0],e[1])}),this._outputPass.setUniform("inputSize",e)}setOutputTile(t,e){const s=this._outputPass,r=new Float32Array([t.width,t.height]),o=t.x-e.x,i=t.y-e.y;s.setUniform("outputSize",r),s.setUniform("inputOffset",new Float32Array([o,i])),s.setUniform("outputOffset",new Float32Array([t.x,t.y])),s.setExecuteSize(r[0],r[1])}forward(t,e,s,r){const o=t instanceof GPUTexture;this._updatePasses(o,r);const i=this._inputPassAux,a=this._inputPassColor,l=this._device.createCommandEncoder();function u(c){return c instanceof GPUTexture?{texture:c,channels:4}:{buffer:c,channels:4}}return e&&s?i.createPass(l,{color:u(t),albedo:u(e),normal:u(s)}):a.createPass(l,{color:u(t)}),this._device.queue.submit([l.finish()]),e&&s?{color:i.getOutput("color"),albedo:i.getOutput("albedo"),normal:i.getOutput("normal")}:{color:a.getOutput("color")}}inverse(t,e){const r=this._device.createCommandEncoder(),o=this._outputPass;return o.createPass(r,{color:{buffer:t,channels:4},raw:e instanceof GPUBuffer?{buffer:e,channels:4}:{texture:e,channels:4}}),this._device.queue.submit([r.finish()]),o.getOutput("color")}copyInputDataToOutput(t){const e=this._device.createCommandEncoder(),r=this._outputPass.getOutput("color"),o=this._copyPass;t instanceof GPUTexture?(o.setOutputBuffers({color:r}),o.createPass(e,{color:{texture:t,channels:4}})):e.copyBufferToBuffer(t,0,r,0,r.size),this._device.queue.submit([e.finish()])}dispose(){this._outputPass.dispose(),this._inputPassAux.dispose()}}function qh(n,t){const e=n.buffer;if(t==="Float32")return new Float32Array(n.buffer);const s=new ft(e),r=new Float32Array(s.length);for(let o=0;o<r.length;++o)r[o]=s[o];return r}function fx(n,t){const[e,s,r,o]=t,i=new Float32Array(n.length);for(let a=0;a<e;++a)for(let l=0;l<s;++l)for(let u=0;u<r;++u)for(let c=0;c<o;++c){const h=a*s*r*o+l*r*o+u*o+c,f=u*o*s*e+c*s*e+l*e+a;i[f]=n[h]}return i}function Bs(n,t){return Math.ceil(n/t)*t}function eo(n){return n.data instanceof GPUBuffer||n.data instanceof GPUTexture}const dx=174,px=202,jh=16,no=Bs(dx/2,jh),Hh=Bs(px/2,jh);class Kh{constructor(t,e,s={}){V(this,"_tfModel");V(this,"_device");V(this,"_tileWidth",0);V(this,"_tileHeight",0);V(this,"_tileOverlapX",0);V(this,"_tileOverlapY",0);V(this,"_aux");V(this,"_hdr");V(this,"_dataProcessGPU");V(this,"_maxTileSize");V(this,"_tensors",new Map);V(this,"_modelsCache",new Map);this._hostTensors=t,this._backend=e,this._aux=s.aux||!1,this._hdr=s.hdr||!1,this._maxTileSize=Bs(s.maxTileSize??512,2),this._device=this._backend.device}getDevice(){return this._device}_buildModel(t){const s=3+(this._aux?6:0),r=this._getTileSizeWithOverlap(),o=this._modelsCache,i=[r.width,r.height].join(",");if(o.has(i)){this._tfModel=o.get(i);return}const a=Yw({name:"input",shape:[r.height,r.width,s],dtype:"float32"});this._tfModel=new Mr({inputs:[a],outputs:t?this._addNetLarge(a):this._addNet(a)}),o.set(i,this._tfModel)}_createConv(t,e,s){const r=t+".weight",o=t+".bias",i=this._tensors;let a=i.get(r),l=i.get(o);const u=this._hostTensors.get(r);if(!a){const h=u.desc.dims;a=nr(fx(qh(u.data,u.desc.dataType),h),[h[2],h[3],h[1],h[0]],"float32"),i.set(r,a)}if(!l){const h=this._hostTensors.get(t+".bias");l=Pt(qh(h.data,h.desc.dataType),"float32"),i.set(o,l)}return new Yn({name:t,filters:u.desc.dims[0],kernelSize:u.desc.dims.slice(2,4),useBias:!0,activation:s,padding:"same",weights:[a,l],trainable:!1}).apply(e)}_createConcatConv(t,e,s){const r=new Ti({name:t+"/concat",trainable:!1,axis:3});return this._createConv(t,r.apply([e,s]),"relu")}_createPooling(t){return new Ei({name:t.name+"/pooling",poolSize:[2,2],strides:[2,2],padding:"same",trainable:!1}).apply(t)}_addUpsamplingLayer(t){return new Ai({name:t.name+"/upsampling",size:[2,2],trainable:!1}).apply(t)}_addNet(t){let e=this._createConv("enc_conv0",t,"relu");const s=e=this._createPooling(this._createConv("enc_conv1",e,"relu")),r=e=this._createPooling(this._createConv("enc_conv2",e,"relu")),o=e=this._createPooling(this._createConv("enc_conv3",e,"relu")),i=e=this._createPooling(this._createConv("enc_conv4",e,"relu"));return e=this._createConv("enc_conv5a",i,"relu"),e=this._addUpsamplingLayer(this._createConv("enc_conv5b",e,"relu")),e=this._createConcatConv("dec_conv4a",e,o),e=this._addUpsamplingLayer(this._createConv("dec_conv4b",e,"relu")),e=this._createConcatConv("dec_conv3a",e,r),e=this._addUpsamplingLayer(this._createConv("dec_conv3b",e,"relu")),e=this._createConcatConv("dec_conv2a",e,s),e=this._addUpsamplingLayer(this._createConv("dec_conv2b",e,"relu")),e=this._createConcatConv("dec_conv1a",e,t),e=this._createConv("dec_conv1b",e,"relu"),e=this._createConv("dec_conv0",e,"relu"),e}_addNetLarge(t){let e=this._createConv("enc_conv1a",t,"relu");const s=e=this._createPooling(this._createConv("enc_conv1b",e,"relu"));e=this._createConv("enc_conv2a",e,"relu");const r=e=this._createPooling(this._createConv("enc_conv2b",e,"relu"));e=this._createConv("enc_conv3a",e,"relu");const o=e=this._createPooling(this._createConv("enc_conv3b",e,"relu"));e=this._createConv("enc_conv4a",e,"relu");const i=e=this._createPooling(this._createConv("enc_conv4b",e,"relu"));return e=this._createConv("enc_conv5a",i,"relu"),e=this._addUpsamplingLayer(this._createConv("enc_conv5b",e,"relu")),e=this._createConcatConv("dec_conv4a",e,o),e=this._addUpsamplingLayer(this._createConv("dec_conv4b",e,"relu")),e=this._createConcatConv("dec_conv3a",e,r),e=this._addUpsamplingLayer(this._createConv("dec_conv3b",e,"relu")),e=this._createConcatConv("dec_conv2a",e,s),e=this._addUpsamplingLayer(this._createConv("dec_conv2b",e,"relu")),e=this._createConcatConv("dec_conv1a",e,t),e=this._createConv("dec_conv1b",e,"relu"),e=this._createConv("dec_conv1c",e,"relu"),e}_updateModel(t,e){const s=this._hostTensors.has("enc_conv1b.weight"),r=this._maxTileSize;let o=r,i=r,a=s?Hh:no,l=s?Hh:no;t<r+no*2&&(o=Bs(t,r/2),t<=r&&(a=0)),e<r+no*2&&(i=Bs(e,r/2),e<=r&&(l=0));const u=Math.max(o,i),c=Math.max(a,l);o=u,i=u,a=c,l=c,(o!==this._tileWidth||i!==this._tileHeight||a!==this._tileOverlapX||l!==this._tileOverlapY||!this._tfModel)&&(this._tileWidth=o,this._tileHeight=i,this._tileOverlapX=a,this._tileOverlapY=l,this._buildModel(s))}_getTileSizeWithOverlap(){return{width:this._tileWidth+2*this._tileOverlapX,height:this._tileHeight+2*this._tileOverlapY}}_processImageData(t,e,s,r){const o=t.data,i=o.length/4,a=this._aux?9:3,l=new Float32Array(i*a);if(e&&!s||s&&!e)throw new Error("Normal map and albedo map are both required");if(e&&s&&(e.width!==s.width||e.height!==s.height||t.width!==e.width||t.height!==e.height))throw new Error("Image size mismatch");const u=e==null?void 0:e.data,c=s==null?void 0:s.data;for(let h=0;h<o.length;h+=4){const f=h/4*a;for(let d=0;d<3;d++)r?l[f+d]=o[h+d]:l[f+d]=o[h+d]/255,u&&(l[f+d+3]=u[h+d]/255),c&&(l[f+d+6]=c[h+d]/255)}return l}_readTile(t,e,s,r){const o=new Float32Array(s.width*s.height*e);for(let i=0;i<s.height;i++)for(let a=0;a<s.width;a++){const l=((i+s.y)*r+(a+s.x))*e,u=(i*s.width+a)*e;for(let c=0;c<e;c++)o[u+c]=t[l+c]}return o}_writeTile(t,e,s,r,o,i){const{data:a,width:l}=t,u=s.x-e.x,c=s.y-e.y;for(let h=0;h<s.height;h++)for(let f=0;f<s.width;f++){const d=((h+c)*o+f+u)*3,p=((h+s.y)*l+(f+s.x))*4;for(let g=0;g<3;g++)i?a[p+g]=r[d+g]:a[p+g]=Math.min(Math.max(r[d+g]*255,0),255);t.data[p+3]=i?1:255}}_executeTile(t,e,s,r,o,i,a,l,u){const c=this._aux?9:3,h=this._tileOverlapX,f=this._tileOverlapY;let d=this._getTileSizeWithOverlap(),p={width:this._tileWidth,height:this._tileHeight},g=r>0?r*p.width-h:0,m=Math.min(g+d.width,i);g=Math.max(m-d.width,0);let b=o>0?o*p.height-f:0,y=Math.min(b+d.height,a);b=Math.max(y-d.height,0);const S=d.width,x=d.height,v=new ca(g,b,S,x);let E,D=1;const k=this._device;let T=this._dataProcessGPU;if(t instanceof Float32Array){let U=this._readTile(t,c,v,i);l&&(D=lx({data:U,channels:c}),U=ux({data:U,channels:c,inputScale:D})),E=nr(U,[1,x,S,c],"float32")}else{T||(T=this._dataProcessGPU=new hx(k,l)),T.setImageSize(i,a),T.setInputTile(v),r===0&&o===0&&T.copyInputDataToOutput(t.color);const{color:U,albedo:j,normal:Zt}=T.forward(t.color,this._aux?t.albedo:void 0,this._aux?t.normal:void 0,u),qt=xe=>{const jt=nr({buffer:xe,zeroCopy:!0},[1,x,S,4]);return cs(jt,[0,0,0,0],[1,x,S,3])};if(this._aux){const xe=[U,j,Zt].map(jt=>qt(jt));E=qp(xe,3)}else E=qt(U)}let R;const B=this._tfModel.predict(E),K=Math.min(p.width,i),Z=Math.min(p.height,a),W=new ca(r*K,o*Z,K,Z);if(W.width=Math.min(W.width,i-W.x),W.height=Math.min(W.height,a-W.y),t instanceof Float32Array){let U=B.dataSync();l&&(U=cx({data:U,channels:3,inputScale:D})),this._writeTile(s,v,W,U,d.width,l);for(let j=0;j<Z;j++)for(let Zt=0;Zt<K;Zt++){const qt=(j*K+Zt)*4,xe=((j+W.y)*i+(Zt+W.x))*4;for(let jt=0;jt<4;jt++)e.data[qt+jt]=s.data[xe+jt]}}else{T.setOutputTile(W,v);const U=Fp(B,[[0,0],[0,0],[0,0],[0,1]]);R=T.inverse(U.dataToGPU().buffer,t.color)}return R}tileExecute({color:t,albedo:e,normal:s,done:r,progress:o,denoiseAlpha:i}){if(this._aux&&(!e||!s))throw new Error("Normal map and albedo map are both required");if(!this._aux&&(e||s))throw new Error("Normal map and albedo map are not required");const a=t.width,l=t.height;this._updateModel(a,l);const u=this._hdr||!1;let c;eo(t)||(c=this._processImageData(t,e,s,u));const h=this._tileWidth,f=this._tileHeight,d=Math.ceil(l/f),p=Math.ceil(a/h);function g(x,v){return u?{data:new Float32Array(x*v*4),width:x,height:v}:new ImageData(x,v)}const m=eo(t)?void 0:g(a,l),b=eo(t)?void 0:g(Math.min(h,a),Math.min(f,l));let y=!1;const S=(x,v)=>{if(y)return;let E;A.startScope(),E=this._executeTile(eo(t)?{color:t.data,albedo:e==null?void 0:e.data,normal:s==null?void 0:s.data}:c,b,m,x,v,a,l,u,i),A.endScope();const D=m||{data:E,width:a,height:l};o==null||o(D,b,new ca(x*h,v*f,h,f),x+v*p,p*d),x+1<p||v+1<d?requestAnimationFrame(()=>{x+1<p?S(x+1,v):v+1<d&&S(0,v+1)}):r(D)};return S(0,0),()=>{y=!0}}dispose(){var t,e;(t=this._tfModel)==null||t.dispose(),(e=this._dataProcessGPU)==null||e.dispose(),this._tensors.forEach(s=>s.dispose())}}/**
|
|
3134
|
+
`})}setImageSize(t,e){this._inputPassAux.setUniform("inputSize",new Int32Array([t,e])),this._inputPassColor.setUniform("inputSize",new Int32Array([t,e])),this._outputPass.setUniform("imageSize",new Int32Array([t,e])),this._outputPass.setSize(t,e),this._copyPass.setSize(t,e),this._copyPass.setUniform("size",new Int32Array([t,e]))}setInputTile(t){const e=new Int32Array([t.width,t.height]);[this._inputPassAux,this._inputPassColor].forEach(s=>{s.setUniform("inputOffset",new Int32Array([t.x,t.y])),s.setUniform("outputSize",e),s.setSize(e[0],e[1])}),this._outputPass.setUniform("inputSize",e)}setOutputTile(t,e){const s=this._outputPass,r=new Int32Array([t.width,t.height]),o=t.x-e.x,i=t.y-e.y;s.setUniform("outputSize",r),s.setUniform("inputOffset",new Int32Array([o,i])),s.setUniform("outputOffset",new Int32Array([t.x,t.y])),s.setExecuteSize(r[0],r[1])}forward(t,e,s,r){const o=t instanceof GPUTexture;this._updatePasses(o,r);const i=this._inputPassAux,a=this._inputPassColor,l=this._device.createCommandEncoder();function u(c){return c instanceof GPUTexture?{texture:c,channels:4}:{buffer:c,channels:4}}return e&&s?i.createPass(l,{color:u(t),albedo:u(e),normal:u(s)}):a.createPass(l,{color:u(t)}),this._device.queue.submit([l.finish()]),e&&s?{color:i.getOutput("color"),albedo:i.getOutput("albedo"),normal:i.getOutput("normal")}:{color:a.getOutput("color")}}inverse(t,e){const r=this._device.createCommandEncoder(),o=this._outputPass;return o.createPass(r,{color:{buffer:t,channels:4},raw:e instanceof GPUBuffer?{buffer:e,channels:4}:{texture:e,channels:4}}),this._device.queue.submit([r.finish()]),o.getOutput("color")}copyInputDataToOutput(t){const e=this._device.createCommandEncoder(),r=this._outputPass.getOutput("color"),o=this._copyPass;t instanceof GPUTexture?(o.setOutputBuffers({color:r}),o.createPass(e,{color:{texture:t,channels:4}})):e.copyBufferToBuffer(t,0,r,0,r.size),this._device.queue.submit([e.finish()])}dispose(){this._outputPass.dispose(),this._inputPassAux.dispose()}}function qh(n,t){const e=n.buffer;if(t==="Float32")return new Float32Array(n.buffer);const s=new ft(e),r=new Float32Array(s.length);for(let o=0;o<r.length;++o)r[o]=s[o];return r}function fx(n,t){const[e,s,r,o]=t,i=new Float32Array(n.length);for(let a=0;a<e;++a)for(let l=0;l<s;++l)for(let u=0;u<r;++u)for(let c=0;c<o;++c){const h=a*s*r*o+l*r*o+u*o+c,f=u*o*s*e+c*s*e+l*e+a;i[f]=n[h]}return i}function Bs(n,t){return Math.ceil(n/t)*t}function eo(n){return n.data instanceof GPUBuffer||n.data instanceof GPUTexture}const dx=174,px=202,jh=16,no=Bs(dx/2,jh),Hh=Bs(px/2,jh);class Kh{constructor(t,e,s={}){V(this,"_tfModel");V(this,"_device");V(this,"_tileWidth",0);V(this,"_tileHeight",0);V(this,"_tileOverlapX",0);V(this,"_tileOverlapY",0);V(this,"_aux");V(this,"_hdr");V(this,"_dataProcessGPU");V(this,"_maxTileSize");V(this,"_tensors",new Map);V(this,"_modelsCache",new Map);this._hostTensors=t,this._backend=e,this._aux=s.aux||!1,this._hdr=s.hdr||!1,this._maxTileSize=Bs(s.maxTileSize??512,2),this._device=this._backend.device}getDevice(){return this._device}_buildModel(t){const s=3+(this._aux?6:0),r=this._getTileSizeWithOverlap(),o=this._modelsCache,i=[r.width,r.height].join(",");if(o.has(i)){this._tfModel=o.get(i);return}const a=Yw({name:"input",shape:[r.height,r.width,s],dtype:"float32"});this._tfModel=new Mr({inputs:[a],outputs:t?this._addNetLarge(a):this._addNet(a)}),o.set(i,this._tfModel)}_createConv(t,e,s){const r=t+".weight",o=t+".bias",i=this._tensors;let a=i.get(r),l=i.get(o);const u=this._hostTensors.get(r);if(!a){const h=u.desc.dims;a=nr(fx(qh(u.data,u.desc.dataType),h),[h[2],h[3],h[1],h[0]],"float32"),i.set(r,a)}if(!l){const h=this._hostTensors.get(t+".bias");l=Pt(qh(h.data,h.desc.dataType),"float32"),i.set(o,l)}return new Yn({name:t,filters:u.desc.dims[0],kernelSize:u.desc.dims.slice(2,4),useBias:!0,activation:s,padding:"same",weights:[a,l],trainable:!1}).apply(e)}_createConcatConv(t,e,s){const r=new Ti({name:t+"/concat",trainable:!1,axis:3});return this._createConv(t,r.apply([e,s]),"relu")}_createPooling(t){return new Ei({name:t.name+"/pooling",poolSize:[2,2],strides:[2,2],padding:"same",trainable:!1}).apply(t)}_addUpsamplingLayer(t){return new Ai({name:t.name+"/upsampling",size:[2,2],trainable:!1}).apply(t)}_addNet(t){let e=this._createConv("enc_conv0",t,"relu");const s=e=this._createPooling(this._createConv("enc_conv1",e,"relu")),r=e=this._createPooling(this._createConv("enc_conv2",e,"relu")),o=e=this._createPooling(this._createConv("enc_conv3",e,"relu")),i=e=this._createPooling(this._createConv("enc_conv4",e,"relu"));return e=this._createConv("enc_conv5a",i,"relu"),e=this._addUpsamplingLayer(this._createConv("enc_conv5b",e,"relu")),e=this._createConcatConv("dec_conv4a",e,o),e=this._addUpsamplingLayer(this._createConv("dec_conv4b",e,"relu")),e=this._createConcatConv("dec_conv3a",e,r),e=this._addUpsamplingLayer(this._createConv("dec_conv3b",e,"relu")),e=this._createConcatConv("dec_conv2a",e,s),e=this._addUpsamplingLayer(this._createConv("dec_conv2b",e,"relu")),e=this._createConcatConv("dec_conv1a",e,t),e=this._createConv("dec_conv1b",e,"relu"),e=this._createConv("dec_conv0",e,"relu"),e}_addNetLarge(t){let e=this._createConv("enc_conv1a",t,"relu");const s=e=this._createPooling(this._createConv("enc_conv1b",e,"relu"));e=this._createConv("enc_conv2a",e,"relu");const r=e=this._createPooling(this._createConv("enc_conv2b",e,"relu"));e=this._createConv("enc_conv3a",e,"relu");const o=e=this._createPooling(this._createConv("enc_conv3b",e,"relu"));e=this._createConv("enc_conv4a",e,"relu");const i=e=this._createPooling(this._createConv("enc_conv4b",e,"relu"));return e=this._createConv("enc_conv5a",i,"relu"),e=this._addUpsamplingLayer(this._createConv("enc_conv5b",e,"relu")),e=this._createConcatConv("dec_conv4a",e,o),e=this._addUpsamplingLayer(this._createConv("dec_conv4b",e,"relu")),e=this._createConcatConv("dec_conv3a",e,r),e=this._addUpsamplingLayer(this._createConv("dec_conv3b",e,"relu")),e=this._createConcatConv("dec_conv2a",e,s),e=this._addUpsamplingLayer(this._createConv("dec_conv2b",e,"relu")),e=this._createConcatConv("dec_conv1a",e,t),e=this._createConv("dec_conv1b",e,"relu"),e=this._createConv("dec_conv1c",e,"relu"),e}_updateModel(t,e){const s=this._hostTensors.has("enc_conv1b.weight"),r=this._maxTileSize;let o=r,i=r,a=s?Hh:no,l=s?Hh:no;t<r+no*2&&(o=Bs(t,r/2),t<=r&&(a=0)),e<r+no*2&&(i=Bs(e,r/2),e<=r&&(l=0));const u=Math.max(o,i),c=Math.max(a,l);o=u,i=u,a=c,l=c,(o!==this._tileWidth||i!==this._tileHeight||a!==this._tileOverlapX||l!==this._tileOverlapY||!this._tfModel)&&(this._tileWidth=o,this._tileHeight=i,this._tileOverlapX=a,this._tileOverlapY=l,this._buildModel(s))}_getTileSizeWithOverlap(){return{width:this._tileWidth+2*this._tileOverlapX,height:this._tileHeight+2*this._tileOverlapY}}_processImageData(t,e,s,r){const o=t.data,i=o.length/4,a=this._aux?9:3,l=new Float32Array(i*a);if(e&&!s||s&&!e)throw new Error("Normal map and albedo map are both required");if(e&&s&&(e.width!==s.width||e.height!==s.height||t.width!==e.width||t.height!==e.height))throw new Error("Image size mismatch");const u=e==null?void 0:e.data,c=s==null?void 0:s.data;for(let h=0;h<o.length;h+=4){const f=h/4*a;for(let d=0;d<3;d++)r?l[f+d]=o[h+d]:l[f+d]=o[h+d]/255,u&&(l[f+d+3]=u[h+d]/255),c&&(l[f+d+6]=c[h+d]/255)}return l}_readTile(t,e,s,r){const o=new Float32Array(s.width*s.height*e);for(let i=0;i<s.height;i++)for(let a=0;a<s.width;a++){const l=((i+s.y)*r+(a+s.x))*e,u=(i*s.width+a)*e;for(let c=0;c<e;c++)o[u+c]=t[l+c]}return o}_writeTile(t,e,s,r,o,i){const{data:a,width:l}=t,u=s.x-e.x,c=s.y-e.y;for(let h=0;h<s.height;h++)for(let f=0;f<s.width;f++){const d=((h+c)*o+f+u)*3,p=((h+s.y)*l+(f+s.x))*4;for(let g=0;g<3;g++)i?a[p+g]=r[d+g]:a[p+g]=Math.min(Math.max(r[d+g]*255,0),255);t.data[p+3]=i?1:255}}_executeTile(t,e,s,r,o,i,a,l,u){const c=this._aux?9:3,h=this._tileOverlapX,f=this._tileOverlapY;let d=this._getTileSizeWithOverlap(),p={width:this._tileWidth,height:this._tileHeight},g=r>0?r*p.width-h:0,m=Math.min(g+d.width,i);g=Math.max(m-d.width,0);let b=o>0?o*p.height-f:0,y=Math.min(b+d.height,a);b=Math.max(y-d.height,0);const S=d.width,x=d.height,v=new ca(g,b,S,x);let E,D=1;const k=this._device;let T=this._dataProcessGPU;if(t instanceof Float32Array){let U=this._readTile(t,c,v,i);l&&(D=lx({data:U,channels:c}),U=ux({data:U,channels:c,inputScale:D})),E=nr(U,[1,x,S,c],"float32")}else{T||(T=this._dataProcessGPU=new hx(k,l)),T.setImageSize(i,a),T.setInputTile(v),r===0&&o===0&&T.copyInputDataToOutput(t.color);const{color:U,albedo:j,normal:Zt}=T.forward(t.color,this._aux?t.albedo:void 0,this._aux?t.normal:void 0,u),qt=xe=>{const jt=nr({buffer:xe,zeroCopy:!0},[1,x,S,4]);return cs(jt,[0,0,0,0],[1,x,S,3])};if(this._aux){const xe=[U,j,Zt].map(jt=>qt(jt));E=qp(xe,3)}else E=qt(U)}let R;const B=this._tfModel.predict(E),K=Math.min(p.width,i),Z=Math.min(p.height,a),W=new ca(r*K,o*Z,K,Z);if(W.width=Math.min(W.width,i-W.x),W.height=Math.min(W.height,a-W.y),t instanceof Float32Array){let U=B.dataSync();l&&(U=cx({data:U,channels:3,inputScale:D})),this._writeTile(s,v,W,U,d.width,l);for(let j=0;j<Z;j++)for(let Zt=0;Zt<K;Zt++){const qt=(j*K+Zt)*4,xe=((j+W.y)*i+(Zt+W.x))*4;for(let jt=0;jt<4;jt++)e.data[qt+jt]=s.data[xe+jt]}}else{T.setOutputTile(W,v);const U=Fp(B,[[0,0],[0,0],[0,0],[0,1]]);R=T.inverse(U.dataToGPU().buffer,t.color)}return R}tileExecute({color:t,albedo:e,normal:s,done:r,progress:o,denoiseAlpha:i}){if(this._aux&&(!e||!s))throw new Error("Normal map and albedo map are both required");if(!this._aux&&(e||s))throw new Error("Normal map and albedo map are not required");const a=t.width,l=t.height;this._updateModel(a,l);const u=this._hdr||!1;let c;eo(t)||(c=this._processImageData(t,e,s,u));const h=this._tileWidth,f=this._tileHeight,d=Math.ceil(l/f),p=Math.ceil(a/h);function g(x,v){return u?{data:new Float32Array(x*v*4),width:x,height:v}:new ImageData(x,v)}const m=eo(t)?void 0:g(a,l),b=eo(t)?void 0:g(Math.min(h,a),Math.min(f,l));let y=!1;const S=(x,v)=>{if(y)return;let E;A.startScope(),E=this._executeTile(eo(t)?{color:t.data,albedo:e==null?void 0:e.data,normal:s==null?void 0:s.data}:c,b,m,x,v,a,l,u,i),A.endScope();const D=m||{data:E,width:a,height:l};o==null||o(D,b,new ca(x*h,v*f,h,f),x+v*p,p*d),x+1<p||v+1<d?requestAnimationFrame(()=>{x+1<p?S(x+1,v):v+1<d&&S(0,v+1)}):r(D)};return S(0,0),()=>{y=!0}}dispose(){var t,e;(t=this._tfModel)==null||t.dispose(),(e=this._dataProcessGPU)==null||e.dispose(),this._tensors.forEach(s=>s.dispose())}}/**
|
|
3135
3135
|
* @license
|
|
3136
3136
|
* Copyright 2019 Google LLC. All Rights Reserved.
|
|
3137
3137
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
package/lib/process.js
CHANGED
|
@@ -129,18 +129,18 @@ export class GPUDataProcess {
|
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
label: 'inputSize',
|
|
132
|
-
type: '
|
|
133
|
-
data: new
|
|
132
|
+
type: 'vec2i',
|
|
133
|
+
data: new Int32Array(2)
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
136
|
label: 'outputSize',
|
|
137
|
-
type: '
|
|
138
|
-
data: new
|
|
137
|
+
type: 'vec2i',
|
|
138
|
+
data: new Int32Array(2)
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
label: 'inputOffset',
|
|
142
|
-
type: '
|
|
143
|
-
data: new
|
|
142
|
+
type: 'vec2i',
|
|
143
|
+
data: new Int32Array(2)
|
|
144
144
|
}
|
|
145
145
|
];
|
|
146
146
|
this._inputPassAux = new WGPUComputePass('inputPassAux', this._device, {
|
|
@@ -168,28 +168,28 @@ export class GPUDataProcess {
|
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
170
|
label: 'inputSize',
|
|
171
|
-
type: '
|
|
172
|
-
data: new
|
|
171
|
+
type: 'vec2i',
|
|
172
|
+
data: new Int32Array(2)
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
175
|
label: 'outputSize',
|
|
176
|
-
type: '
|
|
177
|
-
data: new
|
|
176
|
+
type: 'vec2i',
|
|
177
|
+
data: new Int32Array(2)
|
|
178
178
|
},
|
|
179
179
|
{
|
|
180
180
|
label: 'imageSize',
|
|
181
|
-
type: '
|
|
182
|
-
data: new
|
|
181
|
+
type: 'vec2i',
|
|
182
|
+
data: new Int32Array(2)
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
185
|
label: 'inputOffset',
|
|
186
|
-
type: '
|
|
187
|
-
data: new
|
|
186
|
+
type: 'vec2i',
|
|
187
|
+
data: new Int32Array(2)
|
|
188
188
|
},
|
|
189
189
|
{
|
|
190
190
|
label: 'outputOffset',
|
|
191
|
-
type: '
|
|
192
|
-
data: new
|
|
191
|
+
type: 'vec2i',
|
|
192
|
+
data: new Int32Array(2)
|
|
193
193
|
}
|
|
194
194
|
],
|
|
195
195
|
csDefine: '',
|
|
@@ -202,8 +202,8 @@ export class GPUDataProcess {
|
|
|
202
202
|
uniforms: [
|
|
203
203
|
{
|
|
204
204
|
label: 'size',
|
|
205
|
-
type: '
|
|
206
|
-
data: new
|
|
205
|
+
type: 'vec2i',
|
|
206
|
+
data: new Int32Array(2)
|
|
207
207
|
}
|
|
208
208
|
],
|
|
209
209
|
csMain: /*wgsl*/ `
|
|
@@ -247,12 +247,12 @@ fn PUForward(y: f32) -> f32 {
|
|
|
247
247
|
: `in_${inputName}[inIdx]`;
|
|
248
248
|
}
|
|
249
249
|
const commonCSMain = /* wgsl */ `
|
|
250
|
-
let x =
|
|
251
|
-
let y =
|
|
252
|
-
let inIdx =
|
|
250
|
+
let x = i32(globalId.x);
|
|
251
|
+
let y = i32(globalId.y);
|
|
252
|
+
let inIdx = (y + inputOffset.y) * inputSize.x + (x + inputOffset.x);
|
|
253
253
|
let col = ${readInputCode('color')};
|
|
254
254
|
|
|
255
|
-
let outIdx =
|
|
255
|
+
let outIdx = y * outputSize.x + x;
|
|
256
256
|
|
|
257
257
|
if (${denoiseAlpha}) {
|
|
258
258
|
// Denoise the inversed alpha. Or the anti aliased edge will be too dark after denoised
|
|
@@ -295,13 +295,13 @@ fn PUInverse(y: f32) -> f32 {
|
|
|
295
295
|
}
|
|
296
296
|
`,
|
|
297
297
|
csMain: /* wgsl */ `
|
|
298
|
-
let x =
|
|
299
|
-
let y =
|
|
298
|
+
let x = i32(globalId.x);
|
|
299
|
+
let y = i32(globalId.y);
|
|
300
300
|
if (x >= outputSize.x || y >= outputSize.y) {
|
|
301
301
|
return;
|
|
302
302
|
}
|
|
303
|
-
let inIdx =
|
|
304
|
-
let outIdx =
|
|
303
|
+
let inIdx = (y + inputOffset.y) * inputSize.x + x + inputOffset.x;
|
|
304
|
+
let outIdx = (y + outputOffset.y) * imageSize.x + x + outputOffset.x;
|
|
305
305
|
let col = in_color[inIdx];
|
|
306
306
|
let raw = ${isInputTexture
|
|
307
307
|
? 'textureLoad(in_raw, globalId.xy + vec2u(outputOffset), 0)'
|
|
@@ -324,17 +324,17 @@ else {
|
|
|
324
324
|
});
|
|
325
325
|
}
|
|
326
326
|
setImageSize(w, h) {
|
|
327
|
-
this._inputPassAux.setUniform('inputSize', new
|
|
328
|
-
this._inputPassColor.setUniform('inputSize', new
|
|
329
|
-
this._outputPass.setUniform('imageSize', new
|
|
327
|
+
this._inputPassAux.setUniform('inputSize', new Int32Array([w, h]));
|
|
328
|
+
this._inputPassColor.setUniform('inputSize', new Int32Array([w, h]));
|
|
329
|
+
this._outputPass.setUniform('imageSize', new Int32Array([w, h]));
|
|
330
330
|
this._outputPass.setSize(w, h);
|
|
331
331
|
this._copyPass.setSize(w, h);
|
|
332
|
-
this._copyPass.setUniform('size', new
|
|
332
|
+
this._copyPass.setUniform('size', new Int32Array([w, h]));
|
|
333
333
|
}
|
|
334
334
|
setInputTile(tile) {
|
|
335
|
-
const size = new
|
|
335
|
+
const size = new Int32Array([tile.width, tile.height]);
|
|
336
336
|
[this._inputPassAux, this._inputPassColor].forEach((inputPass) => {
|
|
337
|
-
inputPass.setUniform('inputOffset', new
|
|
337
|
+
inputPass.setUniform('inputOffset', new Int32Array([tile.x, tile.y]));
|
|
338
338
|
inputPass.setUniform('outputSize', size);
|
|
339
339
|
inputPass.setSize(size[0], size[1]);
|
|
340
340
|
});
|
|
@@ -342,12 +342,12 @@ else {
|
|
|
342
342
|
}
|
|
343
343
|
setOutputTile(dstTile, srcTile) {
|
|
344
344
|
const outputPass = this._outputPass;
|
|
345
|
-
const size = new
|
|
345
|
+
const size = new Int32Array([dstTile.width, dstTile.height]);
|
|
346
346
|
const dx = dstTile.x - srcTile.x;
|
|
347
347
|
const dy = dstTile.y - srcTile.y;
|
|
348
348
|
outputPass.setUniform('outputSize', size);
|
|
349
|
-
outputPass.setUniform('inputOffset', new
|
|
350
|
-
outputPass.setUniform('outputOffset', new
|
|
349
|
+
outputPass.setUniform('inputOffset', new Int32Array([dx, dy]));
|
|
350
|
+
outputPass.setUniform('outputOffset', new Int32Array([dstTile.x, dstTile.y]));
|
|
351
351
|
outputPass.setExecuteSize(size[0], size[1]);
|
|
352
352
|
}
|
|
353
353
|
forward(colorBuffer,
|
package/lib/process.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/process.ts
CHANGED
|
@@ -157,18 +157,18 @@ export class GPUDataProcess {
|
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
label: 'inputSize',
|
|
160
|
-
type: '
|
|
161
|
-
data: new
|
|
160
|
+
type: 'vec2i',
|
|
161
|
+
data: new Int32Array(2)
|
|
162
162
|
},
|
|
163
163
|
{
|
|
164
164
|
label: 'outputSize',
|
|
165
|
-
type: '
|
|
166
|
-
data: new
|
|
165
|
+
type: 'vec2i',
|
|
166
|
+
data: new Int32Array(2)
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
label: 'inputOffset',
|
|
170
|
-
type: '
|
|
171
|
-
data: new
|
|
170
|
+
type: 'vec2i',
|
|
171
|
+
data: new Int32Array(2)
|
|
172
172
|
}
|
|
173
173
|
];
|
|
174
174
|
this._inputPassAux = new WGPUComputePass('inputPassAux', this._device, {
|
|
@@ -196,28 +196,28 @@ export class GPUDataProcess {
|
|
|
196
196
|
},
|
|
197
197
|
{
|
|
198
198
|
label: 'inputSize',
|
|
199
|
-
type: '
|
|
200
|
-
data: new
|
|
199
|
+
type: 'vec2i',
|
|
200
|
+
data: new Int32Array(2)
|
|
201
201
|
},
|
|
202
202
|
{
|
|
203
203
|
label: 'outputSize',
|
|
204
|
-
type: '
|
|
205
|
-
data: new
|
|
204
|
+
type: 'vec2i',
|
|
205
|
+
data: new Int32Array(2)
|
|
206
206
|
},
|
|
207
207
|
{
|
|
208
208
|
label: 'imageSize',
|
|
209
|
-
type: '
|
|
210
|
-
data: new
|
|
209
|
+
type: 'vec2i',
|
|
210
|
+
data: new Int32Array(2)
|
|
211
211
|
},
|
|
212
212
|
{
|
|
213
213
|
label: 'inputOffset',
|
|
214
|
-
type: '
|
|
215
|
-
data: new
|
|
214
|
+
type: 'vec2i',
|
|
215
|
+
data: new Int32Array(2)
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
218
|
label: 'outputOffset',
|
|
219
|
-
type: '
|
|
220
|
-
data: new
|
|
219
|
+
type: 'vec2i',
|
|
220
|
+
data: new Int32Array(2)
|
|
221
221
|
}
|
|
222
222
|
],
|
|
223
223
|
csDefine: '',
|
|
@@ -230,8 +230,8 @@ export class GPUDataProcess {
|
|
|
230
230
|
uniforms: [
|
|
231
231
|
{
|
|
232
232
|
label: 'size',
|
|
233
|
-
type: '
|
|
234
|
-
data: new
|
|
233
|
+
type: 'vec2i',
|
|
234
|
+
data: new Int32Array(2)
|
|
235
235
|
}
|
|
236
236
|
],
|
|
237
237
|
csMain: /*wgsl*/ `
|
|
@@ -279,12 +279,12 @@ fn PUForward(y: f32) -> f32 {
|
|
|
279
279
|
: `in_${inputName}[inIdx]`;
|
|
280
280
|
}
|
|
281
281
|
const commonCSMain = /* wgsl */ `
|
|
282
|
-
let x =
|
|
283
|
-
let y =
|
|
284
|
-
let inIdx =
|
|
282
|
+
let x = i32(globalId.x);
|
|
283
|
+
let y = i32(globalId.y);
|
|
284
|
+
let inIdx = (y + inputOffset.y) * inputSize.x + (x + inputOffset.x);
|
|
285
285
|
let col = ${readInputCode('color')};
|
|
286
286
|
|
|
287
|
-
let outIdx =
|
|
287
|
+
let outIdx = y * outputSize.x + x;
|
|
288
288
|
|
|
289
289
|
if (${denoiseAlpha}) {
|
|
290
290
|
// Denoise the inversed alpha. Or the anti aliased edge will be too dark after denoised
|
|
@@ -328,13 +328,13 @@ fn PUInverse(y: f32) -> f32 {
|
|
|
328
328
|
}
|
|
329
329
|
`,
|
|
330
330
|
csMain: /* wgsl */ `
|
|
331
|
-
let x =
|
|
332
|
-
let y =
|
|
331
|
+
let x = i32(globalId.x);
|
|
332
|
+
let y = i32(globalId.y);
|
|
333
333
|
if (x >= outputSize.x || y >= outputSize.y) {
|
|
334
334
|
return;
|
|
335
335
|
}
|
|
336
|
-
let inIdx =
|
|
337
|
-
let outIdx =
|
|
336
|
+
let inIdx = (y + inputOffset.y) * inputSize.x + x + inputOffset.x;
|
|
337
|
+
let outIdx = (y + outputOffset.y) * imageSize.x + x + outputOffset.x;
|
|
338
338
|
let col = in_color[inIdx];
|
|
339
339
|
let raw = ${
|
|
340
340
|
isInputTexture
|
|
@@ -360,18 +360,18 @@ else {
|
|
|
360
360
|
}
|
|
361
361
|
|
|
362
362
|
setImageSize(w: number, h: number) {
|
|
363
|
-
this._inputPassAux.setUniform('inputSize', new
|
|
364
|
-
this._inputPassColor.setUniform('inputSize', new
|
|
365
|
-
this._outputPass.setUniform('imageSize', new
|
|
363
|
+
this._inputPassAux.setUniform('inputSize', new Int32Array([w, h]));
|
|
364
|
+
this._inputPassColor.setUniform('inputSize', new Int32Array([w, h]));
|
|
365
|
+
this._outputPass.setUniform('imageSize', new Int32Array([w, h]));
|
|
366
366
|
this._outputPass.setSize(w, h);
|
|
367
367
|
this._copyPass.setSize(w, h);
|
|
368
|
-
this._copyPass.setUniform('size', new
|
|
368
|
+
this._copyPass.setUniform('size', new Int32Array([w, h]));
|
|
369
369
|
}
|
|
370
370
|
|
|
371
371
|
setInputTile(tile: Tile) {
|
|
372
|
-
const size = new
|
|
372
|
+
const size = new Int32Array([tile.width, tile.height]);
|
|
373
373
|
[this._inputPassAux, this._inputPassColor].forEach((inputPass) => {
|
|
374
|
-
inputPass.setUniform('inputOffset', new
|
|
374
|
+
inputPass.setUniform('inputOffset', new Int32Array([tile.x, tile.y]));
|
|
375
375
|
inputPass.setUniform('outputSize', size);
|
|
376
376
|
inputPass.setSize(size[0], size[1]);
|
|
377
377
|
});
|
|
@@ -381,14 +381,14 @@ else {
|
|
|
381
381
|
|
|
382
382
|
setOutputTile(dstTile: Tile, srcTile: Tile) {
|
|
383
383
|
const outputPass = this._outputPass;
|
|
384
|
-
const size = new
|
|
384
|
+
const size = new Int32Array([dstTile.width, dstTile.height]);
|
|
385
385
|
const dx = dstTile.x - srcTile.x;
|
|
386
386
|
const dy = dstTile.y - srcTile.y;
|
|
387
387
|
outputPass.setUniform('outputSize', size);
|
|
388
|
-
outputPass.setUniform('inputOffset', new
|
|
388
|
+
outputPass.setUniform('inputOffset', new Int32Array([dx, dy]));
|
|
389
389
|
outputPass.setUniform(
|
|
390
390
|
'outputOffset',
|
|
391
|
-
new
|
|
391
|
+
new Int32Array([dstTile.x, dstTile.y])
|
|
392
392
|
);
|
|
393
393
|
outputPass.setExecuteSize(size[0], size[1]);
|
|
394
394
|
}
|