@pixagram/renderart 0.4.5 → 1.0.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 (47) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +171 -67
  3. package/dist/crt-gpu.d.ts +30 -0
  4. package/dist/crt-gpu.d.ts.map +1 -0
  5. package/dist/crt-gpu.js +282 -0
  6. package/dist/crt-gpu.js.map +1 -0
  7. package/dist/hex-gpu.d.ts +35 -0
  8. package/dist/hex-gpu.d.ts.map +1 -0
  9. package/dist/hex-gpu.js +382 -0
  10. package/dist/hex-gpu.js.map +1 -0
  11. package/dist/index.d.ts +21 -300
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +36 -963
  14. package/dist/index.js.map +1 -1
  15. package/dist/types.d.ts +84 -0
  16. package/dist/types.d.ts.map +1 -0
  17. package/dist/types.js +7 -0
  18. package/dist/types.js.map +1 -0
  19. package/dist/wasm-wrapper.d.ts +71 -0
  20. package/dist/wasm-wrapper.d.ts.map +1 -0
  21. package/dist/wasm-wrapper.js +76 -0
  22. package/dist/wasm-wrapper.js.map +1 -0
  23. package/dist/xbrz-gpu.d.ts +34 -0
  24. package/dist/xbrz-gpu.d.ts.map +1 -0
  25. package/dist/xbrz-gpu.js +640 -0
  26. package/dist/xbrz-gpu.js.map +1 -0
  27. package/package.json +48 -35
  28. package/src/crt-gpu.ts +313 -0
  29. package/src/hex-gpu.ts +426 -0
  30. package/src/index.ts +52 -0
  31. package/src/types.ts +90 -0
  32. package/src/wasm/crt.rs +181 -0
  33. package/src/wasm/hex.rs +324 -0
  34. package/src/wasm/lib.rs +285 -0
  35. package/src/wasm/xbrz.rs +262 -0
  36. package/src/wasm-wrapper.ts +195 -0
  37. package/src/xbrz-gpu.ts +671 -0
  38. package/dist/index.d.mts +0 -305
  39. package/dist/index.mjs +0 -948
  40. package/dist/index.mjs.map +0 -1
  41. package/pkg/LICENSE +0 -21
  42. package/pkg/README.md +0 -117
  43. package/pkg/renderart_wasm.d.ts +0 -52
  44. package/pkg/renderart_wasm.js +0 -5
  45. package/pkg/renderart_wasm_bg.js +0 -283
  46. package/pkg/renderart_wasm_bg.wasm +0 -0
  47. package/pkg/renderart_wasm_bg.wasm.d.ts +0 -24
package/dist/index.d.mts DELETED
@@ -1,305 +0,0 @@
1
- /**
2
- * Common types for RenderArt module
3
- */
4
- /** RGBA pixel data as Uint8ClampedArray or Uint8Array */
5
- type PixelData = Uint8ClampedArray | Uint8Array;
6
- /** Input image data structure */
7
- interface ImageInput {
8
- /** Raw RGBA pixel data */
9
- data: PixelData;
10
- /** Image width in pixels */
11
- width: number;
12
- /** Image height in pixels */
13
- height: number;
14
- }
15
- /** Output image data structure */
16
- interface ImageOutput {
17
- /** Raw RGBA pixel data */
18
- data: Uint8ClampedArray;
19
- /** Output width in pixels */
20
- width: number;
21
- /** Output height in pixels */
22
- height: number;
23
- }
24
- /** Rendering backend type */
25
- type Backend = 'gpu' | 'cpu' | 'auto';
26
- /** CRT effect configuration */
27
- interface CrtOptions {
28
- /** Scale factor (2-32, default: 3) */
29
- scale?: number;
30
- /** Horizontal warp intensity (0.0-0.1, default: 0.015) */
31
- warpX?: number;
32
- /** Vertical warp intensity (0.0-0.1, default: 0.02) */
33
- warpY?: number;
34
- /** Scanline hardness (-10 to 0, default: -4) */
35
- scanHardness?: number;
36
- /** Scanline opacity (0.0-1.0, default: 0.5) */
37
- scanOpacity?: number;
38
- /** Shadow mask opacity (0.0-1.0, default: 0.3) */
39
- maskOpacity?: number;
40
- /** Enable barrel distortion (default: true) */
41
- enableWarp?: boolean;
42
- /** Enable scanlines (default: true) */
43
- enableScanlines?: boolean;
44
- /** Enable shadow mask (default: true) */
45
- enableMask?: boolean;
46
- /** Rendering backend (default: 'auto') */
47
- backend?: Backend;
48
- }
49
- /** CRT preset names */
50
- type CrtPreset = 'default' | 'authentic' | 'subtle' | 'flat';
51
- /** Hexagon orientation */
52
- type HexOrientation = 'flat-top' | 'pointy-top';
53
- /** Hexagonal upscaling configuration */
54
- interface HexOptions {
55
- /** Scale factor (2-32, default: 16) */
56
- scale?: number;
57
- /** Hexagon orientation (default: 'flat-top') */
58
- orientation?: HexOrientation;
59
- /** Draw hexagon borders (default: false) */
60
- drawBorders?: boolean;
61
- /** Border color as CSS color or 0xRRGGBBAA (default: '#282828') */
62
- borderColor?: string | number;
63
- /** Border thickness in pixels (default: 1) */
64
- borderThickness?: number;
65
- /** Background color (default: 'transparent') */
66
- backgroundColor?: string | number;
67
- /** Rendering backend (default: 'auto') */
68
- backend?: Backend;
69
- }
70
- /** HEX preset names */
71
- type HexPreset = 'default' | 'bordered' | 'pointy';
72
- /** xBRZ scaling configuration */
73
- interface XbrzOptions {
74
- /** Scale factor (2-6, default: 2) */
75
- scale?: number;
76
- /** Luminance weight for edge detection (0.0-1.0, default: 1.0) */
77
- luminanceWeight?: number;
78
- /** Equal color tolerance (0-50, default: 30) */
79
- equalColorTolerance?: number;
80
- /** Dominant direction threshold (3.5-6.0, default: 4.4) */
81
- dominantDirectionThreshold?: number;
82
- /** Steep direction threshold (2.0-3.0, default: 2.2) */
83
- steepDirectionThreshold?: number;
84
- }
85
- /** XBRZ preset names */
86
- type XbrzPreset = 'default' | 'sharp' | 'smooth';
87
- /** Renderer capabilities */
88
- interface RendererCapabilities {
89
- /** WebGL2 GPU rendering available */
90
- gpu: boolean;
91
- /** WASM CPU rendering available */
92
- cpu: boolean;
93
- /** Maximum texture size (GPU) */
94
- maxTextureSize: number;
95
- /** Recommended backend for current device */
96
- recommendedBackend: Backend;
97
- }
98
- /** Render statistics */
99
- interface RenderStats {
100
- /** Rendering time in milliseconds */
101
- renderTimeMs: number;
102
- /** Backend used for rendering */
103
- backend: Backend;
104
- /** Input dimensions */
105
- inputSize: {
106
- width: number;
107
- height: number;
108
- };
109
- /** Output dimensions */
110
- outputSize: {
111
- width: number;
112
- height: number;
113
- };
114
- }
115
- /** Common renderer interface */
116
- interface Renderer<TOptions> {
117
- /** Render image with options */
118
- render(input: ImageInput | ImageData, options?: TOptions): ImageOutput;
119
- /** Check if renderer is ready */
120
- isReady(): boolean;
121
- /** Dispose resources */
122
- dispose(): void;
123
- }
124
-
125
- /**
126
- * CRT GPU Renderer using WebGL2
127
- *
128
- * High-performance CRT effect rendering using fragment shaders.
129
- */
130
-
131
- /** CRT GPU Renderer */
132
- declare class CrtGpuRenderer implements Renderer<CrtOptions> {
133
- private gl;
134
- private canvas;
135
- private program;
136
- private texture;
137
- private uniforms;
138
- private initialized;
139
- private currentCanvasSize;
140
- private currentTexSize;
141
- /** Create a new CRT GPU renderer */
142
- static create(): CrtGpuRenderer;
143
- private init;
144
- private createShader;
145
- /** Check if renderer is ready */
146
- isReady(): boolean;
147
- /** Render CRT effect */
148
- render(input: ImageInput | ImageData, options?: CrtOptions): ImageOutput;
149
- /** Dispose resources */
150
- dispose(): void;
151
- }
152
- /** CRT presets */
153
- declare const CRT_PRESETS: Record<string, Partial<CrtOptions>>;
154
-
155
- /**
156
- * Hexagonal GPU Renderer using WebGL2
157
- *
158
- * High-performance hexagonal pixel grid transformation using fragment shaders.
159
- */
160
-
161
- /** Calculate output dimensions for hex rendering */
162
- declare function hexGetDimensions(srcWidth: number, srcHeight: number, scale: number, orientation?: HexOrientation): {
163
- width: number;
164
- height: number;
165
- };
166
- /** HEX GPU Renderer */
167
- declare class HexGpuRenderer implements Renderer<HexOptions> {
168
- private gl;
169
- private canvas;
170
- private program;
171
- private texture;
172
- private uniforms;
173
- private initialized;
174
- private currentCanvasSize;
175
- private currentTexSize;
176
- /** Create a new HEX GPU renderer */
177
- static create(): HexGpuRenderer;
178
- private init;
179
- private createShader;
180
- /** Check if renderer is ready */
181
- isReady(): boolean;
182
- /** Render hexagonal effect */
183
- render(input: ImageInput | ImageData, options?: HexOptions): ImageOutput;
184
- /** Dispose resources */
185
- dispose(): void;
186
- }
187
- /** HEX presets */
188
- declare const HEX_PRESETS: Record<string, Partial<HexOptions>>;
189
-
190
- /**
191
- * WASM Module Loader
192
- *
193
- * Simple manual initialization pattern.
194
- * User must call initWasm() with the WASM module before using CPU renderers.
195
- */
196
-
197
- /**
198
- * Initialize WASM module.
199
- *
200
- * @example
201
- * ```typescript
202
- * import init, * as wasmModule from '@pixagram/renderart/dist/renderart_wasm_bg.js';
203
- * import { initWasm } from '@pixagram/renderart';
204
- *
205
- * await init();
206
- * initWasm(wasmModule);
207
- * ```
208
- */
209
- declare function initWasm(wasmModule: any): void;
210
- /** Check if WASM is loaded */
211
- declare function isWasmLoaded(): boolean;
212
- /** CRT CPU Renderer using WASM */
213
- declare class CrtCpuRenderer {
214
- /** Create renderer (WASM must be initialized first) */
215
- static create(): CrtCpuRenderer;
216
- /** Check if renderer is ready */
217
- isReady(): boolean;
218
- /** Render CRT effect */
219
- render(input: ImageInput | ImageData, options?: CrtOptions): ImageOutput;
220
- dispose(): void;
221
- }
222
- /** HEX CPU Renderer using WASM */
223
- declare class HexCpuRenderer {
224
- static create(): HexCpuRenderer;
225
- isReady(): boolean;
226
- render(input: ImageInput | ImageData, options?: HexOptions): ImageOutput;
227
- getDimensions(srcWidth: number, srcHeight: number, scale: number, orientation?: HexOrientation): {
228
- width: number;
229
- height: number;
230
- };
231
- dispose(): void;
232
- }
233
- /** XBRZ CPU Renderer using WASM */
234
- declare class XbrzCpuRenderer {
235
- static create(): XbrzCpuRenderer;
236
- isReady(): boolean;
237
- render(input: ImageInput | ImageData, options?: XbrzOptions): ImageOutput;
238
- dispose(): void;
239
- }
240
- /** XBRZ presets */
241
- declare const XBRZ_PRESETS: Record<string, Partial<XbrzOptions>>;
242
-
243
- /**
244
- * RenderArt - Unified Pixel Art Rendering Engine
245
- *
246
- * GPU renderers work standalone. CPU renderers require WASM initialization.
247
- */
248
-
249
- /** CRT rendering engine */
250
- declare class CrtEngine {
251
- private gpuRenderer;
252
- private cpuRenderer;
253
- private gpuAvailable;
254
- constructor(gpuAvailable: boolean);
255
- private ensureGpu;
256
- private ensureCpu;
257
- /** Render with options or preset */
258
- render(input: ImageInput | ImageData, optionsOrPreset?: CrtOptions | CrtPreset): ImageOutput;
259
- /** Synchronous GPU-only render */
260
- renderSync(input: ImageInput | ImageData, options?: CrtOptions): ImageOutput;
261
- dispose(): void;
262
- }
263
- /** HEX rendering engine */
264
- declare class HexEngine {
265
- private gpuRenderer;
266
- private cpuRenderer;
267
- private gpuAvailable;
268
- constructor(gpuAvailable: boolean);
269
- private ensureGpu;
270
- private ensureCpu;
271
- render(input: ImageInput | ImageData, optionsOrPreset?: HexOptions | HexPreset): ImageOutput;
272
- renderSync(input: ImageInput | ImageData, options?: HexOptions): ImageOutput;
273
- getDimensions(srcWidth: number, srcHeight: number, options?: HexOptions): {
274
- width: number;
275
- height: number;
276
- };
277
- dispose(): void;
278
- }
279
- /** XBRZ rendering engine (CPU/WASM only) */
280
- declare class XbrzEngine {
281
- private cpuRenderer;
282
- private ensureCpu;
283
- render(input: ImageInput | ImageData, optionsOrPreset?: XbrzOptions | XbrzPreset): ImageOutput;
284
- dispose(): void;
285
- }
286
- /** Main RenderArt instance */
287
- declare class RenderArt {
288
- readonly crt: CrtEngine;
289
- readonly hex: HexEngine;
290
- readonly xbrz: XbrzEngine;
291
- readonly capabilities: RendererCapabilities;
292
- private constructor();
293
- /**
294
- * Create RenderArt instance.
295
- * For CPU/WASM support, call initWasm() first.
296
- */
297
- static create(): RenderArt;
298
- /**
299
- * Create GPU-only RenderArt instance (no WASM needed).
300
- */
301
- static createGpuOnly(): RenderArt;
302
- dispose(): void;
303
- }
304
-
305
- export { type Backend, CRT_PRESETS, CrtCpuRenderer, CrtEngine, CrtGpuRenderer, type CrtOptions, type CrtPreset, HEX_PRESETS, HexCpuRenderer, HexEngine, HexGpuRenderer, type HexOptions, type HexOrientation, type HexPreset, type ImageInput, type ImageOutput, type PixelData, RenderArt, type RenderStats, type Renderer, type RendererCapabilities, XBRZ_PRESETS, XbrzCpuRenderer, XbrzEngine, type XbrzOptions, type XbrzPreset, hexGetDimensions, initWasm, isWasmLoaded };