three-stdlib 2.20.3 → 2.20.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/README.md +7 -8
- package/index.cjs.js +1 -1
- package/index.js +1 -1
- package/loaders/LUT3dlLoader.cjs.js +1 -1
- package/loaders/LUT3dlLoader.js +4 -2
- package/loaders/LUTCubeLoader.cjs.js +1 -1
- package/loaders/LUTCubeLoader.js +4 -2
- package/loaders/VOXLoader.cjs.js +1 -1
- package/loaders/VOXLoader.js +5 -5
- package/package.json +1 -1
- package/postprocessing/GlitchPass.cjs.js +1 -1
- package/postprocessing/GlitchPass.js +3 -5
- package/postprocessing/LUTPass.cjs.js +1 -1
- package/postprocessing/LUTPass.js +3 -3
- package/renderers/CSS2DRenderer.cjs.js +1 -1
- package/renderers/CSS2DRenderer.js +124 -99
- package/shaders/DigitalGlitch.cjs.js +1 -1
- package/shaders/DigitalGlitch.js +62 -6
package/index.js
CHANGED
@@ -240,7 +240,7 @@ export { HDRCubeTextureLoader } from './loaders/HDRCubeTextureLoader.js';
|
|
240
240
|
export { PDBLoader } from './loaders/PDBLoader.js';
|
241
241
|
export { PRWMLoader } from './loaders/PRWMLoader.js';
|
242
242
|
export { RGBMLoader } from './loaders/RGBMLoader.js';
|
243
|
-
export {
|
243
|
+
export { VOXData3DTexture, VOXLoader, VOXMesh } from './loaders/VOXLoader.js';
|
244
244
|
export { NodeMaterialLoaderUtils } from './loaders/NodeMaterialLoader.js';
|
245
245
|
export { PCDLoader } from './loaders/PCDLoader.js';
|
246
246
|
export { LWOLoader } from './loaders/LWOLoader.js';
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class t extends e.Loader{load(t,r,a,i){const n=new e.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("text"),n.load(t,(e=>{try{r(this.parse(e))}catch(e){i?i(e):console.error(e),this.manager.itemError(t)}}),a,i)}parse(t){const r=(t=t.replace(/^#.*?(\n|\r)/gm,"").replace(/^\s*?(\n|\r)/gm,"").trim()).split(/[\n\r]+/g),a=r[0].trim().split(/\s+/g).map((e=>parseFloat(e))),i=a[1]-a[0],n=a.length;for(let e=1,t=a.length;e<t;e++)if(i!==a[e]-a[e-1])throw new Error("LUT3dlLoader: Inconsistent grid size not supported.");const
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class t extends e.Loader{load(t,r,a,i){const n=new e.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("text"),n.load(t,(e=>{try{r(this.parse(e))}catch(e){i?i(e):console.error(e),this.manager.itemError(t)}}),a,i)}parse(t){const r=(t=t.replace(/^#.*?(\n|\r)/gm,"").replace(/^\s*?(\n|\r)/gm,"").trim()).split(/[\n\r]+/g),a=r[0].trim().split(/\s+/g).map((e=>parseFloat(e))),i=a[1]-a[0],n=a.length;for(let e=1,t=a.length;e<t;e++)if(i!==a[e]-a[e-1])throw new Error("LUT3dlLoader: Inconsistent grid size not supported.");const p=new Array(n*n*n*4);let o=0,s=0;for(let e=1,t=r.length;e<t;e++){const t=r[e].trim().split(/\s/g),a=parseFloat(t[0]),i=parseFloat(t[1]),l=parseFloat(t[2]);s=Math.max(s,a,i,l);const g=o%n*n*n+Math.floor(o/n)%n*n+Math.floor(o/(n*n))%n;p[4*g+0]=a,p[4*g+1]=i,p[4*g+2]=l,p[4*g+3]=1,o+=1}const l=Math.ceil(Math.log2(s)),g=Math.pow(2,l);for(let e=0,t=p.length;e<t;e+=4){const t=p[e+0],r=p[e+1],a=p[e+2];p[e+0]=255*t/g,p[e+1]=255*r/g,p[e+2]=255*a/g}const m=new Uint8Array(p),d=new e.DataTexture;d.image.data=m,d.image.width=n,d.image.height=n*n,d.format=e.RGBAFormat,d.type=e.UnsignedByteType,d.magFilter=e.LinearFilter,d.minFilter=e.LinearFilter,d.wrapS=e.ClampToEdgeWrapping,d.wrapT=e.ClampToEdgeWrapping,d.generateMipmaps=!1,d.needsUpdate=!0;const h=new e.Data3DTexture;return h.image.data=m,h.image.width=n,h.image.height=n,h.image.depth=n,h.format=e.RGBAFormat,h.type=e.UnsignedByteType,h.magFilter=e.LinearFilter,h.minFilter=e.LinearFilter,h.wrapS=e.ClampToEdgeWrapping,h.wrapT=e.ClampToEdgeWrapping,h.wrapR=e.ClampToEdgeWrapping,h.generateMipmaps=!1,h.needsUpdate=!0,{size:n,texture:d,texture3D:h}}}exports.LUT3dlLoader=t;
|
package/loaders/LUT3dlLoader.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Loader, FileLoader, DataTexture, RGBAFormat, UnsignedByteType, LinearFilter, ClampToEdgeWrapping,
|
1
|
+
import { Loader, FileLoader, DataTexture, RGBAFormat, UnsignedByteType, LinearFilter, ClampToEdgeWrapping, Data3DTexture } from 'three';
|
2
2
|
|
3
3
|
// http://download.autodesk.com/us/systemdocs/help/2011/lustre/index.html?url=./files/WSc4e151a45a3b785a24c3d9a411df9298473-7ffd.htm,topicNumber=d0e9492
|
4
4
|
class LUT3dlLoader extends Loader {
|
@@ -87,7 +87,8 @@ class LUT3dlLoader extends Loader {
|
|
87
87
|
texture.wrapS = ClampToEdgeWrapping;
|
88
88
|
texture.wrapT = ClampToEdgeWrapping;
|
89
89
|
texture.generateMipmaps = false;
|
90
|
-
|
90
|
+
texture.needsUpdate = true;
|
91
|
+
const texture3D = new Data3DTexture();
|
91
92
|
texture3D.image.data = data;
|
92
93
|
texture3D.image.width = size;
|
93
94
|
texture3D.image.height = size;
|
@@ -100,6 +101,7 @@ class LUT3dlLoader extends Loader {
|
|
100
101
|
texture3D.wrapT = ClampToEdgeWrapping;
|
101
102
|
texture3D.wrapR = ClampToEdgeWrapping;
|
102
103
|
texture3D.generateMipmaps = false;
|
104
|
+
texture3D.needsUpdate = true;
|
103
105
|
return {
|
104
106
|
size,
|
105
107
|
texture,
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class a extends e.Loader{load(a,t,r,i){const n=new e.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("text"),n.load(a,(e=>{try{t(this.parse(e))}catch(e){i?i(e):console.error(e),this.manager.itemError(a)}}),r,i)}parse(a){a=a.replace(/^#.*?(\n|\r)/gm,"").replace(/^\s*?(\n|\r)/gm,"").trim();let t=null,r=null;const i=new e.Vector3(0,0,0),n=new e.Vector3(1,1,1),s=a.split(/[\n\r]+/g);let p=null,l=0;for(let e=0,a=s.length;e<a;e++){const a=s[e].trim(),o=a.split(/\s/g);switch(o[0]){case"TITLE":t=a.substring(7,a.length-1);break;case"LUT_3D_SIZE":const e=o[1];r=parseFloat(e),p=new Uint8Array(r*r*r*4);break;case"DOMAIN_MIN":i.x=parseFloat(o[1]),i.y=parseFloat(o[2]),i.z=parseFloat(o[3]);break;case"DOMAIN_MAX":n.x=parseFloat(o[1]),n.y=parseFloat(o[2]),n.z=parseFloat(o[3]);break;default:const s=parseFloat(o[0]),g=parseFloat(o[1]),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class a extends e.Loader{load(a,t,r,i){const n=new e.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("text"),n.load(a,(e=>{try{t(this.parse(e))}catch(e){i?i(e):console.error(e),this.manager.itemError(a)}}),r,i)}parse(a){a=a.replace(/^#.*?(\n|\r)/gm,"").replace(/^\s*?(\n|\r)/gm,"").trim();let t=null,r=null;const i=new e.Vector3(0,0,0),n=new e.Vector3(1,1,1),s=a.split(/[\n\r]+/g);let p=null,l=0;for(let e=0,a=s.length;e<a;e++){const a=s[e].trim(),o=a.split(/\s/g);switch(o[0]){case"TITLE":t=a.substring(7,a.length-1);break;case"LUT_3D_SIZE":const e=o[1];r=parseFloat(e),p=new Uint8Array(r*r*r*4);break;case"DOMAIN_MIN":i.x=parseFloat(o[1]),i.y=parseFloat(o[2]),i.z=parseFloat(o[3]);break;case"DOMAIN_MAX":n.x=parseFloat(o[1]),n.y=parseFloat(o[2]),n.z=parseFloat(o[3]);break;default:const s=parseFloat(o[0]),g=parseFloat(o[1]),d=parseFloat(o[2]);if(s>1||s<0||g>1||g<0||d>1||d<0)throw new Error("LUTCubeLoader : Non normalized values not supported.");p[l+0]=255*s,p[l+1]=255*g,p[l+2]=255*d,p[l+3]=255,l+=4}}const o=new e.DataTexture;o.image.data=p,o.image.width=r,o.image.height=r*r,o.type=e.UnsignedByteType,o.magFilter=e.LinearFilter,o.minFilter=e.LinearFilter,o.wrapS=e.ClampToEdgeWrapping,o.wrapT=e.ClampToEdgeWrapping,o.generateMipmaps=!1,o.needsUpdate=!0;const g=new e.Data3DTexture;return g.image.data=p,g.image.width=r,g.image.height=r,g.image.depth=r,g.type=e.UnsignedByteType,g.magFilter=e.LinearFilter,g.minFilter=e.LinearFilter,g.wrapS=e.ClampToEdgeWrapping,g.wrapT=e.ClampToEdgeWrapping,g.wrapR=e.ClampToEdgeWrapping,g.generateMipmaps=!1,g.needsUpdate=!0,{title:t,size:r,domainMin:i,domainMax:n,texture:o,texture3D:g}}}exports.LUTCubeLoader=a;
|
package/loaders/LUTCubeLoader.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Loader, FileLoader, Vector3, DataTexture, UnsignedByteType, LinearFilter, ClampToEdgeWrapping,
|
1
|
+
import { Loader, FileLoader, Vector3, DataTexture, UnsignedByteType, LinearFilter, ClampToEdgeWrapping, Data3DTexture } from 'three';
|
2
2
|
|
3
3
|
// https://wwwimages2.adobe.com/content/dam/acom/en/products/speedgrade/cc/pdfs/cube-lut-specification-1.0.pdf
|
4
4
|
class LUTCubeLoader extends Loader {
|
@@ -88,7 +88,8 @@ class LUTCubeLoader extends Loader {
|
|
88
88
|
texture.wrapS = ClampToEdgeWrapping;
|
89
89
|
texture.wrapT = ClampToEdgeWrapping;
|
90
90
|
texture.generateMipmaps = false;
|
91
|
-
|
91
|
+
texture.needsUpdate = true;
|
92
|
+
const texture3D = new Data3DTexture();
|
92
93
|
texture3D.image.data = data;
|
93
94
|
texture3D.image.width = size;
|
94
95
|
texture3D.image.height = size;
|
@@ -100,6 +101,7 @@ class LUTCubeLoader extends Loader {
|
|
100
101
|
texture3D.wrapT = ClampToEdgeWrapping;
|
101
102
|
texture3D.wrapR = ClampToEdgeWrapping;
|
102
103
|
texture3D.generateMipmaps = false;
|
104
|
+
texture3D.needsUpdate = true;
|
103
105
|
return {
|
104
106
|
title,
|
105
107
|
size,
|
package/loaders/VOXLoader.cjs.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class t extends e.Loader{load(t,r,s,n){const o=this,a=new e.FileLoader(o.manager);a.setPath(o.path),a.setResponseType("arraybuffer"),a.setRequestHeader(o.requestHeader),a.load(t,(function(e){try{r(o.parse(e))}catch(e){n?n(e):console.error(e),o.manager.itemError(t)}}),s,n)}parse(e){const t=new DataView(e),r=t.getUint32(0,!0),s=t.getUint32(4,!0);if(542658390!==r||150!==s)return void console.error("Not a valid VOX file");const n=[0,4294967295,4291624959,4288282623,4284940287,4281597951,4278255615,4294954239,4291611903,4288269567,4284927231,4281584895,4278242559,4294941183,4291598847,4288256511,4284914175,4281571839,4278229503,4294928127,4291585791,4288243455,4284901119,4281558783,4278216447,4294915071,4291572735,4288230399,4284888063,4281545727,4278203391,4294902015,4291559679,4288217343,4284875007,4281532671,4278190335,4294967244,4291624908,4288282572,4284940236,4281597900,4278255564,4294954188,4291611852,4288269516,4284927180,4281584844,4278242508,4294941132,4291598796,4288256460,4284914124,4281571788,4278229452,4294928076,4291585740,4288243404,4284901068,4281558732,4278216396,4294915020,4291572684,4288230348,4284888012,4281545676,4278203340,4294901964,4291559628,4288217292,4284874956,4281532620,4278190284,4294967193,4291624857,4288282521,4284940185,4281597849,4278255513,4294954137,4291611801,4288269465,4284927129,4281584793,4278242457,4294941081,4291598745,4288256409,4284914073,4281571737,4278229401,4294928025,4291585689,4288243353,4284901017,4281558681,4278216345,4294914969,4291572633,4288230297,4284887961,4281545625,4278203289,4294901913,4291559577,4288217241,4284874905,4281532569,4278190233,4294967142,4291624806,4288282470,4284940134,4281597798,4278255462,4294954086,4291611750,4288269414,4284927078,4281584742,4278242406,4294941030,4291598694,4288256358,4284914022,4281571686,4278229350,4294927974,4291585638,4288243302,4284900966,4281558630,4278216294,4294914918,4291572582,4288230246,4284887910,4281545574,4278203238,4294901862,4291559526,4288217190,4284874854,4281532518,4278190182,4294967091,4291624755,4288282419,4284940083,4281597747,4278255411,4294954035,4291611699,4288269363,4284927027,4281584691,4278242355,4294940979,4291598643,4288256307,4284913971,4281571635,4278229299,4294927923,4291585587,4288243251,4284900915,4281558579,4278216243,4294914867,4291572531,4288230195,4284887859,4281545523,4278203187,4294901811,4291559475,4288217139,4284874803,4281532467,4278190131,4294967040,4291624704,4288282368,4284940032,4281597696,4278255360,4294953984,4291611648,4288269312,4284926976,4281584640,4278242304,4294940928,4291598592,4288256256,4284913920,4281571584,4278229248,4294927872,4291585536,4288243200,4284900864,4281558528,4278216192,4294914816,4291572480,4288230144,4284887808,4281545472,4278203136,4294901760,4291559424,4288217088,4284874752,4281532416,4278190318,4278190301,4278190267,4278190250,4278190216,4278190199,4278190165,4278190148,4278190114,4278190097,4278251008,4278246656,4278237952,4278233600,4278224896,4278220544,4278211840,4278207488,4278198784,4278194432,4293787648,4292673536,4290445312,4289331200,4287102976,4285988864,4283760640,4282646528,4280418304,4279304192,4293848814,4292730333,4290493371,4289374890,4287137928,4286019447,4283782485,4282664004,4280427042,4279308561];let o,a=8;const i=[];for(;a<t.byteLength;){let r="";for(let e=0;e<4;e++)r+=String.fromCharCode(t.getUint8(a
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class t extends e.Loader{load(t,r,s,n){const o=this,a=new e.FileLoader(o.manager);a.setPath(o.path),a.setResponseType("arraybuffer"),a.setRequestHeader(o.requestHeader),a.load(t,(function(e){try{r(o.parse(e))}catch(e){n?n(e):console.error(e),o.manager.itemError(t)}}),s,n)}parse(e){const t=new DataView(e),r=t.getUint32(0,!0),s=t.getUint32(4,!0);if(542658390!==r||150!==s)return void console.error("Not a valid VOX file");const n=[0,4294967295,4291624959,4288282623,4284940287,4281597951,4278255615,4294954239,4291611903,4288269567,4284927231,4281584895,4278242559,4294941183,4291598847,4288256511,4284914175,4281571839,4278229503,4294928127,4291585791,4288243455,4284901119,4281558783,4278216447,4294915071,4291572735,4288230399,4284888063,4281545727,4278203391,4294902015,4291559679,4288217343,4284875007,4281532671,4278190335,4294967244,4291624908,4288282572,4284940236,4281597900,4278255564,4294954188,4291611852,4288269516,4284927180,4281584844,4278242508,4294941132,4291598796,4288256460,4284914124,4281571788,4278229452,4294928076,4291585740,4288243404,4284901068,4281558732,4278216396,4294915020,4291572684,4288230348,4284888012,4281545676,4278203340,4294901964,4291559628,4288217292,4284874956,4281532620,4278190284,4294967193,4291624857,4288282521,4284940185,4281597849,4278255513,4294954137,4291611801,4288269465,4284927129,4281584793,4278242457,4294941081,4291598745,4288256409,4284914073,4281571737,4278229401,4294928025,4291585689,4288243353,4284901017,4281558681,4278216345,4294914969,4291572633,4288230297,4284887961,4281545625,4278203289,4294901913,4291559577,4288217241,4284874905,4281532569,4278190233,4294967142,4291624806,4288282470,4284940134,4281597798,4278255462,4294954086,4291611750,4288269414,4284927078,4281584742,4278242406,4294941030,4291598694,4288256358,4284914022,4281571686,4278229350,4294927974,4291585638,4288243302,4284900966,4281558630,4278216294,4294914918,4291572582,4288230246,4284887910,4281545574,4278203238,4294901862,4291559526,4288217190,4284874854,4281532518,4278190182,4294967091,4291624755,4288282419,4284940083,4281597747,4278255411,4294954035,4291611699,4288269363,4284927027,4281584691,4278242355,4294940979,4291598643,4288256307,4284913971,4281571635,4278229299,4294927923,4291585587,4288243251,4284900915,4281558579,4278216243,4294914867,4291572531,4288230195,4284887859,4281545523,4278203187,4294901811,4291559475,4288217139,4284874803,4281532467,4278190131,4294967040,4291624704,4288282368,4284940032,4281597696,4278255360,4294953984,4291611648,4288269312,4284926976,4281584640,4278242304,4294940928,4291598592,4288256256,4284913920,4281571584,4278229248,4294927872,4291585536,4288243200,4284900864,4281558528,4278216192,4294914816,4291572480,4288230144,4284887808,4281545472,4278203136,4294901760,4291559424,4288217088,4284874752,4281532416,4278190318,4278190301,4278190267,4278190250,4278190216,4278190199,4278190165,4278190148,4278190114,4278190097,4278251008,4278246656,4278237952,4278233600,4278224896,4278220544,4278211840,4278207488,4278198784,4278194432,4293787648,4292673536,4290445312,4289331200,4287102976,4285988864,4283760640,4282646528,4280418304,4279304192,4293848814,4292730333,4290493371,4289374890,4287137928,4286019447,4283782485,4282664004,4280427042,4279308561];let o,a=8;const i=[];for(;a<t.byteLength;){let r="";for(let e=0;e<4;e++)r+=String.fromCharCode(t.getUint8(a++));const s=t.getUint32(a,!0);if(a+=4,a+=4,"SIZE"===r){const e=t.getUint32(a,!0);a+=4;const r=t.getUint32(a,!0);a+=4;const l=t.getUint32(a,!0);a+=4,o={palette:n,size:{x:e,y:r,z:l}},i.push(o),a+=s-12}else if("XYZI"===r){const r=t.getUint32(a,!0);a+=4,o.data=new Uint8Array(e,a,4*r),a+=4*r}else if("RGBA"===r){const e=[0];for(let r=0;r<256;r++)e[r+1]=t.getUint32(a,!0),a+=4;o.palette=e}else a+=s}return i}}class r extends e.Mesh{constructor(t){const r=t.data,s=t.size,n=t.palette,o=[],a=[],i=[0,0,0,0,0,1,0,1,0,0,1,1,0,1,0,0,0,1],l=[1,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0],c=[0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,1],u=[0,0,0,0,1,0,1,0,0,1,1,0,1,0,0,0,1,0],f=[0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,0,0],d=[0,1,1,1,1,1,0,1,0,1,1,0,0,1,0,1,1,1];function p(e,t,r,n,i,l,c){t-=s.x/2,r-=s.z/2,n+=s.y/2;for(let s=0;s<18;s+=3)o.push(e[s+0]+t,e[s+1]+r,e[s+2]+n),a.push(i,l,c)}const h=s.x,x=s.x*s.y,g=new Uint8Array(s.x*s.y*s.z);for(let e=0;e<r.length;e+=4){g[r[e+0]+r[e+1]*h+r[e+2]*x]=255}let y=!1;for(let e=0;e<r.length;e+=4){const t=r[e+0],o=r[e+1],a=r[e+2],U=n[r[e+3]],m=(U>>0&255)/255,w=(U>>8&255)/255,z=(U>>16&255)/255;(m>0||w>0||z>0)&&(y=!0);const A=t+o*h+a*x;0!==g[A+1]&&t!==s.x-1||p(l,t,a,-o,m,w,z),0!==g[A-1]&&0!==t||p(i,t,a,-o,m,w,z),0!==g[A+h]&&o!==s.y-1||p(u,t,a,-o,m,w,z),0!==g[A-h]&&0!==o||p(c,t,a,-o,m,w,z),0!==g[A+x]&&a!==s.z-1||p(d,t,a,-o,m,w,z),0!==g[A-x]&&0!==a||p(f,t,a,-o,m,w,z)}const U=new e.BufferGeometry;U.setAttribute("position",new e.Float32BufferAttribute(o,3)),U.computeVertexNormals();const m=new e.MeshStandardMaterial;y&&(U.setAttribute("color",new e.Float32BufferAttribute(a,3)),m.vertexColors=!0),super(U,m)}}class s extends e.Data3DTexture{constructor(t){const r=t.data,s=t.size,n=s.x,o=s.x*s.y,a=new Uint8Array(s.x*s.y*s.z);for(let e=0;e<r.length;e+=4){a[r[e+0]+r[e+1]*n+r[e+2]*o]=255}super(a,s.x,s.y,s.z),this.format=e.RedFormat,this.minFilter=e.NearestFilter,this.magFilter=e.LinearFilter,this.unpackAlignment=1,this.needsUpdate=!0}}exports.VOXData3DTexture=s,exports.VOXLoader=t,exports.VOXMesh=r;
|
package/loaders/VOXLoader.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Loader, FileLoader, Mesh, BufferGeometry, Float32BufferAttribute, MeshStandardMaterial,
|
1
|
+
import { Loader, FileLoader, Mesh, BufferGeometry, Float32BufferAttribute, MeshStandardMaterial, Data3DTexture, RedFormat, NearestFilter, LinearFilter } from 'three';
|
2
2
|
|
3
3
|
class VOXLoader extends Loader {
|
4
4
|
load(url, onLoad, onProgress, onError) {
|
@@ -41,12 +41,11 @@ class VOXLoader extends Loader {
|
|
41
41
|
let id = '';
|
42
42
|
|
43
43
|
for (let j = 0; j < 4; j++) {
|
44
|
-
id += String.fromCharCode(data.getUint8(i
|
44
|
+
id += String.fromCharCode(data.getUint8(i++));
|
45
45
|
}
|
46
46
|
|
47
47
|
const chunkSize = data.getUint32(i, true);
|
48
48
|
i += 4;
|
49
|
-
data.getUint32(i, true);
|
50
49
|
i += 4; // childChunks
|
51
50
|
|
52
51
|
if (id === 'SIZE') {
|
@@ -167,7 +166,7 @@ class VOXMesh extends Mesh {
|
|
167
166
|
|
168
167
|
}
|
169
168
|
|
170
|
-
class
|
169
|
+
class VOXData3DTexture extends Data3DTexture {
|
171
170
|
constructor(chunk) {
|
172
171
|
const data = chunk.data;
|
173
172
|
const size = chunk.size;
|
@@ -188,8 +187,9 @@ class VOXDataTexture3D extends DataTexture3D {
|
|
188
187
|
this.minFilter = NearestFilter;
|
189
188
|
this.magFilter = LinearFilter;
|
190
189
|
this.unpackAlignment = 1;
|
190
|
+
this.needsUpdate = true;
|
191
191
|
}
|
192
192
|
|
193
193
|
}
|
194
194
|
|
195
|
-
export {
|
195
|
+
export { VOXData3DTexture, VOXLoader, VOXMesh };
|
package/package.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@babel/runtime/helpers/defineProperty"),e=require("./Pass.cjs.js"),i=require("three"),a=require("../shaders/DigitalGlitch.cjs.js");function s(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=s(t);class n extends e.Pass{constructor(t=64){super(),r.default(this,"material",void 0),r.default(this,"fsQuad",void 0),r.default(this,"goWild",void 0),r.default(this,"curF",void 0),r.default(this,"randX",void 0),r.default(this,"uniforms",void 0),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@babel/runtime/helpers/defineProperty"),e=require("./Pass.cjs.js"),i=require("three"),a=require("../shaders/DigitalGlitch.cjs.js");function s(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=s(t);class n extends e.Pass{constructor(t=64){super(),r.default(this,"material",void 0),r.default(this,"fsQuad",void 0),r.default(this,"goWild",void 0),r.default(this,"curF",void 0),r.default(this,"randX",void 0),r.default(this,"uniforms",void 0),this.uniforms=i.UniformsUtils.clone(a.DigitalGlitch.uniforms),this.uniforms.tDisp.value=this.generateHeightmap(t),this.material=new i.ShaderMaterial({uniforms:this.uniforms,vertexShader:a.DigitalGlitch.vertexShader,fragmentShader:a.DigitalGlitch.fragmentShader}),this.fsQuad=new e.FullScreenQuad(this.material),this.goWild=!1,this.curF=0,this.generateTrigger()}render(t,e,a){!1===t.capabilities.isWebGL2&&(this.uniforms.tDisp.value.format=i.LuminanceFormat),this.uniforms.tDiffuse.value=a.texture,this.uniforms.seed.value=Math.random(),this.uniforms.byp.value=0,this.curF%this.randX==0||1==this.goWild?(this.uniforms.amount.value=Math.random()/30,this.uniforms.angle.value=i.MathUtils.randFloat(-Math.PI,Math.PI),this.uniforms.seed_x.value=i.MathUtils.randFloat(-1,1),this.uniforms.seed_y.value=i.MathUtils.randFloat(-1,1),this.uniforms.distortion_x.value=i.MathUtils.randFloat(0,1),this.uniforms.distortion_y.value=i.MathUtils.randFloat(0,1),this.curF=0,this.generateTrigger()):this.curF%this.randX<this.randX/5?(this.uniforms.amount.value=Math.random()/90,this.uniforms.angle.value=i.MathUtils.randFloat(-Math.PI,Math.PI),this.uniforms.distortion_x.value=i.MathUtils.randFloat(0,1),this.uniforms.distortion_y.value=i.MathUtils.randFloat(0,1),this.uniforms.seed_x.value=i.MathUtils.randFloat(-.3,.3),this.uniforms.seed_y.value=i.MathUtils.randFloat(-.3,.3)):0==this.goWild&&(this.uniforms.byp.value=1),this.curF++,this.renderToScreen?(t.setRenderTarget(null),this.fsQuad.render(t)):(t.setRenderTarget(e),this.clear&&t.clear(),this.fsQuad.render(t))}generateTrigger(){this.randX=i.MathUtils.randInt(120,240)}generateHeightmap(t){const e=new Float32Array(t*t),a=t*t;for(let t=0;t<a;t++){const a=i.MathUtils.randFloat(0,1);e[t]=a}const s=new i.DataTexture(e,t,t,i.RedFormat,i.FloatType);return s.needsUpdate=!0,s}}exports.GlitchPass=n;
|
@@ -19,14 +19,12 @@ class GlitchPass extends Pass {
|
|
19
19
|
|
20
20
|
_defineProperty(this, "uniforms", void 0);
|
21
21
|
|
22
|
-
|
23
|
-
const shader = DigitalGlitch;
|
24
|
-
this.uniforms = UniformsUtils.clone(shader.uniforms);
|
22
|
+
this.uniforms = UniformsUtils.clone(DigitalGlitch.uniforms);
|
25
23
|
this.uniforms['tDisp'].value = this.generateHeightmap(dt_size);
|
26
24
|
this.material = new ShaderMaterial({
|
27
25
|
uniforms: this.uniforms,
|
28
|
-
vertexShader:
|
29
|
-
fragmentShader:
|
26
|
+
vertexShader: DigitalGlitch.vertexShader,
|
27
|
+
fragmentShader: DigitalGlitch.fragmentShader
|
30
28
|
});
|
31
29
|
this.fsQuad = new FullScreenQuad(this.material);
|
32
30
|
this.goWild = false;
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("./ShaderPass.cjs.js");require("@babel/runtime/helpers/defineProperty"),require("three"),require("./Pass.cjs.js");const e={defines:{USE_3DTEXTURE:1},uniforms:{lut3d:{value:null},lut:{value:null},lutSize:{value:0},tDiffuse:{value:null},intensity:{value:1}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}\n\n\t",fragmentShader:"\n\
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("./ShaderPass.cjs.js");require("@babel/runtime/helpers/defineProperty"),require("three"),require("./Pass.cjs.js");const e={defines:{USE_3DTEXTURE:1},uniforms:{lut3d:{value:null},lut:{value:null},lutSize:{value:0},tDiffuse:{value:null},intensity:{value:1}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}\n\n\t",fragmentShader:"\n\n\t\tuniform float lutSize;\n\t\t#if USE_3DTEXTURE\n\t\tprecision highp sampler3D;\n\t\tuniform sampler3D lut3d;\n\t\t#else\n\t\tuniform sampler2D lut;\n\n\t\tvec3 lutLookup( sampler2D tex, float size, vec3 rgb ) {\n\n\t\t\tfloat sliceHeight = 1.0 / size;\n\t\t\tfloat yPixelHeight = 1.0 / ( size * size );\n\n\t\t\t// Get the slices on either side of the sample\n\t\t\tfloat slice = rgb.b * size;\n\t\t\tfloat interp = fract( slice );\n\t\t\tfloat slice0 = slice - interp;\n\t\t\tfloat centeredInterp = interp - 0.5;\n\n\t\t\tfloat slice1 = slice0 + sign( centeredInterp );\n\n\t\t\t// Pull y sample in by half a pixel in each direction to avoid color\n\t\t\t// bleeding from adjacent slices.\n\t\t\tfloat greenOffset = clamp( rgb.g * sliceHeight, yPixelHeight * 0.5, sliceHeight - yPixelHeight * 0.5 );\n\n\t\t\tvec2 uv0 = vec2(\n\t\t\t\trgb.r,\n\t\t\t\tslice0 * sliceHeight + greenOffset\n\t\t\t);\n\t\t\tvec2 uv1 = vec2(\n\t\t\t\trgb.r,\n\t\t\t\tslice1 * sliceHeight + greenOffset\n\t\t\t);\n\n\t\t\tvec3 sample0 = texture2D( tex, uv0 ).rgb;\n\t\t\tvec3 sample1 = texture2D( tex, uv1 ).rgb;\n\n\t\t\treturn mix( sample0, sample1, abs( centeredInterp ) );\n\n\t\t}\n\t\t#endif\n\n\t\tvarying vec2 vUv;\n\t\tuniform float intensity;\n\t\tuniform sampler2D tDiffuse;\n\t\tvoid main() {\n\n\t\t\tvec4 val = texture2D( tDiffuse, vUv );\n\t\t\tvec4 lutVal;\n\n\t\t\t// pull the sample in by half a pixel so the sample begins\n\t\t\t// at the center of the edge pixels.\n\t\t\tfloat pixelWidth = 1.0 / lutSize;\n\t\t\tfloat halfPixelWidth = 0.5 / lutSize;\n\t\t\tvec3 uvw = vec3( halfPixelWidth ) + val.rgb * ( 1.0 - pixelWidth );\n\n\t\t\t#if USE_3DTEXTURE\n\n\t\t\tlutVal = vec4( texture( lut3d, uvw ).rgb, val.a );\n\n\t\t\t#else\n\n\t\t\tlutVal = vec4( lutLookup( lut, lutSize, uvw ), val.a );\n\n\t\t\t#endif\n\n\t\t\tgl_FragColor = vec4( mix( val, lutVal, intensity ) );\n\n\t\t}\n\n\t"};class n extends t.ShaderPass{set lut(t){const e=this.material;if(t!==this.lut&&(e.uniforms.lut3d.value=null,e.uniforms.lut.value=null,t)){const n=t.isData3DTexture?1:0;n!==e.defines.USE_3DTEXTURE&&(e.defines.USE_3DTEXTURE=n,e.needsUpdate=!0),e.uniforms.lutSize.value=t.image.width,t.isData3DTexture?e.uniforms.lut3d.value=t:e.uniforms.lut.value=t}}get lut(){return this.material.uniforms.lut.value||this.material.uniforms.lut3d.value}set intensity(t){this.material.uniforms.intensity.value=t}get intensity(){return this.material.uniforms.intensity.value}constructor(t={}){super(e),this.lut=t.lut||null,this.intensity="intensity"in t?t.intensity:1}}exports.LUTPass=n;
|
@@ -38,10 +38,10 @@ const LUTShader = {
|
|
38
38
|
fragmentShader:
|
39
39
|
/* glsl */
|
40
40
|
`
|
41
|
-
precision highp sampler3D;
|
42
41
|
|
43
42
|
uniform float lutSize;
|
44
43
|
#if USE_3DTEXTURE
|
44
|
+
precision highp sampler3D;
|
45
45
|
uniform sampler3D lut3d;
|
46
46
|
#else
|
47
47
|
uniform sampler2D lut;
|
@@ -120,7 +120,7 @@ class LUTPass extends ShaderPass {
|
|
120
120
|
material.uniforms.lut.value = null;
|
121
121
|
|
122
122
|
if (v) {
|
123
|
-
const is3dTextureDefine = v.
|
123
|
+
const is3dTextureDefine = v.isData3DTexture ? 1 : 0;
|
124
124
|
|
125
125
|
if (is3dTextureDefine !== material.defines.USE_3DTEXTURE) {
|
126
126
|
material.defines.USE_3DTEXTURE = is3dTextureDefine;
|
@@ -129,7 +129,7 @@ class LUTPass extends ShaderPass {
|
|
129
129
|
|
130
130
|
material.uniforms.lutSize.value = v.image.width;
|
131
131
|
|
132
|
-
if (v.
|
132
|
+
if (v.isData3DTexture) {
|
133
133
|
material.uniforms.lut3d.value = v;
|
134
134
|
} else {
|
135
135
|
material.uniforms.lut.value = v;
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three")
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class t extends e.Object3D{constructor(e=document.createElement("div")){super(),this.isCSS2DObject=!0,this.element=e,this.element.style.position="absolute",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",(function(){this.traverse((function(e){e.element instanceof Element&&null!==e.element.parentNode&&e.element.parentNode.removeChild(e.element)}))}))}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this}}const r=new e.Vector3,n=new e.Matrix4,o=new e.Matrix4,i=new e.Vector3,s=new e.Vector3;exports.CSS2DObject=t,exports.CSS2DRenderer=class{constructor(e={}){const t=this;let l,a,d,c;const u={objects:new WeakMap},m=void 0!==e.element?e.element:document.createElement("div");function p(e,n,i){if(e.isCSS2DObject){r.setFromMatrixPosition(e.matrixWorld),r.applyMatrix4(o);const s=!0===e.visible&&r.z>=-1&&r.z<=1&&!0===e.layers.test(i.layers);if(e.element.style.display=!0===s?"":"none",!0===s){e.onBeforeRender(t,n,i);const o=e.element;o.style.transform="translate(-50%,-50%) translate("+(r.x*d+d)+"px,"+(-r.y*c+c)+"px)",o.parentNode!==m&&m.appendChild(o),e.onAfterRender(t,n,i)}const l={distanceToCameraSquared:h(i,e)};u.objects.set(e,l)}for(let t=0,r=e.children.length;t<r;t++)p(e.children[t],n,i)}function h(e,t){return i.setFromMatrixPosition(e.matrixWorld),s.setFromMatrixPosition(t.matrixWorld),i.distanceToSquared(s)}m.style.overflow="hidden",this.domElement=m,this.getSize=function(){return{width:l,height:a}},this.render=function(e,t){!0!==e.matrixWorldAutoUpdate&&!0!==e.autoUpdate||e.updateMatrixWorld(),null!==t.parent||null!=t.matrixWorldAutoUpdate&&!0!==t.matrixWorldAutoUpdate||t.updateMatrixWorld(),n.copy(t.matrixWorldInverse),o.multiplyMatrices(t.projectionMatrix,n),p(e,e,t),function(e){const t=function(e){const t=[];return e.traverse((function(e){e.isCSS2DObject&&t.push(e)})),t}(e).sort((function(e,t){if(e.renderOrder!==t.renderOrder)return t.renderOrder-e.renderOrder;return u.objects.get(e).distanceToCameraSquared-u.objects.get(t).distanceToCameraSquared})),r=t.length;for(let e=0,n=t.length;e<n;e++)t[e].element.style.zIndex=r-e}(e)},this.setSize=function(e,t){l=e,a=t,d=l/2,c=a/2,m.style.width=e+"px",m.style.height=t+"px"}}};
|
@@ -1,124 +1,149 @@
|
|
1
1
|
import { Object3D, Vector3, Matrix4 } from 'three';
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
this.
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
class CSS2DObject extends Object3D {
|
4
|
+
constructor(element = document.createElement('div')) {
|
5
|
+
super();
|
6
|
+
this.isCSS2DObject = true;
|
7
|
+
this.element = element;
|
8
|
+
this.element.style.position = 'absolute';
|
9
|
+
this.element.style.userSelect = 'none';
|
10
|
+
this.element.setAttribute('draggable', false);
|
11
|
+
this.addEventListener('removed', function () {
|
12
|
+
this.traverse(function (object) {
|
13
|
+
if (object.element instanceof Element && object.element.parentNode !== null) {
|
14
|
+
object.element.parentNode.removeChild(object.element);
|
15
|
+
}
|
16
|
+
});
|
12
17
|
});
|
13
|
-
}
|
14
|
-
};
|
18
|
+
}
|
15
19
|
|
16
|
-
|
17
|
-
|
18
|
-
copy: function (source, recursive) {
|
19
|
-
Object3D.prototype.copy.call(this, source, recursive);
|
20
|
+
copy(source, recursive) {
|
21
|
+
super.copy(source, recursive);
|
20
22
|
this.element = source.element.cloneNode(true);
|
21
23
|
return this;
|
22
24
|
}
|
23
|
-
}); //
|
24
25
|
|
25
|
-
|
26
|
-
|
26
|
+
}
|
27
|
+
|
28
|
+
const _vector = /*#__PURE__*/new Vector3();
|
29
|
+
|
30
|
+
const _viewMatrix = /*#__PURE__*/new Matrix4();
|
31
|
+
|
32
|
+
const _viewProjectionMatrix = /*#__PURE__*/new Matrix4();
|
27
33
|
|
28
|
-
|
34
|
+
const _a = /*#__PURE__*/new Vector3();
|
29
35
|
|
30
|
-
|
36
|
+
const _b = /*#__PURE__*/new Vector3();
|
31
37
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
var cache = {
|
36
|
-
objects: new WeakMap()
|
37
|
-
};
|
38
|
-
var domElement = document.createElement('div');
|
39
|
-
domElement.style.overflow = 'hidden';
|
40
|
-
this.domElement = domElement;
|
38
|
+
class CSS2DRenderer {
|
39
|
+
constructor(parameters = {}) {
|
40
|
+
const _this = this;
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
42
|
+
let _width, _height;
|
43
|
+
|
44
|
+
let _widthHalf, _heightHalf;
|
45
|
+
|
46
|
+
const cache = {
|
47
|
+
objects: new WeakMap()
|
46
48
|
};
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
domElement.style.height = height + 'px';
|
56
|
-
};
|
57
|
-
|
58
|
-
var renderObject = function (object, scene, camera) {
|
59
|
-
if (object instanceof CSS2DObject) {
|
60
|
-
object.onBeforeRender(_this, scene, camera);
|
61
|
-
vector.setFromMatrixPosition(object.matrixWorld);
|
62
|
-
vector.applyMatrix4(viewProjectionMatrix);
|
63
|
-
var element = object.element;
|
64
|
-
element.style.transform = 'translate(-50%,-50%) translate(' + (vector.x * _widthHalf + _widthHalf) + 'px,' + (-vector.y * _heightHalf + _heightHalf) + 'px)';
|
65
|
-
element.style.display = object.visible && vector.z >= -1 && vector.z <= 1 ? '' : 'none';
|
66
|
-
var objectData = {
|
67
|
-
distanceToCameraSquared: getDistanceToSquared(camera, object)
|
49
|
+
const domElement = parameters.element !== undefined ? parameters.element : document.createElement('div');
|
50
|
+
domElement.style.overflow = 'hidden';
|
51
|
+
this.domElement = domElement;
|
52
|
+
|
53
|
+
this.getSize = function () {
|
54
|
+
return {
|
55
|
+
width: _width,
|
56
|
+
height: _height
|
68
57
|
};
|
69
|
-
|
58
|
+
};
|
59
|
+
|
60
|
+
this.render = function (scene, camera) {
|
61
|
+
if (scene.matrixWorldAutoUpdate === true || scene.autoUpdate === true) scene.updateMatrixWorld();
|
62
|
+
if (camera.parent === null && (camera.matrixWorldAutoUpdate == null || camera.matrixWorldAutoUpdate === true)) camera.updateMatrixWorld();
|
63
|
+
|
64
|
+
_viewMatrix.copy(camera.matrixWorldInverse);
|
65
|
+
|
66
|
+
_viewProjectionMatrix.multiplyMatrices(camera.projectionMatrix, _viewMatrix);
|
67
|
+
|
68
|
+
renderObject(scene, scene, camera);
|
69
|
+
zOrder(scene);
|
70
|
+
};
|
71
|
+
|
72
|
+
this.setSize = function (width, height) {
|
73
|
+
_width = width;
|
74
|
+
_height = height;
|
75
|
+
_widthHalf = _width / 2;
|
76
|
+
_heightHalf = _height / 2;
|
77
|
+
domElement.style.width = width + 'px';
|
78
|
+
domElement.style.height = height + 'px';
|
79
|
+
};
|
80
|
+
|
81
|
+
function renderObject(object, scene, camera) {
|
82
|
+
if (object.isCSS2DObject) {
|
83
|
+
_vector.setFromMatrixPosition(object.matrixWorld);
|
84
|
+
|
85
|
+
_vector.applyMatrix4(_viewProjectionMatrix);
|
70
86
|
|
71
|
-
|
72
|
-
|
87
|
+
const visible = object.visible === true && _vector.z >= -1 && _vector.z <= 1 && object.layers.test(camera.layers) === true;
|
88
|
+
object.element.style.display = visible === true ? '' : 'none';
|
89
|
+
|
90
|
+
if (visible === true) {
|
91
|
+
object.onBeforeRender(_this, scene, camera);
|
92
|
+
const element = object.element;
|
93
|
+
element.style.transform = 'translate(-50%,-50%) translate(' + (_vector.x * _widthHalf + _widthHalf) + 'px,' + (-_vector.y * _heightHalf + _heightHalf) + 'px)';
|
94
|
+
|
95
|
+
if (element.parentNode !== domElement) {
|
96
|
+
domElement.appendChild(element);
|
97
|
+
}
|
98
|
+
|
99
|
+
object.onAfterRender(_this, scene, camera);
|
100
|
+
}
|
101
|
+
|
102
|
+
const objectData = {
|
103
|
+
distanceToCameraSquared: getDistanceToSquared(camera, object)
|
104
|
+
};
|
105
|
+
cache.objects.set(object, objectData);
|
73
106
|
}
|
74
107
|
|
75
|
-
|
108
|
+
for (let i = 0, l = object.children.length; i < l; i++) {
|
109
|
+
renderObject(object.children[i], scene, camera);
|
110
|
+
}
|
76
111
|
}
|
77
112
|
|
78
|
-
|
79
|
-
|
113
|
+
function getDistanceToSquared(object1, object2) {
|
114
|
+
_a.setFromMatrixPosition(object1.matrixWorld);
|
115
|
+
|
116
|
+
_b.setFromMatrixPosition(object2.matrixWorld);
|
117
|
+
|
118
|
+
return _a.distanceToSquared(_b);
|
80
119
|
}
|
81
|
-
};
|
82
|
-
|
83
|
-
var getDistanceToSquared = function () {
|
84
|
-
var a = new Vector3();
|
85
|
-
var b = new Vector3();
|
86
|
-
return function (object1, object2) {
|
87
|
-
a.setFromMatrixPosition(object1.matrixWorld);
|
88
|
-
b.setFromMatrixPosition(object2.matrixWorld);
|
89
|
-
return a.distanceToSquared(b);
|
90
|
-
};
|
91
|
-
}();
|
92
120
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
});
|
107
|
-
var zMax = sorted.length;
|
121
|
+
function filterAndFlatten(scene) {
|
122
|
+
const result = [];
|
123
|
+
scene.traverse(function (object) {
|
124
|
+
if (object.isCSS2DObject) result.push(object);
|
125
|
+
});
|
126
|
+
return result;
|
127
|
+
}
|
128
|
+
|
129
|
+
function zOrder(scene) {
|
130
|
+
const sorted = filterAndFlatten(scene).sort(function (a, b) {
|
131
|
+
if (a.renderOrder !== b.renderOrder) {
|
132
|
+
return b.renderOrder - a.renderOrder;
|
133
|
+
}
|
108
134
|
|
109
|
-
|
110
|
-
|
135
|
+
const distanceA = cache.objects.get(a).distanceToCameraSquared;
|
136
|
+
const distanceB = cache.objects.get(b).distanceToCameraSquared;
|
137
|
+
return distanceA - distanceB;
|
138
|
+
});
|
139
|
+
const zMax = sorted.length;
|
140
|
+
|
141
|
+
for (let i = 0, l = sorted.length; i < l; i++) {
|
142
|
+
sorted[i].element.style.zIndex = zMax - i;
|
143
|
+
}
|
111
144
|
}
|
112
|
-
}
|
113
|
-
|
114
|
-
|
115
|
-
if (scene.autoUpdate === true) scene.updateMatrixWorld();
|
116
|
-
if (camera.parent === null) camera.updateMatrixWorld();
|
117
|
-
viewMatrix.copy(camera.matrixWorldInverse);
|
118
|
-
viewProjectionMatrix.multiplyMatrices(camera.projectionMatrix, viewMatrix);
|
119
|
-
renderObject(scene, scene, camera);
|
120
|
-
zOrder(scene);
|
121
|
-
};
|
122
|
-
};
|
145
|
+
}
|
146
|
+
|
147
|
+
}
|
123
148
|
|
124
149
|
export { CSS2DObject, CSS2DRenderer };
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const t={uniforms:{tDiffuse:{value:null},tDisp:{value:null},byp:{value:0},amount:{value:.08},angle:{value:.02},seed:{value:.02},seed_x:{value:.02},seed_y:{value:.02},distortion_x:{value:.5},distortion_y:{value:.6},col_s:{value:.05}},vertexShader:
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const t={uniforms:{tDiffuse:{value:null},tDisp:{value:null},byp:{value:0},amount:{value:.08},angle:{value:.02},seed:{value:.02},seed_x:{value:.02},seed_y:{value:.02},distortion_x:{value:.5},distortion_y:{value:.6},col_s:{value:.05}},vertexShader:"varying vec2 vUv;\n void main() {\n \t vUv = uv;\n \t gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"uniform int byp; //should we apply the glitch ?\n uniform sampler2D tDiffuse;\n uniform sampler2D tDisp;\n uniform float amount;\n uniform float angle;\n uniform float seed;\n uniform float seed_x;\n uniform float seed_y;\n uniform float distortion_x;\n uniform float distortion_y;\n uniform float col_s;\n\n varying vec2 vUv;\n\n float rand(vec2 co){\n \t return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);\n }\n\n void main() {\n \tif(byp<1) {\n \t\tvec2 p = vUv;\n \t\tfloat xs = floor(gl_FragCoord.x / 0.5);\n \t\tfloat ys = floor(gl_FragCoord.y / 0.5);\n //based on staffantans glitch shader for unity https://github.com/staffantan/unityglitch\n \t\tvec4 normal = texture2D (tDisp, p*seed*seed);\n \t\tif(p.y<distortion_x+col_s && p.y>distortion_x-col_s*seed) {\n \t\t\tif(seed_x>0.){\n \t\t\t\tp.y = 1. - (p.y + distortion_y);\n \t\t\t}\n \t\t\telse {\n \t\t\t\tp.y = distortion_y;\n \t\t\t}\n \t\t}\n \t\tif(p.x<distortion_y+col_s && p.x>distortion_y-col_s*seed) {\n \t\t\tif(seed_y>0.){\n \t\t\t\tp.x=distortion_x;\n \t\t\t}\n \t\t\telse {\n \t\t\t\tp.x = 1. - (p.x + distortion_x);\n \t\t\t}\n \t\t}\n \t\tp.x+=normal.x*seed_x*(seed/5.);\n \t\tp.y+=normal.y*seed_y*(seed/5.);\n //base from RGB shift shader\n \t\tvec2 offset = amount * vec2( cos(angle), sin(angle));\n \t\tvec4 cr = texture2D(tDiffuse, p + offset);\n \t\tvec4 cga = texture2D(tDiffuse, p);\n \t\tvec4 cb = texture2D(tDiffuse, p - offset);\n \t\tgl_FragColor = vec4(cr.r, cga.g, cb.b, cga.a);\n //add noise\n \t\tvec4 snow = 200.*amount*vec4(rand(vec2(xs * seed,ys * seed*50.))*0.2);\n \t\tgl_FragColor = gl_FragColor+ snow;\n \t}\n \telse {\n \t\tgl_FragColor=texture2D (tDiffuse, vUv);\n \t}\n }"};exports.DigitalGlitch=t;
|
package/shaders/DigitalGlitch.js
CHANGED
@@ -39,12 +39,68 @@ const DigitalGlitch = {
|
|
39
39
|
value: 0.05
|
40
40
|
}
|
41
41
|
},
|
42
|
-
vertexShader:
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
42
|
+
vertexShader: `varying vec2 vUv;
|
43
|
+
void main() {
|
44
|
+
vUv = uv;
|
45
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
46
|
+
}`,
|
47
|
+
fragmentShader: `uniform int byp; //should we apply the glitch ?
|
48
|
+
uniform sampler2D tDiffuse;
|
49
|
+
uniform sampler2D tDisp;
|
50
|
+
uniform float amount;
|
51
|
+
uniform float angle;
|
52
|
+
uniform float seed;
|
53
|
+
uniform float seed_x;
|
54
|
+
uniform float seed_y;
|
55
|
+
uniform float distortion_x;
|
56
|
+
uniform float distortion_y;
|
57
|
+
uniform float col_s;
|
58
|
+
|
59
|
+
varying vec2 vUv;
|
60
|
+
|
61
|
+
float rand(vec2 co){
|
62
|
+
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
63
|
+
}
|
64
|
+
|
65
|
+
void main() {
|
66
|
+
if(byp<1) {
|
67
|
+
vec2 p = vUv;
|
68
|
+
float xs = floor(gl_FragCoord.x / 0.5);
|
69
|
+
float ys = floor(gl_FragCoord.y / 0.5);
|
70
|
+
//based on staffantans glitch shader for unity https://github.com/staffantan/unityglitch
|
71
|
+
vec4 normal = texture2D (tDisp, p*seed*seed);
|
72
|
+
if(p.y<distortion_x+col_s && p.y>distortion_x-col_s*seed) {
|
73
|
+
if(seed_x>0.){
|
74
|
+
p.y = 1. - (p.y + distortion_y);
|
75
|
+
}
|
76
|
+
else {
|
77
|
+
p.y = distortion_y;
|
78
|
+
}
|
79
|
+
}
|
80
|
+
if(p.x<distortion_y+col_s && p.x>distortion_y-col_s*seed) {
|
81
|
+
if(seed_y>0.){
|
82
|
+
p.x=distortion_x;
|
83
|
+
}
|
84
|
+
else {
|
85
|
+
p.x = 1. - (p.x + distortion_x);
|
86
|
+
}
|
87
|
+
}
|
88
|
+
p.x+=normal.x*seed_x*(seed/5.);
|
89
|
+
p.y+=normal.y*seed_y*(seed/5.);
|
90
|
+
//base from RGB shift shader
|
91
|
+
vec2 offset = amount * vec2( cos(angle), sin(angle));
|
92
|
+
vec4 cr = texture2D(tDiffuse, p + offset);
|
93
|
+
vec4 cga = texture2D(tDiffuse, p);
|
94
|
+
vec4 cb = texture2D(tDiffuse, p - offset);
|
95
|
+
gl_FragColor = vec4(cr.r, cga.g, cb.b, cga.a);
|
96
|
+
//add noise
|
97
|
+
vec4 snow = 200.*amount*vec4(rand(vec2(xs * seed,ys * seed*50.))*0.2);
|
98
|
+
gl_FragColor = gl_FragColor+ snow;
|
99
|
+
}
|
100
|
+
else {
|
101
|
+
gl_FragColor=texture2D (tDiffuse, vUv);
|
102
|
+
}
|
103
|
+
}`
|
48
104
|
};
|
49
105
|
|
50
106
|
export { DigitalGlitch };
|