micugl 0.0.8 → 0.0.10

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 (84) hide show
  1. package/dist/core/index.d.ts +7 -0
  2. package/dist/core/lib/createShaderConfig.d.ts +16 -0
  3. package/dist/core/lib/vectorUtils.d.ts +8 -0
  4. package/dist/core/managers/FBOManager.d.ts +21 -0
  5. package/dist/core/managers/FBOManager.js +1 -0
  6. package/dist/core/managers/FBOManager.mjs +127 -0
  7. package/dist/core/managers/WebGLManager.d.ts +35 -0
  8. package/dist/core/managers/WebGLManager.js +1 -0
  9. package/dist/core/managers/WebGLManager.mjs +281 -0
  10. package/dist/core/systems/Passes.d.ts +11 -0
  11. package/dist/core/systems/Passes.js +1 -0
  12. package/dist/core/systems/Passes.mjs +84 -0
  13. package/dist/core/systems/Postprocessing.d.ts +31 -0
  14. package/dist/core/systems/Postprocessing.js +1 -0
  15. package/dist/core/systems/Postprocessing.mjs +135 -0
  16. package/dist/core.js +1 -0
  17. package/dist/core.mjs +20 -0
  18. package/dist/index.d.ts +3 -49
  19. package/dist/index.js +1 -1
  20. package/dist/index.mjs +14 -14
  21. package/dist/react/components/base/BasePingPongShaderComponent.d.ts +21 -0
  22. package/dist/react/components/base/BaseShaderComponent.d.ts +15 -0
  23. package/dist/react/components/engine/PingPongShaderEngine.d.ts +12 -0
  24. package/dist/react/components/engine/ShaderEngine.d.ts +18 -0
  25. package/dist/react/components/index.d.ts +0 -0
  26. package/dist/react/hooks/index.d.ts +3 -0
  27. package/dist/react/hooks/useDarkMode.d.ts +1 -0
  28. package/dist/react/hooks/usePingPongPasses.d.ts +21 -0
  29. package/dist/react/hooks/useUniformUpdaters.d.ts +4 -0
  30. package/dist/react/index.d.ts +8 -0
  31. package/dist/react/lib/createUniformUpdater.d.ts +8 -0
  32. package/dist/react.js +1 -0
  33. package/dist/react.mjs +20 -0
  34. package/dist/types.d.ts +164 -204
  35. package/package.json +10 -40
  36. package/dist/MarbleScene.d.ts +0 -27
  37. package/dist/RippleScene.d.ts +0 -20
  38. package/dist/examples/Marble/MarbleScene.d.ts +0 -20
  39. package/dist/examples/Marble/MarbleScene.js +0 -1
  40. package/dist/examples/Marble/MarbleScene.mjs +0 -71
  41. package/dist/examples/Marble/marbleShaders.d.ts +0 -2
  42. package/dist/examples/Marble/marbleShaders.js +0 -129
  43. package/dist/examples/Marble/marbleShaders.mjs +0 -139
  44. package/dist/examples/Ripple/RippleScene.d.ts +0 -13
  45. package/dist/examples/Ripple/RippleScene.js +0 -1
  46. package/dist/examples/Ripple/RippleScene.mjs +0 -109
  47. package/dist/examples/Ripple/rippleShaders.d.ts +0 -3
  48. package/dist/examples/Ripple/rippleShaders.js +0 -80
  49. package/dist/examples/Ripple/rippleShaders.mjs +0 -94
  50. package/dist/examples/index.d.ts +0 -4
  51. package/dist/examples/index.js +0 -1
  52. package/dist/examples/index.mjs +0 -13
  53. package/dist/marbleShaders.d.ts +0 -5
  54. package/dist/rippleShaders.d.ts +0 -7
  55. package/dist/src/core/managers/FBOManager.js +0 -1
  56. package/dist/src/core/managers/FBOManager.mjs +0 -120
  57. package/dist/src/core/managers/WebGLManager.js +0 -1
  58. package/dist/src/core/managers/WebGLManager.mjs +0 -273
  59. package/dist/src/core/systems/Passes.js +0 -1
  60. package/dist/src/core/systems/Passes.mjs +0 -78
  61. package/dist/src/core/systems/Postprocessing.js +0 -1
  62. package/dist/src/core/systems/Postprocessing.mjs +0 -128
  63. package/dist/types.js +0 -1
  64. package/dist/types.mjs +0 -1
  65. /package/dist/{src/core → core}/lib/createShaderConfig.js +0 -0
  66. /package/dist/{src/core → core}/lib/createShaderConfig.mjs +0 -0
  67. /package/dist/{src/core → core}/lib/vectorUtils.js +0 -0
  68. /package/dist/{src/core → core}/lib/vectorUtils.mjs +0 -0
  69. /package/dist/{src/react → react}/components/base/BasePingPongShaderComponent.js +0 -0
  70. /package/dist/{src/react → react}/components/base/BasePingPongShaderComponent.mjs +0 -0
  71. /package/dist/{src/react → react}/components/base/BaseShaderComponent.js +0 -0
  72. /package/dist/{src/react → react}/components/base/BaseShaderComponent.mjs +0 -0
  73. /package/dist/{src/react → react}/components/engine/PingPongShaderEngine.js +0 -0
  74. /package/dist/{src/react → react}/components/engine/PingPongShaderEngine.mjs +0 -0
  75. /package/dist/{src/react → react}/components/engine/ShaderEngine.js +0 -0
  76. /package/dist/{src/react → react}/components/engine/ShaderEngine.mjs +0 -0
  77. /package/dist/{src/react → react}/hooks/useDarkMode.js +0 -0
  78. /package/dist/{src/react → react}/hooks/useDarkMode.mjs +0 -0
  79. /package/dist/{src/react → react}/hooks/usePingPongPasses.js +0 -0
  80. /package/dist/{src/react → react}/hooks/usePingPongPasses.mjs +0 -0
  81. /package/dist/{src/react → react}/hooks/useUniformUpdaters.js +0 -0
  82. /package/dist/{src/react → react}/hooks/useUniformUpdaters.mjs +0 -0
  83. /package/dist/{src/react → react}/lib/createUniformUpdater.js +0 -0
  84. /package/dist/{src/react → react}/lib/createUniformUpdater.mjs +0 -0
package/dist/types.d.ts CHANGED
@@ -1,204 +1,164 @@
1
- export declare interface AttributeConfig {
2
- name: string;
3
- size: number;
4
- type: AttributeType;
5
- normalized: boolean;
6
- stride: number;
7
- offset: number;
8
- instanced?: boolean;
9
- }
10
-
11
- export declare type AttributeType = 'FLOAT' | 'BYTE' | 'SHORT' | 'UNSIGNED_BYTE' | 'UNSIGNED_SHORT';
12
-
13
- export declare interface BufferData {
14
- buffer: WebGLBuffer;
15
- data: Float32Array | Uint8Array | Uint16Array | Int8Array | Int16Array;
16
- }
17
-
18
- export declare type Float32Array16 = TypedFloat32Array<16>;
19
-
20
- export declare type Float32Array2 = TypedFloat32Array<2>;
21
-
22
- export declare type Float32Array3 = TypedFloat32Array<3>;
23
-
24
- export declare type Float32Array4 = TypedFloat32Array<4>;
25
-
26
- export declare type Float32Array9 = TypedFloat32Array<9>;
27
-
28
- export declare interface FramebufferOptions {
29
- width: number;
30
- height: number;
31
- textureCount?: number;
32
- textureOptions?: Partial<TextureOptions>;
33
- }
34
-
35
- export declare interface FramebufferResources {
36
- framebuffer: WebGLFramebuffer;
37
- textures: WebGLTexture[];
38
- currentTextureIndex: number;
39
- width: number;
40
- height: number;
41
- }
42
-
43
- export declare type Mat2 = [
44
- number,
45
- number,
46
- number,
47
- number
48
- ];
49
-
50
- export declare type Mat3 = [
51
- number,
52
- number,
53
- number,
54
- number,
55
- number,
56
- number,
57
- number,
58
- number,
59
- number
60
- ];
61
-
62
- export declare type Mat4 = [
63
- number,
64
- number,
65
- number,
66
- number,
67
- number,
68
- number,
69
- number,
70
- number,
71
- number,
72
- number,
73
- number,
74
- number,
75
- number,
76
- number,
77
- number,
78
- number
79
- ];
80
-
81
- export declare interface PingPongState {
82
- readIndex: number;
83
- writeIndex: number;
84
- swap: () => void;
85
- }
86
-
87
- export declare interface RenderOptions {
88
- clear?: boolean;
89
- clearColor?: Vec4;
90
- }
91
-
92
- export declare interface RenderPass {
93
- programId: string;
94
- inputTextures: TextureBinding[];
95
- outputFramebuffer?: string | null;
96
- uniforms?: Record<string, {
97
- type: UniformType;
98
- value: RenderPassUniformValue;
99
- }>;
100
- renderOptions?: RenderOptions;
101
- }
102
-
103
- export declare type RenderPassUniformUpdateFn = (time: number, width: number, height: number) => UniformTypeMap[UniformType];
104
-
105
- export declare type RenderPassUniformValue = UniformTypeMap[UniformType] | RenderPassUniformUpdateFn;
106
-
107
- export declare type ShaderAttributeLocations = Record<string, number>;
108
-
109
- export declare interface ShaderProgramConfig {
110
- vertexShader: string;
111
- fragmentShader: string;
112
- uniforms: UniformConfig[];
113
- attributes?: AttributeConfig[];
114
- }
115
-
116
- export declare type ShaderRenderCallback = (time: number, resources: ShaderResources, gl: WebGLRenderingContext) => void;
117
-
118
- export declare interface ShaderResources {
119
- program: WebGLProgram;
120
- uniforms: ShaderUniformLocations;
121
- attributes: ShaderAttributeLocations;
122
- buffers: Record<string, BufferData>;
123
- }
124
-
125
- export declare type ShaderUniformLocations = Record<string, WebGLUniformLocation | null>;
126
-
127
- export declare interface TextureBinding {
128
- id: string;
129
- textureUnit: number;
130
- bindingType: 'read' | 'write' | 'readwrite';
131
- }
132
-
133
- export declare interface TextureOptions {
134
- width: number;
135
- height: number;
136
- internalFormat?: number;
137
- format?: number;
138
- type?: number;
139
- minFilter?: number;
140
- magFilter?: number;
141
- wrapS?: number;
142
- wrapT?: number;
143
- generateMipmap?: boolean;
144
- }
145
-
146
- export declare type TypedFloat32Array<N extends number> = Float32Array & {
147
- length: N;
148
- };
149
-
150
- export declare interface UniformConfig {
151
- name: string;
152
- type: UniformType;
153
- }
154
-
155
- export declare interface UniformParam<T extends UniformType = UniformType> {
156
- value: UniformValue<T>;
157
- type: T;
158
- }
159
-
160
- export declare type UniformParamMap = {
161
- [K in UniformType]: UniformParam<K>;
162
- };
163
-
164
- export declare type UniformType = 'float' | 'vec2' | 'vec3' | 'vec4' | 'mat2' | 'mat3' | 'mat4' | 'int' | 'sampler2D';
165
-
166
- export declare interface UniformTypeMap {
167
- 'float': number;
168
- 'int': number;
169
- 'sampler2D': number;
170
- 'vec2': Float32Array2;
171
- 'vec3': Float32Array3;
172
- 'vec4': Float32Array4;
173
- 'mat2': Float32Array4;
174
- 'mat3': Float32Array9;
175
- 'mat4': Float32Array16;
176
- }
177
-
178
- export declare type UniformUpdateFn<T extends UniformType> = (time?: number, width?: number, height?: number) => UniformTypeMap[T];
179
-
180
- export declare interface UniformUpdaterDef<T extends UniformType> {
181
- name: string;
182
- type: T;
183
- updateFn: UniformUpdateFn<T>;
184
- }
185
-
186
- export declare type UniformValue<T extends UniformType> = UniformTypeMap[T] | UniformUpdateFn<T>;
187
-
188
- export declare type Vec2 = [number, number];
189
-
190
- export declare type Vec3 = [number, number, number];
191
-
192
- export declare type Vec4 = [number, number, number, number];
193
-
194
- export declare type WebGLExtensionName = Extract<keyof WebGLExtensionTypes, string>;
195
-
196
- export declare interface WebGLExtensionTypes {
197
- 'OES_texture_float': OES_texture_float;
198
- 'OES_texture_float_linear': OES_texture_float_linear;
199
- 'OES_vertex_array_object': OES_vertex_array_object;
200
- 'ANGLE_instanced_arrays': ANGLE_instanced_arrays;
201
- [key: string]: unknown;
202
- }
203
-
204
- export { }
1
+ export interface BufferData {
2
+ buffer: WebGLBuffer;
3
+ data: Float32Array | Uint8Array | Uint16Array | Int8Array | Int16Array;
4
+ }
5
+ export type UniformType = 'float' | 'vec2' | 'vec3' | 'vec4' | 'mat2' | 'mat3' | 'mat4' | 'int' | 'sampler2D';
6
+ export type AttributeType = 'FLOAT' | 'BYTE' | 'SHORT' | 'UNSIGNED_BYTE' | 'UNSIGNED_SHORT';
7
+ export interface RenderOptions {
8
+ clear?: boolean;
9
+ clearColor?: Vec4;
10
+ }
11
+ export type ShaderUniformLocations = Record<string, WebGLUniformLocation | null>;
12
+ export type ShaderAttributeLocations = Record<string, number>;
13
+ export interface UniformConfig {
14
+ name: string;
15
+ type: UniformType;
16
+ }
17
+ export interface AttributeConfig {
18
+ name: string;
19
+ size: number;
20
+ type: AttributeType;
21
+ normalized: boolean;
22
+ stride: number;
23
+ offset: number;
24
+ instanced?: boolean;
25
+ }
26
+ export interface ShaderResources {
27
+ program: WebGLProgram;
28
+ uniforms: ShaderUniformLocations;
29
+ attributes: ShaderAttributeLocations;
30
+ buffers: Record<string, BufferData>;
31
+ }
32
+ export interface ShaderProgramConfig {
33
+ vertexShader: string;
34
+ fragmentShader: string;
35
+ uniforms: UniformConfig[];
36
+ attributes?: AttributeConfig[];
37
+ }
38
+ export type ShaderRenderCallback = (time: number, resources: ShaderResources, gl: WebGLRenderingContext) => void;
39
+ export interface WebGLExtensionTypes {
40
+ 'OES_texture_float': OES_texture_float;
41
+ 'OES_texture_float_linear': OES_texture_float_linear;
42
+ 'OES_vertex_array_object': OES_vertex_array_object;
43
+ 'ANGLE_instanced_arrays': ANGLE_instanced_arrays;
44
+ [key: string]: unknown;
45
+ }
46
+ export type WebGLExtensionName = Extract<keyof WebGLExtensionTypes, string>;
47
+ export interface TextureOptions {
48
+ width: number;
49
+ height: number;
50
+ internalFormat?: number;
51
+ format?: number;
52
+ type?: number;
53
+ minFilter?: number;
54
+ magFilter?: number;
55
+ wrapS?: number;
56
+ wrapT?: number;
57
+ generateMipmap?: boolean;
58
+ }
59
+ export interface FramebufferResources {
60
+ framebuffer: WebGLFramebuffer;
61
+ textures: WebGLTexture[];
62
+ currentTextureIndex: number;
63
+ width: number;
64
+ height: number;
65
+ }
66
+ export interface FramebufferOptions {
67
+ width: number;
68
+ height: number;
69
+ textureCount?: number;
70
+ textureOptions?: Partial<TextureOptions>;
71
+ }
72
+ export interface TextureBinding {
73
+ id: string;
74
+ textureUnit: number;
75
+ bindingType: 'read' | 'write' | 'readwrite';
76
+ }
77
+ export type RenderPassUniformUpdateFn = (time: number, width: number, height: number) => UniformTypeMap[UniformType];
78
+ export type RenderPassUniformValue = UniformTypeMap[UniformType] | RenderPassUniformUpdateFn;
79
+ export interface RenderPass {
80
+ programId: string;
81
+ inputTextures: TextureBinding[];
82
+ outputFramebuffer?: string | null;
83
+ uniforms?: Record<string, {
84
+ type: UniformType;
85
+ value: RenderPassUniformValue;
86
+ }>;
87
+ renderOptions?: RenderOptions;
88
+ }
89
+ export interface PingPongState {
90
+ readIndex: number;
91
+ writeIndex: number;
92
+ swap: () => void;
93
+ }
94
+ export interface UniformTypeMap {
95
+ 'float': number;
96
+ 'int': number;
97
+ 'sampler2D': number;
98
+ 'vec2': Float32Array2;
99
+ 'vec3': Float32Array3;
100
+ 'vec4': Float32Array4;
101
+ 'mat2': Float32Array4;
102
+ 'mat3': Float32Array9;
103
+ 'mat4': Float32Array16;
104
+ }
105
+ export type UniformUpdateFn<T extends UniformType> = (time?: number, width?: number, height?: number) => UniformTypeMap[T];
106
+ export type UniformValue<T extends UniformType> = UniformTypeMap[T] | UniformUpdateFn<T>;
107
+ export interface UniformUpdaterDef<T extends UniformType = UniformType> {
108
+ name: string;
109
+ type: T;
110
+ updateFn: UniformUpdateFn<T>;
111
+ }
112
+ export interface UniformParam<T extends UniformType = UniformType> {
113
+ value: UniformValue<T>;
114
+ type: T;
115
+ }
116
+ export type UniformParamMap = {
117
+ [K in UniformType]: UniformParam<K>;
118
+ };
119
+ export type Vec2 = [number, number];
120
+ export type Vec3 = [number, number, number];
121
+ export type Vec4 = [number, number, number, number];
122
+ export type Mat2 = [
123
+ number,
124
+ number,
125
+ number,
126
+ number
127
+ ];
128
+ export type Mat3 = [
129
+ number,
130
+ number,
131
+ number,
132
+ number,
133
+ number,
134
+ number,
135
+ number,
136
+ number,
137
+ number
138
+ ];
139
+ export type Mat4 = [
140
+ number,
141
+ number,
142
+ number,
143
+ number,
144
+ number,
145
+ number,
146
+ number,
147
+ number,
148
+ number,
149
+ number,
150
+ number,
151
+ number,
152
+ number,
153
+ number,
154
+ number,
155
+ number
156
+ ];
157
+ export type TypedFloat32Array<N extends number> = Float32Array & {
158
+ length: N;
159
+ };
160
+ export type Float32Array2 = TypedFloat32Array<2>;
161
+ export type Float32Array3 = TypedFloat32Array<3>;
162
+ export type Float32Array4 = TypedFloat32Array<4>;
163
+ export type Float32Array9 = TypedFloat32Array<9>;
164
+ export type Float32Array16 = TypedFloat32Array<16>;
package/package.json CHANGED
@@ -1,56 +1,26 @@
1
1
  {
2
2
  "name": "micugl",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "description": "Micu gl - Small React shader library",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.mjs",
8
8
  "types": "dist/index.d.ts",
9
- "typesVersions": {
10
- "*": {
11
- "*": [
12
- "dist/*"
13
- ],
14
- "types": [
15
- "dist/types.d.ts"
16
- ]
17
- }
18
- },
19
9
  "exports": {
20
10
  ".": {
21
11
  "types": "./dist/index.d.ts",
22
12
  "import": "./dist/index.mjs",
23
13
  "require": "./dist/index.js"
24
14
  },
25
- "./types": {
26
- "types": "./dist/types.d.ts",
27
- "import": "./dist/types.mjs",
28
- "require": "./dist/types.js"
29
- },
30
- "./examples": {
31
- "types": "./dist/examples/index.d.ts",
32
- "import": "./dist/examples/index.mjs",
33
- "require": "./dist/examples/index.js"
34
- },
35
- "./examples/Marble/MarbleScene": {
36
- "types": "./dist/examples/Marble/MarbleScene.d.ts",
37
- "import": "./dist/examples/Marble/MarbleScene.mjs",
38
- "require": "./dist/examples/Marble/MarbleScene.js"
39
- },
40
- "./examples/Marble/marbleShaders": {
41
- "types": "./dist/examples/Marble/marbleShaders.d.ts",
42
- "import": "./dist/examples/Marble/marbleShaders.mjs",
43
- "require": "./dist/examples/Marble/marbleShaders.js"
44
- },
45
- "./examples/SimpleRipple/SimpleRippleScene": {
46
- "types": "./dist/examples/SimpleRipple/SimpleRippleScene.d.ts",
47
- "import": "./dist/examples/SimpleRipple/SimpleRippleScene.mjs",
48
- "require": "./dist/examples/SimpleRipple/SimpleRippleScene.js"
15
+ "./core": {
16
+ "types": "./dist/core/index.d.ts",
17
+ "import": "./dist/core.mjs",
18
+ "require": "./dist/core.js"
49
19
  },
50
- "./examples/SimpleRipple/rippleShaders": {
51
- "types": "./dist/examples/SimpleRipple/rippleShaders.d.ts",
52
- "import": "./dist/examples/SimpleRipple/rippleShaders.mjs",
53
- "require": "./dist/examples/SimpleRipple/rippleShaders.js"
20
+ "./react": {
21
+ "types": "./dist/react/index.d.ts",
22
+ "import": "./dist/react.mjs",
23
+ "require": "./dist/react.js"
54
24
  }
55
25
  },
56
26
  "files": [
@@ -63,7 +33,7 @@
63
33
  "typecheck": "tsc --noEmit"
64
34
  },
65
35
  "peerDependencies": {
66
- "react": "^18.0.0 || ^19.0.0",
36
+ "react": "^18.0.0 || ^19.0.0 || ^19.1.0",
67
37
  "react-dom": "^18.0.0 || ^19.0.0"
68
38
  },
69
39
  "devDependencies": {
@@ -1,27 +0,0 @@
1
- import { CSSProperties } from 'react';
2
- import { JSX } from 'react/jsx-runtime';
3
-
4
- declare const Marble: ({ marbleScale, tileScale, turbulence, swirl, veinFrequency, veinWidth, colorStart, colorEnd, veinColor, colorStartDark, colorEndDark, veinColorDark, className, style }: MarbleProps) => JSX.Element;
5
- export { Marble }
6
- export default Marble;
7
-
8
- export declare interface MarbleProps {
9
- marbleScale?: number;
10
- tileScale?: number;
11
- turbulence?: number;
12
- swirl?: number;
13
- colorStart?: Vec3;
14
- colorEnd?: Vec3;
15
- veinColor?: Vec3;
16
- colorStartDark?: Vec3;
17
- colorEndDark?: Vec3;
18
- veinColorDark?: Vec3;
19
- veinFrequency?: number;
20
- veinWidth?: number;
21
- className?: string;
22
- style?: CSSProperties;
23
- }
24
-
25
- declare type Vec3 = [number, number, number];
26
-
27
- export { }
@@ -1,20 +0,0 @@
1
- import { CSSProperties } from 'react';
2
- import { JSX } from 'react/jsx-runtime';
3
-
4
- declare const Ripple: ({ damping, mouseForce, color1, color2, iterations, className, style }: RippleProps) => JSX.Element;
5
- export { Ripple }
6
- export default Ripple;
7
-
8
- export declare interface RippleProps {
9
- damping?: number;
10
- mouseForce?: number;
11
- color1?: Vec3;
12
- color2?: Vec3;
13
- iterations?: number;
14
- className?: string;
15
- style?: CSSProperties;
16
- }
17
-
18
- declare type Vec3 = [number, number, number];
19
-
20
- export { }
@@ -1,20 +0,0 @@
1
- import { CSSProperties } from 'react';
2
- type Vec3 = [number, number, number];
3
- export interface MarbleProps {
4
- marbleScale?: number;
5
- tileScale?: number;
6
- turbulence?: number;
7
- swirl?: number;
8
- colorStart?: Vec3;
9
- colorEnd?: Vec3;
10
- veinColor?: Vec3;
11
- colorStartDark?: Vec3;
12
- colorEndDark?: Vec3;
13
- veinColorDark?: Vec3;
14
- veinFrequency?: number;
15
- veinWidth?: number;
16
- className?: string;
17
- style?: CSSProperties;
18
- }
19
- export declare const Marble: ({ marbleScale, tileScale, turbulence, swirl, veinFrequency, veinWidth, colorStart, colorEnd, veinColor, colorStartDark, colorEndDark, veinColorDark, className, style }: MarbleProps) => import("react/jsx-runtime").JSX.Element;
20
- export default Marble;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("react/jsx-runtime"),C=require("../../src/core/lib/createShaderConfig.js"),r=require("../../src/core/lib/vectorUtils.js"),O=require("../../src/react/components/base/BaseShaderComponent.js"),y=require("../../src/react/hooks/useDarkMode.js"),t=require("./marbleShaders.js"),R=[.8,.8,.9],g=[.3,.3,.6],q=[.1,.1,.3],D=[.2,.2,.3],M=[.1,.1,.2],E=[.05,.05,.1],a=({marbleScale:o=3,tileScale:l=1,turbulence:u=.5,swirl:n=6,veinFrequency:c=6,veinWidth:s=2,colorStart:i=R,colorEnd:v=g,veinColor:d=q,colorStartDark:_=D,colorEndDark:f=M,veinColorDark:S=E,className:m="",style:p})=>{const e=y.useDarkMode(),b=C.createShaderConfig({vertexShader:t.marbleVertexShader,fragmentShader:t.marbleFragmentShader,uniformNames:{u_marbleScale:"float",u_tileScale:"float",u_turbulence:"float",u_swirl:"float",u_colorStart:"vec3",u_colorEnd:"vec3",u_veinColor:"vec3",u_veinFrequency:"float",u_veinWidth:"float"}});return h.jsx(O.BaseShaderComponent,{programId:"marble-shader",shaderConfig:b,className:m,style:p,uniforms:{marbleScale:{value:o,type:"float"},tileScale:{value:l,type:"float"},turbulence:{value:u,type:"float"},swirl:{value:n,type:"float"},veinFrequency:{value:c,type:"float"},veinWidth:{value:s,type:"float"},colorStart:{type:"vec3",value:r.vec3(e?_:i)},colorEnd:{type:"vec3",value:r.vec3(e?f:v)},veinColor:{type:"vec3",value:r.vec3(e?S:d)}}})};exports.Marble=a;exports.default=a;
@@ -1,71 +0,0 @@
1
- import { jsx as S } from "react/jsx-runtime";
2
- import { createShaderConfig as O } from "../../src/core/lib/createShaderConfig.mjs";
3
- import { vec3 as o } from "../../src/core/lib/vectorUtils.mjs";
4
- import { BaseShaderComponent as y } from "../../src/react/components/base/BaseShaderComponent.mjs";
5
- import { useDarkMode as C } from "../../src/react/hooks/useDarkMode.mjs";
6
- import { marbleVertexShader as R, marbleFragmentShader as h } from "./marbleShaders.mjs";
7
- const b = [0.8, 0.8, 0.9], D = [0.3, 0.3, 0.6], E = [0.1, 0.1, 0.3], L = [0.2, 0.2, 0.3], g = [0.1, 0.1, 0.2], A = [0.05, 0.05, 0.1], M = ({
8
- marbleScale: t = 3,
9
- tileScale: r = 1,
10
- turbulence: a = 0.5,
11
- swirl: l = 6,
12
- veinFrequency: n = 6,
13
- veinWidth: c = 2,
14
- colorStart: u = b,
15
- colorEnd: f = D,
16
- veinColor: m = E,
17
- colorStartDark: i = L,
18
- colorEndDark: v = g,
19
- veinColorDark: s = A,
20
- className: p = "",
21
- style: _
22
- }) => {
23
- const e = C(), d = O({
24
- vertexShader: R,
25
- fragmentShader: h,
26
- uniformNames: {
27
- u_marbleScale: "float",
28
- u_tileScale: "float",
29
- u_turbulence: "float",
30
- u_swirl: "float",
31
- u_colorStart: "vec3",
32
- u_colorEnd: "vec3",
33
- u_veinColor: "vec3",
34
- u_veinFrequency: "float",
35
- u_veinWidth: "float"
36
- }
37
- });
38
- return /* @__PURE__ */ S(
39
- y,
40
- {
41
- programId: "marble-shader",
42
- shaderConfig: d,
43
- className: p,
44
- style: _,
45
- uniforms: {
46
- marbleScale: { value: t, type: "float" },
47
- tileScale: { value: r, type: "float" },
48
- turbulence: { value: a, type: "float" },
49
- swirl: { value: l, type: "float" },
50
- veinFrequency: { value: n, type: "float" },
51
- veinWidth: { value: c, type: "float" },
52
- colorStart: {
53
- type: "vec3",
54
- value: o(e ? i : u)
55
- },
56
- colorEnd: {
57
- type: "vec3",
58
- value: o(e ? v : f)
59
- },
60
- veinColor: {
61
- type: "vec3",
62
- value: o(e ? s : m)
63
- }
64
- }
65
- }
66
- );
67
- };
68
- export {
69
- M as Marble,
70
- M as default
71
- };
@@ -1,2 +0,0 @@
1
- export declare const marbleVertexShader = "\n attribute vec2 a_position;\n varying vec2 v_texCoord;\n\n void main() {\n gl_Position = vec4(a_position, 0.0, 1.0);\n v_texCoord = a_position * 0.5 + 0.5;\n }\n";
2
- export declare const marbleFragmentShader = "\nprecision highp float;\n \nuniform vec2 u_resolution;\nuniform float u_time;\nuniform float u_marbleScale;\nuniform float u_turbulence;\nuniform float u_swirl;\nuniform vec3 u_colorStart;\nuniform vec3 u_colorEnd;\nuniform vec3 u_veinColor;\nuniform float u_veinFrequency;\nuniform float u_veinWidth;\nuniform float u_tileScale;\n \nvarying vec2 v_texCoord;\n \nfloat hash(float n) {\n return fract(sin(n) * 43758.5453123);\n}\n \nfloat hash(vec2 p) {\n return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453123);\n}\n \nfloat noise(vec2 x) {\n vec2 i = floor(x);\n vec2 f = fract(x);\n \n float a = hash(i);\n float b = hash(i + vec2(1.0, 0.0));\n float c = hash(i + vec2(0.0, 1.0));\n float d = hash(i + vec2(1.0, 1.0));\n \n vec2 u = f * f * (3.0 - 2.0 * f);\n \n return clamp(mix(mix(a, b, u.x), mix(c, d, u.x), u.y), 0.0, 1.0);\n}\n \nfloat fbm(vec2 p, int octaves) {\n float value = 0.0;\n float amplitude = 0.5;\n float frequency = 1.0;\n float maxValue = 0.0;\n \n for (int i = 0; i < 10; i++) {\n if (i >= octaves) break;\n value += amplitude * noise(p * frequency);\n maxValue += amplitude;\n frequency *= 2.0;\n amplitude *= 0.5;\n }\n \n return value / maxValue;\n}\n \nvec2 swirl(vec2 p, float strength) {\n float theta = fbm(p, 3) * strength;\n float c = cos(theta);\n float s = sin(theta);\n return vec2(\n p.x * c - p.y * s,\n p.x * s + p.y * c\n );\n}\n\nvec2 applyTilePixelation(vec2 uv, float tileScale) {\n vec2 cell = floor(uv * tileScale);\n float cellHash = (1.3 * fbm(u_time * 0.00002 * vec2(pow(pow(cell.x * cell.y, 2.0), 0.5), 2.0) + cell, 1) + 0.8 * hash(cell)) * 0.5;\n float hashValue = cellHash * 3.0;\n float pixelSize = 1.0;\n\n if (hashValue < 1.0) pixelSize = 32.0;\n else if (hashValue < 1.3) pixelSize = 16.0;\n else if (hashValue < 1.8) pixelSize = 64.0;\n else if (hashValue < 1.85) pixelSize = 16.0;\n else if (hashValue < 2.2) pixelSize = 64.0;\n else if (hashValue < 2.3) pixelSize = 16.0;\n else if (hashValue < 2.6) pixelSize = 32.0;\n else pixelSize = 128.0;\n\n return floor(uv * pixelSize) / pixelSize;\n}\n \nvoid main() {\n vec2 uv = v_texCoord * 2.0 - 1.0;\n uv = uv * u_resolution / min(u_resolution.x, u_resolution.y);\n \n vec2 pixelatedUv = applyTilePixelation(uv, u_tileScale);\n \n float time = u_time * 0.25;\n \n vec2 swirlUv = swirl(pixelatedUv + vec2(time * 0.0005, time * 0.00083), max(0.0, min(10.0, u_swirl)));\n \n float baseNoise = fbm(swirlUv * max(0.1, u_marbleScale) + vec2(time * 0.1, time * 0.13), 5);\n \n float turbulenceAmount = max(0.0, min(1.0, u_turbulence));\n float turbulence = turbulenceAmount * fbm(swirlUv * max(0.1, u_marbleScale) * 2.0 + vec2(time * -0.15), 2);\n baseNoise = clamp(baseNoise + turbulence, 0.0, 1.0);\n \n float veinFreq = max(0.1, u_veinFrequency);\n float veinW = max(0.1, min(5.0, u_veinWidth));\n float veins = abs(sin(baseNoise * veinFreq * 3.14159));\n veins = pow(veins, veinW);\n veins = clamp(veins, 0.0, 1.0);\n \n vec3 baseColor = mix(u_colorStart, u_colorEnd, baseNoise);\n \n vec3 marbleColor = mix(baseColor, u_veinColor, veins);\n \n float highlight = pow(fbm(swirlUv * max(0.1, u_marbleScale) * 4.0, 2), 3.0) * 0.2;\n \n marbleColor = floor(marbleColor * 32.0) / 32.0;\n marbleColor = mix(marbleColor, u_veinColor, veins * 0.5);\n marbleColor = marbleColor + 0.0425;\n marbleColor = clamp(marbleColor, 0.0, 1.0);\n\n marbleColor = mix(marbleColor, u_veinColor, 0.7);\n gl_FragColor = vec4(marbleColor, 1.0);\n}\n";