@pixagram/renderart 0.2.2 → 0.3.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.
- package/README.md +148 -71
- package/dist/index.d.mts +36 -24
- package/dist/index.d.ts +36 -24
- package/dist/index.js +118 -155
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +116 -155
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -10
- package/pkg/LICENSE +21 -0
- package/pkg/README.md +223 -0
- package/pkg/renderart_wasm.d.ts +52 -0
- package/pkg/renderart_wasm.js +5 -0
- package/pkg/renderart_wasm_bg.js +283 -0
- package/pkg/renderart_wasm_bg.wasm +0 -0
- package/pkg/renderart_wasm_bg.wasm.d.ts +24 -0
- package/wasm/renderart_wasm.wasm +0 -0
package/README.md
CHANGED
|
@@ -4,9 +4,15 @@ High-performance pixel art rendering engines with GPU (WebGL2) and CPU (WASM) su
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- **CRT Effect** (2-32x) - Classic CRT display simulation
|
|
8
|
-
- **HEX Upscaling** (2-32x) -
|
|
9
|
-
- **XBRZ Scaling** (2-6x) - Edge-preserving pixel art scaling
|
|
7
|
+
- **CRT Effect** (2-32x) - Classic CRT display simulation with barrel distortion, scanlines, and shadow mask
|
|
8
|
+
- **HEX Upscaling** (2-32x) - Transform pixel art into hexagonal grid representations
|
|
9
|
+
- **XBRZ Scaling** (2-6x) - Edge-preserving pixel art scaling algorithm
|
|
10
|
+
|
|
11
|
+
All engines support:
|
|
12
|
+
- ⚡ **GPU acceleration** via WebGL2 (CRT, HEX)
|
|
13
|
+
- 🦀 **CPU fallback** via Rust/WASM (all engines)
|
|
14
|
+
- 🎨 **Customizable presets** and fine-grained options
|
|
15
|
+
- 🔄 **Auto-initialization** - WASM loads automatically on first use
|
|
10
16
|
|
|
11
17
|
## Installation
|
|
12
18
|
|
|
@@ -14,70 +20,115 @@ High-performance pixel art rendering engines with GPU (WebGL2) and CPU (WASM) su
|
|
|
14
20
|
npm install @pixagram/renderart
|
|
15
21
|
```
|
|
16
22
|
|
|
17
|
-
##
|
|
23
|
+
## ⚠️ Building from Source (Required)
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
The package includes placeholder WASM. You **must** build the actual WASM module:
|
|
20
26
|
|
|
21
|
-
```
|
|
22
|
-
|
|
27
|
+
```bash
|
|
28
|
+
# Prerequisites: Rust + wasm-pack
|
|
29
|
+
# Install wasm-pack: https://rustwasm.github.io/wasm-pack/installer/
|
|
23
30
|
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
cd node_modules/@pixagram/renderart
|
|
32
|
+
npm run build:wasm
|
|
33
|
+
```
|
|
26
34
|
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
Or build everything:
|
|
36
|
+
```bash
|
|
37
|
+
npm run build
|
|
29
38
|
```
|
|
30
39
|
|
|
31
|
-
|
|
40
|
+
## Quick Start
|
|
32
41
|
|
|
33
42
|
```typescript
|
|
34
|
-
import { RenderArt
|
|
43
|
+
import { RenderArt } from '@pixagram/renderart';
|
|
35
44
|
|
|
36
|
-
//
|
|
37
|
-
|
|
45
|
+
// Create renderer (auto-initializes WASM)
|
|
46
|
+
const renderer = await RenderArt.create();
|
|
38
47
|
|
|
39
|
-
|
|
48
|
+
// Get your image data
|
|
49
|
+
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
40
50
|
|
|
41
|
-
//
|
|
42
|
-
const
|
|
51
|
+
// Apply CRT effect
|
|
52
|
+
const crtResult = await renderer.crt.render(imageData, { scale: 3 });
|
|
43
53
|
|
|
44
|
-
//
|
|
54
|
+
// Apply HEX effect
|
|
55
|
+
const hexResult = await renderer.hex.render(imageData, { scale: 16 });
|
|
56
|
+
|
|
57
|
+
// Apply XBRZ scaling
|
|
45
58
|
const xbrzResult = await renderer.xbrz.render(imageData, { scale: 4 });
|
|
59
|
+
|
|
60
|
+
// Use the result
|
|
61
|
+
ctx.putImageData(new ImageData(crtResult.data, crtResult.width, crtResult.height), 0, 0);
|
|
46
62
|
```
|
|
47
63
|
|
|
48
|
-
###
|
|
64
|
+
### GPU-Only Mode (Sync, No WASM)
|
|
49
65
|
|
|
50
66
|
```typescript
|
|
51
|
-
import {
|
|
67
|
+
import { RenderArt } from '@pixagram/renderart';
|
|
52
68
|
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
69
|
+
// Create GPU-only renderer (no WASM loading)
|
|
70
|
+
const renderer = RenderArt.createGpuOnly();
|
|
71
|
+
|
|
72
|
+
// Synchronous rendering
|
|
73
|
+
const result = renderer.crt.renderSync(imageData, { scale: 3 });
|
|
56
74
|
```
|
|
57
75
|
|
|
58
|
-
|
|
76
|
+
### Direct Renderer Usage
|
|
59
77
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
cd node_modules/@pixagram/renderart
|
|
63
|
-
npm run build:wasm
|
|
64
|
-
```
|
|
78
|
+
```typescript
|
|
79
|
+
import { CrtGpuRenderer } from '@pixagram/renderart';
|
|
65
80
|
|
|
66
|
-
|
|
81
|
+
// Use GPU renderer directly (no WASM needed)
|
|
82
|
+
const crt = CrtGpuRenderer.create();
|
|
83
|
+
const result = crt.render(imageData, { scale: 3 });
|
|
84
|
+
crt.dispose();
|
|
85
|
+
```
|
|
67
86
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
87
|
+
## Webpack Configuration
|
|
88
|
+
|
|
89
|
+
For webpack 5, add to your webpack.config.js:
|
|
90
|
+
|
|
91
|
+
```javascript
|
|
92
|
+
module.exports = {
|
|
93
|
+
experiments: {
|
|
94
|
+
asyncWebAssembly: true,
|
|
95
|
+
},
|
|
96
|
+
module: {
|
|
97
|
+
rules: [
|
|
98
|
+
{
|
|
99
|
+
test: /\.wasm$/,
|
|
100
|
+
type: 'webassembly/async',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
```
|
|
73
106
|
|
|
74
107
|
## API Reference
|
|
75
108
|
|
|
76
|
-
###
|
|
109
|
+
### RenderArt (Unified API)
|
|
77
110
|
|
|
78
111
|
```typescript
|
|
79
|
-
|
|
80
|
-
|
|
112
|
+
// With CPU fallback (auto-loads WASM)
|
|
113
|
+
const renderer = await RenderArt.create();
|
|
114
|
+
|
|
115
|
+
// GPU-only mode
|
|
116
|
+
const renderer = RenderArt.createGpuOnly();
|
|
117
|
+
|
|
118
|
+
// Access capabilities
|
|
119
|
+
console.log(renderer.capabilities);
|
|
120
|
+
// { gpu: true, cpu: true, maxTextureSize: 16384, recommendedBackend: 'gpu' }
|
|
121
|
+
|
|
122
|
+
// Cleanup
|
|
123
|
+
renderer.dispose();
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### CRT Engine
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
// Async with auto backend selection
|
|
130
|
+
const result = await renderer.crt.render(imageData, {
|
|
131
|
+
scale: 3, // 2-32 (default: 3)
|
|
81
132
|
warpX: 0.015, // Horizontal curvature
|
|
82
133
|
warpY: 0.02, // Vertical curvature
|
|
83
134
|
scanHardness: -4.0, // Scanline sharpness
|
|
@@ -87,59 +138,85 @@ await initWasm();
|
|
|
87
138
|
enableScanlines: true,
|
|
88
139
|
enableMask: true,
|
|
89
140
|
backend: 'auto', // 'gpu', 'cpu', or 'auto'
|
|
90
|
-
}
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// With preset
|
|
144
|
+
const result = await renderer.crt.render(imageData, 'authentic');
|
|
145
|
+
// Presets: 'default', 'authentic', 'subtle', 'flat'
|
|
146
|
+
|
|
147
|
+
// Sync GPU-only
|
|
148
|
+
const result = renderer.crt.renderSync(imageData, { scale: 3 });
|
|
91
149
|
```
|
|
92
150
|
|
|
93
|
-
### HEX
|
|
151
|
+
### HEX Engine
|
|
94
152
|
|
|
95
153
|
```typescript
|
|
96
|
-
{
|
|
97
|
-
scale: 16, // 2-32
|
|
154
|
+
const result = await renderer.hex.render(imageData, {
|
|
155
|
+
scale: 16, // 2-32 (default: 16)
|
|
98
156
|
orientation: 'flat-top', // 'flat-top' or 'pointy-top'
|
|
99
|
-
drawBorders:
|
|
157
|
+
drawBorders: true,
|
|
100
158
|
borderColor: '#282828',
|
|
101
159
|
borderThickness: 1,
|
|
102
160
|
backgroundColor: 'transparent',
|
|
103
|
-
|
|
104
|
-
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// Presets: 'default', 'bordered', 'pointy'
|
|
164
|
+
const result = await renderer.hex.render(imageData, 'bordered');
|
|
165
|
+
|
|
166
|
+
// Get output dimensions
|
|
167
|
+
const dims = renderer.hex.getDimensions(64, 64, { scale: 16 });
|
|
105
168
|
```
|
|
106
169
|
|
|
107
|
-
### XBRZ
|
|
170
|
+
### XBRZ Engine (CPU Only)
|
|
108
171
|
|
|
109
172
|
```typescript
|
|
110
|
-
{
|
|
111
|
-
scale: 4, // 2-6
|
|
173
|
+
const result = await renderer.xbrz.render(imageData, {
|
|
174
|
+
scale: 4, // 2-6 (default: 2)
|
|
112
175
|
luminanceWeight: 1.0,
|
|
113
176
|
equalColorTolerance: 30,
|
|
114
177
|
dominantDirectionThreshold: 4.4,
|
|
115
178
|
steepDirectionThreshold: 2.2,
|
|
116
|
-
}
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// Presets: 'default', 'sharp', 'smooth'
|
|
182
|
+
const result = await renderer.xbrz.render(imageData, 'sharp');
|
|
117
183
|
```
|
|
118
184
|
|
|
119
|
-
##
|
|
185
|
+
## Backend Support
|
|
120
186
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
187
|
+
| Engine | GPU (WebGL2) | CPU (WASM) |
|
|
188
|
+
|--------|--------------|------------|
|
|
189
|
+
| CRT | ✅ Primary | ✅ Fallback |
|
|
190
|
+
| HEX | ✅ Primary | ✅ Fallback |
|
|
191
|
+
| XBRZ | ❌ N/A | ✅ Only |
|
|
192
|
+
|
|
193
|
+
## Browser Support
|
|
194
|
+
|
|
195
|
+
- Chrome 79+
|
|
196
|
+
- Firefox 75+
|
|
197
|
+
- Safari 15+
|
|
198
|
+
- Edge 79+
|
|
199
|
+
|
|
200
|
+
## Development
|
|
135
201
|
|
|
136
|
-
|
|
202
|
+
```bash
|
|
203
|
+
# Clone and install
|
|
204
|
+
git clone https://github.com/pixagram/renderart.git
|
|
205
|
+
cd renderart
|
|
206
|
+
npm install
|
|
207
|
+
|
|
208
|
+
# Build WASM (requires Rust + wasm-pack)
|
|
209
|
+
npm run build:wasm
|
|
210
|
+
|
|
211
|
+
# Build TypeScript
|
|
212
|
+
npm run build:ts
|
|
137
213
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
214
|
+
# Full build
|
|
215
|
+
npm run build
|
|
216
|
+
|
|
217
|
+
# Run tests
|
|
218
|
+
npm test
|
|
219
|
+
```
|
|
143
220
|
|
|
144
221
|
## License
|
|
145
222
|
|
package/dist/index.d.mts
CHANGED
|
@@ -190,56 +190,68 @@ declare const HEX_PRESETS: Record<string, Partial<HexOptions>>;
|
|
|
190
190
|
/**
|
|
191
191
|
* WASM Module Loader
|
|
192
192
|
*
|
|
193
|
-
*
|
|
193
|
+
* Handles loading and initialization of the Rust WASM module.
|
|
194
|
+
* Auto-initializes on first use.
|
|
194
195
|
*/
|
|
195
196
|
|
|
196
197
|
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
198
|
+
* Initialize WASM module (auto-called on first use)
|
|
199
|
+
* Can be called manually to pre-load WASM.
|
|
199
200
|
*
|
|
200
|
-
* @param
|
|
201
|
-
*
|
|
202
|
-
* @example
|
|
203
|
-
* ```typescript
|
|
204
|
-
* setWasmUrl('/static/wasm/renderart_wasm_bg.wasm');
|
|
205
|
-
* ```
|
|
206
|
-
*/
|
|
207
|
-
declare function setWasmUrl(url: string): void;
|
|
208
|
-
/**
|
|
209
|
-
* Initialize WASM module
|
|
210
|
-
* Called automatically on first CPU renderer use.
|
|
211
|
-
* Can be called manually for preloading.
|
|
201
|
+
* @param wasmUrl - Optional URL to the .wasm file.
|
|
212
202
|
*/
|
|
213
|
-
declare function initWasm(
|
|
203
|
+
declare function initWasm(wasmUrl?: string): Promise<void>;
|
|
214
204
|
/** Check if WASM is loaded */
|
|
215
205
|
declare function isWasmLoaded(): boolean;
|
|
216
|
-
/**
|
|
206
|
+
/** Check if WASM loading failed */
|
|
207
|
+
declare function hasWasmError(): boolean;
|
|
208
|
+
/** Get WASM loading error if any */
|
|
209
|
+
declare function getWasmError(): Error | null;
|
|
210
|
+
/** CRT CPU Renderer using WASM (auto-initializes) */
|
|
217
211
|
declare class CrtCpuRenderer {
|
|
218
|
-
private
|
|
219
|
-
/** Create and initialize renderer
|
|
212
|
+
private initialized;
|
|
213
|
+
/** Create and initialize renderer */
|
|
220
214
|
static create(): Promise<CrtCpuRenderer>;
|
|
215
|
+
/** Initialize (loads WASM if needed) */
|
|
216
|
+
init(): Promise<void>;
|
|
217
|
+
/** Check if renderer is ready */
|
|
221
218
|
isReady(): boolean;
|
|
219
|
+
/** Render CRT effect */
|
|
222
220
|
render(input: ImageInput | ImageData, options?: CrtOptions): ImageOutput;
|
|
221
|
+
/** Dispose resources */
|
|
223
222
|
dispose(): void;
|
|
224
223
|
}
|
|
225
|
-
/** HEX CPU Renderer using WASM */
|
|
224
|
+
/** HEX CPU Renderer using WASM (auto-initializes) */
|
|
226
225
|
declare class HexCpuRenderer {
|
|
227
|
-
private
|
|
226
|
+
private initialized;
|
|
227
|
+
/** Create and initialize renderer */
|
|
228
228
|
static create(): Promise<HexCpuRenderer>;
|
|
229
|
+
/** Initialize (loads WASM if needed) */
|
|
230
|
+
init(): Promise<void>;
|
|
231
|
+
/** Check if renderer is ready */
|
|
229
232
|
isReady(): boolean;
|
|
233
|
+
/** Render hexagonal effect */
|
|
230
234
|
render(input: ImageInput | ImageData, options?: HexOptions): ImageOutput;
|
|
235
|
+
/** Get output dimensions */
|
|
231
236
|
getDimensions(srcWidth: number, srcHeight: number, scale: number, orientation?: HexOrientation): {
|
|
232
237
|
width: number;
|
|
233
238
|
height: number;
|
|
234
239
|
};
|
|
240
|
+
/** Dispose resources */
|
|
235
241
|
dispose(): void;
|
|
236
242
|
}
|
|
237
|
-
/** XBRZ CPU Renderer using WASM */
|
|
243
|
+
/** XBRZ CPU Renderer using WASM (auto-initializes) */
|
|
238
244
|
declare class XbrzCpuRenderer {
|
|
239
|
-
private
|
|
245
|
+
private initialized;
|
|
246
|
+
/** Create and initialize renderer */
|
|
240
247
|
static create(): Promise<XbrzCpuRenderer>;
|
|
248
|
+
/** Initialize (loads WASM if needed) */
|
|
249
|
+
init(): Promise<void>;
|
|
250
|
+
/** Check if renderer is ready */
|
|
241
251
|
isReady(): boolean;
|
|
252
|
+
/** Render xBRZ scaling */
|
|
242
253
|
render(input: ImageInput | ImageData, options?: XbrzOptions): ImageOutput;
|
|
254
|
+
/** Dispose resources */
|
|
243
255
|
dispose(): void;
|
|
244
256
|
}
|
|
245
257
|
/** XBRZ presets */
|
|
@@ -312,4 +324,4 @@ declare class RenderArt {
|
|
|
312
324
|
dispose(): void;
|
|
313
325
|
}
|
|
314
326
|
|
|
315
|
-
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
|
|
327
|
+
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, getWasmError, hasWasmError, hexGetDimensions, initWasm, isWasmLoaded };
|
package/dist/index.d.ts
CHANGED
|
@@ -190,56 +190,68 @@ declare const HEX_PRESETS: Record<string, Partial<HexOptions>>;
|
|
|
190
190
|
/**
|
|
191
191
|
* WASM Module Loader
|
|
192
192
|
*
|
|
193
|
-
*
|
|
193
|
+
* Handles loading and initialization of the Rust WASM module.
|
|
194
|
+
* Auto-initializes on first use.
|
|
194
195
|
*/
|
|
195
196
|
|
|
196
197
|
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
198
|
+
* Initialize WASM module (auto-called on first use)
|
|
199
|
+
* Can be called manually to pre-load WASM.
|
|
199
200
|
*
|
|
200
|
-
* @param
|
|
201
|
-
*
|
|
202
|
-
* @example
|
|
203
|
-
* ```typescript
|
|
204
|
-
* setWasmUrl('/static/wasm/renderart_wasm_bg.wasm');
|
|
205
|
-
* ```
|
|
206
|
-
*/
|
|
207
|
-
declare function setWasmUrl(url: string): void;
|
|
208
|
-
/**
|
|
209
|
-
* Initialize WASM module
|
|
210
|
-
* Called automatically on first CPU renderer use.
|
|
211
|
-
* Can be called manually for preloading.
|
|
201
|
+
* @param wasmUrl - Optional URL to the .wasm file.
|
|
212
202
|
*/
|
|
213
|
-
declare function initWasm(
|
|
203
|
+
declare function initWasm(wasmUrl?: string): Promise<void>;
|
|
214
204
|
/** Check if WASM is loaded */
|
|
215
205
|
declare function isWasmLoaded(): boolean;
|
|
216
|
-
/**
|
|
206
|
+
/** Check if WASM loading failed */
|
|
207
|
+
declare function hasWasmError(): boolean;
|
|
208
|
+
/** Get WASM loading error if any */
|
|
209
|
+
declare function getWasmError(): Error | null;
|
|
210
|
+
/** CRT CPU Renderer using WASM (auto-initializes) */
|
|
217
211
|
declare class CrtCpuRenderer {
|
|
218
|
-
private
|
|
219
|
-
/** Create and initialize renderer
|
|
212
|
+
private initialized;
|
|
213
|
+
/** Create and initialize renderer */
|
|
220
214
|
static create(): Promise<CrtCpuRenderer>;
|
|
215
|
+
/** Initialize (loads WASM if needed) */
|
|
216
|
+
init(): Promise<void>;
|
|
217
|
+
/** Check if renderer is ready */
|
|
221
218
|
isReady(): boolean;
|
|
219
|
+
/** Render CRT effect */
|
|
222
220
|
render(input: ImageInput | ImageData, options?: CrtOptions): ImageOutput;
|
|
221
|
+
/** Dispose resources */
|
|
223
222
|
dispose(): void;
|
|
224
223
|
}
|
|
225
|
-
/** HEX CPU Renderer using WASM */
|
|
224
|
+
/** HEX CPU Renderer using WASM (auto-initializes) */
|
|
226
225
|
declare class HexCpuRenderer {
|
|
227
|
-
private
|
|
226
|
+
private initialized;
|
|
227
|
+
/** Create and initialize renderer */
|
|
228
228
|
static create(): Promise<HexCpuRenderer>;
|
|
229
|
+
/** Initialize (loads WASM if needed) */
|
|
230
|
+
init(): Promise<void>;
|
|
231
|
+
/** Check if renderer is ready */
|
|
229
232
|
isReady(): boolean;
|
|
233
|
+
/** Render hexagonal effect */
|
|
230
234
|
render(input: ImageInput | ImageData, options?: HexOptions): ImageOutput;
|
|
235
|
+
/** Get output dimensions */
|
|
231
236
|
getDimensions(srcWidth: number, srcHeight: number, scale: number, orientation?: HexOrientation): {
|
|
232
237
|
width: number;
|
|
233
238
|
height: number;
|
|
234
239
|
};
|
|
240
|
+
/** Dispose resources */
|
|
235
241
|
dispose(): void;
|
|
236
242
|
}
|
|
237
|
-
/** XBRZ CPU Renderer using WASM */
|
|
243
|
+
/** XBRZ CPU Renderer using WASM (auto-initializes) */
|
|
238
244
|
declare class XbrzCpuRenderer {
|
|
239
|
-
private
|
|
245
|
+
private initialized;
|
|
246
|
+
/** Create and initialize renderer */
|
|
240
247
|
static create(): Promise<XbrzCpuRenderer>;
|
|
248
|
+
/** Initialize (loads WASM if needed) */
|
|
249
|
+
init(): Promise<void>;
|
|
250
|
+
/** Check if renderer is ready */
|
|
241
251
|
isReady(): boolean;
|
|
252
|
+
/** Render xBRZ scaling */
|
|
242
253
|
render(input: ImageInput | ImageData, options?: XbrzOptions): ImageOutput;
|
|
254
|
+
/** Dispose resources */
|
|
243
255
|
dispose(): void;
|
|
244
256
|
}
|
|
245
257
|
/** XBRZ presets */
|
|
@@ -312,4 +324,4 @@ declare class RenderArt {
|
|
|
312
324
|
dispose(): void;
|
|
313
325
|
}
|
|
314
326
|
|
|
315
|
-
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
|
|
327
|
+
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, getWasmError, hasWasmError, hexGetDimensions, initWasm, isWasmLoaded };
|