@tresjs/post-processing 0.6.0-next.0 → 0.6.0

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.
@@ -1,23 +1,23 @@
1
1
  /**
2
2
  * name: @tresjs/post-processing
3
- * version: v0.6.0-next.0
3
+ * version: v0.6.0
4
4
  * (c) 2023
5
5
  * description: Post-processing library for TresJS
6
6
  * author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
7
7
  */
8
- import { inject as W, shallowRef as _, watchEffect as v, onUnmounted as A, watch as w, defineComponent as f, computed as M, provide as j, renderSlot as X } from "vue";
9
- import { EffectPass as Y, BloomEffect as y, GlitchEffect as b, GlitchMode as H, OutlineEffect as P, PixelationEffect as F, DepthOfFieldEffect as R, BlendFunction as I, NoiseEffect as O, EffectComposer as z, RenderPass as U, NormalPass as K, DepthDownsamplingPass as q } from "postprocessing";
10
- import { useTresContext as S, normalizeColor as C, useRenderLoop as J } from "@tresjs/core";
8
+ import { inject as j, shallowRef as _, watchEffect as v, onUnmounted as A, watch as w, defineComponent as f, computed as M, provide as X, renderSlot as Y } from "vue";
9
+ import { EffectPass as H, BloomEffect as y, GlitchEffect as S, GlitchMode as I, OutlineEffect as P, PixelationEffect as F, DepthOfFieldEffect as R, BlendFunction as U, NoiseEffect as O, EffectComposer as z, RenderPass as K, NormalPass as q, DepthDownsamplingPass as J } from "postprocessing";
10
+ import { useTresContext as b, normalizeColor as C, useRenderLoop as Q } from "@tresjs/core";
11
11
  import { HalfFloatType as D } from "three";
12
12
  const N = Symbol(), p = (a) => {
13
- const t = W(N), e = _(null), n = _(null), { scene: o, camera: l } = S();
13
+ const t = j(N), e = _(null), n = _(null), { scene: o, camera: l } = b();
14
14
  v(() => {
15
15
  !l.value || !(n != null && n.value) || (n.value.mainCamera = l.value);
16
16
  });
17
17
  let s = () => {
18
18
  };
19
19
  return s = v(() => {
20
- !l.value || !(t != null && t.value) || !o.value || (s(), !n.value && (n.value = a(), e.value = new Y(l.value, n.value), t.value.addPass(e.value)));
20
+ !l.value || !(t != null && t.value) || !o.value || (s(), !n.value && (n.value = a(), e.value = new H(l.value, n.value), t.value.addPass(e.value)));
21
21
  }), A(() => {
22
22
  var r, i, d;
23
23
  e.value && ((r = t == null ? void 0 : t.value) == null || r.removePass(e.value)), (i = n.value) == null || i.dispose(), (d = e.value) == null || d.dispose();
@@ -25,7 +25,7 @@ const N = Symbol(), p = (a) => {
25
25
  pass: e,
26
26
  effect: n
27
27
  };
28
- }, G = /([^[.\]])+/g, Q = (a, t) => {
28
+ }, G = /([^[.\]])+/g, V = (a, t) => {
29
29
  if (!t)
30
30
  return;
31
31
  const e = Array.isArray(t) ? t : t.match(G);
@@ -33,27 +33,27 @@ const N = Symbol(), p = (a) => {
33
33
  }, T = (a, t, e) => {
34
34
  const n = Array.isArray(t) ? t : t.match(G);
35
35
  n && n.reduce((o, l, s) => (o[l] === void 0 && (o[l] = {}), s === n.length - 1 && (o[l] = e), o[l]), a);
36
- }, V = (a, t) => {
36
+ }, L = (a, t) => {
37
37
  const e = { ...a };
38
38
  return t.forEach((n) => delete e[n]), e;
39
- }, L = (a, t, e, n, o = {}) => w(
39
+ }, $ = (a, t, e, n, o = {}) => w(
40
40
  a,
41
41
  (l) => {
42
42
  var s;
43
43
  if (t.value)
44
44
  if (l === void 0) {
45
45
  const r = n();
46
- T(t.value, e, Q(r, e)), (s = r.dispose) == null || s.call(r);
46
+ T(t.value, e, V(r, e)), (s = r.dispose) == null || s.call(r);
47
47
  } else
48
48
  T(t.value, e, a());
49
49
  },
50
50
  o
51
- ), E = (a, t, e) => a.map(([n, o]) => L(
51
+ ), E = (a, t, e) => a.map(([n, o]) => $(
52
52
  n,
53
53
  t,
54
54
  o,
55
55
  e
56
- )), B = (a, t, e) => Object.keys(a).map((n) => L(
56
+ )), B = (a, t, e) => Object.keys(a).map((n) => $(
57
57
  () => a[n],
58
58
  t,
59
59
  n,
@@ -98,19 +98,19 @@ const N = Symbol(), p = (a) => {
98
98
  dtSize: {}
99
99
  },
100
100
  setup(a, { expose: t }) {
101
- const e = a, { pass: n, effect: o } = p(() => new b(e));
101
+ const e = a, { pass: n, effect: o } = p(() => new S(e));
102
102
  return t({ pass: n, effect: o }), v(() => {
103
103
  const l = () => {
104
104
  if (e.mode !== void 0)
105
- return e.active === !1 ? H.DISABLED : e.mode;
106
- const s = new b(), r = s.mode;
105
+ return e.active === !1 ? I.DISABLED : e.mode;
106
+ const s = new S(), r = s.mode;
107
107
  return s.dispose(), r;
108
108
  };
109
109
  o.value && (o.value.mode = l());
110
110
  }), B(
111
- V(e, ["active", "mode", "blendFunction"]),
111
+ L(e, ["active", "mode", "blendFunction"]),
112
112
  o,
113
- () => new b()
113
+ () => new S()
114
114
  ), (l, s) => null;
115
115
  }
116
116
  }), ae = /* @__PURE__ */ f({
@@ -133,7 +133,7 @@ const N = Symbol(), p = (a) => {
133
133
  visibleEdgeColor: {}
134
134
  },
135
135
  setup(a, { expose: t }) {
136
- const e = a, n = (c) => c !== void 0 ? C(c).getHex() : void 0, { camera: o, scene: l } = S(), s = {
136
+ const e = a, n = (c) => c !== void 0 ? C(c).getHex() : void 0, { camera: o, scene: l } = b(), s = {
137
137
  blur: e.blur,
138
138
  xRay: e.xRay,
139
139
  kernelSize: e.kernelSize,
@@ -214,7 +214,7 @@ const N = Symbol(), p = (a) => {
214
214
  resolutionY: {}
215
215
  },
216
216
  setup(a, { expose: t }) {
217
- const e = a, { camera: n } = S(), { pass: o, effect: l } = p(() => new R(n.value, e));
217
+ const e = a, { camera: n } = b(), { pass: o, effect: l } = p(() => new R(n.value, e));
218
218
  return t({ pass: o, effect: l }), E(
219
219
  [
220
220
  // blendFunction is not updated, because it has no setter in BloomEffect
@@ -235,12 +235,12 @@ const N = Symbol(), p = (a) => {
235
235
  __name: "Noise",
236
236
  props: {
237
237
  premultiply: { type: Boolean, default: !1 },
238
- blendFunction: { default: I.SCREEN }
238
+ blendFunction: { default: U.SCREEN }
239
239
  },
240
240
  setup(a, { expose: t }) {
241
241
  const e = a, { pass: n, effect: o } = p(() => new O(e));
242
242
  return t({ pass: n, effect: o }), B(
243
- e,
243
+ L(e, ["blendFunction"]),
244
244
  o,
245
245
  () => new O()
246
246
  ), (l, s) => null;
@@ -273,11 +273,11 @@ const ue = /* @__PURE__ */ f({
273
273
  frameBufferType: { default: D }
274
274
  },
275
275
  setup(a) {
276
- const t = a, { scene: e, camera: n, renderer: o, sizes: l } = S(), s = _(null);
276
+ const t = a, { scene: e, camera: n, renderer: o, sizes: l } = b(), s = _(null);
277
277
  let r = null, i = null;
278
- j(N, s);
278
+ X(N, s);
279
279
  const d = () => {
280
- s.value && (i = new K(e.value, n.value), i.enabled = !1, s.value.addPass(i), t.resolutionScale !== void 0 && k() && (r = new q({
280
+ s.value && (i = new q(e.value, n.value), i.enabled = !1, s.value.addPass(i), t.resolutionScale !== void 0 && k() && (r = new J({
281
281
  normalBuffer: i.texture,
282
282
  resolutionScale: t.resolutionScale
283
283
  }), r.enabled = !1, s.value.addPass(r)));
@@ -294,7 +294,7 @@ const ue = /* @__PURE__ */ f({
294
294
  };
295
295
  return u.dispose(), g;
296
296
  }), x = () => {
297
- !o.value && !e.value && !n.value || (s.value = new z(o.value, c.value), s.value.addPass(new U(e.value, n.value)), t.disableNormalPass || d());
297
+ !o.value && !e.value && !n.value || (s.value = new z(o.value, c.value), s.value.addPass(new K(e.value, n.value)), t.disableNormalPass || d());
298
298
  };
299
299
  let h = () => {
300
300
  };
@@ -303,8 +303,8 @@ const ue = /* @__PURE__ */ f({
303
303
  }, {
304
304
  immediate: !0
305
305
  });
306
- const { onLoop: $ } = J();
307
- return $(({ delta: u }) => {
306
+ const { onLoop: W } = Q();
307
+ return W(({ delta: u }) => {
308
308
  if (t.enabled && o.value && s.value && l.width.value && l.height.value) {
309
309
  const g = o.value.autoClear;
310
310
  o.value.autoClear = t.autoClear, t.stencilBuffer && !t.autoClear && o.value.clearStencil(), s.value.render(u), o.value.autoClear = g;
@@ -312,7 +312,7 @@ const ue = /* @__PURE__ */ f({
312
312
  }), A(() => {
313
313
  var u;
314
314
  (u = s.value) == null || u.dispose();
315
- }), (u, g) => X(u.$slots, "default");
315
+ }), (u, g) => Y(u.$slots, "default");
316
316
  }
317
317
  });
318
318
  export {
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * name: @tresjs/post-processing
3
- * version: v0.6.0-next.0
3
+ * version: v0.6.0
4
4
  * (c) 2023
5
5
  * description: Post-processing library for TresJS
6
6
  * author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
7
7
  */
8
- (function(s,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("vue"),require("postprocessing"),require("@tresjs/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","postprocessing","@tresjs/core","three"],i):(s=typeof globalThis<"u"?globalThis:s||self,i(s["tres-postprocessing"]={},s.Vue,s.Postprocessing,s.TresjsCore,s.Three))})(this,function(s,i,u,m,_){"use strict";const b=Symbol(),v=a=>{const t=i.inject(b),e=i.shallowRef(null),n=i.shallowRef(null),{scene:l,camera:o}=m.useTresContext();i.watchEffect(()=>{!o.value||!(n!=null&&n.value)||(n.value.mainCamera=o.value)});let r=()=>{};return r=i.watchEffect(()=>{!o.value||!(t!=null&&t.value)||!l.value||(r(),!n.value&&(n.value=a(),e.value=new u.EffectPass(o.value,n.value),t.value.addPass(e.value)))}),i.onUnmounted(()=>{var c,f,h;e.value&&((c=t==null?void 0:t.value)==null||c.removePass(e.value)),(f=n.value)==null||f.dispose(),(h=e.value)==null||h.dispose()}),{pass:e,effect:n}},B=/([^[.\]])+/g,T=(a,t)=>{if(!t)return;const e=Array.isArray(t)?t:t.match(B);return e==null?void 0:e.reduce((n,l)=>n&&n[l],a)},y=(a,t,e)=>{const n=Array.isArray(t)?t:t.match(B);n&&n.reduce((l,o,r)=>(l[o]===void 0&&(l[o]={}),r===n.length-1&&(l[o]=e),l[o]),a)},R=(a,t)=>{const e={...a};return t.forEach(n=>delete e[n]),e},x=(a,t,e,n,l={})=>i.watch(a,o=>{var r;if(t.value)if(o===void 0){const c=n();y(t.value,e,T(c,e)),(r=c.dispose)==null||r.call(c)}else y(t.value,e,a())},l),E=(a,t,e)=>a.map(([n,l])=>x(n,t,l,e)),S=(a,t,e)=>Object.keys(a).map(n=>x(()=>a[n],t,n,e)),O=i.defineComponent({__name:"Bloom",props:{blendFunction:{},intensity:{},kernelSize:{},luminanceThreshold:{},luminanceSmoothing:{},mipmapBlur:{type:Boolean,default:void 0}},setup(a,{expose:t}){const e=a,{pass:n,effect:l}=v(()=>new u.BloomEffect(e));return t({pass:n,effect:l}),E([[()=>e.intensity,"intensity"],[()=>e.kernelSize,"kernelSize"],[()=>e.luminanceSmoothing,"luminanceMaterial.smoothing"],[()=>e.luminanceThreshold,"luminanceMaterial.threshold"]],l,()=>new u.BloomEffect),(o,r)=>null}}),z=i.defineComponent({__name:"Glitch",props:{blendFunction:{},delay:{},duration:{},strength:{},mode:{},active:{type:Boolean},ratio:{},columns:{},chromaticAberrationOffset:{},perturbationMap:{},dtSize:{}},setup(a,{expose:t}){const e=a,{pass:n,effect:l}=v(()=>new u.GlitchEffect(e));return t({pass:n,effect:l}),i.watchEffect(()=>{const o=()=>{if(e.mode!==void 0)return e.active===!1?u.GlitchMode.DISABLED:e.mode;const r=new u.GlitchEffect,c=r.mode;return r.dispose(),c};l.value&&(l.value.mode=o())}),S(R(e,["active","mode","blendFunction"]),l,()=>new u.GlitchEffect),(o,r)=>null}}),D=i.defineComponent({__name:"Outline",props:{outlinedObjects:{},blur:{type:Boolean,default:void 0},xRay:{type:Boolean,default:void 0},kernelSize:{},pulseSpeed:{},resolutionX:{},resolutionY:{},edgeStrength:{},patternScale:{},multisampling:{},blendFunction:{},patternTexture:{},resolutionScale:{},hiddenEdgeColor:{},visibleEdgeColor:{}},setup(a,{expose:t}){const e=a,n=p=>p!==void 0?m.normalizeColor(p).getHex():void 0,{camera:l,scene:o}=m.useTresContext(),r={blur:e.blur,xRay:e.xRay,kernelSize:e.kernelSize,pulseSpeed:e.pulseSpeed,resolutionX:e.resolutionX,resolutionY:e.resolutionY,patternScale:e.patternScale,edgeStrength:e.edgeStrength,blendFunction:e.blendFunction,multisampling:e.multisampling,patternTexture:e.patternTexture,resolutionScale:e.resolutionScale,hiddenEdgeColor:n(e.hiddenEdgeColor),visibleEdgeColor:n(e.visibleEdgeColor)},{pass:c,effect:f}=v(()=>new u.OutlineEffect(o.value,l.value,r));t({pass:c,effect:f}),i.watch([()=>e.outlinedObjects,f],()=>{var p;(p=f.value)==null||p.selection.set(e.outlinedObjects||[])},{immediate:!0});const h=i.computed(()=>({hiddenEdgeColor:e.hiddenEdgeColor?m.normalizeColor(e.hiddenEdgeColor):void 0,visibleEdgeColor:e.visibleEdgeColor?m.normalizeColor(e.visibleEdgeColor):void 0}));return E([[()=>e.blur,"blur"],[()=>e.xRay,"xRay"],[()=>e.pulseSpeed,"pulseSpeed"],[()=>e.kernelSize,"kernelSize"],[()=>e.edgeStrength,"edgeStrength"],[()=>e.patternScale,"patternScale"],[()=>e.multisampling,"multisampling"],[()=>h.value.hiddenEdgeColor,"hiddenEdgeColor"],[()=>h.value.visibleEdgeColor,"visibleEdgeColor"]],f,()=>new u.OutlineEffect),(p,F)=>null}}),k=i.defineComponent({__name:"Pixelation",props:{granularity:{}},setup(a,{expose:t}){const e=a,{pass:n,effect:l}=v(()=>new u.PixelationEffect(e.granularity));return t({pass:n,effect:l}),S(e,l,()=>new u.PixelationEffect),(o,r)=>null}}),M=i.defineComponent({__name:"DepthOfField",props:{blendFunction:{},worldFocusDistance:{},worldFocusRange:{},focusDistance:{},focusRange:{},bokehScale:{},resolutionScale:{},resolutionX:{},resolutionY:{}},setup(a,{expose:t}){const e=a,{camera:n}=m.useTresContext(),{pass:l,effect:o}=v(()=>new u.DepthOfFieldEffect(n.value,e));return t({pass:l,effect:o}),E([[()=>e.worldFocusDistance,"circleOfConfusionMaterial.worldFocusDistance"],[()=>e.focusDistance,"circleOfConfusionMaterial.focusDistance"],[()=>e.worldFocusRange,"circleOfConfusionMaterial.worldFocusRange"],[()=>e.focusRange,"circleOfConfusionMaterial.focusRange"],[()=>e.bokehScale,"bokehScale"],[()=>e.resolutionScale,"blurPass.resolution.scale"],[()=>e.resolutionX,"resolution.width"],[()=>e.resolutionY,"resolution.height"]],o,()=>new u.DepthOfFieldEffect),(r,c)=>null}}),j=i.defineComponent({__name:"Noise",props:{premultiply:{type:Boolean,default:!1},blendFunction:{default:u.BlendFunction.SCREEN}},setup(a,{expose:t}){const e=a,{pass:n,effect:l}=v(()=>new u.NoiseEffect(e));return t({pass:n,effect:l}),S(e,l,()=>new u.NoiseEffect),(o,r)=>null}});let C;function P(){var a;if(C!==void 0)return C;try{let t;const e=document.createElement("canvas");return C=!!(window.WebGL2RenderingContext&&(t=e.getContext("webgl2"))),t&&((a=t.getExtension("WEBGL_lose_context"))==null||a.loseContext()),C}catch{return C=!1}}const A=i.defineComponent({__name:"EffectComposer",props:{enabled:{type:Boolean,default:!0},children:{},depthBuffer:{type:Boolean,default:void 0},disableNormalPass:{type:Boolean,default:!1},stencilBuffer:{type:Boolean,default:void 0},resolutionScale:{},autoClear:{type:Boolean,default:!0},multisampling:{default:0},frameBufferType:{default:_.HalfFloatType}},setup(a){const t=a,{scene:e,camera:n,renderer:l,sizes:o}=m.useTresContext(),r=i.shallowRef(null);let c=null,f=null;i.provide(b,r);const h=()=>{r.value&&(f=new u.NormalPass(e.value,n.value),f.enabled=!1,r.value.addPass(f),t.resolutionScale!==void 0&&P()&&(c=new u.DepthDownsamplingPass({normalBuffer:f.texture,resolutionScale:t.resolutionScale}),c.enabled=!1,r.value.addPass(c)))};i.watchEffect(()=>{r.value&&o.width.value&&o.height.value&&r.value.setSize(o.width.value,o.height.value)});const p=i.computed(()=>{const d=new u.EffectComposer,g={depthBuffer:t.depthBuffer!==void 0?t.depthBuffer:d.inputBuffer.depthBuffer,stencilBuffer:t.stencilBuffer!==void 0?t.stencilBuffer:d.inputBuffer.stencilBuffer,multisampling:P()?0:t.multisampling!==void 0?t.multisampling:d.multisampling,frameBufferType:t.frameBufferType!==void 0?t.frameBufferType:_.HalfFloatType};return d.dispose(),g}),F=()=>{!l.value&&!e.value&&!n.value||(r.value=new u.EffectComposer(l.value,p.value),r.value.addPass(new u.RenderPass(e.value,n.value)),t.disableNormalPass||h())};let w=()=>{};w=i.watch([o.height,o.width],()=>{!o.height.value&&!o.width.value||(i.watchEffect(F),w==null||w())},{immediate:!0});const{onLoop:N}=m.useRenderLoop();return N(({delta:d})=>{if(t.enabled&&l.value&&r.value&&o.width.value&&o.height.value){const g=l.value.autoClear;l.value.autoClear=t.autoClear,t.stencilBuffer&&!t.autoClear&&l.value.clearStencil(),r.value.render(d),l.value.autoClear=g}}),i.onUnmounted(()=>{var d;(d=r.value)==null||d.dispose()}),(d,g)=>i.renderSlot(d.$slots,"default")}});s.Bloom=O,s.DepthOfField=M,s.EffectComposer=A,s.Glitch=z,s.Noise=j,s.Outline=D,s.Pixelation=k,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
8
+ (function(s,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("vue"),require("postprocessing"),require("@tresjs/core"),require("three")):typeof define=="function"&&define.amd?define(["exports","vue","postprocessing","@tresjs/core","three"],i):(s=typeof globalThis<"u"?globalThis:s||self,i(s["tres-postprocessing"]={},s.Vue,s.Postprocessing,s.TresjsCore,s.Three))})(this,function(s,i,u,m,b){"use strict";const _=Symbol(),v=a=>{const t=i.inject(_),e=i.shallowRef(null),n=i.shallowRef(null),{scene:l,camera:o}=m.useTresContext();i.watchEffect(()=>{!o.value||!(n!=null&&n.value)||(n.value.mainCamera=o.value)});let r=()=>{};return r=i.watchEffect(()=>{!o.value||!(t!=null&&t.value)||!l.value||(r(),!n.value&&(n.value=a(),e.value=new u.EffectPass(o.value,n.value),t.value.addPass(e.value)))}),i.onUnmounted(()=>{var c,f,h;e.value&&((c=t==null?void 0:t.value)==null||c.removePass(e.value)),(f=n.value)==null||f.dispose(),(h=e.value)==null||h.dispose()}),{pass:e,effect:n}},B=/([^[.\]])+/g,R=(a,t)=>{if(!t)return;const e=Array.isArray(t)?t:t.match(B);return e==null?void 0:e.reduce((n,l)=>n&&n[l],a)},y=(a,t,e)=>{const n=Array.isArray(t)?t:t.match(B);n&&n.reduce((l,o,r)=>(l[o]===void 0&&(l[o]={}),r===n.length-1&&(l[o]=e),l[o]),a)},x=(a,t)=>{const e={...a};return t.forEach(n=>delete e[n]),e},P=(a,t,e,n,l={})=>i.watch(a,o=>{var r;if(t.value)if(o===void 0){const c=n();y(t.value,e,R(c,e)),(r=c.dispose)==null||r.call(c)}else y(t.value,e,a())},l),E=(a,t,e)=>a.map(([n,l])=>P(n,t,l,e)),S=(a,t,e)=>Object.keys(a).map(n=>P(()=>a[n],t,n,e)),O=i.defineComponent({__name:"Bloom",props:{blendFunction:{},intensity:{},kernelSize:{},luminanceThreshold:{},luminanceSmoothing:{},mipmapBlur:{type:Boolean,default:void 0}},setup(a,{expose:t}){const e=a,{pass:n,effect:l}=v(()=>new u.BloomEffect(e));return t({pass:n,effect:l}),E([[()=>e.intensity,"intensity"],[()=>e.kernelSize,"kernelSize"],[()=>e.luminanceSmoothing,"luminanceMaterial.smoothing"],[()=>e.luminanceThreshold,"luminanceMaterial.threshold"]],l,()=>new u.BloomEffect),(o,r)=>null}}),z=i.defineComponent({__name:"Glitch",props:{blendFunction:{},delay:{},duration:{},strength:{},mode:{},active:{type:Boolean},ratio:{},columns:{},chromaticAberrationOffset:{},perturbationMap:{},dtSize:{}},setup(a,{expose:t}){const e=a,{pass:n,effect:l}=v(()=>new u.GlitchEffect(e));return t({pass:n,effect:l}),i.watchEffect(()=>{const o=()=>{if(e.mode!==void 0)return e.active===!1?u.GlitchMode.DISABLED:e.mode;const r=new u.GlitchEffect,c=r.mode;return r.dispose(),c};l.value&&(l.value.mode=o())}),S(x(e,["active","mode","blendFunction"]),l,()=>new u.GlitchEffect),(o,r)=>null}}),D=i.defineComponent({__name:"Outline",props:{outlinedObjects:{},blur:{type:Boolean,default:void 0},xRay:{type:Boolean,default:void 0},kernelSize:{},pulseSpeed:{},resolutionX:{},resolutionY:{},edgeStrength:{},patternScale:{},multisampling:{},blendFunction:{},patternTexture:{},resolutionScale:{},hiddenEdgeColor:{},visibleEdgeColor:{}},setup(a,{expose:t}){const e=a,n=p=>p!==void 0?m.normalizeColor(p).getHex():void 0,{camera:l,scene:o}=m.useTresContext(),r={blur:e.blur,xRay:e.xRay,kernelSize:e.kernelSize,pulseSpeed:e.pulseSpeed,resolutionX:e.resolutionX,resolutionY:e.resolutionY,patternScale:e.patternScale,edgeStrength:e.edgeStrength,blendFunction:e.blendFunction,multisampling:e.multisampling,patternTexture:e.patternTexture,resolutionScale:e.resolutionScale,hiddenEdgeColor:n(e.hiddenEdgeColor),visibleEdgeColor:n(e.visibleEdgeColor)},{pass:c,effect:f}=v(()=>new u.OutlineEffect(o.value,l.value,r));t({pass:c,effect:f}),i.watch([()=>e.outlinedObjects,f],()=>{var p;(p=f.value)==null||p.selection.set(e.outlinedObjects||[])},{immediate:!0});const h=i.computed(()=>({hiddenEdgeColor:e.hiddenEdgeColor?m.normalizeColor(e.hiddenEdgeColor):void 0,visibleEdgeColor:e.visibleEdgeColor?m.normalizeColor(e.visibleEdgeColor):void 0}));return E([[()=>e.blur,"blur"],[()=>e.xRay,"xRay"],[()=>e.pulseSpeed,"pulseSpeed"],[()=>e.kernelSize,"kernelSize"],[()=>e.edgeStrength,"edgeStrength"],[()=>e.patternScale,"patternScale"],[()=>e.multisampling,"multisampling"],[()=>h.value.hiddenEdgeColor,"hiddenEdgeColor"],[()=>h.value.visibleEdgeColor,"visibleEdgeColor"]],f,()=>new u.OutlineEffect),(p,T)=>null}}),k=i.defineComponent({__name:"Pixelation",props:{granularity:{}},setup(a,{expose:t}){const e=a,{pass:n,effect:l}=v(()=>new u.PixelationEffect(e.granularity));return t({pass:n,effect:l}),S(e,l,()=>new u.PixelationEffect),(o,r)=>null}}),M=i.defineComponent({__name:"DepthOfField",props:{blendFunction:{},worldFocusDistance:{},worldFocusRange:{},focusDistance:{},focusRange:{},bokehScale:{},resolutionScale:{},resolutionX:{},resolutionY:{}},setup(a,{expose:t}){const e=a,{camera:n}=m.useTresContext(),{pass:l,effect:o}=v(()=>new u.DepthOfFieldEffect(n.value,e));return t({pass:l,effect:o}),E([[()=>e.worldFocusDistance,"circleOfConfusionMaterial.worldFocusDistance"],[()=>e.focusDistance,"circleOfConfusionMaterial.focusDistance"],[()=>e.worldFocusRange,"circleOfConfusionMaterial.worldFocusRange"],[()=>e.focusRange,"circleOfConfusionMaterial.focusRange"],[()=>e.bokehScale,"bokehScale"],[()=>e.resolutionScale,"blurPass.resolution.scale"],[()=>e.resolutionX,"resolution.width"],[()=>e.resolutionY,"resolution.height"]],o,()=>new u.DepthOfFieldEffect),(r,c)=>null}}),j=i.defineComponent({__name:"Noise",props:{premultiply:{type:Boolean,default:!1},blendFunction:{default:u.BlendFunction.SCREEN}},setup(a,{expose:t}){const e=a,{pass:n,effect:l}=v(()=>new u.NoiseEffect(e));return t({pass:n,effect:l}),S(x(e,["blendFunction"]),l,()=>new u.NoiseEffect),(o,r)=>null}});let C;function F(){var a;if(C!==void 0)return C;try{let t;const e=document.createElement("canvas");return C=!!(window.WebGL2RenderingContext&&(t=e.getContext("webgl2"))),t&&((a=t.getExtension("WEBGL_lose_context"))==null||a.loseContext()),C}catch{return C=!1}}const A=i.defineComponent({__name:"EffectComposer",props:{enabled:{type:Boolean,default:!0},children:{},depthBuffer:{type:Boolean,default:void 0},disableNormalPass:{type:Boolean,default:!1},stencilBuffer:{type:Boolean,default:void 0},resolutionScale:{},autoClear:{type:Boolean,default:!0},multisampling:{default:0},frameBufferType:{default:b.HalfFloatType}},setup(a){const t=a,{scene:e,camera:n,renderer:l,sizes:o}=m.useTresContext(),r=i.shallowRef(null);let c=null,f=null;i.provide(_,r);const h=()=>{r.value&&(f=new u.NormalPass(e.value,n.value),f.enabled=!1,r.value.addPass(f),t.resolutionScale!==void 0&&F()&&(c=new u.DepthDownsamplingPass({normalBuffer:f.texture,resolutionScale:t.resolutionScale}),c.enabled=!1,r.value.addPass(c)))};i.watchEffect(()=>{r.value&&o.width.value&&o.height.value&&r.value.setSize(o.width.value,o.height.value)});const p=i.computed(()=>{const d=new u.EffectComposer,g={depthBuffer:t.depthBuffer!==void 0?t.depthBuffer:d.inputBuffer.depthBuffer,stencilBuffer:t.stencilBuffer!==void 0?t.stencilBuffer:d.inputBuffer.stencilBuffer,multisampling:F()?0:t.multisampling!==void 0?t.multisampling:d.multisampling,frameBufferType:t.frameBufferType!==void 0?t.frameBufferType:b.HalfFloatType};return d.dispose(),g}),T=()=>{!l.value&&!e.value&&!n.value||(r.value=new u.EffectComposer(l.value,p.value),r.value.addPass(new u.RenderPass(e.value,n.value)),t.disableNormalPass||h())};let w=()=>{};w=i.watch([o.height,o.width],()=>{!o.height.value&&!o.width.value||(i.watchEffect(T),w==null||w())},{immediate:!0});const{onLoop:N}=m.useRenderLoop();return N(({delta:d})=>{if(t.enabled&&l.value&&r.value&&o.width.value&&o.height.value){const g=l.value.autoClear;l.value.autoClear=t.autoClear,t.stencilBuffer&&!t.autoClear&&l.value.clearStencil(),r.value.render(d),l.value.autoClear=g}}),i.onUnmounted(()=>{var d;(d=r.value)==null||d.dispose()}),(d,g)=>i.renderSlot(d.$slots,"default")}});s.Bloom=O,s.DepthOfField=M,s.EffectComposer=A,s.Glitch=z,s.Noise=j,s.Outline=D,s.Pixelation=k,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,16 +1,20 @@
1
1
  {
2
2
  "name": "@tresjs/post-processing",
3
- "description": "Post-processing library for TresJS",
4
- "version": "0.6.0-next.0",
5
3
  "type": "module",
4
+ "version": "0.6.0",
5
+ "packageManager": "pnpm@8.10.2",
6
+ "description": "Post-processing library for TresJS",
6
7
  "author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
7
- "files": [
8
- "dist",
9
- "*.d.ts"
10
- ],
11
8
  "license": "MIT",
12
- "main": "./dist/tres-postprocessing.js",
13
- "module": "./dist/tres-postprocessing.js",
9
+ "keywords": [
10
+ "vue",
11
+ "3d",
12
+ "threejs",
13
+ "three",
14
+ "post-processing",
15
+ "effects",
16
+ "fx"
17
+ ],
14
18
  "exports": {
15
19
  ".": {
16
20
  "types": "./dist/index.d.ts",
@@ -18,20 +22,17 @@
18
22
  },
19
23
  "./*": "./*"
20
24
  },
25
+ "main": "./dist/tres-postprocessing.js",
26
+ "module": "./dist/tres-postprocessing.js",
27
+ "files": [
28
+ "dist",
29
+ "*.d.ts"
30
+ ],
21
31
  "publishConfig": {
22
32
  "access": "public"
23
33
  },
24
- "keywords": [
25
- "vue",
26
- "3d",
27
- "threejs",
28
- "three",
29
- "post-processing",
30
- "effects",
31
- "fx"
32
- ],
33
34
  "scripts": {
34
- "dev": "vite",
35
+ "dev": "cd playground && npm run dev",
35
36
  "playground": "cd playground && npm run dev",
36
37
  "build": "vite build",
37
38
  "preview": "vite preview",
@@ -47,33 +48,33 @@
47
48
  "vue": ">=3.3"
48
49
  },
49
50
  "dependencies": {
50
- "@tresjs/core": "^3.4.1",
51
- "@unocss/core": "^0.57.1",
52
- "@vueuse/core": "^10.5.0",
53
- "postprocessing": "^6.33.2",
54
- "three-stdlib": "^2.28.3"
51
+ "@tresjs/core": "^3.5.0",
52
+ "@unocss/core": "^0.57.3",
53
+ "@vueuse/core": "^10.6.1",
54
+ "postprocessing": "^6.33.3",
55
+ "three-stdlib": "^2.28.5"
55
56
  },
56
57
  "devDependencies": {
57
- "@release-it/conventional-changelog": "^7.0.2",
58
+ "@release-it/conventional-changelog": "^8.0.1",
58
59
  "@tresjs/eslint-config-vue": "^0.2.1",
59
- "@types/three": "^0.157.2",
60
- "@vitejs/plugin-vue": "^4.4.0",
60
+ "@types/three": "^0.158.2",
61
+ "@vitejs/plugin-vue": "^4.4.1",
61
62
  "gsap": "^3.12.2",
62
63
  "kolorist": "^1.8.0",
63
64
  "pathe": "^1.1.1",
64
- "prettier": "^3.0.3",
65
- "release-it": "^16.2.1",
65
+ "prettier": "^3.1.0",
66
+ "release-it": "^17.0.0",
66
67
  "rollup-plugin-analyzer": "^4.0.0",
67
68
  "rollup-plugin-visualizer": "^5.9.2",
68
69
  "three": "^0.158.0",
69
70
  "typescript": "^5.2.2",
70
- "unocss": "^0.57.1",
71
+ "unocss": "^0.57.3",
71
72
  "vite": "^4.5.0",
72
73
  "vite-plugin-banner": "^0.7.1",
73
- "vite-plugin-dts": "3.6.2",
74
+ "vite-plugin-dts": "3.6.3",
74
75
  "vite-svg-loader": "^4.0.0",
75
- "vitepress": "1.0.0-rc.24",
76
- "vue": "^3.3.7",
76
+ "vitepress": "1.0.0-rc.25",
77
+ "vue": "^3.3.8",
77
78
  "vue-tsc": "^1.8.22"
78
79
  }
79
80
  }