@babylonjs-toolkit/next 9.22.2 → 9.28.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.
Files changed (52) hide show
  1. package/lib/index.d.ts +35 -23
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js +35 -23
  4. package/lib/ipostprocessparameter.d.ts +6 -0
  5. package/lib/ipostprocessparameter.d.ts.map +1 -0
  6. package/lib/particleconstantcurve.d.ts +3 -0
  7. package/lib/particleconstantcurve.d.ts.map +1 -0
  8. package/lib/particleconstantcurve.js +3 -0
  9. package/lib/particleconstantgradient.d.ts +3 -0
  10. package/lib/particleconstantgradient.d.ts.map +1 -0
  11. package/lib/particleconstantgradient.js +4 -0
  12. package/lib/particleemptytexture.d.ts +3 -0
  13. package/lib/particleemptytexture.d.ts.map +1 -0
  14. package/lib/particleemptytexture.js +1 -0
  15. package/lib/particlev2.d.ts +3 -0
  16. package/lib/particlev2.d.ts.map +1 -0
  17. package/lib/particlev2.js +1 -0
  18. package/lib/particlev3.d.ts +3 -0
  19. package/lib/particlev3.d.ts.map +1 -0
  20. package/lib/particlev3.js +1 -0
  21. package/lib/particlewhite.d.ts +3 -0
  22. package/lib/particlewhite.d.ts.map +1 -0
  23. package/lib/particlewhite.js +1 -0
  24. package/lib/project.d.ts +4 -117
  25. package/lib/project.d.ts.map +1 -1
  26. package/lib/project.js +65 -182
  27. package/lib/scenemanager.d.ts +7576 -860
  28. package/lib/scenemanager.d.ts.map +1 -1
  29. package/lib/scenemanager.js +58595 -20811
  30. package/lib/sgshadowdepth.d.ts +19 -0
  31. package/lib/sgshadowdepth.d.ts.map +1 -0
  32. package/lib/sgshadowdepth.js +214 -0
  33. package/lib/shadergraphfullscreen.d.ts +18 -0
  34. package/lib/shadergraphfullscreen.d.ts.map +1 -0
  35. package/lib/shadergraphfullscreen.js +22 -0
  36. package/lib/shadergraphlighttable.d.ts +7 -0
  37. package/lib/shadergraphlighttable.d.ts.map +1 -0
  38. package/lib/shadergraphlighttable.js +74 -0
  39. package/lib/unityscrollbar.d.ts.map +1 -1
  40. package/package.json +14 -14
  41. package/lib/channelmixerplugin.d.ts +0 -11
  42. package/lib/channelmixerplugin.d.ts.map +0 -1
  43. package/lib/channelmixerplugin.js +0 -34
  44. package/lib/iparticlesystemtransform.d.ts +0 -9
  45. package/lib/iparticlesystemtransform.d.ts.map +0 -1
  46. package/lib/lutblendplugin.d.ts +0 -13
  47. package/lib/lutblendplugin.d.ts.map +0 -1
  48. package/lib/lutblendplugin.js +0 -153
  49. package/lib/perlin2d.d.ts +0 -9
  50. package/lib/perlin2d.d.ts.map +0 -1
  51. package/lib/perlin2d.js +0 -45
  52. /package/lib/{iparticlesystemtransform.js → ipostprocessparameter.js} +0 -0
@@ -1,153 +0,0 @@
1
- import { Texture } from '@babylonjs/core/Materials/Textures/texture';
2
- import { PostProcess } from '@babylonjs/core';
3
- export class LUTBlendPlugin {
4
- static CreatePostProcess(scene, camera, options) {
5
- const lutA = options?.lutA || null;
6
- const lutB = options?.lutB || null;
7
- const mix = options?.mix ?? 0.0;
8
- const fragment = `
9
- precision highp float;
10
- varying vec2 vUV;
11
- uniform sampler2D textureSampler;
12
- uniform sampler2D lutA;
13
- uniform sampler2D lutB;
14
- uniform float mixVal;
15
- uniform float lutTileCountA; // number of tiles per row for LUT A
16
- uniform float lutTileCountB; // number of tiles per row for LUT B
17
-
18
- vec3 sampleLUT(in sampler2D lut, in vec3 color, in float tileCount) {
19
- if (tileCount <= 0.5) return color;
20
- float tc = floor(tileCount + 0.5);
21
- float tileSize = 1.0 / tc;
22
-
23
- // For normalized RGB [0..1], compute position in LUT
24
- float r = color.r;
25
- float g = color.g;
26
- float b = color.b;
27
-
28
- // Determine slice and tile coords
29
- float slice = b * (tc - 1.0);
30
- float sliceIndex = floor(slice + 0.5);
31
-
32
- float tx = mod(sliceIndex, tc);
33
- float ty = floor(sliceIndex / tc);
34
-
35
- vec2 uv = vec2(tx * tileSize + r * tileSize, ty * tileSize + g * tileSize);
36
- vec3 sampled = texture2D(lut, uv).rgb;
37
- return sampled;
38
- }
39
-
40
- void main(void) {
41
- vec4 sceneColor = texture2D(textureSampler, vUV);
42
- vec3 a = sceneColor.rgb;
43
- if (lutTileCountA <= 0.5 || lutTileCountB <= 0.5) {
44
- // No LUT size provided fallback to passthrough
45
- gl_FragColor = sceneColor;
46
- return;
47
- }
48
- vec3 colA = sampleLUT(lutA, a, lutTileCountA);
49
- vec3 colB = sampleLUT(lutB, a, lutTileCountB);
50
- vec3 outc = mix(colA, colB, mixVal);
51
- gl_FragColor = vec4(outc, sceneColor.a);
52
- }
53
- `;
54
- const post = new PostProcess("lutBlend", fragment, ["mixVal", "lutTileCountA", "lutTileCountB"], ["lutA", "lutB"], 1.0, camera, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false);
55
- function detectTileCountFromDims(w, h) {
56
- if (!w || !h)
57
- return 0;
58
- if (w % h === 0)
59
- return Math.round(w / h);
60
- if (h % w === 0)
61
- return Math.round(h / w);
62
- if (w === h) {
63
- const t = Math.round(Math.sqrt(w));
64
- if (t * t === w)
65
- return t;
66
- return Math.round(Math.sqrt(w));
67
- }
68
- return Math.round(Math.pow(w * h, 1.0 / 3.0));
69
- }
70
- let tileA = 0, tileB = 0;
71
- post.onApply = (effect) => {
72
- effect.setFloat('mixVal', mix);
73
- if (lutA && typeof lutA === 'string') {
74
- const tA = new Texture(lutA, scene, true, false, Texture.TRILINEAR_SAMPLINGMODE, undefined, undefined, undefined, false);
75
- tA.onLoadObservable.addOnce(() => {
76
- tileA = detectTileCountFromDims(tA.getSize ? tA.getSize().width : tA.width, tA.getSize ? tA.getSize().height : tA.height);
77
- });
78
- effect.setTexture('lutA', tA);
79
- }
80
- else if (lutA instanceof Texture) {
81
- const tA = lutA;
82
- tileA = detectTileCountFromDims(tA.getSize ? tA.getSize().width : tA.width, tA.getSize ? tA.getSize().height : tA.height);
83
- effect.setTexture('lutA', tA);
84
- }
85
- if (lutB && typeof lutB === 'string') {
86
- const tB = new Texture(lutB, scene, true, false, Texture.TRILINEAR_SAMPLINGMODE, undefined, undefined, undefined, false);
87
- tB.onLoadObservable.addOnce(() => {
88
- tileB = detectTileCountFromDims(tB.getSize ? tB.getSize().width : tB.width, tB.getSize ? tB.getSize().height : tB.height);
89
- });
90
- effect.setTexture('lutB', tB);
91
- }
92
- else if (lutB instanceof Texture) {
93
- const tB = lutB;
94
- tileB = detectTileCountFromDims(tB.getSize ? tB.getSize().width : tB.width, tB.getSize ? tB.getSize().height : tB.height);
95
- effect.setTexture('lutB', tB);
96
- }
97
- effect.setFloat('lutTileCountA', tileA);
98
- effect.setFloat('lutTileCountB', tileB);
99
- };
100
- post._detectedTileCountA = () => tileA;
101
- post._detectedTileCountB = () => tileB;
102
- return post;
103
- }
104
- getWGSLShaderCode() {
105
- return `
106
- [[group(0), binding(0)]] var textureSampler: texture_2d<f32>;
107
- [[group(0), binding(1)]] var textureSamplerSampler: sampler;
108
- [[group(0), binding(2)]] var lutA: texture_2d<f32>;
109
- [[group(0), binding(3)]] var lutASampler: sampler;
110
- [[group(0), binding(4)]] var lutB: texture_2d<f32>;
111
- [[group(0), binding(5)]] var lutBSampler: sampler;
112
-
113
- [[block]] struct Uniforms {
114
- mixVal: f32;
115
- lutTileCountA: f32;
116
- lutTileCountB: f32;
117
- };
118
- [[group(0), binding(6)]] var<uniform> uniforms: Uniforms;
119
-
120
- fn sampleLUT(lut: texture_2d<f32>, lutSamp: sampler, color: vec3<f32>, tileCount: f32) -> vec3<f32> {
121
- if (tileCount <= 0.5) { return color; }
122
- let tc = floor(tileCount + 0.5);
123
- let tileSize = 1.0 / tc;
124
-
125
- let r = color.r;
126
- let g = color.g;
127
- let b = color.b;
128
-
129
- let slice = b * (tc - 1.0);
130
- let sliceIndex = floor(slice + 0.5);
131
-
132
- let tx = sliceIndex % tc;
133
- let ty = floor(sliceIndex / tc);
134
-
135
- let uv = vec2<f32>(tx * tileSize + r * tileSize, ty * tileSize + g * tileSize);
136
- let sampled = textureSample(lut, lutSamp, uv).rgb;
137
- return sampled;
138
- }
139
-
140
- fn mainImage(vUV: vec2<f32>) -> vec4<f32> {
141
- let sceneColor = textureSample(textureSampler, textureSamplerSampler, vUV);
142
- let a = sceneColor.rgb;
143
- if (uniforms.lutTileCountA <= 0.5 || uniforms.lutTileCountB <= 0.5) {
144
- return sceneColor;
145
- }
146
- let colA = sampleLUT(lutA, lutASampler, a, uniforms.lutTileCountA);
147
- let colB = sampleLUT(lutB, lutBSampler, a, uniforms.lutTileCountB);
148
- let outc = mix(colA, colB, uniforms.mixVal);
149
- return vec4<f32>(outc, sceneColor.a);
150
- }
151
- `;
152
- }
153
- }
package/lib/perlin2d.d.ts DELETED
@@ -1,9 +0,0 @@
1
- export declare class Perlin2D {
2
- private perm;
3
- constructor(seed: number);
4
- private fade;
5
- private lerp;
6
- private grad;
7
- noise(x: number, y: number): number;
8
- }
9
- //# sourceMappingURL=perlin2d.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"perlin2d.d.ts","sourceRoot":"","sources":["../src/perlin2d.ts"],"names":[],"mappings":"AACA,qBAAa,QAAQ;IACf,OAAO,CAAC,IAAI,CAAW;gBACX,IAAI,EAAE,MAAM;IAsBxB,OAAO,CAAC,IAAI;IAGZ,OAAO,CAAC,IAAI;IAGZ,OAAO,CAAC,IAAI;IAUL,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;CAuB7C"}
package/lib/perlin2d.js DELETED
@@ -1,45 +0,0 @@
1
- export class Perlin2D {
2
- constructor(seed) {
3
- const p = new Array(256);
4
- for (let i = 0; i < 256; i++)
5
- p[i] = i;
6
- let state = (seed | 0) >>> 0;
7
- const nextRand = () => {
8
- state = (state * 16807) % 2147483647;
9
- return state / 2147483647;
10
- };
11
- for (let i = 255; i > 0; i--) {
12
- const r = Math.floor(nextRand() * (i + 1));
13
- const tmp = p[i];
14
- p[i] = p[r];
15
- p[r] = tmp;
16
- }
17
- this.perm = new Array(512);
18
- for (let i = 0; i < 512; i++) {
19
- this.perm[i] = p[i & 255];
20
- }
21
- }
22
- fade(t) {
23
- return t * t * t * (t * (t * 6 - 15) + 10);
24
- }
25
- lerp(a, b, t) {
26
- return a + t * (b - a);
27
- }
28
- grad(hash, x, y) {
29
- const h = hash & 7;
30
- const u = h < 4 ? x : y;
31
- const v = h < 4 ? y : x;
32
- return ((h & 1) ? -u : u) + ((h & 2) ? -v : v);
33
- }
34
- noise(x, y) {
35
- const X = Math.floor(x) & 255;
36
- const Y = Math.floor(y) & 255;
37
- const xf = x - Math.floor(x);
38
- const yf = y - Math.floor(y);
39
- const u = this.fade(xf);
40
- const v = this.fade(yf);
41
- const A = this.perm[X] + Y;
42
- const B = this.perm[X + 1] + Y;
43
- return this.lerp(this.lerp(this.grad(this.perm[A], xf, yf), this.grad(this.perm[B], xf - 1, yf), u), this.lerp(this.grad(this.perm[A + 1], xf, yf - 1), this.grad(this.perm[B + 1], xf - 1, yf - 1), u), v);
44
- }
45
- }