@plasius/gpu-renderer 0.1.14 → 0.2.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/CHANGELOG.md +28 -0
- package/README.md +21 -0
- package/dist/index.cjs +643 -76
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +640 -76
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.d.ts +144 -1
- package/src/index.js +3 -0
- package/src/wavefront-compute.js +684 -73
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -162,6 +162,69 @@ export interface WavefrontMeshAcceleration {
|
|
|
162
162
|
readonly triangles: readonly WavefrontTriangleRecord[];
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
+
export interface WavefrontReferenceRay {
|
|
166
|
+
readonly rayId: number;
|
|
167
|
+
readonly parentRayId: number;
|
|
168
|
+
readonly sourcePixelId: number;
|
|
169
|
+
readonly sampleId: number;
|
|
170
|
+
readonly bounce: number;
|
|
171
|
+
readonly mediumRefId: number;
|
|
172
|
+
readonly flags: number;
|
|
173
|
+
readonly origin: readonly [number, number, number] | readonly number[];
|
|
174
|
+
readonly direction: readonly [number, number, number] | readonly number[];
|
|
175
|
+
readonly throughput: readonly [number, number, number, number] | readonly number[];
|
|
176
|
+
readonly pixelX: number;
|
|
177
|
+
readonly pixelY: number;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export interface WavefrontReferenceTile {
|
|
181
|
+
readonly x?: number;
|
|
182
|
+
readonly y?: number;
|
|
183
|
+
readonly width?: number;
|
|
184
|
+
readonly height?: number;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export interface CreateWavefrontReferenceRayOptions {
|
|
188
|
+
readonly tile?: WavefrontReferenceTile;
|
|
189
|
+
readonly pixelIndex?: number;
|
|
190
|
+
readonly sampleIndex?: number;
|
|
191
|
+
readonly frameIndex?: number;
|
|
192
|
+
readonly jitterScale?: number;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export interface WavefrontReferenceHit {
|
|
196
|
+
readonly hitType: "surface" | "environment";
|
|
197
|
+
readonly rayId: number;
|
|
198
|
+
readonly sourcePixelId: number;
|
|
199
|
+
readonly distance: number;
|
|
200
|
+
readonly entityId: number;
|
|
201
|
+
readonly instanceId: number;
|
|
202
|
+
readonly primitiveId: number;
|
|
203
|
+
readonly materialId: number;
|
|
204
|
+
readonly materialRefId: number;
|
|
205
|
+
readonly mediumRefId: number;
|
|
206
|
+
readonly barycentrics: readonly [number, number, number] | readonly number[];
|
|
207
|
+
readonly uv: readonly [number, number] | readonly number[];
|
|
208
|
+
readonly geometricNormal: readonly [number, number, number] | readonly number[];
|
|
209
|
+
readonly shadingNormal: readonly [number, number, number] | readonly number[];
|
|
210
|
+
readonly frontFace: boolean;
|
|
211
|
+
readonly triangleIndex: number;
|
|
212
|
+
readonly triangleId: number;
|
|
213
|
+
readonly position: readonly [number, number, number] | readonly number[];
|
|
214
|
+
readonly color: readonly number[];
|
|
215
|
+
readonly emission: readonly number[];
|
|
216
|
+
readonly material: readonly number[];
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export interface IntersectWavefrontReferenceTriangleOptions {
|
|
220
|
+
readonly maxDistance?: number;
|
|
221
|
+
readonly triangleIndex?: number;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export interface TraceWavefrontReferenceTrianglesOptions {
|
|
225
|
+
readonly maxDistance?: number;
|
|
226
|
+
}
|
|
227
|
+
|
|
165
228
|
export type WavefrontAccelerationBuildMode = "gpu" | "cpu-debug";
|
|
166
229
|
|
|
167
230
|
export interface WavefrontGpuMeshSource {
|
|
@@ -209,6 +272,42 @@ export interface WavefrontEmissiveTriangleIndexSource {
|
|
|
209
272
|
readonly recordBytes: 4;
|
|
210
273
|
}
|
|
211
274
|
|
|
275
|
+
export type WavefrontEnvironmentPortalMode =
|
|
276
|
+
| 0
|
|
277
|
+
| 1
|
|
278
|
+
| 2
|
|
279
|
+
| "disabled"
|
|
280
|
+
| "guide"
|
|
281
|
+
| "guide-and-gate"
|
|
282
|
+
| "gate";
|
|
283
|
+
|
|
284
|
+
export interface WavefrontEnvironmentPortalInput {
|
|
285
|
+
readonly kind?: "rectangle";
|
|
286
|
+
readonly shape?: "rectangle";
|
|
287
|
+
readonly position?: readonly [number, number, number] | readonly number[];
|
|
288
|
+
readonly center?: readonly [number, number, number] | readonly number[];
|
|
289
|
+
readonly normal?: readonly [number, number, number] | readonly number[];
|
|
290
|
+
readonly tangent?: readonly [number, number, number] | readonly number[];
|
|
291
|
+
readonly width?: number;
|
|
292
|
+
readonly height?: number;
|
|
293
|
+
readonly halfWidth?: number;
|
|
294
|
+
readonly halfHeight?: number;
|
|
295
|
+
readonly radianceScale?: number;
|
|
296
|
+
readonly intensity?: number;
|
|
297
|
+
readonly color?: readonly [number, number, number, number?] | readonly number[];
|
|
298
|
+
readonly twoSided?: boolean;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
export interface WavefrontEnvironmentPortalRecord {
|
|
302
|
+
readonly kind: 1;
|
|
303
|
+
readonly flags: number;
|
|
304
|
+
readonly position: readonly [number, number, number, number] | readonly number[];
|
|
305
|
+
readonly normal: readonly [number, number, number, number] | readonly number[];
|
|
306
|
+
readonly tangent: readonly [number, number, number, number] | readonly number[];
|
|
307
|
+
readonly bitangent: readonly [number, number, number, number] | readonly number[];
|
|
308
|
+
readonly color: readonly [number, number, number, number] | readonly number[];
|
|
309
|
+
}
|
|
310
|
+
|
|
212
311
|
export interface WavefrontPathTracingComputeConfig {
|
|
213
312
|
readonly width: number;
|
|
214
313
|
readonly height: number;
|
|
@@ -226,6 +325,10 @@ export interface WavefrontPathTracingComputeConfig {
|
|
|
226
325
|
readonly emissiveTriangleIndices: WavefrontEmissiveTriangleIndexSource;
|
|
227
326
|
readonly emissiveTriangleCount: number;
|
|
228
327
|
readonly emissiveTriangleCapacity: number;
|
|
328
|
+
readonly environmentPortals: readonly WavefrontEnvironmentPortalRecord[];
|
|
329
|
+
readonly environmentPortalCount: number;
|
|
330
|
+
readonly environmentPortalCapacity: number;
|
|
331
|
+
readonly environmentPortalMode: 0 | 1 | 2;
|
|
229
332
|
readonly triangleCount: number;
|
|
230
333
|
readonly triangleCapacity: number;
|
|
231
334
|
readonly bvhNodeCount: number;
|
|
@@ -262,6 +365,8 @@ export interface WavefrontEnvironmentLightingInput {
|
|
|
262
365
|
readonly intensity?: number;
|
|
263
366
|
readonly mode?: number;
|
|
264
367
|
readonly exposure?: number;
|
|
368
|
+
readonly environmentPortals?: readonly WavefrontEnvironmentPortalInput[];
|
|
369
|
+
readonly environmentPortalMode?: WavefrontEnvironmentPortalMode;
|
|
265
370
|
}
|
|
266
371
|
|
|
267
372
|
export interface WavefrontEnvironmentLightingConfig {
|
|
@@ -286,6 +391,7 @@ export interface WavefrontPathTracingMemoryEstimate {
|
|
|
286
391
|
readonly bvhNodeBytes: number;
|
|
287
392
|
readonly bvhLeafReferenceBytes: number;
|
|
288
393
|
readonly emissiveTriangleMetadataBytes: number;
|
|
394
|
+
readonly environmentPortalBytes: number;
|
|
289
395
|
readonly configBytes: number;
|
|
290
396
|
readonly counterBytes: number;
|
|
291
397
|
readonly totalHotBufferBytes: number;
|
|
@@ -295,6 +401,8 @@ export interface CreateWavefrontPathTracingComputeRendererOptions {
|
|
|
295
401
|
readonly canvas?: HTMLCanvasElement | string;
|
|
296
402
|
readonly navigator?: Navigator | { gpu?: GPU };
|
|
297
403
|
readonly document?: Document;
|
|
404
|
+
readonly deviceDescriptor?: GPUDeviceDescriptor;
|
|
405
|
+
readonly requiredLimits?: Partial<Record<string, number>>;
|
|
298
406
|
readonly powerPreference?: GPUPowerPreference;
|
|
299
407
|
readonly alpha?: boolean;
|
|
300
408
|
readonly format?: GPUTextureFormat;
|
|
@@ -312,6 +420,11 @@ export interface CreateWavefrontPathTracingComputeRendererOptions {
|
|
|
312
420
|
readonly bvhNodeCapacity?: number;
|
|
313
421
|
readonly bvhLeafSortCapacity?: number;
|
|
314
422
|
readonly emissiveTriangleCapacity?: number;
|
|
423
|
+
readonly environmentPortalCapacity?: number;
|
|
424
|
+
readonly environmentPortals?: readonly WavefrontEnvironmentPortalInput[];
|
|
425
|
+
readonly environmentLightPortals?: readonly WavefrontEnvironmentPortalInput[];
|
|
426
|
+
readonly environmentPortalMode?: WavefrontEnvironmentPortalMode;
|
|
427
|
+
readonly portalMode?: WavefrontEnvironmentPortalMode;
|
|
315
428
|
readonly accelerationBuildMode?: WavefrontAccelerationBuildMode;
|
|
316
429
|
readonly camera?: WavefrontCameraOptions;
|
|
317
430
|
readonly environmentColor?: readonly [number, number, number, number?] | readonly number[];
|
|
@@ -341,10 +454,17 @@ export interface WavefrontPathTracingComputeRenderer {
|
|
|
341
454
|
sceneObjectCount: number;
|
|
342
455
|
triangleCount: number;
|
|
343
456
|
emissiveTriangleCount: number;
|
|
457
|
+
environmentPortalCount: number;
|
|
458
|
+
environmentPortalMode: 0 | 1 | 2;
|
|
344
459
|
bvhNodeCount: number;
|
|
345
460
|
displayQuality: boolean;
|
|
346
461
|
accelerationBuildMode: WavefrontAccelerationBuildMode;
|
|
347
462
|
gpuAccelerationBuildRequired: boolean;
|
|
463
|
+
accelerationBuildSubmitted: boolean;
|
|
464
|
+
accelerationBuilt: boolean;
|
|
465
|
+
accelerationBuildCount: number;
|
|
466
|
+
commandSubmissions: number;
|
|
467
|
+
frameConfigSlots: number;
|
|
348
468
|
memory: WavefrontPathTracingMemoryEstimate;
|
|
349
469
|
}>;
|
|
350
470
|
readOutputProbe(options?: { x?: number; y?: number }): Promise<
|
|
@@ -367,10 +487,15 @@ export interface WavefrontPathTracingComputeRenderer {
|
|
|
367
487
|
sceneObjectCount: number;
|
|
368
488
|
triangleCount: number;
|
|
369
489
|
emissiveTriangleCount: number;
|
|
490
|
+
environmentPortalCount: number;
|
|
491
|
+
environmentPortalMode: 0 | 1 | 2;
|
|
370
492
|
bvhNodeCount: number;
|
|
371
493
|
displayQuality: boolean;
|
|
372
494
|
accelerationBuildMode: WavefrontAccelerationBuildMode;
|
|
373
495
|
gpuAccelerationBuildRequired: boolean;
|
|
496
|
+
accelerationBuilt: boolean;
|
|
497
|
+
accelerationBuildCount: number;
|
|
498
|
+
frameConfigSlots: number;
|
|
374
499
|
memory: WavefrontPathTracingMemoryEstimate;
|
|
375
500
|
}>;
|
|
376
501
|
destroy(): void;
|
|
@@ -428,6 +553,21 @@ export function createWavefrontBvhSortStages(
|
|
|
428
553
|
export function createWavefrontPathTracingComputeConfig(
|
|
429
554
|
options?: CreateWavefrontPathTracingComputeRendererOptions
|
|
430
555
|
): WavefrontPathTracingComputeConfig;
|
|
556
|
+
export function createWavefrontReferenceRay(
|
|
557
|
+
config: WavefrontPathTracingComputeConfig,
|
|
558
|
+
options?: CreateWavefrontReferenceRayOptions
|
|
559
|
+
): WavefrontReferenceRay;
|
|
560
|
+
export function intersectWavefrontReferenceTriangle(
|
|
561
|
+
ray: WavefrontReferenceRay,
|
|
562
|
+
triangle: WavefrontTriangleRecord,
|
|
563
|
+
options?: IntersectWavefrontReferenceTriangleOptions
|
|
564
|
+
): WavefrontReferenceHit | null;
|
|
565
|
+
export function traceWavefrontReferenceTriangles(
|
|
566
|
+
config: WavefrontPathTracingComputeConfig,
|
|
567
|
+
ray: WavefrontReferenceRay,
|
|
568
|
+
triangles: readonly WavefrontTriangleRecord[],
|
|
569
|
+
options?: TraceWavefrontReferenceTrianglesOptions
|
|
570
|
+
): WavefrontReferenceHit;
|
|
431
571
|
export function packWavefrontSceneObjects(
|
|
432
572
|
sceneObjects: readonly WavefrontSceneObjectInput[],
|
|
433
573
|
capacity?: number
|
|
@@ -465,13 +605,16 @@ export function createWavefrontPathTracingComputeRenderer(
|
|
|
465
605
|
export const wavefrontPathTracingComputeLimits: Readonly<{
|
|
466
606
|
workgroupSize: 64;
|
|
467
607
|
rayRecordBytes: 80;
|
|
468
|
-
hitRecordBytes:
|
|
608
|
+
hitRecordBytes: 208;
|
|
469
609
|
sceneObjectRecordBytes: 96;
|
|
470
610
|
meshVertexRecordBytes: 48;
|
|
471
611
|
meshRangeRecordBytes: 96;
|
|
472
612
|
triangleRecordBytes: 208;
|
|
473
613
|
bvhNodeRecordBytes: 48;
|
|
474
614
|
bvhLeafReferenceRecordBytes: 16;
|
|
615
|
+
emissiveTriangleIndexBytes: 4;
|
|
616
|
+
emissiveTriangleMetadataRecordBytes: 48;
|
|
617
|
+
environmentPortalRecordBytes: 96;
|
|
475
618
|
accumulationRecordBytes: 16;
|
|
476
619
|
}>;
|
|
477
620
|
export const wavefrontSceneObjectKinds: Readonly<{
|
package/src/index.js
CHANGED
|
@@ -9,13 +9,16 @@ export {
|
|
|
9
9
|
createWavefrontMeshAcceleration,
|
|
10
10
|
createWavefrontPathTracingComputeConfig,
|
|
11
11
|
createWavefrontPathTracingComputeRenderer,
|
|
12
|
+
createWavefrontReferenceRay,
|
|
12
13
|
estimateWavefrontPathTracingMemory,
|
|
14
|
+
intersectWavefrontReferenceTriangle,
|
|
13
15
|
normalizeWavefrontMesh,
|
|
14
16
|
normalizeWavefrontSceneObject,
|
|
15
17
|
packWavefrontBvhNodes,
|
|
16
18
|
packWavefrontSceneObjects,
|
|
17
19
|
packWavefrontTriangles,
|
|
18
20
|
supportsWavefrontPathTracingCompute,
|
|
21
|
+
traceWavefrontReferenceTriangles,
|
|
19
22
|
wavefrontMaterialKinds,
|
|
20
23
|
wavefrontPathTracingComputeLimits,
|
|
21
24
|
wavefrontSceneObjectKinds,
|