@zephyr3d/device 0.2.5 → 0.2.6
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/dist/base_types.js +12 -13
- package/dist/base_types.js.map +1 -1
- package/dist/builder/ast.js +34 -48
- package/dist/builder/ast.js.map +1 -1
- package/dist/builder/base.js +6 -2
- package/dist/builder/base.js.map +1 -1
- package/dist/builder/builtinfunc.js +42 -6
- package/dist/builder/builtinfunc.js.map +1 -1
- package/dist/builder/constructors.js +2 -0
- package/dist/builder/constructors.js.map +1 -1
- package/dist/builder/errors.js +4 -4
- package/dist/builder/errors.js.map +1 -1
- package/dist/builder/misc.js +1 -1
- package/dist/builder/misc.js.map +1 -1
- package/dist/builder/programbuilder.js +18 -27
- package/dist/builder/programbuilder.js.map +1 -1
- package/dist/builder/reflection.js +1 -1
- package/dist/builder/reflection.js.map +1 -1
- package/dist/builder/types.js +7 -6
- package/dist/builder/types.js.map +1 -1
- package/dist/device.js +150 -39
- package/dist/device.js.map +1 -1
- package/dist/gpuobject.js +2 -1
- package/dist/gpuobject.js.map +1 -1
- package/dist/helpers/drawtext.js +29 -25
- package/dist/helpers/drawtext.js.map +1 -1
- package/dist/helpers/font.js.map +1 -1
- package/dist/helpers/glyphmanager.js +26 -8
- package/dist/helpers/glyphmanager.js.map +1 -1
- package/dist/helpers/textureatlas.js +7 -3
- package/dist/helpers/textureatlas.js.map +1 -1
- package/dist/index.d.ts +290 -266
- package/dist/pool.js +15 -6
- package/dist/pool.js.map +1 -1
- package/dist/timer.js +3 -2
- package/dist/timer.js.map +1 -1
- package/dist/uniformdata.js +1 -1
- package/dist/uniformdata.js.map +1 -1
- package/dist/vertexdata.js +2 -2
- package/dist/vertexdata.js.map +1 -1
- package/package.json +80 -80
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TypedArray, IDisposable, CubeFace, VectorBase, MaybeArray, IEventTarget, Vector4, Observable } from '@zephyr3d/base';
|
|
1
|
+
import { Nullable, Immutable, TypedArray, IDisposable, CubeFace, VectorBase, MaybeArray, IEventTarget, Vector4, Observable } from '@zephyr3d/base';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Struct layout types
|
|
@@ -149,7 +149,7 @@ type TypeDetailInfo = PrimitiveTypeDetail | StructTypeDetail | ArrayTypeDetail |
|
|
|
149
149
|
* @public
|
|
150
150
|
*/
|
|
151
151
|
interface PrimitiveTypeDetail {
|
|
152
|
-
primitiveType
|
|
152
|
+
primitiveType: PBPrimitiveType;
|
|
153
153
|
}
|
|
154
154
|
/**
|
|
155
155
|
* Detail informations for struct type
|
|
@@ -159,9 +159,9 @@ interface StructTypeDetail {
|
|
|
159
159
|
/** Layout of the struct type */
|
|
160
160
|
layout: PBStructLayout;
|
|
161
161
|
/** Name of the struct type */
|
|
162
|
-
structName
|
|
162
|
+
structName: Nullable<string>;
|
|
163
163
|
/** Members of the struct type */
|
|
164
|
-
structMembers
|
|
164
|
+
structMembers: {
|
|
165
165
|
/** Name of the struct member */
|
|
166
166
|
name: string;
|
|
167
167
|
/** Type of the struct member */
|
|
@@ -216,7 +216,7 @@ interface TextureTypeDetail {
|
|
|
216
216
|
/** type of the texture */
|
|
217
217
|
textureType: PBTextureType;
|
|
218
218
|
/** texture format if this is a storage texture */
|
|
219
|
-
storageTexelFormat: TextureFormat
|
|
219
|
+
storageTexelFormat: Nullable<TextureFormat>;
|
|
220
220
|
/** true if this is a readable storage texture type */
|
|
221
221
|
readable: boolean;
|
|
222
222
|
/** true if this is a writable storage texture type */
|
|
@@ -280,7 +280,7 @@ declare abstract class PBTypeInfo<DetailType extends TypeDetailInfo = TypeDetail
|
|
|
280
280
|
* @param layout - Type of the layout
|
|
281
281
|
* @returns The created buffer layout
|
|
282
282
|
*/
|
|
283
|
-
abstract toBufferLayout(offset: number, layout: PBStructLayout): UniformBufferLayout
|
|
283
|
+
abstract toBufferLayout(offset: number, layout: PBStructLayout): Nullable<UniformBufferLayout>;
|
|
284
284
|
}
|
|
285
285
|
/**
|
|
286
286
|
* The void type info
|
|
@@ -291,7 +291,7 @@ declare class PBVoidTypeInfo extends PBTypeInfo<null> {
|
|
|
291
291
|
/** {@inheritDoc PBTypeInfo.isVoidType} */
|
|
292
292
|
isVoidType(): this is PBVoidTypeInfo;
|
|
293
293
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
294
|
-
toBufferLayout(_offset: number):
|
|
294
|
+
toBufferLayout(_offset: number): null;
|
|
295
295
|
}
|
|
296
296
|
/**
|
|
297
297
|
* The void type info
|
|
@@ -302,7 +302,7 @@ declare class PBAnyTypeInfo extends PBTypeInfo<null> {
|
|
|
302
302
|
/** {@inheritDoc PBTypeInfo.isAnyType} */
|
|
303
303
|
isAnyType(): this is PBAnyTypeInfo;
|
|
304
304
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
305
|
-
toBufferLayout(_offset: number):
|
|
305
|
+
toBufferLayout(_offset: number): null;
|
|
306
306
|
/** {@inheritDoc PBTypeInfo.isCompatibleType} */
|
|
307
307
|
isCompatibleType(_other: PBTypeInfo<TypeDetailInfo>): boolean;
|
|
308
308
|
}
|
|
@@ -342,22 +342,22 @@ declare class PBPrimitiveTypeInfo extends PBTypeInfo<PrimitiveTypeDetail> {
|
|
|
342
342
|
/** {@inheritDoc PBTypeInfo.isPrimitiveType} */
|
|
343
343
|
isPrimitiveType(): this is PBPrimitiveTypeInfo;
|
|
344
344
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
345
|
-
toBufferLayout(_offset: number):
|
|
345
|
+
toBufferLayout(_offset: number): null;
|
|
346
346
|
}
|
|
347
347
|
/**
|
|
348
348
|
* The struct type info
|
|
349
349
|
* @public
|
|
350
350
|
*/
|
|
351
351
|
declare class PBStructTypeInfo extends PBTypeInfo<StructTypeDetail> {
|
|
352
|
-
constructor(name: string
|
|
352
|
+
constructor(name: Nullable<string>, layout: PBStructLayout, members: {
|
|
353
353
|
name: string;
|
|
354
354
|
type: PBPrimitiveTypeInfo | PBArrayTypeInfo | PBAtomicI32TypeInfo | PBAtomicU32TypeInfo | PBStructTypeInfo;
|
|
355
355
|
}[]);
|
|
356
356
|
/** Get the layout type */
|
|
357
357
|
get layout(): PBStructLayout;
|
|
358
358
|
/** Get name of the struct type */
|
|
359
|
-
get structName(): string
|
|
360
|
-
set structName(val: string);
|
|
359
|
+
get structName(): Nullable<string>;
|
|
360
|
+
set structName(val: Nullable<string>);
|
|
361
361
|
/** Get member types of the struct type */
|
|
362
362
|
get structMembers(): {
|
|
363
363
|
/** Name of the struct member */
|
|
@@ -397,7 +397,7 @@ declare class PBStructTypeInfo extends PBTypeInfo<StructTypeDetail> {
|
|
|
397
397
|
declare class PBArrayTypeInfo extends PBTypeInfo<ArrayTypeDetail> {
|
|
398
398
|
constructor(elementType: PBPrimitiveTypeInfo | PBArrayTypeInfo | PBStructTypeInfo | PBAnyTypeInfo | PBAtomicI32TypeInfo | PBAtomicU32TypeInfo, dimension?: number);
|
|
399
399
|
/** Get the element type */
|
|
400
|
-
get elementType(): PBPrimitiveTypeInfo | PBArrayTypeInfo | PBStructTypeInfo |
|
|
400
|
+
get elementType(): PBPrimitiveTypeInfo | PBArrayTypeInfo | PBStructTypeInfo | PBAtomicI32TypeInfo | PBAtomicU32TypeInfo | PBAnyTypeInfo;
|
|
401
401
|
/** Get dimension of the array type */
|
|
402
402
|
get dimension(): number;
|
|
403
403
|
/** Wether array have atomic members */
|
|
@@ -405,7 +405,7 @@ declare class PBArrayTypeInfo extends PBTypeInfo<ArrayTypeDetail> {
|
|
|
405
405
|
/** {@inheritDoc PBTypeInfo.isArrayType} */
|
|
406
406
|
isArrayType(): this is PBArrayTypeInfo;
|
|
407
407
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
408
|
-
toBufferLayout(_offset: number):
|
|
408
|
+
toBufferLayout(_offset: number): null;
|
|
409
409
|
isCompatibleType(other: PBTypeInfo<TypeDetailInfo>): boolean;
|
|
410
410
|
}
|
|
411
411
|
/**
|
|
@@ -415,7 +415,7 @@ declare class PBArrayTypeInfo extends PBTypeInfo<ArrayTypeDetail> {
|
|
|
415
415
|
declare class PBPointerTypeInfo extends PBTypeInfo<PointerTypeDetail> {
|
|
416
416
|
constructor(pointerType: PBTypeInfo, addressSpace: PBAddressSpace);
|
|
417
417
|
/** Get type of the pointer */
|
|
418
|
-
get pointerType(): PBTypeInfo
|
|
418
|
+
get pointerType(): PBTypeInfo<TypeDetailInfo>;
|
|
419
419
|
/** Get address space of the pointer */
|
|
420
420
|
get addressSpace(): PBAddressSpace;
|
|
421
421
|
set addressSpace(val: PBAddressSpace);
|
|
@@ -424,7 +424,7 @@ declare class PBPointerTypeInfo extends PBTypeInfo<PointerTypeDetail> {
|
|
|
424
424
|
/** {@inheritDoc PBTypeInfo.isPointerType} */
|
|
425
425
|
isPointerType(): this is PBPointerTypeInfo;
|
|
426
426
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
427
|
-
toBufferLayout(_offset: number):
|
|
427
|
+
toBufferLayout(_offset: number): null;
|
|
428
428
|
}
|
|
429
429
|
/**
|
|
430
430
|
* The atomic int type info
|
|
@@ -435,7 +435,7 @@ declare class PBAtomicI32TypeInfo extends PBTypeInfo<null> {
|
|
|
435
435
|
/** {@inheritDoc PBTypeInfo.isPointerType} */
|
|
436
436
|
haveAtomicMembers(): boolean;
|
|
437
437
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
438
|
-
toBufferLayout(_offset: number):
|
|
438
|
+
toBufferLayout(_offset: number): null;
|
|
439
439
|
}
|
|
440
440
|
/**
|
|
441
441
|
* The atomic int type info
|
|
@@ -446,7 +446,7 @@ declare class PBAtomicU32TypeInfo extends PBTypeInfo<null> {
|
|
|
446
446
|
/** {@inheritDoc PBTypeInfo.isPointerType} */
|
|
447
447
|
haveAtomicMembers(): boolean;
|
|
448
448
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
449
|
-
toBufferLayout(_offset: number):
|
|
449
|
+
toBufferLayout(_offset: number): null;
|
|
450
450
|
}
|
|
451
451
|
/**
|
|
452
452
|
* The sampler type info
|
|
@@ -457,7 +457,7 @@ declare class PBSamplerTypeInfo extends PBTypeInfo<SamplerTypeDetail> {
|
|
|
457
457
|
/** Get the access mode */
|
|
458
458
|
get accessMode(): PBSamplerAccessMode;
|
|
459
459
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
460
|
-
toBufferLayout(_offset: number):
|
|
460
|
+
toBufferLayout(_offset: number): null;
|
|
461
461
|
}
|
|
462
462
|
/**
|
|
463
463
|
* The texture type info
|
|
@@ -468,7 +468,7 @@ declare class PBTextureTypeInfo extends PBTypeInfo<TextureTypeDetail> {
|
|
|
468
468
|
/** Get the texture type */
|
|
469
469
|
get textureType(): PBTextureType;
|
|
470
470
|
/** Get texture format if this is a storage texture */
|
|
471
|
-
get storageTexelFormat(): TextureFormat
|
|
471
|
+
get storageTexelFormat(): Nullable<TextureFormat>;
|
|
472
472
|
/** Returns true if this is a readable storage texture type */
|
|
473
473
|
get readable(): boolean;
|
|
474
474
|
set readable(val: boolean);
|
|
@@ -496,7 +496,7 @@ declare class PBTextureTypeInfo extends PBTypeInfo<TextureTypeDetail> {
|
|
|
496
496
|
/** Returns true if the texture format is of type unsigned integer */
|
|
497
497
|
isUIntTexture(): boolean;
|
|
498
498
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
499
|
-
toBufferLayout(_offset: number):
|
|
499
|
+
toBufferLayout(_offset: number): null;
|
|
500
500
|
}
|
|
501
501
|
/**
|
|
502
502
|
* The function type info
|
|
@@ -510,16 +510,18 @@ declare class PBFunctionTypeInfo extends PBTypeInfo<FunctionTypeDetail> {
|
|
|
510
510
|
/** Get name of the function */
|
|
511
511
|
get name(): string;
|
|
512
512
|
/** Get return type of the function */
|
|
513
|
-
get returnType(): PBTypeInfo
|
|
513
|
+
get returnType(): PBTypeInfo<TypeDetailInfo>;
|
|
514
514
|
/** Get all the argument types for this function */
|
|
515
515
|
get argTypes(): {
|
|
516
|
+
/** Type of the argument */
|
|
516
517
|
type: PBTypeInfo;
|
|
518
|
+
/** true if this argument will be passed by reference */
|
|
517
519
|
byRef?: boolean;
|
|
518
520
|
}[];
|
|
519
521
|
/** Get hash for parameter types */
|
|
520
522
|
get argHash(): string;
|
|
521
523
|
/** {@inheritDoc PBTypeInfo.toBufferLayout} */
|
|
522
|
-
toBufferLayout(_offset: number):
|
|
524
|
+
toBufferLayout(_offset: number): null;
|
|
523
525
|
}
|
|
524
526
|
|
|
525
527
|
/**
|
|
@@ -546,9 +548,9 @@ declare class VertexData {
|
|
|
546
548
|
*/
|
|
547
549
|
clone(): VertexData;
|
|
548
550
|
/** Vertex buffer information list */
|
|
549
|
-
get vertexBuffers(): VertexBufferInfo[];
|
|
551
|
+
get vertexBuffers(): Nullable<VertexBufferInfo>[];
|
|
550
552
|
/** Index buffer */
|
|
551
|
-
get indexBuffer(): IndexBuffer
|
|
553
|
+
get indexBuffer(): Nullable<IndexBuffer<unknown>>;
|
|
552
554
|
/** Number of vertices */
|
|
553
555
|
get numVertices(): number;
|
|
554
556
|
/** Draw offset */
|
|
@@ -559,25 +561,25 @@ declare class VertexData {
|
|
|
559
561
|
* @param semantic - The vertex semantic
|
|
560
562
|
* @returns Vertex buffer of the given semantic
|
|
561
563
|
*/
|
|
562
|
-
getVertexBuffer(semantic: VertexSemantic): StructuredBuffer;
|
|
564
|
+
getVertexBuffer(semantic: VertexSemantic): StructuredBuffer<unknown> | null;
|
|
563
565
|
/**
|
|
564
566
|
* Gets the vertex buffer information by specific vertex semantic
|
|
565
567
|
* @param semantic - The vertex semantic
|
|
566
568
|
* @returns Vertex buffer information of the given semantic
|
|
567
569
|
*/
|
|
568
|
-
getVertexBufferInfo(semantic: VertexSemantic): VertexBufferInfo;
|
|
570
|
+
getVertexBufferInfo(semantic: VertexSemantic): VertexBufferInfo | null;
|
|
569
571
|
/**
|
|
570
572
|
* Gets the index buffer
|
|
571
573
|
* @returns The index buffer
|
|
572
574
|
*/
|
|
573
|
-
getIndexBuffer(): IndexBuffer
|
|
575
|
+
getIndexBuffer(): Nullable<IndexBuffer<unknown>>;
|
|
574
576
|
/**
|
|
575
577
|
* Sets a vertex buffer
|
|
576
578
|
* @param buffer - The vertex buffer object
|
|
577
579
|
* @param stepMode - Step mode of the buffer
|
|
578
580
|
* @returns The buffer that was set
|
|
579
581
|
*/
|
|
580
|
-
setVertexBuffer(buffer: StructuredBuffer, stepMode?: VertexStepMode): StructuredBuffer;
|
|
582
|
+
setVertexBuffer(buffer: StructuredBuffer, stepMode?: VertexStepMode): StructuredBuffer<unknown> | null;
|
|
581
583
|
/**
|
|
582
584
|
* Removes a vertex buffer
|
|
583
585
|
* @param buffer - Vertex buffer to be removed
|
|
@@ -589,7 +591,7 @@ declare class VertexData {
|
|
|
589
591
|
* @param buffer - Index buffer to be set
|
|
590
592
|
* @returns The index buffer that was set
|
|
591
593
|
*/
|
|
592
|
-
setIndexBuffer(buffer: IndexBuffer): IndexBuffer
|
|
594
|
+
setIndexBuffer(buffer: Nullable<IndexBuffer>): Nullable<IndexBuffer<unknown>>;
|
|
593
595
|
}
|
|
594
596
|
|
|
595
597
|
/**
|
|
@@ -656,7 +658,7 @@ type VertexLayoutOptions = {
|
|
|
656
658
|
/**
|
|
657
659
|
* optional index buffer in this vertex layout
|
|
658
660
|
*/
|
|
659
|
-
indexBuffer?: IndexBuffer
|
|
661
|
+
indexBuffer?: Nullable<IndexBuffer>;
|
|
660
662
|
};
|
|
661
663
|
/**
|
|
662
664
|
* Supported colorspace types for texture
|
|
@@ -684,9 +686,9 @@ interface BaseCreationOptions {
|
|
|
684
686
|
*/
|
|
685
687
|
interface TextureCreationOptions extends BaseCreationOptions {
|
|
686
688
|
writable?: boolean;
|
|
687
|
-
texture?: BaseTexture
|
|
689
|
+
texture?: Nullable<BaseTexture>;
|
|
688
690
|
mipmapping?: boolean;
|
|
689
|
-
samplerOptions?: SamplerOptions
|
|
691
|
+
samplerOptions?: Nullable<SamplerOptions>;
|
|
690
692
|
}
|
|
691
693
|
/**
|
|
692
694
|
* Options for creating gpu buffer
|
|
@@ -724,7 +726,7 @@ declare enum GPUResourceUsageFlags {
|
|
|
724
726
|
* Get vertex attribute index by semantic
|
|
725
727
|
* @public
|
|
726
728
|
*/
|
|
727
|
-
declare function getVertexAttribByName(name: VertexSemantic):
|
|
729
|
+
declare function getVertexAttribByName(name: Nullable<VertexSemantic>): 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 12 | undefined;
|
|
728
730
|
/**
|
|
729
731
|
* Get vertex semantic by attribute index
|
|
730
732
|
* @public
|
|
@@ -754,19 +756,19 @@ declare function getVertexAttributeFormat(fmt: VertexAttribFormat): "f32" | "i32
|
|
|
754
756
|
*
|
|
755
757
|
* @public
|
|
756
758
|
*/
|
|
757
|
-
declare function getVertexAttributeIndex(fmt: VertexAttribFormat):
|
|
759
|
+
declare function getVertexAttributeIndex(fmt: VertexAttribFormat): 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 12;
|
|
758
760
|
/**
|
|
759
761
|
* Get byte size of specified vertex format
|
|
760
762
|
*
|
|
761
763
|
* @public
|
|
762
764
|
*/
|
|
763
|
-
declare function getVertexFormatSize(fmt: VertexAttribFormat):
|
|
765
|
+
declare function getVertexFormatSize(fmt: VertexAttribFormat): 2 | 4 | 6 | 8 | 16 | 12;
|
|
764
766
|
/**
|
|
765
767
|
* Get number of components of specified vertex format
|
|
766
768
|
*
|
|
767
769
|
* @public
|
|
768
770
|
*/
|
|
769
|
-
declare function getVertexFormatComponentCount(fmt: VertexAttribFormat):
|
|
771
|
+
declare function getVertexFormatComponentCount(fmt: VertexAttribFormat): 1 | 2 | 3 | 4;
|
|
770
772
|
/**
|
|
771
773
|
* Get vertex format by semantic and component type and component count
|
|
772
774
|
* @param semantic - The vertex semantic
|
|
@@ -776,7 +778,7 @@ declare function getVertexFormatComponentCount(fmt: VertexAttribFormat): number;
|
|
|
776
778
|
*
|
|
777
779
|
* @public
|
|
778
780
|
*/
|
|
779
|
-
declare function getVertexAttribFormat(semantic: VertexSemantic, type: DataType, count: number): VertexAttribFormat;
|
|
781
|
+
declare function getVertexAttribFormat(semantic: VertexSemantic, type: DataType, count: number): VertexAttribFormat | null;
|
|
780
782
|
/**
|
|
781
783
|
* Get the length of a vertex buffer by specified structure type of the vertex buffer
|
|
782
784
|
* @param vertexBufferType - The structure type of the vertex buffer
|
|
@@ -792,7 +794,7 @@ declare function getVertexBufferLength(vertexBufferType: PBStructTypeInfo): numb
|
|
|
792
794
|
*
|
|
793
795
|
* @public
|
|
794
796
|
*/
|
|
795
|
-
declare function getVertexBufferStride(vertexBufferType: PBStructTypeInfo): number;
|
|
797
|
+
declare function getVertexBufferStride(vertexBufferType: Immutable<PBStructTypeInfo>): number;
|
|
796
798
|
/**
|
|
797
799
|
* Get primitive type of a vertex attribute by specified vertex semantic
|
|
798
800
|
* @param vertexBufferType - The structure type of the vertex buffer
|
|
@@ -801,7 +803,7 @@ declare function getVertexBufferStride(vertexBufferType: PBStructTypeInfo): numb
|
|
|
801
803
|
*
|
|
802
804
|
* @public
|
|
803
805
|
*/
|
|
804
|
-
declare function getVertexBufferAttribTypeBySemantic(vertexBufferType: PBStructTypeInfo
|
|
806
|
+
declare function getVertexBufferAttribTypeBySemantic(vertexBufferType: Immutable<PBStructTypeInfo>, semantic: VertexSemantic): PBPrimitiveTypeInfo | null;
|
|
805
807
|
/**
|
|
806
808
|
* Get primitive type of a vertex attribute by specified vertex attribute index
|
|
807
809
|
* @param vertexBufferType - The structure type of the vertex buffer
|
|
@@ -810,7 +812,7 @@ declare function getVertexBufferAttribTypeBySemantic(vertexBufferType: PBStructT
|
|
|
810
812
|
*
|
|
811
813
|
* @public
|
|
812
814
|
*/
|
|
813
|
-
declare function getVertexBufferAttribType(vertexBufferType: PBStructTypeInfo
|
|
815
|
+
declare function getVertexBufferAttribType(vertexBufferType: Immutable<PBStructTypeInfo>, attrib: number): PBPrimitiveTypeInfo | null;
|
|
814
816
|
/**
|
|
815
817
|
* Get the structure type of a vertex buffer by specified vertex attribute formats and the length of the vertex buffer
|
|
816
818
|
* @param length - The length of the vertex buffer
|
|
@@ -819,7 +821,7 @@ declare function getVertexBufferAttribType(vertexBufferType: PBStructTypeInfo, a
|
|
|
819
821
|
*
|
|
820
822
|
* @public
|
|
821
823
|
*/
|
|
822
|
-
declare function makeVertexBufferType(length: number, ...attributes: VertexAttribFormat[]): PBStructTypeInfo;
|
|
824
|
+
declare function makeVertexBufferType(length: number, ...attributes: Immutable<VertexAttribFormat[]>): PBStructTypeInfo | null;
|
|
823
825
|
/**
|
|
824
826
|
* Vertex step mode.
|
|
825
827
|
*
|
|
@@ -924,7 +926,7 @@ interface UniformLayout {
|
|
|
924
926
|
/** The primitive type of the uniform */
|
|
925
927
|
type: PBPrimitiveType;
|
|
926
928
|
/** Layout of the members if the uniform is struct type */
|
|
927
|
-
subLayout: UniformBufferLayout
|
|
929
|
+
subLayout: Nullable<UniformBufferLayout>;
|
|
928
930
|
}
|
|
929
931
|
/**
|
|
930
932
|
* Binding layout of a uniform buffer or storage buffer
|
|
@@ -962,9 +964,9 @@ interface TextureBindingLayout {
|
|
|
962
964
|
/** Whether the textur is a multisampled texture */
|
|
963
965
|
multisampled: boolean;
|
|
964
966
|
/** name of the default sampler uniform when using WebGPU device */
|
|
965
|
-
autoBindSampler: string
|
|
967
|
+
autoBindSampler: Nullable<string>;
|
|
966
968
|
/** name of the default comparison sampler uniform when using WebGPU device */
|
|
967
|
-
autoBindSamplerComparison: string
|
|
969
|
+
autoBindSamplerComparison: Nullable<string>;
|
|
968
970
|
}
|
|
969
971
|
/**
|
|
970
972
|
* Binding layout of a storage texture
|
|
@@ -984,7 +986,7 @@ interface StorageTextureBindingLayout {
|
|
|
984
986
|
*/
|
|
985
987
|
interface ExternalTextureBindingLayout {
|
|
986
988
|
/** name of the default sampler uniform when using WebGPU device */
|
|
987
|
-
autoBindSampler: string
|
|
989
|
+
autoBindSampler: Nullable<string>;
|
|
988
990
|
}
|
|
989
991
|
/**
|
|
990
992
|
* Information of bind group entries
|
|
@@ -1044,7 +1046,7 @@ interface SamplerOptions {
|
|
|
1044
1046
|
mipFilter?: TextureFilterMode;
|
|
1045
1047
|
lodMin?: number;
|
|
1046
1048
|
lodMax?: number;
|
|
1047
|
-
compare?: CompareFunc
|
|
1049
|
+
compare?: Nullable<CompareFunc>;
|
|
1048
1050
|
maxAnisotropy?: number;
|
|
1049
1051
|
}
|
|
1050
1052
|
/**
|
|
@@ -1055,13 +1057,13 @@ interface GPUObject<T = unknown> extends IDisposable {
|
|
|
1055
1057
|
/** The object was created by which device */
|
|
1056
1058
|
readonly device: AbstractDevice;
|
|
1057
1059
|
/** The internal GPU object */
|
|
1058
|
-
readonly object: T
|
|
1060
|
+
readonly object: Nullable<T>;
|
|
1059
1061
|
/** unique id */
|
|
1060
1062
|
readonly uid: number;
|
|
1061
1063
|
readonly cid: number;
|
|
1062
1064
|
readonly disposed: boolean;
|
|
1063
1065
|
name: string;
|
|
1064
|
-
restoreHandler: (tex: GPUObject) => void
|
|
1066
|
+
restoreHandler: Nullable<(tex: GPUObject) => void>;
|
|
1065
1067
|
isVertexLayout(): this is VertexLayout;
|
|
1066
1068
|
isFramebuffer(): this is FrameBuffer;
|
|
1067
1069
|
isSampler(): this is TextureSampler;
|
|
@@ -1092,7 +1094,7 @@ interface TextureSampler<T = unknown> extends GPUObject<T> {
|
|
|
1092
1094
|
readonly mipFilter: TextureFilterMode;
|
|
1093
1095
|
readonly lodMin: number;
|
|
1094
1096
|
readonly lodMax: number;
|
|
1095
|
-
readonly compare: CompareFunc
|
|
1097
|
+
readonly compare: Nullable<CompareFunc>;
|
|
1096
1098
|
readonly maxAnisotropy: number;
|
|
1097
1099
|
}
|
|
1098
1100
|
/**
|
|
@@ -1107,7 +1109,7 @@ interface BaseTexture<T = unknown> extends GPUObject<T> {
|
|
|
1107
1109
|
readonly format: TextureFormat;
|
|
1108
1110
|
readonly mipLevelCount: number;
|
|
1109
1111
|
readonly memCost: number;
|
|
1110
|
-
samplerOptions: SamplerOptions
|
|
1112
|
+
samplerOptions: Nullable<Immutable<SamplerOptions>>;
|
|
1111
1113
|
init(): void;
|
|
1112
1114
|
generateMipmaps(): void;
|
|
1113
1115
|
isSRGBFormat(): boolean;
|
|
@@ -1173,7 +1175,7 @@ interface GPUDataBuffer<T = unknown> extends GPUObject<T> {
|
|
|
1173
1175
|
readonly byteLength: number;
|
|
1174
1176
|
readonly usage: number;
|
|
1175
1177
|
bufferSubData(dstByteOffset: number, data: TypedArray, srcOffset?: number, srcLength?: number): void;
|
|
1176
|
-
getBufferSubData(dstBuffer?: Uint8Array<ArrayBuffer
|
|
1178
|
+
getBufferSubData(dstBuffer?: Nullable<Uint8Array<ArrayBuffer>>, offsetInBytes?: number, sizeInBytes?: number): Promise<Uint8Array<ArrayBuffer>>;
|
|
1177
1179
|
}
|
|
1178
1180
|
/**
|
|
1179
1181
|
* Abstract interface for index buffer
|
|
@@ -1188,8 +1190,8 @@ interface IndexBuffer<T = unknown> extends GPUDataBuffer<T> {
|
|
|
1188
1190
|
* @public
|
|
1189
1191
|
*/
|
|
1190
1192
|
interface StructuredBuffer<T = unknown> extends GPUDataBuffer<T> {
|
|
1191
|
-
structure: PBStructTypeInfo
|
|
1192
|
-
set(name: string, value: StructuredValue):
|
|
1193
|
+
structure: Immutable<PBStructTypeInfo>;
|
|
1194
|
+
set(name: string, value: StructuredValue): void;
|
|
1193
1195
|
}
|
|
1194
1196
|
/**
|
|
1195
1197
|
* Abstract interface for vertex layout
|
|
@@ -1197,19 +1199,19 @@ interface StructuredBuffer<T = unknown> extends GPUDataBuffer<T> {
|
|
|
1197
1199
|
*/
|
|
1198
1200
|
interface VertexLayout<T = unknown> extends GPUObject<T> {
|
|
1199
1201
|
readonly vertexBuffers: {
|
|
1200
|
-
[semantic: number]: {
|
|
1202
|
+
[semantic: number]: Nullable<{
|
|
1201
1203
|
buffer: StructuredBuffer;
|
|
1202
1204
|
offset: number;
|
|
1203
|
-
}
|
|
1205
|
+
}>;
|
|
1204
1206
|
};
|
|
1205
|
-
readonly indexBuffer: IndexBuffer
|
|
1207
|
+
readonly indexBuffer: Nullable<IndexBuffer>;
|
|
1206
1208
|
setDrawOffset(buffer: StructuredBuffer, byteOffset: number): void;
|
|
1207
|
-
getVertexBuffer(semantic: VertexSemantic): StructuredBuffer
|
|
1208
|
-
getVertexBufferInfo(semantic: VertexSemantic): VertexBufferInfo
|
|
1209
|
-
getIndexBuffer(): IndexBuffer
|
|
1209
|
+
getVertexBuffer(semantic: VertexSemantic): Nullable<StructuredBuffer>;
|
|
1210
|
+
getVertexBufferInfo(semantic: VertexSemantic): Nullable<VertexBufferInfo>;
|
|
1211
|
+
getIndexBuffer(): Nullable<IndexBuffer>;
|
|
1210
1212
|
bind(): void;
|
|
1211
1213
|
draw(primitiveType: PrimitiveType, first: number, count: number): void;
|
|
1212
|
-
drawInstanced(primitiveType: PrimitiveType, first: number, count: number, numInstances: number):
|
|
1214
|
+
drawInstanced(primitiveType: PrimitiveType, first: number, count: number, numInstances: number): void;
|
|
1213
1215
|
}
|
|
1214
1216
|
/**
|
|
1215
1217
|
* Abstract interface for frame buffer
|
|
@@ -1233,7 +1235,7 @@ interface FrameBuffer<T = unknown> extends GPUObject<T> {
|
|
|
1233
1235
|
setDepthAttachmentLayer(layer: number): void;
|
|
1234
1236
|
getDepthAttachmentLayer(): number;
|
|
1235
1237
|
getColorAttachments(): BaseTexture[];
|
|
1236
|
-
getDepthAttachment(): BaseTexture
|
|
1238
|
+
getDepthAttachment(): Nullable<BaseTexture>;
|
|
1237
1239
|
getColorAttachment<T extends BaseTexture = BaseTexture>(index: number): T;
|
|
1238
1240
|
bind(): boolean;
|
|
1239
1241
|
unbind(): void;
|
|
@@ -1243,12 +1245,12 @@ interface FrameBuffer<T = unknown> extends GPUObject<T> {
|
|
|
1243
1245
|
* @public
|
|
1244
1246
|
*/
|
|
1245
1247
|
interface GPUProgram<T = unknown> extends GPUObject<T> {
|
|
1246
|
-
readonly bindGroupLayouts: BindGroupLayout[]
|
|
1248
|
+
readonly bindGroupLayouts: Immutable<BindGroupLayout[]>;
|
|
1247
1249
|
readonly type: 'render' | 'compute';
|
|
1248
|
-
getShaderSource(kind: ShaderKind): string
|
|
1249
|
-
getCompileError(): string
|
|
1250
|
-
getBindingInfo(name: string): BindPointInfo
|
|
1251
|
-
createUniformBuffer(uniform: string): StructuredBuffer
|
|
1250
|
+
getShaderSource(kind: ShaderKind): Nullable<string>;
|
|
1251
|
+
getCompileError(): Nullable<string>;
|
|
1252
|
+
getBindingInfo(name: string): Nullable<BindPointInfo>;
|
|
1253
|
+
createUniformBuffer(uniform: string): Nullable<StructuredBuffer>;
|
|
1252
1254
|
use(): void;
|
|
1253
1255
|
}
|
|
1254
1256
|
/**
|
|
@@ -1263,17 +1265,17 @@ type StructuredValue = number | TypedArray | VectorBase | {
|
|
|
1263
1265
|
* @public
|
|
1264
1266
|
*/
|
|
1265
1267
|
interface BindGroup extends GPUObject<unknown> {
|
|
1266
|
-
getLayout(): BindGroupLayout
|
|
1267
|
-
getDynamicOffsets(): number[]
|
|
1268
|
+
getLayout(): Immutable<BindGroupLayout>;
|
|
1269
|
+
getDynamicOffsets(): Nullable<Immutable<number[]>>;
|
|
1268
1270
|
getGPUId(): string;
|
|
1269
|
-
getBuffer(name: string, nocreate?: boolean): GPUDataBuffer
|
|
1270
|
-
getTexture(name: string): BaseTexture
|
|
1271
|
+
getBuffer(name: string, nocreate?: boolean): Nullable<GPUDataBuffer>;
|
|
1272
|
+
getTexture(name: string): Nullable<BaseTexture>;
|
|
1271
1273
|
setBuffer(name: string, buffer: GPUDataBuffer, offset?: number, bindOffset?: number, bindSize?: number): void;
|
|
1272
|
-
setValue(name: string, value: StructuredValue):
|
|
1273
|
-
setRawData(name: string, byteOffset: number, data: TypedArray, srcPos?: number, srcLength?: number):
|
|
1274
|
-
setTexture(name: string, texture: BaseTexture, sampler?: TextureSampler):
|
|
1275
|
-
setTextureView(name: string, value: BaseTexture, level?: number, face?: number, mipCount?: number, sampler?: TextureSampler):
|
|
1276
|
-
setSampler(name: string, sampler: TextureSampler):
|
|
1274
|
+
setValue(name: string, value: StructuredValue): void;
|
|
1275
|
+
setRawData(name: string, byteOffset: number, data: TypedArray, srcPos?: number, srcLength?: number): void;
|
|
1276
|
+
setTexture(name: string, texture: BaseTexture, sampler?: Nullable<TextureSampler>): void;
|
|
1277
|
+
setTextureView(name: string, value: BaseTexture, level?: number, face?: number, mipCount?: number, sampler?: Nullable<TextureSampler>): void;
|
|
1278
|
+
setSampler(name: string, sampler: TextureSampler): void;
|
|
1277
1279
|
}
|
|
1278
1280
|
/**
|
|
1279
1281
|
* Render bundle
|
|
@@ -1317,20 +1319,20 @@ declare abstract class Proxiable<T> {
|
|
|
1317
1319
|
*/
|
|
1318
1320
|
declare class PBShaderExp extends Proxiable<PBShaderExp> {
|
|
1319
1321
|
[name: string]: any;
|
|
1320
|
-
get $group(): number
|
|
1321
|
-
set $group(val: number);
|
|
1322
|
+
get $group(): Nullable<number>;
|
|
1323
|
+
set $group(val: Nullable<number>);
|
|
1322
1324
|
/**
|
|
1323
1325
|
* Point out that the variable should be in uniform address space
|
|
1324
1326
|
* @param group - The bind group index
|
|
1325
1327
|
* @returns self
|
|
1326
1328
|
*/
|
|
1327
|
-
uniform(group: number):
|
|
1329
|
+
uniform(group: number): this;
|
|
1328
1330
|
/**
|
|
1329
1331
|
* Point out that the variable should be an uniform buffer
|
|
1330
1332
|
* @param group - The bind group index
|
|
1331
1333
|
* @returns self
|
|
1332
1334
|
*/
|
|
1333
|
-
uniformBuffer(group: number, bindingSize?: number):
|
|
1335
|
+
uniformBuffer(group: number, bindingSize?: number): this;
|
|
1334
1336
|
/**
|
|
1335
1337
|
* Point out that the variable should be in workgroup address space
|
|
1336
1338
|
*
|
|
@@ -1339,51 +1341,51 @@ declare class PBShaderExp extends Proxiable<PBShaderExp> {
|
|
|
1339
1341
|
*
|
|
1340
1342
|
* @returns self
|
|
1341
1343
|
*/
|
|
1342
|
-
workgroup():
|
|
1344
|
+
workgroup(): this;
|
|
1343
1345
|
/**
|
|
1344
1346
|
* Point out that the variable should be in storage address space
|
|
1345
1347
|
* @param group - The bind group index
|
|
1346
1348
|
* @returns self
|
|
1347
1349
|
*/
|
|
1348
|
-
storage(group: number):
|
|
1350
|
+
storage(group: number): this;
|
|
1349
1351
|
/**
|
|
1350
1352
|
* Point out that the variable is read-only and should be in storage address space
|
|
1351
1353
|
* @param group - The bind group index
|
|
1352
1354
|
* @returns self
|
|
1353
1355
|
*/
|
|
1354
|
-
storageReadonly(group: number):
|
|
1356
|
+
storageReadonly(group: number): this;
|
|
1355
1357
|
/**
|
|
1356
1358
|
* Point out that the variable should be a storage buffer
|
|
1357
1359
|
* @param group - The bind group index
|
|
1358
1360
|
* @returns self
|
|
1359
1361
|
*/
|
|
1360
|
-
storageBuffer(group: number, bindingSize?: number):
|
|
1362
|
+
storageBuffer(group: number, bindingSize?: number): this;
|
|
1361
1363
|
/**
|
|
1362
1364
|
* Point out that the variable is read-only and should be a storage buffer
|
|
1363
1365
|
* @param group - The bind group index
|
|
1364
1366
|
* @returns self
|
|
1365
1367
|
*/
|
|
1366
|
-
storageBufferReadonly(group: number, bindingSize?: number):
|
|
1367
|
-
inout():
|
|
1368
|
-
out():
|
|
1368
|
+
storageBufferReadonly(group: number, bindingSize?: number): this;
|
|
1369
|
+
inout(): this;
|
|
1370
|
+
out(): this;
|
|
1369
1371
|
/**
|
|
1370
1372
|
* Point out that the variable is a input vertex attribute
|
|
1371
1373
|
* @param attr - The vertex semantic
|
|
1372
1374
|
* @returns self
|
|
1373
1375
|
*/
|
|
1374
|
-
attrib(attr: VertexSemantic):
|
|
1376
|
+
attrib(attr: VertexSemantic): this;
|
|
1375
1377
|
/**
|
|
1376
1378
|
* Create tags for the variable
|
|
1377
1379
|
* @param args - tags
|
|
1378
1380
|
* @returns self
|
|
1379
1381
|
*/
|
|
1380
|
-
tag(...args: ShaderExpTagValue[]):
|
|
1382
|
+
tag(...args: ShaderExpTagValue[]): this;
|
|
1381
1383
|
/**
|
|
1382
1384
|
* Set sample type for the variable if the variable is of type texture
|
|
1383
1385
|
* @param type - sample type
|
|
1384
1386
|
* @returns self
|
|
1385
1387
|
*/
|
|
1386
|
-
sampleType(type: 'float' | 'unfilterable-float' | 'sint' | 'uint' | 'depth'):
|
|
1388
|
+
sampleType(type: 'float' | 'unfilterable-float' | 'sint' | 'uint' | 'depth'): this;
|
|
1387
1389
|
/**
|
|
1388
1390
|
* Get element in the array by index
|
|
1389
1391
|
* @param index - index of the element
|
|
@@ -1400,17 +1402,17 @@ declare class PBShaderExp extends Proxiable<PBShaderExp> {
|
|
|
1400
1402
|
* Point out that the variable should be in high precision
|
|
1401
1403
|
* @returns self
|
|
1402
1404
|
*/
|
|
1403
|
-
highp():
|
|
1405
|
+
highp(): this;
|
|
1404
1406
|
/**
|
|
1405
1407
|
* Points out that the variable should be in medium precision
|
|
1406
1408
|
* @returns self
|
|
1407
1409
|
*/
|
|
1408
|
-
mediump():
|
|
1410
|
+
mediump(): this;
|
|
1409
1411
|
/**
|
|
1410
1412
|
* Points out that the variable should be in low precision
|
|
1411
1413
|
* @returns self
|
|
1412
1414
|
*/
|
|
1413
|
-
lowp():
|
|
1415
|
+
lowp(): this;
|
|
1414
1416
|
/**
|
|
1415
1417
|
* Whether this is a constructor
|
|
1416
1418
|
* @returns true if this is a constructor
|
|
@@ -1475,7 +1477,7 @@ declare class PBReflection {
|
|
|
1475
1477
|
* Gets the variable which is the vertex attribute of specified semantic
|
|
1476
1478
|
* @param attrib - The vertex semantic
|
|
1477
1479
|
*/
|
|
1478
|
-
attribute(attrib: VertexSemantic): PBShaderExp;
|
|
1480
|
+
attribute(attrib: VertexSemantic): PBShaderExp | null;
|
|
1479
1481
|
}
|
|
1480
1482
|
|
|
1481
1483
|
declare const StorageTextureFormatMap: {
|
|
@@ -1522,13 +1524,13 @@ interface PBRenderOptions {
|
|
|
1522
1524
|
* @param this - Global scope object of the vertex shader
|
|
1523
1525
|
* @param pb - The program builder instance
|
|
1524
1526
|
*/
|
|
1525
|
-
vertex(this: PBGlobalScope, pb: ProgramBuilder):
|
|
1527
|
+
vertex(this: PBGlobalScope, pb: ProgramBuilder): void;
|
|
1526
1528
|
/**
|
|
1527
1529
|
* Fragment shader generator.
|
|
1528
1530
|
* @param this - Global scope object of the fragment shader
|
|
1529
1531
|
* @param pb - The program builder instance
|
|
1530
1532
|
*/
|
|
1531
|
-
fragment(this: PBGlobalScope, pb: ProgramBuilder):
|
|
1533
|
+
fragment(this: PBGlobalScope, pb: ProgramBuilder): void;
|
|
1532
1534
|
}
|
|
1533
1535
|
/**
|
|
1534
1536
|
* Compute program build options
|
|
@@ -1540,7 +1542,7 @@ interface PBComputeOptions {
|
|
|
1540
1542
|
/** workgroup size */
|
|
1541
1543
|
workgroupSize: [number, number, number];
|
|
1542
1544
|
/** compute shader */
|
|
1543
|
-
compute(this: PBGlobalScope, pb: ProgramBuilder):
|
|
1545
|
+
compute(this: PBGlobalScope, pb: ProgramBuilder): void;
|
|
1544
1546
|
}
|
|
1545
1547
|
/**
|
|
1546
1548
|
* The program builder interface
|
|
@@ -2036,17 +2038,17 @@ interface ProgramBuilder {
|
|
|
2036
2038
|
/** Same as isinf builtin function in GLSL, only valid for WebGL2 device */
|
|
2037
2039
|
isinf(x: number | PBShaderExp): PBShaderExp;
|
|
2038
2040
|
/** add two values */
|
|
2039
|
-
add_2(x: number | PBShaderExp, y: number | PBShaderExp):
|
|
2041
|
+
add_2(x: number | PBShaderExp, y: number | PBShaderExp): PBShaderExp;
|
|
2040
2042
|
/** add a couple of values togeter */
|
|
2041
|
-
add(x: number | PBShaderExp, y: number | PBShaderExp, ...rest: (number | PBShaderExp)[]):
|
|
2043
|
+
add(x: number | PBShaderExp, y: number | PBShaderExp, ...rest: (number | PBShaderExp)[]): PBShaderExp;
|
|
2042
2044
|
/** subtract two values */
|
|
2043
|
-
sub(x: number | PBShaderExp, y: number | PBShaderExp):
|
|
2045
|
+
sub(x: number | PBShaderExp, y: number | PBShaderExp): PBShaderExp;
|
|
2044
2046
|
/** multiply two values */
|
|
2045
|
-
mul_2(x: number | PBShaderExp, y: number | PBShaderExp):
|
|
2047
|
+
mul_2(x: number | PBShaderExp, y: number | PBShaderExp): PBShaderExp;
|
|
2046
2048
|
/** multiply a couple of values togeter */
|
|
2047
|
-
mul(x: number | PBShaderExp, y: number | PBShaderExp, ...rest: (number | PBShaderExp)[]):
|
|
2049
|
+
mul(x: number | PBShaderExp, y: number | PBShaderExp, ...rest: (number | PBShaderExp)[]): PBShaderExp;
|
|
2048
2050
|
/** divide the first number by the second number */
|
|
2049
|
-
div(x: number | PBShaderExp, y: number | PBShaderExp):
|
|
2051
|
+
div(x: number | PBShaderExp, y: number | PBShaderExp): PBShaderExp;
|
|
2050
2052
|
/** Same as length builtin function in GLSL and WGSL */
|
|
2051
2053
|
length(x: number | PBShaderExp): PBShaderExp;
|
|
2052
2054
|
/** Same as distance builtin function in GLSL and WGSL */
|
|
@@ -2092,7 +2094,7 @@ interface ProgramBuilder {
|
|
|
2092
2094
|
/** return x && y */
|
|
2093
2095
|
and_2(x: PBShaderExp | number | boolean, y: PBShaderExp | number | boolean): PBShaderExp;
|
|
2094
2096
|
/** return x && y && ... */
|
|
2095
|
-
and(x: PBShaderExp | number | boolean, y: PBShaderExp | number | boolean, ...rest: (PBShaderExp | number | boolean)[]):
|
|
2097
|
+
and(x: PBShaderExp | number | boolean, y: PBShaderExp | number | boolean, ...rest: (PBShaderExp | number | boolean)[]): PBShaderExp;
|
|
2096
2098
|
/** return x & y, per component */
|
|
2097
2099
|
compAnd(x: PBShaderExp | number, y: PBShaderExp | number): PBShaderExp;
|
|
2098
2100
|
/** return x ^ y, per component */
|
|
@@ -2112,9 +2114,9 @@ interface ProgramBuilder {
|
|
|
2112
2114
|
/** return the negate of the given value */
|
|
2113
2115
|
neg(x: number | PBShaderExp): PBShaderExp;
|
|
2114
2116
|
/** shift arithmetic left, not valid for WebGL1 device */
|
|
2115
|
-
sal(a: number | PBShaderExp, b: number | PBShaderExp):
|
|
2117
|
+
sal(a: number | PBShaderExp, b: number | PBShaderExp): PBShaderExp;
|
|
2116
2118
|
/** shift arithmetic right, not valid for WebGL1 device */
|
|
2117
|
-
sar(a: number | PBShaderExp, b: number | PBShaderExp):
|
|
2119
|
+
sar(a: number | PBShaderExp, b: number | PBShaderExp): PBShaderExp;
|
|
2118
2120
|
/** Same as the arrayLength builtin function in WGSL, only valid for WebGPU device */
|
|
2119
2121
|
arrayLength(x: PBShaderExp): PBShaderExp;
|
|
2120
2122
|
/** Same as the select builtin function in WGSL, only valid for WebGPU device */
|
|
@@ -2222,9 +2224,9 @@ interface ProgramBuilder {
|
|
|
2222
2224
|
/** Same as workgroupBarrier builtin function in WebGPU, only valid for WebGPU device */
|
|
2223
2225
|
workgroupBarrier(): void;
|
|
2224
2226
|
/** atomicLoad, only valid for WebGPU device */
|
|
2225
|
-
atomicLoad(ptr: PBShaderExp):
|
|
2227
|
+
atomicLoad(ptr: PBShaderExp): PBShaderExp;
|
|
2226
2228
|
/** atomicStore, only valid for WebGPU device */
|
|
2227
|
-
atomicStore(ptr: PBShaderExp, value: number | PBShaderExp):
|
|
2229
|
+
atomicStore(ptr: PBShaderExp, value: number | PBShaderExp): void;
|
|
2228
2230
|
/** atomicAdd, only valid for WebGPU device */
|
|
2229
2231
|
atomicAdd(ptr: PBShaderExp, value: number | PBShaderExp): PBShaderExp;
|
|
2230
2232
|
/** atomicSub, only valid for WebGPU device */
|
|
@@ -2253,9 +2255,9 @@ declare class ProgramBuilder {
|
|
|
2253
2255
|
*/
|
|
2254
2256
|
constructor(device: AbstractDevice);
|
|
2255
2257
|
/** Get last error */
|
|
2256
|
-
get lastError(): string
|
|
2258
|
+
get lastError(): Nullable<string>;
|
|
2257
2259
|
/** Current shader kind */
|
|
2258
|
-
get shaderKind(): ShaderKind
|
|
2260
|
+
get shaderKind(): Nullable<ShaderKind>;
|
|
2259
2261
|
get emulateDepthClamp(): boolean;
|
|
2260
2262
|
set emulateDepthClamp(val: boolean);
|
|
2261
2263
|
/** Get the shader code reflection interface */
|
|
@@ -2286,7 +2288,7 @@ declare class PBScope extends Proxiable<PBScope> {
|
|
|
2286
2288
|
* @param semantic - The vertex semantic
|
|
2287
2289
|
* @returns The input vertex attribute or null if not exists
|
|
2288
2290
|
*/
|
|
2289
|
-
$getVertexAttrib(semantic: VertexSemantic): PBShaderExp
|
|
2291
|
+
$getVertexAttrib(semantic: VertexSemantic): Nullable<PBShaderExp>;
|
|
2290
2292
|
/** Get the current local scope */
|
|
2291
2293
|
get $l(): PBLocalScope;
|
|
2292
2294
|
/** Get the global scope */
|
|
@@ -2409,7 +2411,7 @@ declare class PBInsideFunctionScope extends PBScope {
|
|
|
2409
2411
|
*/
|
|
2410
2412
|
$while(condition: ExpValueNonArrayType, body: (this: PBWhileScope) => void): void;
|
|
2411
2413
|
/** Gets main function scope */
|
|
2412
|
-
$getMainScope(): PBFunctionScope
|
|
2414
|
+
$getMainScope(): Nullable<PBFunctionScope>;
|
|
2413
2415
|
}
|
|
2414
2416
|
/**
|
|
2415
2417
|
* Scope that insides a function
|
|
@@ -2738,15 +2740,15 @@ interface RenderStateSet {
|
|
|
2738
2740
|
/** Shallow copy existing RenderStateSet object to this */
|
|
2739
2741
|
copyFrom(stateSet: RenderStateSet): void;
|
|
2740
2742
|
/** Fragment output related render statements or null if the default values should be used */
|
|
2741
|
-
readonly colorState: ColorState
|
|
2743
|
+
readonly colorState: Nullable<ColorState>;
|
|
2742
2744
|
/** Alpha blending related render statements or null if the default values should be used */
|
|
2743
|
-
readonly blendingState: BlendingState
|
|
2745
|
+
readonly blendingState: Nullable<BlendingState>;
|
|
2744
2746
|
/** Rasterization related render statements or null if the default values should be used */
|
|
2745
|
-
readonly rasterizerState: RasterizerState
|
|
2747
|
+
readonly rasterizerState: Nullable<RasterizerState>;
|
|
2746
2748
|
/** Depth buffer related render statements or null if the default values should be used */
|
|
2747
|
-
readonly depthState: DepthState
|
|
2749
|
+
readonly depthState: Nullable<DepthState>;
|
|
2748
2750
|
/** Stencil buffer related render statements or null if the default values should be used */
|
|
2749
|
-
readonly stencilState: StencilState
|
|
2751
|
+
readonly stencilState: Nullable<StencilState>;
|
|
2750
2752
|
/**
|
|
2751
2753
|
* Allocates a ColorState
|
|
2752
2754
|
* @returns The created ColorState
|
|
@@ -2859,7 +2861,7 @@ declare class Pool {
|
|
|
2859
2861
|
* @param attachmentLayer - The texture layer to which the color attachment will render, default is 0
|
|
2860
2862
|
* @returns The fetched FrameBuffer object.
|
|
2861
2863
|
*/
|
|
2862
|
-
fetchTemporalFramebuffer<T extends BaseTexture<unknown>>(autoRelease: boolean, width: number, height: number, colorTexOrFormat: MaybeArray<TextureFormat | T>, depthTexOrFormat?: TextureFormat | T
|
|
2864
|
+
fetchTemporalFramebuffer<T extends BaseTexture<unknown>>(autoRelease: boolean, width: number, height: number, colorTexOrFormat: MaybeArray<TextureFormat | T>, depthTexOrFormat?: Nullable<TextureFormat | T>, mipmapping?: boolean, sampleCount?: number, ignoreDepthStencil?: boolean, attachmentMipLevel?: number, attachmentCubeface?: number, attachmentLayer?: number): FrameBuffer<unknown>;
|
|
2863
2865
|
/**
|
|
2864
2866
|
* Creates a temporal framebuffer from the object pool.
|
|
2865
2867
|
* @param autoRelease - Whether the framebuffer should be automatically released at the next frame.
|
|
@@ -2872,7 +2874,7 @@ declare class Pool {
|
|
|
2872
2874
|
* @param attachmentLayer - The texture layer to which the color attachment will render, default is 0.
|
|
2873
2875
|
* @returns The fetched FrameBuffer object.
|
|
2874
2876
|
*/
|
|
2875
|
-
createTemporalFramebuffer(autoRelease: boolean, colorAttachments: BaseTexture[], depthAttachment?: BaseTexture
|
|
2877
|
+
createTemporalFramebuffer(autoRelease: boolean, colorAttachments: BaseTexture[], depthAttachment?: Nullable<BaseTexture>, sampleCount?: number, ignoreDepthStencil?: boolean, attachmentMipLevel?: number, attachmentCubeface?: number, attachmentLayer?: number): FrameBuffer<unknown>;
|
|
2876
2878
|
/**
|
|
2877
2879
|
* Dispose a texture that is allocated from the object pool.
|
|
2878
2880
|
* @param texture - The texture to dispose.
|
|
@@ -2909,6 +2911,29 @@ declare class Pool {
|
|
|
2909
2911
|
purge(): void;
|
|
2910
2912
|
}
|
|
2911
2913
|
|
|
2914
|
+
/**
|
|
2915
|
+
* Abstract timer interface
|
|
2916
|
+
* @public
|
|
2917
|
+
*/
|
|
2918
|
+
interface ITimer {
|
|
2919
|
+
begin(): void;
|
|
2920
|
+
end(): void;
|
|
2921
|
+
ended(): boolean;
|
|
2922
|
+
elapsed(): number;
|
|
2923
|
+
}
|
|
2924
|
+
/**
|
|
2925
|
+
* CPU timer class
|
|
2926
|
+
* @public
|
|
2927
|
+
*/
|
|
2928
|
+
declare class CPUTimer implements ITimer {
|
|
2929
|
+
constructor();
|
|
2930
|
+
now(): number;
|
|
2931
|
+
begin(): void;
|
|
2932
|
+
end(): void;
|
|
2933
|
+
ended(): boolean;
|
|
2934
|
+
elapsed(): number;
|
|
2935
|
+
}
|
|
2936
|
+
|
|
2912
2937
|
/**
|
|
2913
2938
|
* The webgl context type
|
|
2914
2939
|
* @public
|
|
@@ -2943,14 +2968,14 @@ type DataType = 'u8' | 'u8norm' | 'i8' | 'i8norm' | 'u16' | 'u16norm' | 'i16' |
|
|
|
2943
2968
|
* Texture format type
|
|
2944
2969
|
* @public
|
|
2945
2970
|
*/
|
|
2946
|
-
type TextureFormat = '
|
|
2971
|
+
type TextureFormat = 'r8unorm' | 'r8snorm' | 'r16f' | 'r32f' | 'r8ui' | 'r8i' | 'r16ui' | 'r16i' | 'r32ui' | 'r32i' | 'rg8unorm' | 'rg8snorm' | 'rg16f' | 'rg32f' | 'rg8ui' | 'rg8i' | 'rg16ui' | 'rg16i' | 'rg32ui' | 'rg32i' | 'rgba8unorm' | 'rgba8unorm-srgb' | 'rgba8snorm' | 'bgra8unorm' | 'bgra8unorm-srgb' | 'rgba16f' | 'rgba32f' | 'rgba8ui' | 'rgba8i' | 'rgba16ui' | 'rgba16i' | 'rgba32ui' | 'rgba32i' | 'rg11b10uf' | 'd16' | 'd24' | 'd32f' | 'd24s8' | 'd32fs8' | 'dxt1' | 'dxt1-srgb' | 'dxt3' | 'dxt3-srgb' | 'dxt5' | 'dxt5-srgb' | 'bc4' | 'bc4-signed' | 'bc5' | 'bc5-signed' | 'bc7' | 'bc7-srgb' | 'bc6h' | 'bc6h-signed' | 'astc-4x4' | 'astc-4x4-srgb' | 'astc-5x4' | 'astc-5x4-srgb' | 'astc-5x5' | 'astc-5x5-srgb' | 'astc-6x5' | 'astc-6x5-srgb' | 'astc-6x6' | 'astc-6x6-srgb' | 'astc-8x5' | 'astc-8x5-srgb' | 'astc-8x6' | 'astc-8x6-srgb' | 'astc-8x8' | 'astc-8x8-srgb' | 'astc-10x5' | 'astc-10x5-srgb' | 'astc-10x6' | 'astc-10x6-srgb' | 'astc-10x8' | 'astc-10x8-srgb' | 'astc-10x10' | 'astc-10x10-srgb' | 'astc-12x10' | 'astc-12x10-srgb' | 'astc-12x12' | 'astc-12x12-srgb';
|
|
2947
2972
|
/**
|
|
2948
2973
|
* Converts a non-sRGB texture format to the corresponding sRGB texture format
|
|
2949
2974
|
* @param format - The texture format to be converted
|
|
2950
2975
|
* @returns The sRGB texture format
|
|
2951
2976
|
* @public
|
|
2952
2977
|
*/
|
|
2953
|
-
declare function linearTextureFormatToSRGB(format: TextureFormat):
|
|
2978
|
+
declare function linearTextureFormatToSRGB(format: TextureFormat): "rgba8snorm" | "r8unorm" | "r8snorm" | "r16f" | "r32f" | "r8ui" | "r8i" | "r16ui" | "r16i" | "r32ui" | "r32i" | "rg8unorm" | "rg8snorm" | "rg16f" | "rg32f" | "rg8ui" | "rg8i" | "rg16ui" | "rg16i" | "rg32ui" | "rg32i" | "rgba8unorm-srgb" | "bgra8unorm-srgb" | "rgba16f" | "rgba32f" | "rgba8ui" | "rgba8i" | "rgba16ui" | "rgba16i" | "rgba32ui" | "rgba32i" | "rg11b10uf" | "d16" | "d24" | "d32f" | "d24s8" | "d32fs8" | "dxt1-srgb" | "dxt3-srgb" | "dxt5-srgb" | "bc4" | "bc4-signed" | "bc5" | "bc5-signed" | "bc7-srgb" | "bc6h" | "bc6h-signed" | "astc-4x4-srgb" | "astc-5x4-srgb" | "astc-5x5-srgb" | "astc-6x5-srgb" | "astc-6x6-srgb" | "astc-8x5-srgb" | "astc-8x6-srgb" | "astc-8x8-srgb" | "astc-10x5-srgb" | "astc-10x6-srgb" | "astc-10x8-srgb" | "astc-10x10-srgb" | "astc-12x10-srgb" | "astc-12x12-srgb";
|
|
2954
2979
|
/**
|
|
2955
2980
|
* Check if a given texture format contains an alpha channel.
|
|
2956
2981
|
* @param format - The texture format to be checked.
|
|
@@ -3175,8 +3200,6 @@ interface ShaderCaps {
|
|
|
3175
3200
|
supportShaderTextureLod: boolean;
|
|
3176
3201
|
/** True if the device supports high precison float number for shader programs */
|
|
3177
3202
|
supportHighPrecisionFloat: boolean;
|
|
3178
|
-
/** True if the device supports high precison integer number for shader programs */
|
|
3179
|
-
supportHighPrecisionInt: boolean;
|
|
3180
3203
|
/** The maximum number of bytes of uniform buffer */
|
|
3181
3204
|
maxUniformBufferSize: number;
|
|
3182
3205
|
/** The uniform buffer offset alignment */
|
|
@@ -3254,7 +3277,7 @@ interface TextureCaps {
|
|
|
3254
3277
|
* @param format - The texture format
|
|
3255
3278
|
* @returns the texture format infomation
|
|
3256
3279
|
*/
|
|
3257
|
-
getTextureFormatInfo(format: TextureFormat): TextureFormatInfo
|
|
3280
|
+
getTextureFormatInfo(format: TextureFormat): Immutable<TextureFormatInfo>;
|
|
3258
3281
|
}
|
|
3259
3282
|
/**
|
|
3260
3283
|
* Creation options of rendering shader program
|
|
@@ -3307,7 +3330,7 @@ interface DeviceOptions {
|
|
|
3307
3330
|
* @public
|
|
3308
3331
|
*/
|
|
3309
3332
|
type DeviceEventMap = {
|
|
3310
|
-
resize: [
|
|
3333
|
+
resize: [cssWidth: number, cssHeight: number, deviceWidth: number, deviceHeight: number];
|
|
3311
3334
|
devicelost: [];
|
|
3312
3335
|
devicerestored: [];
|
|
3313
3336
|
gpuobject_added: [obj: GPUObject];
|
|
@@ -3353,8 +3376,10 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3353
3376
|
getFrameBufferSampleCount(): number;
|
|
3354
3377
|
/** Returns true if device context is lost. */
|
|
3355
3378
|
isContextLost(): boolean;
|
|
3356
|
-
/** Get the value of device pixel ratio */
|
|
3357
|
-
|
|
3379
|
+
/** Get the value of device pixel ratio in X axis */
|
|
3380
|
+
getScaleX(): number;
|
|
3381
|
+
/** Get the value of device pixel ratio in Y axis */
|
|
3382
|
+
getScaleY(): number;
|
|
3358
3383
|
/** Get the width of current frame buffer */
|
|
3359
3384
|
getDrawingBufferWidth(): number;
|
|
3360
3385
|
/** Get the height of current frame buffer */
|
|
@@ -3364,13 +3389,13 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3364
3389
|
/** Get the height of back buffer */
|
|
3365
3390
|
getBackBufferHeight(): number;
|
|
3366
3391
|
/** Get the device capabilities */
|
|
3367
|
-
getDeviceCaps(): DeviceCaps
|
|
3392
|
+
getDeviceCaps(): Immutable<DeviceCaps>;
|
|
3368
3393
|
/** Schedule next frame */
|
|
3369
3394
|
nextFrame(callback: () => void): number;
|
|
3370
3395
|
/** Cancel schedule next frame */
|
|
3371
|
-
cancelNextFrame(handle: number):
|
|
3396
|
+
cancelNextFrame(handle: number): void;
|
|
3372
3397
|
/** Set font for drawText function */
|
|
3373
|
-
setFont(fontName: string):
|
|
3398
|
+
setFont(fontName: string): void;
|
|
3374
3399
|
/**
|
|
3375
3400
|
* Draw a string
|
|
3376
3401
|
* @param text - The string that will be drawn
|
|
@@ -3378,14 +3403,16 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3378
3403
|
* @param y - y coordinate in pixels related to the viewport origin
|
|
3379
3404
|
* @param color - A CSS color value
|
|
3380
3405
|
*/
|
|
3381
|
-
drawText(text: string, x: number, y: number, color: string):
|
|
3406
|
+
drawText(text: string, x: number, y: number, color: string, viewport?: Immutable<number[]>): void;
|
|
3382
3407
|
/**
|
|
3383
3408
|
* Clears the current frame buffer
|
|
3384
3409
|
* @param clearColor - If not null, the color buffer will be cleared to this value.
|
|
3385
3410
|
* @param clearDepth - If not null, the depth buffer will be cleared to this value.
|
|
3386
3411
|
* @param clearStencil - If not null, the stencil buffer will be cleared to this value.
|
|
3387
3412
|
*/
|
|
3388
|
-
clearFrameBuffer(clearColor: Vector4
|
|
3413
|
+
clearFrameBuffer(clearColor: Nullable<Vector4>, clearDepth: Nullable<number>, clearStencil: Nullable<number>): void;
|
|
3414
|
+
/** Creates a GPU timer */
|
|
3415
|
+
createGPUTimer(): Nullable<ITimer>;
|
|
3389
3416
|
/** Creates a render state set object */
|
|
3390
3417
|
createRenderStateSet(): RenderStateSet;
|
|
3391
3418
|
/** Creates a blending state object */
|
|
@@ -3410,7 +3437,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3410
3437
|
* @param options - Texture creation options
|
|
3411
3438
|
* @returns The created texture
|
|
3412
3439
|
*/
|
|
3413
|
-
createTextureFromMipmapData<T extends BaseTexture = BaseTexture>(data: TextureMipmapData, sRGB: boolean, options?: TextureCreationOptions): T
|
|
3440
|
+
createTextureFromMipmapData<T extends BaseTexture = BaseTexture>(data: TextureMipmapData, sRGB: boolean, options?: TextureCreationOptions): Nullable<T>;
|
|
3414
3441
|
/**
|
|
3415
3442
|
* Creates a 2d texture
|
|
3416
3443
|
* @param format - The texture format
|
|
@@ -3419,14 +3446,14 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3419
3446
|
* @param options - The creation options
|
|
3420
3447
|
* @returns The created 2D texture
|
|
3421
3448
|
*/
|
|
3422
|
-
createTexture2D(format: TextureFormat, width: number, height: number, options?: TextureCreationOptions): Texture2D
|
|
3449
|
+
createTexture2D(format: TextureFormat, width: number, height: number, options?: TextureCreationOptions): Nullable<Texture2D>;
|
|
3423
3450
|
/**
|
|
3424
3451
|
* Creates a 2d texture from a image element
|
|
3425
3452
|
* @param element - The image element
|
|
3426
3453
|
* @param options - The creation options
|
|
3427
3454
|
* @returns The created 2D texture.
|
|
3428
3455
|
*/
|
|
3429
|
-
createTexture2DFromImage(element: TextureImageElement, sRGB: boolean, options?: TextureCreationOptions): Texture2D
|
|
3456
|
+
createTexture2DFromImage(element: TextureImageElement, sRGB: boolean, options?: TextureCreationOptions): Nullable<Texture2D>;
|
|
3430
3457
|
/**
|
|
3431
3458
|
* Creates a 2d array texture
|
|
3432
3459
|
* @param format - The texture format
|
|
@@ -3436,7 +3463,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3436
3463
|
* @param options - The creation options
|
|
3437
3464
|
* @returns The created 2D array texture.
|
|
3438
3465
|
*/
|
|
3439
|
-
createTexture2DArray(format: TextureFormat, width: number, height: number, depth: number, options?: TextureCreationOptions): Texture2DArray
|
|
3466
|
+
createTexture2DArray(format: TextureFormat, width: number, height: number, depth: number, options?: TextureCreationOptions): Nullable<Texture2DArray>;
|
|
3440
3467
|
/**
|
|
3441
3468
|
* Creates a 2d array texture from a seris of image elements
|
|
3442
3469
|
* @remarks image elements must have the same size.
|
|
@@ -3444,7 +3471,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3444
3471
|
* @param options - The creation options
|
|
3445
3472
|
* @returns The created 2D array texture.
|
|
3446
3473
|
*/
|
|
3447
|
-
createTexture2DArrayFromImages(elements: TextureImageElement[], sRGB: boolean, options?: TextureCreationOptions): Texture2DArray
|
|
3474
|
+
createTexture2DArrayFromImages(elements: TextureImageElement[], sRGB: boolean, options?: TextureCreationOptions): Nullable<Texture2DArray>;
|
|
3448
3475
|
/**
|
|
3449
3476
|
* Creates a 3D texture
|
|
3450
3477
|
* @param format - The texture format
|
|
@@ -3454,7 +3481,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3454
3481
|
* @param options - The creation options
|
|
3455
3482
|
* @returns The created 3D texture.
|
|
3456
3483
|
*/
|
|
3457
|
-
createTexture3D(format: TextureFormat, width: number, height: number, depth: number, options?: TextureCreationOptions): Texture3D
|
|
3484
|
+
createTexture3D(format: TextureFormat, width: number, height: number, depth: number, options?: TextureCreationOptions): Nullable<Texture3D>;
|
|
3458
3485
|
/**
|
|
3459
3486
|
* Creates a cube texture
|
|
3460
3487
|
* @param format - The texture format
|
|
@@ -3462,7 +3489,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3462
3489
|
* @param options - The creation options
|
|
3463
3490
|
* @returns The created cube texture.
|
|
3464
3491
|
*/
|
|
3465
|
-
createCubeTexture(format: TextureFormat, size: number, options?: TextureCreationOptions): TextureCube
|
|
3492
|
+
createCubeTexture(format: TextureFormat, size: number, options?: TextureCreationOptions): Nullable<TextureCube>;
|
|
3466
3493
|
/**
|
|
3467
3494
|
* Creates a video texture from a video element
|
|
3468
3495
|
* @param el - The video element
|
|
@@ -3480,7 +3507,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3480
3507
|
* @param dst - Texture that will be copied to.
|
|
3481
3508
|
* @param dstLevel - Which mipmap level to be copied to.
|
|
3482
3509
|
*/
|
|
3483
|
-
copyTexture2D(src: Texture2D, srcLevel: number, dst: Texture2D, dstLevel: number):
|
|
3510
|
+
copyTexture2D(src: Texture2D, srcLevel: number, dst: Texture2D, dstLevel: number): void;
|
|
3484
3511
|
/**
|
|
3485
3512
|
* Copies a color attachment of a framebuffer to a mipmap level of a texture.
|
|
3486
3513
|
*
|
|
@@ -3492,7 +3519,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3492
3519
|
* @param dst - Texture that will be copied to.
|
|
3493
3520
|
* @param level - Which mipmap level should be copied to.
|
|
3494
3521
|
*/
|
|
3495
|
-
copyFramebufferToTexture2D(src: FrameBuffer, index: number, dst: Texture2D, level: number):
|
|
3522
|
+
copyFramebufferToTexture2D(src: FrameBuffer, index: number, dst: Texture2D, level: number): void;
|
|
3496
3523
|
/**
|
|
3497
3524
|
* Set wether to reverse the winding order
|
|
3498
3525
|
*
|
|
@@ -3517,7 +3544,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3517
3544
|
* @param layout - Layout of the bind group
|
|
3518
3545
|
* @returns The created bind group.
|
|
3519
3546
|
*/
|
|
3520
|
-
createBindGroup(layout: BindGroupLayout): BindGroup;
|
|
3547
|
+
createBindGroup(layout: Immutable<BindGroupLayout>): BindGroup;
|
|
3521
3548
|
/**
|
|
3522
3549
|
* Creates a gpu buffer
|
|
3523
3550
|
* @param sizeInBytes - Size of the buffer in bytes
|
|
@@ -3533,7 +3560,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3533
3560
|
* @param dstOffset - Destination offset in bytes
|
|
3534
3561
|
* @param bytes - How many bytes to be copy
|
|
3535
3562
|
*/
|
|
3536
|
-
copyBuffer(sourceBuffer: GPUDataBuffer, destBuffer: GPUDataBuffer, srcOffset: number, dstOffset: number, bytes: number):
|
|
3563
|
+
copyBuffer(sourceBuffer: GPUDataBuffer, destBuffer: GPUDataBuffer, srcOffset: number, dstOffset: number, bytes: number): void;
|
|
3537
3564
|
/**
|
|
3538
3565
|
* Creates an index buffer
|
|
3539
3566
|
* @param data - Data of the index buffer
|
|
@@ -3560,55 +3587,55 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3560
3587
|
* @param options - The creation options
|
|
3561
3588
|
* @returns The created framebuffer.
|
|
3562
3589
|
*/
|
|
3563
|
-
createFrameBuffer(colorAttachments: BaseTexture[], depthAttachment: BaseTexture
|
|
3590
|
+
createFrameBuffer(colorAttachments: BaseTexture[], depthAttachment: Nullable<BaseTexture>, options?: Nullable<FrameBufferOptions>): FrameBuffer;
|
|
3564
3591
|
/**
|
|
3565
3592
|
* Set viewport from an array that contains the position and size
|
|
3566
3593
|
*
|
|
3567
3594
|
* @param vp - The viewport position and size, if not specified, the viewport will be set to [0, 0, drawingBufferWidth, drawingBufferHeight]
|
|
3568
3595
|
*/
|
|
3569
|
-
setViewport(vp
|
|
3596
|
+
setViewport(vp: Nullable<Immutable<DeviceViewport | number[]>>): void;
|
|
3570
3597
|
/** Get current viewport as [x, y, width, height] */
|
|
3571
|
-
getViewport(): DeviceViewport
|
|
3598
|
+
getViewport(): Immutable<DeviceViewport>;
|
|
3572
3599
|
/**
|
|
3573
3600
|
* Set scissor rectangle from an array that contains the position and size
|
|
3574
3601
|
* @param scissor - The scissor rectangle position and size, if not specified, the scissor rectangle will be set to [0, 0, drawingBufferWidth,drawingBufferHeight]
|
|
3575
3602
|
*/
|
|
3576
|
-
setScissor(scissor
|
|
3603
|
+
setScissor(scissor: Nullable<Immutable<DeviceViewport | number[]>>): void;
|
|
3577
3604
|
/**
|
|
3578
3605
|
* Get current scissor rectangle
|
|
3579
3606
|
*/
|
|
3580
|
-
getScissor(): DeviceViewport
|
|
3607
|
+
getScissor(): Immutable<DeviceViewport>;
|
|
3581
3608
|
/**
|
|
3582
3609
|
* Set current GPU program
|
|
3583
3610
|
* @param program - The GPU program to be set
|
|
3584
3611
|
*/
|
|
3585
|
-
setProgram(program: GPUProgram): void;
|
|
3612
|
+
setProgram(program: Nullable<GPUProgram>): void;
|
|
3586
3613
|
/**
|
|
3587
3614
|
* Get current GPU program
|
|
3588
3615
|
*/
|
|
3589
|
-
getProgram(): GPUProgram
|
|
3616
|
+
getProgram(): Nullable<GPUProgram>;
|
|
3590
3617
|
/**
|
|
3591
3618
|
* Set current vertex layout
|
|
3592
3619
|
*
|
|
3593
3620
|
* @param vertexData - The vertex layout to be set
|
|
3594
3621
|
*/
|
|
3595
|
-
setVertexLayout(vertexData: VertexLayout): void;
|
|
3622
|
+
setVertexLayout(vertexData: Nullable<VertexLayout>): void;
|
|
3596
3623
|
/** Get current vertex layout */
|
|
3597
|
-
getVertexLayout(): VertexLayout
|
|
3624
|
+
getVertexLayout(): Nullable<VertexLayout>;
|
|
3598
3625
|
/**
|
|
3599
3626
|
* Set current render states
|
|
3600
3627
|
*
|
|
3601
3628
|
* @param renderStates - The render state set
|
|
3602
3629
|
*/
|
|
3603
|
-
setRenderStates(renderStates: RenderStateSet): void;
|
|
3630
|
+
setRenderStates(renderStates: Nullable<RenderStateSet>): void;
|
|
3604
3631
|
/** Get current render states */
|
|
3605
|
-
getRenderStates(): RenderStateSet
|
|
3632
|
+
getRenderStates(): Nullable<RenderStateSet>;
|
|
3606
3633
|
/**
|
|
3607
3634
|
* Sets the current framebuffer to the specified FrameBuffer object.
|
|
3608
3635
|
*
|
|
3609
3636
|
* @param rt - The FrameBuffer object to set as the current framebuffer.
|
|
3610
3637
|
*/
|
|
3611
|
-
setFramebuffer(rt: FrameBuffer):
|
|
3638
|
+
setFramebuffer(rt: Nullable<FrameBuffer>): void;
|
|
3612
3639
|
/**
|
|
3613
3640
|
* Sets the current framebuffer specifying complex color attachments, an optional depth attachment, MIP level, face, and sample count.
|
|
3614
3641
|
*
|
|
@@ -3621,14 +3648,10 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3621
3648
|
* @param depth - Optional BaseTexture to serve as the depth attachment.
|
|
3622
3649
|
* @param sampleCount - Optional sample count defining the number of samples for multisampling.
|
|
3623
3650
|
*/
|
|
3624
|
-
setFramebuffer(color:
|
|
3625
|
-
|
|
3626
|
-
miplevel?: number;
|
|
3627
|
-
face?: number;
|
|
3628
|
-
layer?: number;
|
|
3629
|
-
})[], depth?: BaseTexture, miplevel?: number, face?: number, sampleCount?: number): any;
|
|
3651
|
+
setFramebuffer(color: BaseTexture[], depth?: BaseTexture, sampleCount?: number): void;
|
|
3652
|
+
setFramebuffer(colorOrRT: BaseTexture[] | Nullable<FrameBuffer>, depth?: BaseTexture, sampleCount?: number): void;
|
|
3630
3653
|
/** Get current frame buffer */
|
|
3631
|
-
getFramebuffer(): FrameBuffer
|
|
3654
|
+
getFramebuffer(): Nullable<FrameBuffer>;
|
|
3632
3655
|
/**
|
|
3633
3656
|
* Set current bind group
|
|
3634
3657
|
*
|
|
@@ -3636,12 +3659,12 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3636
3659
|
* @param bindGroup - The bind group to be set
|
|
3637
3660
|
* @param dynamicOffsets - dynamic uniform buffer offsets of the bind group or null
|
|
3638
3661
|
*/
|
|
3639
|
-
setBindGroup(index: number, bindGroup: BindGroup, dynamicOffsets?: Iterable<number
|
|
3662
|
+
setBindGroup(index: number, bindGroup: BindGroup, dynamicOffsets?: Nullable<Iterable<number>>): void;
|
|
3640
3663
|
/**
|
|
3641
3664
|
* Get current bind group
|
|
3642
3665
|
* @param index - index of the bind group to get
|
|
3643
3666
|
*/
|
|
3644
|
-
getBindGroup(index: number): [BindGroup, Iterable<number
|
|
3667
|
+
getBindGroup(index: number): [BindGroup, Nullable<Iterable<number>>];
|
|
3645
3668
|
/** Flush the gpu command buffer */
|
|
3646
3669
|
flush(): void;
|
|
3647
3670
|
/**
|
|
@@ -3681,7 +3704,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3681
3704
|
* Executes render bundle
|
|
3682
3705
|
* @param renderBundle - RenderBundle to be execute
|
|
3683
3706
|
*/
|
|
3684
|
-
executeRenderBundle(renderBundle: RenderBundle):
|
|
3707
|
+
executeRenderBundle(renderBundle: RenderBundle): void;
|
|
3685
3708
|
/**
|
|
3686
3709
|
* End capture draw commands
|
|
3687
3710
|
* @returns A RenderBundle that holds the captured draw commands
|
|
@@ -3700,7 +3723,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3700
3723
|
/** Get the program builder */
|
|
3701
3724
|
programBuilder: ProgramBuilder;
|
|
3702
3725
|
/** Get the run loop callback function */
|
|
3703
|
-
runLoopFunction: (device: AbstractDevice) => void
|
|
3726
|
+
runLoopFunction: Nullable<(device: AbstractDevice) => void>;
|
|
3704
3727
|
/**
|
|
3705
3728
|
* Begins a frame for rendering
|
|
3706
3729
|
*
|
|
@@ -3722,7 +3745,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3722
3745
|
* @param dataType - The data type
|
|
3723
3746
|
* @param componentCount - The component count
|
|
3724
3747
|
*/
|
|
3725
|
-
getVertexAttribFormat(semantic: VertexSemantic, dataType: DataType, componentCount: number): VertexAttribFormat
|
|
3748
|
+
getVertexAttribFormat(semantic: VertexSemantic, dataType: DataType, componentCount: number): Nullable<VertexAttribFormat>;
|
|
3726
3749
|
/**
|
|
3727
3750
|
* Creates an interleaved vertex buffer
|
|
3728
3751
|
*
|
|
@@ -3731,7 +3754,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3731
3754
|
* @param options - The creation options
|
|
3732
3755
|
* @returns The created vertex buffer.
|
|
3733
3756
|
*/
|
|
3734
|
-
createInterleavedVertexBuffer(attribFormats: VertexAttribFormat[], data: TypedArray, options?: BufferCreationOptions): StructuredBuffer
|
|
3757
|
+
createInterleavedVertexBuffer(attribFormats: VertexAttribFormat[], data: TypedArray, options?: BufferCreationOptions): Nullable<StructuredBuffer>;
|
|
3735
3758
|
/**
|
|
3736
3759
|
* Creates a non-interleaved vertex buffer
|
|
3737
3760
|
*
|
|
@@ -3740,7 +3763,7 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3740
3763
|
* @param options - The creation options
|
|
3741
3764
|
* @returns The created vertex buffer
|
|
3742
3765
|
*/
|
|
3743
|
-
createVertexBuffer(attribFormat: VertexAttribFormat, data: TypedArray, options?: BufferCreationOptions): StructuredBuffer
|
|
3766
|
+
createVertexBuffer(attribFormat: VertexAttribFormat, data: TypedArray, options?: BufferCreationOptions): Nullable<StructuredBuffer>;
|
|
3744
3767
|
/**
|
|
3745
3768
|
* Draw primitives
|
|
3746
3769
|
*
|
|
@@ -3793,56 +3816,51 @@ interface AbstractDevice extends IEventTarget<DeviceEventMap> {
|
|
|
3793
3816
|
*
|
|
3794
3817
|
* @param uid - id of the GPU object
|
|
3795
3818
|
*/
|
|
3796
|
-
getGPUObjectById(uid: number): GPUObject
|
|
3819
|
+
getGPUObjectById(uid: number): Nullable<GPUObject>;
|
|
3820
|
+
/**
|
|
3821
|
+
* Calculates the actual position of current frame buffer from screen position in X axis.
|
|
3822
|
+
*
|
|
3823
|
+
* @remarks
|
|
3824
|
+
* If current frame buffer is the back buffer, the value will be scaled by the device pixel ratio.
|
|
3825
|
+
*
|
|
3826
|
+
* @param val - The screen position in pixels
|
|
3827
|
+
*/
|
|
3828
|
+
screenXToDevice(val: number): number;
|
|
3797
3829
|
/**
|
|
3798
|
-
* Calculates the
|
|
3830
|
+
* Calculates the screen position from position of current frame buffer in X axis.
|
|
3831
|
+
*
|
|
3832
|
+
* @remarks
|
|
3833
|
+
* If current frame buffer is the back buffer, the value will be divided by the device pixel ratio.
|
|
3834
|
+
*
|
|
3835
|
+
* @param val - The position of current frame buffer in pixels
|
|
3836
|
+
*/
|
|
3837
|
+
deviceXToScreen(val: number): number;
|
|
3838
|
+
/**
|
|
3839
|
+
* Calculates the actual position of current frame buffer from screen position in Y axis.
|
|
3799
3840
|
*
|
|
3800
3841
|
* @remarks
|
|
3801
3842
|
* If current frame buffer is the back buffer, the value will be scaled by the device pixel ratio.
|
|
3802
3843
|
*
|
|
3803
3844
|
* @param val - The screen position in pixels
|
|
3804
3845
|
*/
|
|
3805
|
-
|
|
3846
|
+
screenYToDevice(val: number): number;
|
|
3806
3847
|
/**
|
|
3807
|
-
* Calculates the screen position from position of current frame buffer.
|
|
3848
|
+
* Calculates the screen position from position of current frame buffer in Y axis.
|
|
3808
3849
|
*
|
|
3809
3850
|
* @remarks
|
|
3810
3851
|
* If current frame buffer is the back buffer, the value will be divided by the device pixel ratio.
|
|
3811
3852
|
*
|
|
3812
3853
|
* @param val - The position of current frame buffer in pixels
|
|
3813
3854
|
*/
|
|
3814
|
-
|
|
3855
|
+
deviceYToScreen(val: number): number;
|
|
3815
3856
|
/** Builds render program */
|
|
3816
|
-
buildRenderProgram(options: PBRenderOptions): GPUProgram
|
|
3857
|
+
buildRenderProgram(options: PBRenderOptions): Nullable<GPUProgram>;
|
|
3817
3858
|
/** Builds compute program */
|
|
3818
|
-
buildComputeProgram(options: PBComputeOptions): GPUProgram
|
|
3859
|
+
buildComputeProgram(options: PBComputeOptions): Nullable<GPUProgram>;
|
|
3819
3860
|
/** Pushes current FrameBuffer state */
|
|
3820
|
-
pushDeviceStates():
|
|
3861
|
+
pushDeviceStates(): void;
|
|
3821
3862
|
/** Pops last FrameBuffer state */
|
|
3822
|
-
popDeviceStates():
|
|
3823
|
-
}
|
|
3824
|
-
|
|
3825
|
-
/**
|
|
3826
|
-
* Abstract timer interface
|
|
3827
|
-
* @public
|
|
3828
|
-
*/
|
|
3829
|
-
interface ITimer {
|
|
3830
|
-
begin(): void;
|
|
3831
|
-
end(): void;
|
|
3832
|
-
ended(): boolean;
|
|
3833
|
-
elapsed(): number;
|
|
3834
|
-
}
|
|
3835
|
-
/**
|
|
3836
|
-
* CPU timer class
|
|
3837
|
-
* @public
|
|
3838
|
-
*/
|
|
3839
|
-
declare class CPUTimer implements ITimer {
|
|
3840
|
-
constructor();
|
|
3841
|
-
now(): number;
|
|
3842
|
-
begin(): void;
|
|
3843
|
-
end(): void;
|
|
3844
|
-
ended(): boolean;
|
|
3845
|
-
elapsed(): number;
|
|
3863
|
+
popDeviceStates(): void;
|
|
3846
3864
|
}
|
|
3847
3865
|
|
|
3848
3866
|
/**
|
|
@@ -3851,14 +3869,15 @@ declare class CPUTimer implements ITimer {
|
|
|
3851
3869
|
*/
|
|
3852
3870
|
interface DeviceBackend {
|
|
3853
3871
|
typeName(): string;
|
|
3854
|
-
supported(): boolean
|
|
3855
|
-
createDevice(cvs: HTMLCanvasElement, options?: DeviceOptions): Promise<AbstractDevice
|
|
3872
|
+
supported(): Promise<boolean>;
|
|
3873
|
+
createDevice(cvs: HTMLCanvasElement, options?: DeviceOptions): Promise<Nullable<AbstractDevice>>;
|
|
3856
3874
|
}
|
|
3857
3875
|
/**
|
|
3858
3876
|
* Base class for rendering device
|
|
3859
3877
|
* @public
|
|
3860
3878
|
*/
|
|
3861
3879
|
declare abstract class BaseDevice extends Observable<DeviceEventMap> {
|
|
3880
|
+
protected _dpr: number;
|
|
3862
3881
|
protected _canvas: HTMLCanvasElement;
|
|
3863
3882
|
protected _canvasClientWidth: number;
|
|
3864
3883
|
protected _canvasClientHeight: number;
|
|
@@ -3869,13 +3888,13 @@ declare abstract class BaseDevice extends Observable<DeviceEventMap> {
|
|
|
3869
3888
|
protected _endFrameTime: number;
|
|
3870
3889
|
protected _frameInfo: FrameInfo;
|
|
3871
3890
|
protected _cpuTimer: CPUTimer;
|
|
3872
|
-
protected _gpuTimer: ITimer
|
|
3873
|
-
protected _runningLoop: number
|
|
3891
|
+
protected _gpuTimer: Nullable<ITimer>;
|
|
3892
|
+
protected _runningLoop: Nullable<number>;
|
|
3874
3893
|
protected _fpsCounter: {
|
|
3875
3894
|
time: number;
|
|
3876
3895
|
frame: number;
|
|
3877
3896
|
};
|
|
3878
|
-
protected _runLoopFunc: (device: AbstractDevice) => void
|
|
3897
|
+
protected _runLoopFunc: Nullable<(device: AbstractDevice) => void>;
|
|
3879
3898
|
protected _backend: DeviceBackend;
|
|
3880
3899
|
protected _beginFrameCounter: number;
|
|
3881
3900
|
protected _programBuilder: ProgramBuilder;
|
|
@@ -3883,20 +3902,22 @@ declare abstract class BaseDevice extends Observable<DeviceEventMap> {
|
|
|
3883
3902
|
protected _defaultPoolKey: symbol;
|
|
3884
3903
|
protected _temporalFramebuffer: boolean;
|
|
3885
3904
|
protected _vSync: boolean;
|
|
3905
|
+
private readonly _resizer;
|
|
3886
3906
|
private readonly _stateStack;
|
|
3887
|
-
constructor(cvs: HTMLCanvasElement, backend: DeviceBackend);
|
|
3907
|
+
constructor(cvs: HTMLCanvasElement, backend: DeviceBackend, dpr?: number);
|
|
3908
|
+
getScaleX(): number;
|
|
3909
|
+
getScaleY(): number;
|
|
3888
3910
|
abstract getAdapterInfo(): any;
|
|
3889
3911
|
abstract getFrameBufferSampleCount(): number;
|
|
3890
3912
|
abstract isContextLost(): boolean;
|
|
3891
|
-
abstract getScale(): number;
|
|
3892
3913
|
abstract getDrawingBufferWidth(): number;
|
|
3893
3914
|
abstract getDrawingBufferHeight(): number;
|
|
3894
3915
|
abstract getBackBufferWidth(): number;
|
|
3895
3916
|
abstract getBackBufferHeight(): number;
|
|
3896
|
-
abstract getDeviceCaps(): DeviceCaps
|
|
3917
|
+
abstract getDeviceCaps(): Immutable<DeviceCaps>;
|
|
3897
3918
|
abstract initContext(): Promise<void>;
|
|
3898
|
-
abstract clearFrameBuffer(clearColor: Vector4
|
|
3899
|
-
abstract createGPUTimer(): ITimer
|
|
3919
|
+
abstract clearFrameBuffer(clearColor: Nullable<Vector4>, clearDepth: Nullable<number>, clearStencil: Nullable<number>): void;
|
|
3920
|
+
abstract createGPUTimer(): Nullable<ITimer>;
|
|
3900
3921
|
abstract createRenderStateSet(): RenderStateSet;
|
|
3901
3922
|
abstract createBlendingState(): BlendingState;
|
|
3902
3923
|
abstract createColorState(): ColorState;
|
|
@@ -3904,42 +3925,42 @@ declare abstract class BaseDevice extends Observable<DeviceEventMap> {
|
|
|
3904
3925
|
abstract createDepthState(): DepthState;
|
|
3905
3926
|
abstract createStencilState(): StencilState;
|
|
3906
3927
|
abstract createSampler(options: SamplerOptions): TextureSampler;
|
|
3907
|
-
abstract createTextureFromMipmapData<T extends BaseTexture>(data: TextureMipmapData, sRGB: boolean, options?: TextureCreationOptions): T
|
|
3908
|
-
abstract createTexture2D(format: TextureFormat, width: number, height: number, options?: TextureCreationOptions): Texture2D
|
|
3909
|
-
abstract createTexture2DFromImage(element: TextureImageElement, sRGB: boolean, options?: TextureCreationOptions): Texture2D
|
|
3910
|
-
abstract createTexture2DArray(format: TextureFormat, width: number, height: number, depth: number, options?: TextureCreationOptions): Texture2DArray
|
|
3911
|
-
abstract createTexture2DArrayFromImages(elements: TextureImageElement[], sRGB: boolean, options?: TextureCreationOptions): Texture2DArray
|
|
3912
|
-
abstract createTexture3D(format: TextureFormat, width: number, height: number, depth: number, options?: TextureCreationOptions): Texture3D
|
|
3913
|
-
abstract createCubeTexture(format: TextureFormat, size: number, options?: TextureCreationOptions): TextureCube
|
|
3928
|
+
abstract createTextureFromMipmapData<T extends BaseTexture>(data: TextureMipmapData, sRGB: boolean, options?: TextureCreationOptions): Nullable<T>;
|
|
3929
|
+
abstract createTexture2D(format: TextureFormat, width: number, height: number, options?: TextureCreationOptions): Nullable<Texture2D>;
|
|
3930
|
+
abstract createTexture2DFromImage(element: TextureImageElement, sRGB: boolean, options?: TextureCreationOptions): Nullable<Texture2D>;
|
|
3931
|
+
abstract createTexture2DArray(format: TextureFormat, width: number, height: number, depth: number, options?: TextureCreationOptions): Nullable<Texture2DArray>;
|
|
3932
|
+
abstract createTexture2DArrayFromImages(elements: TextureImageElement[], sRGB: boolean, options?: TextureCreationOptions): Nullable<Texture2DArray>;
|
|
3933
|
+
abstract createTexture3D(format: TextureFormat, width: number, height: number, depth: number, options?: TextureCreationOptions): Nullable<Texture3D>;
|
|
3934
|
+
abstract createCubeTexture(format: TextureFormat, size: number, options?: TextureCreationOptions): Nullable<TextureCube>;
|
|
3914
3935
|
abstract createTextureVideo(el: HTMLVideoElement, samplerOptions?: SamplerOptions): TextureVideo;
|
|
3915
3936
|
abstract reverseVertexWindingOrder(reverse: boolean): void;
|
|
3916
3937
|
abstract isWindingOrderReversed(): boolean;
|
|
3917
|
-
abstract copyTexture2D(src: Texture2D, srcLevel: number, dst: Texture2D, dstLevel: number):
|
|
3918
|
-
abstract copyFramebufferToTexture2D(src: FrameBuffer, index: number, dst: Texture2D, level: number):
|
|
3938
|
+
abstract copyTexture2D(src: Texture2D, srcLevel: number, dst: Texture2D, dstLevel: number): void;
|
|
3939
|
+
abstract copyFramebufferToTexture2D(src: FrameBuffer, index: number, dst: Texture2D, level: number): void;
|
|
3919
3940
|
abstract createGPUProgram(params: GPUProgramConstructParams): GPUProgram;
|
|
3920
|
-
abstract createBindGroup(layout: BindGroupLayout): BindGroup;
|
|
3941
|
+
abstract createBindGroup(layout: Immutable<BindGroupLayout>): BindGroup;
|
|
3921
3942
|
abstract createBuffer(sizeInBytes: number, options: BufferCreationOptions): GPUDataBuffer;
|
|
3922
|
-
abstract copyBuffer(sourceBuffer: GPUDataBuffer, destBuffer: GPUDataBuffer, srcOffset: number, dstOffset: number, bytes: number):
|
|
3943
|
+
abstract copyBuffer(sourceBuffer: GPUDataBuffer, destBuffer: GPUDataBuffer, srcOffset: number, dstOffset: number, bytes: number): void;
|
|
3923
3944
|
abstract createIndexBuffer(data: Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>, options?: BufferCreationOptions): IndexBuffer;
|
|
3924
3945
|
abstract createStructuredBuffer(structureType: PBStructTypeInfo, options: BufferCreationOptions, data?: TypedArray): StructuredBuffer;
|
|
3925
3946
|
abstract createVertexLayout(options: VertexLayoutOptions): VertexLayout;
|
|
3926
|
-
abstract createFrameBuffer(colorAttachments: BaseTexture[], depthAttachment: BaseTexture
|
|
3927
|
-
abstract setViewport(vp
|
|
3928
|
-
abstract getViewport(): DeviceViewport
|
|
3929
|
-
abstract setScissor(scissor
|
|
3930
|
-
abstract getScissor(): DeviceViewport
|
|
3931
|
-
abstract setProgram(program: GPUProgram): void;
|
|
3932
|
-
abstract getProgram(): GPUProgram
|
|
3933
|
-
abstract setVertexLayout(vertexData: VertexLayout): void;
|
|
3934
|
-
abstract getVertexLayout(): VertexLayout
|
|
3935
|
-
abstract setRenderStates(renderStates: RenderStateSet): void;
|
|
3936
|
-
abstract getRenderStates(): RenderStateSet
|
|
3937
|
-
abstract getFramebuffer(): FrameBuffer
|
|
3938
|
-
abstract setBindGroup(index: number, bindGroup: BindGroup, dynamicOffsets?: Iterable<number
|
|
3939
|
-
abstract getBindGroup(index: number): [BindGroup, Iterable<number
|
|
3947
|
+
abstract createFrameBuffer(colorAttachments: BaseTexture[], depthAttachment: Nullable<BaseTexture>, options?: Nullable<FrameBufferOptions>): FrameBuffer;
|
|
3948
|
+
abstract setViewport(vp: Nullable<Immutable<number[] | DeviceViewport>>): void;
|
|
3949
|
+
abstract getViewport(): Immutable<DeviceViewport>;
|
|
3950
|
+
abstract setScissor(scissor: Nullable<Immutable<number[] | DeviceViewport>>): void;
|
|
3951
|
+
abstract getScissor(): Immutable<DeviceViewport>;
|
|
3952
|
+
abstract setProgram(program: Nullable<GPUProgram>): void;
|
|
3953
|
+
abstract getProgram(): Nullable<GPUProgram>;
|
|
3954
|
+
abstract setVertexLayout(vertexData: Nullable<VertexLayout>): void;
|
|
3955
|
+
abstract getVertexLayout(): Nullable<VertexLayout>;
|
|
3956
|
+
abstract setRenderStates(renderStates: Nullable<RenderStateSet>): void;
|
|
3957
|
+
abstract getRenderStates(): Nullable<RenderStateSet>;
|
|
3958
|
+
abstract getFramebuffer(): Nullable<FrameBuffer>;
|
|
3959
|
+
abstract setBindGroup(index: number, bindGroup: BindGroup, dynamicOffsets?: Nullable<Iterable<number>>): void;
|
|
3960
|
+
abstract getBindGroup(index: number): [BindGroup, Nullable<Iterable<number>>];
|
|
3940
3961
|
abstract flush(): void;
|
|
3941
3962
|
abstract nextFrame(callback: () => void): number;
|
|
3942
|
-
abstract cancelNextFrame(handle: number):
|
|
3963
|
+
abstract cancelNextFrame(handle: number): void;
|
|
3943
3964
|
abstract readPixels(index: number, x: number, y: number, w: number, h: number, buffer: TypedArray): Promise<void>;
|
|
3944
3965
|
abstract readPixelsToBuffer(index: number, x: number, y: number, w: number, h: number, buffer: GPUDataBuffer): void;
|
|
3945
3966
|
abstract beginCapture(): void;
|
|
@@ -3959,26 +3980,26 @@ declare abstract class BaseDevice extends Observable<DeviceEventMap> {
|
|
|
3959
3980
|
get vSync(): boolean;
|
|
3960
3981
|
set vSync(val: boolean);
|
|
3961
3982
|
get pool(): Pool;
|
|
3962
|
-
get runLoopFunction(): (device: AbstractDevice) => void
|
|
3983
|
+
get runLoopFunction(): Nullable<(device: AbstractDevice) => void>;
|
|
3963
3984
|
get programBuilder(): ProgramBuilder;
|
|
3964
3985
|
poolExists(key: string | symbol): boolean;
|
|
3965
3986
|
getPool(key: string | symbol): Pool;
|
|
3966
3987
|
setFont(fontName: string): void;
|
|
3967
|
-
drawText(text: string, x: number, y: number, color: string): void;
|
|
3968
|
-
setFramebuffer(rt: FrameBuffer):
|
|
3969
|
-
setFramebuffer(color: BaseTexture[], depth?: BaseTexture, sampleCount?: number):
|
|
3988
|
+
drawText(text: string, x: number, y: number, color: string, viewport?: Immutable<number[]>): void;
|
|
3989
|
+
setFramebuffer(rt: Nullable<FrameBuffer>): void;
|
|
3990
|
+
setFramebuffer(color: BaseTexture[], depth?: BaseTexture, sampleCount?: number): void;
|
|
3970
3991
|
disposeObject(obj: GPUObject, remove?: boolean): void;
|
|
3971
3992
|
restoreObject(obj: GPUObject): void;
|
|
3972
3993
|
enableGPUTimeRecording(enable: boolean): void;
|
|
3973
3994
|
beginFrame(): boolean;
|
|
3974
3995
|
endFrame(): void;
|
|
3975
|
-
getVertexAttribFormat(semantic: VertexSemantic, dataType: DataType, componentCount: number): VertexAttribFormat;
|
|
3976
|
-
createInterleavedVertexBuffer(attribFormats: VertexAttribFormat[], data: TypedArray, options?: BufferCreationOptions): StructuredBuffer;
|
|
3977
|
-
createVertexBuffer(attribFormat: VertexAttribFormat, data: TypedArray, options?: BufferCreationOptions): StructuredBuffer;
|
|
3996
|
+
getVertexAttribFormat(semantic: VertexSemantic, dataType: DataType, componentCount: number): VertexAttribFormat | null;
|
|
3997
|
+
createInterleavedVertexBuffer(attribFormats: VertexAttribFormat[], data: TypedArray, options?: BufferCreationOptions): StructuredBuffer<unknown> | null;
|
|
3998
|
+
createVertexBuffer(attribFormat: VertexAttribFormat, data: TypedArray, options?: BufferCreationOptions): StructuredBuffer<unknown> | null;
|
|
3978
3999
|
draw(primitiveType: PrimitiveType, first: number, count: number): void;
|
|
3979
4000
|
drawInstanced(primitiveType: PrimitiveType, first: number, count: number, numInstances: number): void;
|
|
3980
4001
|
executeRenderBundle(renderBundle: RenderBundle): void;
|
|
3981
|
-
compute(workgroupCountX:
|
|
4002
|
+
compute(workgroupCountX: number, workgroupCountY: number, workgroupCountZ: number): void;
|
|
3982
4003
|
runNextFrame(f: () => void): void;
|
|
3983
4004
|
runNextFrameAsync(f: () => void | Promise<void>): Promise<void>;
|
|
3984
4005
|
exitLoop(): void;
|
|
@@ -3986,25 +4007,27 @@ declare abstract class BaseDevice extends Observable<DeviceEventMap> {
|
|
|
3986
4007
|
pushDeviceStates(): void;
|
|
3987
4008
|
popDeviceStates(): void;
|
|
3988
4009
|
getGPUObjects(): GPUObjectList;
|
|
3989
|
-
getGPUObjectById(uid: number):
|
|
3990
|
-
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
4010
|
+
getGPUObjectById(uid: number): GPUDataBuffer<unknown> | BaseTexture<unknown> | VertexLayout<unknown> | FrameBuffer<unknown> | TextureSampler<unknown> | GPUProgram<unknown> | null;
|
|
4011
|
+
screenXToDevice(val: number): number;
|
|
4012
|
+
deviceXToScreen(val: number): number;
|
|
4013
|
+
screenYToDevice(val: number): number;
|
|
4014
|
+
deviceYToScreen(val: number): number;
|
|
4015
|
+
buildRenderProgram(options: PBRenderOptions): Nullable<GPUProgram<unknown>>;
|
|
4016
|
+
buildComputeProgram(options: PBComputeOptions): Nullable<GPUProgram<unknown>>;
|
|
3994
4017
|
addGPUObject(obj: GPUObject): void;
|
|
3995
4018
|
removeGPUObject(obj: GPUObject): void;
|
|
3996
4019
|
updateVideoMemoryCost(delta: number): void;
|
|
3997
4020
|
protected abstract onBeginFrame(): boolean;
|
|
3998
4021
|
protected abstract onEndFrame(): void;
|
|
3999
|
-
protected abstract _setFramebuffer(fb: FrameBuffer):
|
|
4000
|
-
|
|
4001
|
-
|
|
4022
|
+
protected abstract _setFramebuffer(fb: Nullable<FrameBuffer>): void;
|
|
4023
|
+
protected abstract _handleResize(cssWidth: number, cssHeight: number, deviceWidth: number, deviceHeight: number): void;
|
|
4024
|
+
protected initResizer(): Promise<void>;
|
|
4002
4025
|
private updateFrameInfo;
|
|
4003
4026
|
private getGPUObjectList;
|
|
4004
4027
|
protected invalidateAll(): void;
|
|
4005
4028
|
protected reloadAll(): void;
|
|
4006
4029
|
protected parseTextureOptions(options?: TextureCreationOptions): number;
|
|
4007
|
-
protected parseBufferOptions(options
|
|
4030
|
+
protected parseBufferOptions(options?: BufferCreationOptions, defaultUsage?: BufferUsage): number;
|
|
4008
4031
|
}
|
|
4009
4032
|
/**
|
|
4010
4033
|
* Merge event target interface
|
|
@@ -4044,20 +4067,20 @@ declare class TextureAtlasManager {
|
|
|
4044
4067
|
* The texture restore handler callback function
|
|
4045
4068
|
* This callback function will be called whenever the device has been restored
|
|
4046
4069
|
*/
|
|
4047
|
-
get atlasTextureRestoreHandler(): (tex: BaseTexture) => void
|
|
4048
|
-
set atlasTextureRestoreHandler(f: (tex: BaseTexture) => void);
|
|
4070
|
+
get atlasTextureRestoreHandler(): Nullable<(tex: BaseTexture) => void>;
|
|
4071
|
+
set atlasTextureRestoreHandler(f: Nullable<(tex: BaseTexture) => void>);
|
|
4049
4072
|
/**
|
|
4050
4073
|
* Gets the atlas texture of a given index
|
|
4051
4074
|
* @param index - Index of the atlas bin
|
|
4052
4075
|
* @returns Atlas texture for given index
|
|
4053
4076
|
*/
|
|
4054
|
-
getAtlasTexture(index: number): Texture2D;
|
|
4077
|
+
getAtlasTexture(index: number): Texture2D<unknown> | undefined;
|
|
4055
4078
|
/**
|
|
4056
4079
|
* Gets the information about specified atlas
|
|
4057
4080
|
* @param key - Key of the atlas
|
|
4058
4081
|
* @returns Information of the atlas
|
|
4059
4082
|
*/
|
|
4060
|
-
getAtlasInfo(key: string): AtlasInfo;
|
|
4083
|
+
getAtlasInfo(key: string): AtlasInfo | null;
|
|
4061
4084
|
/**
|
|
4062
4085
|
* Check if no atlas has been created
|
|
4063
4086
|
* @returns true if no atlas has been created
|
|
@@ -4077,14 +4100,14 @@ declare class TextureAtlasManager {
|
|
|
4077
4100
|
* @param h - height of the rectangle
|
|
4078
4101
|
* @returns The atals info or null if insert failed
|
|
4079
4102
|
*/
|
|
4080
|
-
pushCanvas(key: string, ctx: CanvasRenderingContext2D, x: number, y: number, w: number, h: number): AtlasInfo;
|
|
4103
|
+
pushCanvas(key: string, ctx: CanvasRenderingContext2D, x: number, y: number, w: number, h: number): AtlasInfo | null;
|
|
4081
4104
|
/**
|
|
4082
4105
|
* Inserts a bitmap to the atlas texture
|
|
4083
4106
|
* @param key - Key of the atlas
|
|
4084
4107
|
* @param bitmap - The bitmap object
|
|
4085
4108
|
* @returns The atals info or null if insert failed
|
|
4086
4109
|
*/
|
|
4087
|
-
pushBitmap(key: string, bitmap: ImageData | ImageBitmap): AtlasInfo;
|
|
4110
|
+
pushBitmap(key: string, bitmap: ImageData | ImageBitmap): AtlasInfo | null;
|
|
4088
4111
|
}
|
|
4089
4112
|
|
|
4090
4113
|
/**
|
|
@@ -4144,12 +4167,13 @@ declare class GlyphManager extends TextureAtlasManager {
|
|
|
4144
4167
|
*/
|
|
4145
4168
|
constructor(device: AbstractDevice, binWidth: number, binHeight: number, border: number);
|
|
4146
4169
|
/**
|
|
4147
|
-
* Gets the
|
|
4170
|
+
* Gets the size for given character
|
|
4148
4171
|
* @param char - The character
|
|
4149
4172
|
* @param font - Font of the character
|
|
4150
|
-
* @returns
|
|
4173
|
+
* @returns [width, height]
|
|
4151
4174
|
*/
|
|
4152
|
-
|
|
4175
|
+
getGlyphSize(char: string, font: Font): number[] | null;
|
|
4176
|
+
getGlyphInfo(char: string, font: Font): AtlasInfo | null;
|
|
4153
4177
|
/**
|
|
4154
4178
|
* Measuring the width of a string
|
|
4155
4179
|
* @param str - The string to be measured
|
|
@@ -4196,7 +4220,7 @@ declare class DrawText {
|
|
|
4196
4220
|
* @param x - X coordinate of the text
|
|
4197
4221
|
* @param y - Y coordinate of the text
|
|
4198
4222
|
*/
|
|
4199
|
-
static drawText(device: AbstractDevice, text: string, color: string, x: number, y: number): void;
|
|
4223
|
+
static drawText(device: AbstractDevice, text: string, color: string, x: number, y: number, viewport?: Immutable<number[]>): void;
|
|
4200
4224
|
}
|
|
4201
4225
|
|
|
4202
4226
|
/**
|
|
@@ -4209,11 +4233,11 @@ declare class StructuredBufferData {
|
|
|
4209
4233
|
* @param layout - Layout of the structure
|
|
4210
4234
|
* @param buffer - Buffer that holds the data
|
|
4211
4235
|
*/
|
|
4212
|
-
constructor(layout: UniformBufferLayout, buffer?: StructuredBuffer | ArrayBuffer);
|
|
4236
|
+
constructor(layout: UniformBufferLayout, buffer?: Nullable<StructuredBuffer | ArrayBuffer>);
|
|
4213
4237
|
/** The buffer size in bytes */
|
|
4214
4238
|
get byteLength(): number;
|
|
4215
4239
|
/** Get the data cache buffer */
|
|
4216
|
-
get buffer(): ArrayBuffer
|
|
4240
|
+
get buffer(): Nullable<ArrayBuffer>;
|
|
4217
4241
|
/** Get all the uniform datas */
|
|
4218
4242
|
get uniforms(): Record<string, TypedArray>;
|
|
4219
4243
|
/**
|