@luma.gl/core 9.0.0-alpha.9 → 9.0.0-beta.2
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/LICENSE +3 -1
- package/README.md +4 -4
- package/dist/adapter/attribute-utils/get-attribute-from-layouts.d.ts +52 -0
- package/dist/adapter/attribute-utils/get-attribute-from-layouts.d.ts.map +1 -0
- package/dist/adapter/attribute-utils/get-attribute-from-layouts.js +130 -0
- package/dist/adapter/attribute-utils/get-attribute-from-layouts.js.map +1 -0
- package/dist/adapter/canvas-context.d.ts +109 -0
- package/dist/adapter/canvas-context.d.ts.map +1 -0
- package/dist/adapter/canvas-context.js +254 -0
- package/dist/adapter/canvas-context.js.map +1 -0
- package/dist/adapter/device.d.ts +219 -0
- package/dist/adapter/device.d.ts.map +1 -0
- package/dist/adapter/device.js +99 -0
- package/dist/adapter/device.js.map +1 -0
- package/dist/adapter/resources/buffer.d.ts +56 -0
- package/dist/adapter/resources/buffer.d.ts.map +1 -0
- package/dist/adapter/resources/buffer.js +62 -0
- package/dist/adapter/resources/buffer.js.map +1 -0
- package/dist/adapter/resources/command-buffer.d.ts +12 -0
- package/dist/adapter/resources/command-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/command-buffer.js +15 -0
- package/dist/adapter/resources/command-buffer.js.map +1 -0
- package/dist/adapter/resources/command-encoder.d.ts +113 -0
- package/dist/adapter/resources/command-encoder.d.ts.map +1 -0
- package/dist/adapter/resources/command-encoder.js +19 -0
- package/dist/adapter/resources/command-encoder.js.map +1 -0
- package/dist/adapter/resources/compute-pass.d.ts +31 -0
- package/dist/adapter/resources/compute-pass.d.ts.map +1 -0
- package/dist/adapter/resources/compute-pass.js +15 -0
- package/dist/adapter/resources/compute-pass.js.map +1 -0
- package/dist/adapter/resources/compute-pipeline.d.ts +24 -0
- package/dist/adapter/resources/compute-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/compute-pipeline.js +20 -0
- package/dist/adapter/resources/compute-pipeline.js.map +1 -0
- package/dist/adapter/resources/external-texture.d.ts +12 -0
- package/dist/adapter/resources/external-texture.d.ts.map +1 -0
- package/dist/adapter/resources/external-texture.js +17 -0
- package/dist/adapter/resources/external-texture.js.map +1 -0
- package/dist/adapter/resources/framebuffer.d.ts +50 -0
- package/dist/adapter/resources/framebuffer.d.ts.map +1 -0
- package/dist/adapter/resources/framebuffer.js +102 -0
- package/dist/adapter/resources/framebuffer.js.map +1 -0
- package/dist/adapter/resources/render-pass.d.ts +51 -0
- package/dist/adapter/resources/render-pass.d.ts.map +1 -0
- package/dist/adapter/resources/render-pass.js +23 -0
- package/dist/adapter/resources/render-pass.js.map +1 -0
- package/dist/adapter/resources/render-pipeline.d.ts +89 -0
- package/dist/adapter/resources/render-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/render-pipeline.js +36 -0
- package/dist/adapter/resources/render-pipeline.js.map +1 -0
- package/dist/adapter/resources/resource.d.ts +73 -0
- package/dist/adapter/resources/resource.d.ts.map +1 -0
- package/dist/adapter/resources/resource.js +101 -0
- package/dist/adapter/resources/resource.js.map +1 -0
- package/dist/adapter/resources/sampler.d.ts +42 -0
- package/dist/adapter/resources/sampler.d.ts.map +1 -0
- package/dist/adapter/resources/sampler.js +26 -0
- package/dist/adapter/resources/sampler.js.map +1 -0
- package/dist/adapter/resources/shader.d.ts +45 -0
- package/dist/adapter/resources/shader.d.ts.map +1 -0
- package/dist/adapter/resources/shader.js +90 -0
- package/dist/adapter/resources/shader.js.map +1 -0
- package/dist/adapter/resources/texture.d.ts +90 -0
- package/dist/adapter/resources/texture.d.ts.map +1 -0
- package/dist/adapter/resources/texture.js +45 -0
- package/dist/adapter/resources/texture.js.map +1 -0
- package/dist/adapter/resources/transform-feedback.d.ts +30 -0
- package/dist/adapter/resources/transform-feedback.d.ts.map +1 -0
- package/dist/adapter/resources/transform-feedback.js +17 -0
- package/dist/adapter/resources/transform-feedback.js.map +1 -0
- package/dist/adapter/resources/vertex-array.d.ts +40 -0
- package/dist/adapter/resources/vertex-array.d.ts.map +1 -0
- package/dist/adapter/resources/vertex-array.js +24 -0
- package/dist/adapter/resources/vertex-array.js.map +1 -0
- package/dist/adapter/type-utils/decode-attribute-type.d.ts +20 -0
- package/dist/adapter/type-utils/decode-attribute-type.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-attribute-type.js +60 -0
- package/dist/adapter/type-utils/decode-attribute-type.js.map +1 -0
- package/dist/adapter/type-utils/decode-data-type.d.ts +16 -0
- package/dist/adapter/type-utils/decode-data-type.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-data-type.js +43 -0
- package/dist/adapter/type-utils/decode-data-type.js.map +1 -0
- package/dist/adapter/type-utils/decode-shader-types.d.ts +9 -0
- package/dist/adapter/type-utils/decode-shader-types.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-shader-types.js +103 -0
- package/dist/adapter/type-utils/decode-shader-types.js.map +1 -0
- package/dist/adapter/type-utils/decode-texture-format.d.ts +19 -0
- package/dist/adapter/type-utils/decode-texture-format.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-texture-format.js +101 -0
- package/dist/adapter/type-utils/decode-texture-format.js.map +1 -0
- package/dist/adapter/type-utils/decode-vertex-format.d.ts +22 -0
- package/dist/adapter/type-utils/decode-vertex-format.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-vertex-format.js +25 -0
- package/dist/adapter/type-utils/decode-vertex-format.js.map +1 -0
- package/dist/adapter/type-utils/vertex-format-from-attribute.d.ts +10 -0
- package/dist/adapter/type-utils/vertex-format-from-attribute.d.ts.map +1 -0
- package/dist/adapter/type-utils/vertex-format-from-attribute.js +76 -0
- package/dist/adapter/type-utils/vertex-format-from-attribute.js.map +1 -0
- package/dist/adapter/type-utils/wgsl-utils.d.ts +4 -0
- package/dist/adapter/type-utils/wgsl-utils.d.ts.map +1 -0
- package/dist/adapter/type-utils/wgsl-utils.js +15 -0
- package/dist/adapter/type-utils/wgsl-utils.js.map +1 -0
- package/dist/adapter/types/accessor.d.ts +23 -0
- package/dist/adapter/types/accessor.d.ts.map +1 -0
- package/dist/adapter/types/accessor.js +2 -0
- package/dist/adapter/types/accessor.js.map +1 -0
- package/dist/adapter/types/buffer-layout.d.ts +59 -0
- package/dist/adapter/types/buffer-layout.d.ts.map +1 -0
- package/dist/adapter/types/buffer-layout.js +2 -0
- package/dist/adapter/types/buffer-layout.js.map +1 -0
- package/dist/adapter/types/parameters.d.ts +97 -0
- package/dist/adapter/types/parameters.d.ts.map +1 -0
- package/dist/adapter/types/parameters.js +28 -0
- package/dist/adapter/types/parameters.js.map +1 -0
- package/dist/adapter/types/shader-layout.d.ts +145 -0
- package/dist/adapter/types/shader-layout.d.ts.map +1 -0
- package/dist/adapter/types/shader-layout.js +2 -0
- package/dist/adapter/types/shader-layout.js.map +1 -0
- package/dist/adapter/types/shader-types.d.ts +21 -0
- package/dist/adapter/types/shader-types.d.ts.map +1 -0
- package/dist/adapter/types/shader-types.js +2 -0
- package/dist/adapter/types/shader-types.js.map +1 -0
- package/dist/adapter/types/texture-formats.d.ts +12 -0
- package/dist/adapter/types/texture-formats.d.ts.map +1 -0
- package/dist/adapter/types/texture-formats.js +2 -0
- package/dist/adapter/types/texture-formats.js.map +1 -0
- package/dist/adapter/types/types.d.ts +90 -0
- package/dist/adapter/types/types.d.ts.map +1 -0
- package/dist/adapter/types/types.js +2 -0
- package/dist/adapter/types/types.js.map +1 -0
- package/dist/adapter/types/vertex-formats.d.ts +14 -0
- package/dist/adapter/types/vertex-formats.d.ts.map +1 -0
- package/dist/adapter/types/vertex-formats.js +2 -0
- package/dist/adapter/types/vertex-formats.js.map +1 -0
- package/dist/dist.dev.js +2976 -0
- package/dist/index.cjs +2445 -0
- package/dist/index.d.ts +81 -128
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -18
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +5 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +24 -0
- package/dist/init.js.map +1 -0
- package/dist/lib/compiler-log/compiler-message.d.ts +8 -0
- package/dist/lib/compiler-log/compiler-message.d.ts.map +1 -0
- package/dist/lib/compiler-log/compiler-message.js +2 -0
- package/dist/lib/compiler-log/compiler-message.js.map +1 -0
- package/dist/lib/compiler-log/format-compiler-log.d.ts +8 -0
- package/dist/lib/compiler-log/format-compiler-log.d.ts.map +1 -0
- package/dist/lib/compiler-log/format-compiler-log.js +64 -0
- package/dist/lib/compiler-log/format-compiler-log.js.map +1 -0
- package/dist/lib/compiler-log/get-shader-info.d.ts +9 -0
- package/dist/lib/compiler-log/get-shader-info.d.ts.map +1 -0
- package/dist/lib/compiler-log/get-shader-info.js +25 -0
- package/dist/lib/compiler-log/get-shader-info.js.map +1 -0
- package/dist/lib/luma.d.ts +22 -0
- package/dist/lib/luma.d.ts.map +1 -0
- package/dist/lib/luma.js +63 -0
- package/dist/lib/luma.js.map +1 -0
- package/dist/lib/uniforms/uniform-block.d.ts +29 -0
- package/dist/lib/uniforms/uniform-block.d.ts.map +1 -0
- package/dist/lib/uniforms/uniform-block.js +48 -0
- package/dist/lib/uniforms/uniform-block.js.map +1 -0
- package/dist/lib/uniforms/uniform-buffer-layout.d.ts +27 -0
- package/dist/lib/uniforms/uniform-buffer-layout.d.ts.map +1 -0
- package/dist/lib/uniforms/uniform-buffer-layout.js +76 -0
- package/dist/lib/uniforms/uniform-buffer-layout.js.map +1 -0
- package/dist/lib/uniforms/uniform-store.d.ts +62 -0
- package/dist/lib/uniforms/uniform-store.d.ts.map +1 -0
- package/dist/lib/uniforms/uniform-store.js +89 -0
- package/dist/lib/uniforms/uniform-store.js.map +1 -0
- package/dist/lib/uniforms/uniform.d.ts +10 -0
- package/dist/lib/uniforms/uniform.d.ts.map +1 -0
- package/dist/lib/uniforms/uniform.js +20 -0
- package/dist/lib/uniforms/uniform.js.map +1 -0
- package/dist/types.d.ts +19 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/array-equal.d.ts +5 -0
- package/dist/utils/array-equal.d.ts.map +1 -0
- package/dist/utils/array-equal.js +28 -0
- package/dist/utils/array-equal.js.map +1 -0
- package/dist/utils/array-utils-flat.d.ts +10 -0
- package/dist/utils/array-utils-flat.d.ts.map +1 -0
- package/dist/utils/array-utils-flat.js +36 -0
- package/dist/utils/array-utils-flat.js.map +1 -0
- package/dist/utils/assert.d.ts +2 -0
- package/dist/utils/assert.d.ts.map +1 -0
- package/dist/utils/assert.js +6 -0
- package/dist/utils/assert.js.map +1 -0
- package/dist/utils/cast.d.ts +3 -0
- package/dist/utils/cast.d.ts.map +1 -0
- package/dist/utils/cast.js +4 -0
- package/dist/utils/cast.js.map +1 -0
- package/dist/utils/check-props.d.ts +7 -0
- package/dist/utils/check-props.d.ts.map +1 -0
- package/dist/utils/check-props.js +32 -0
- package/dist/utils/check-props.js.map +1 -0
- package/dist/utils/deep-equal.d.ts +9 -0
- package/dist/utils/deep-equal.d.ts.map +1 -0
- package/dist/utils/deep-equal.js +40 -0
- package/dist/utils/deep-equal.js.map +1 -0
- package/dist/utils/format-value.d.ts +7 -0
- package/dist/utils/format-value.d.ts.map +1 -0
- package/dist/utils/format-value.js +42 -0
- package/dist/utils/format-value.js.map +1 -0
- package/dist/utils/is-array.d.ts +16 -0
- package/dist/utils/is-array.d.ts.map +1 -0
- package/dist/utils/is-array.js +10 -0
- package/dist/utils/is-array.js.map +1 -0
- package/dist/utils/load-file.d.ts +35 -0
- package/dist/utils/load-file.d.ts.map +1 -0
- package/dist/utils/load-file.js +48 -0
- package/dist/utils/load-file.js.map +1 -0
- package/dist/utils/log.d.ts +4 -0
- package/dist/utils/log.d.ts.map +1 -0
- package/dist/utils/log.js +5 -0
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/random.d.ts +5 -0
- package/dist/utils/random.d.ts.map +1 -0
- package/dist/utils/random.js +14 -0
- package/dist/utils/random.js.map +1 -0
- package/dist/utils/request-animation-frame.d.ts +3 -0
- package/dist/utils/request-animation-frame.d.ts.map +1 -0
- package/dist/utils/request-animation-frame.js +7 -0
- package/dist/utils/request-animation-frame.js.map +1 -0
- package/dist/utils/stats-manager.d.ts +12 -0
- package/dist/utils/stats-manager.d.ts.map +1 -0
- package/dist/utils/stats-manager.js +19 -0
- package/dist/utils/stats-manager.js.map +1 -0
- package/dist/utils/stub-methods.d.ts +2 -0
- package/dist/utils/stub-methods.d.ts.map +1 -0
- package/dist/utils/stub-methods.js +16 -0
- package/dist/utils/stub-methods.js.map +1 -0
- package/dist/utils/utils.d.ts +15 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +19 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist.min.js +33 -0
- package/package.json +17 -12
- package/src/adapter/attribute-utils/get-attribute-from-layouts.ts +259 -0
- package/src/adapter/canvas-context.ts +433 -0
- package/src/adapter/device.ts +435 -0
- package/src/adapter/resources/buffer.ts +106 -0
- package/src/adapter/resources/command-buffer.ts +38 -0
- package/src/adapter/resources/command-encoder.ts +172 -0
- package/src/adapter/resources/compute-pass.ts +52 -0
- package/src/adapter/resources/compute-pipeline.ts +39 -0
- package/src/adapter/resources/external-texture.ts +20 -0
- package/src/adapter/resources/framebuffer.ts +230 -0
- package/src/adapter/resources/render-pass.ts +117 -0
- package/src/adapter/resources/render-pipeline.ts +133 -0
- package/src/adapter/resources/resource.ts +176 -0
- package/src/adapter/resources/sampler.ts +69 -0
- package/src/adapter/resources/shader.ts +143 -0
- package/src/adapter/resources/texture.ts +140 -0
- package/src/adapter/resources/transform-feedback.ts +45 -0
- package/src/adapter/resources/vertex-array.ts +65 -0
- package/src/adapter/type-utils/decode-attribute-type.ts +82 -0
- package/src/adapter/type-utils/decode-data-type.ts +62 -0
- package/src/adapter/type-utils/decode-shader-types.ts +48 -0
- package/src/adapter/type-utils/decode-texture-format.ts +190 -0
- package/src/adapter/type-utils/decode-vertex-format.ts +49 -0
- package/src/adapter/type-utils/vertex-format-from-attribute.ts +103 -0
- package/src/adapter/type-utils/wgsl-utils.ts +18 -0
- package/src/adapter/types/accessor.ts +34 -0
- package/src/adapter/types/buffer-layout.ts +62 -0
- package/src/adapter/types/parameters.ts +250 -0
- package/src/adapter/types/shader-layout.ts +193 -0
- package/src/adapter/types/shader-types.ts +77 -0
- package/src/adapter/types/texture-formats.ts +168 -0
- package/src/adapter/types/types.ts +109 -0
- package/src/adapter/types/vertex-formats.ts +91 -0
- package/src/index.ts +160 -92
- package/src/init.ts +47 -0
- package/src/lib/compiler-log/compiler-message.ts +10 -0
- package/src/lib/compiler-log/format-compiler-log.ts +113 -0
- package/src/lib/compiler-log/get-shader-info.ts +41 -0
- package/src/lib/luma.ts +84 -0
- package/src/lib/uniforms/uniform-block.ts +80 -0
- package/src/lib/uniforms/uniform-buffer-layout.ts +109 -0
- package/src/lib/uniforms/uniform-store.ts +173 -0
- package/src/lib/uniforms/uniform.ts +25 -0
- package/src/types.ts +33 -0
- package/src/utils/array-equal.ts +33 -0
- package/src/utils/array-utils-flat.ts +43 -0
- package/src/utils/assert.ts +7 -0
- package/src/utils/cast.ts +4 -0
- package/src/utils/check-props.ts +74 -0
- package/src/utils/deep-equal.ts +47 -0
- package/src/utils/format-value.ts +40 -0
- package/src/utils/is-array.ts +24 -0
- package/src/utils/load-file.ts +89 -0
- package/src/utils/log.ts +4 -0
- package/src/utils/random.ts +17 -0
- package/src/utils/request-animation-frame.ts +15 -0
- package/src/utils/stats-manager.ts +23 -0
- package/src/utils/stub-methods.ts +20 -0
- package/src/utils/utils.ts +36 -0
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/bundle.js.map +0 -1
- package/src/bundle.ts +0 -4
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
import type {Buffer} from '../resources/buffer';
|
|
3
|
+
// import type {VertexFormat} from './data-formats';
|
|
4
|
+
|
|
5
|
+
// ACCESSORS
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Attribute descriptor object
|
|
9
|
+
* @deprecated Use ShaderLayout
|
|
10
|
+
*/
|
|
11
|
+
export interface AccessorObject {
|
|
12
|
+
buffer?: Buffer;
|
|
13
|
+
// format: VertexFormat;
|
|
14
|
+
offset?: number;
|
|
15
|
+
// can now be described with single WebGPU-style `format` string
|
|
16
|
+
|
|
17
|
+
//
|
|
18
|
+
stride?: number;
|
|
19
|
+
|
|
20
|
+
/** @deprecated - Use accessor.stepMode */
|
|
21
|
+
divisor?: number;
|
|
22
|
+
|
|
23
|
+
/** @deprecated - Infer from format */
|
|
24
|
+
type?: number;
|
|
25
|
+
/** @deprecated - Infer from format */
|
|
26
|
+
size?: number;
|
|
27
|
+
/** @deprecated - Infer from format */
|
|
28
|
+
normalized?: boolean;
|
|
29
|
+
/** @deprecated - Infer from format */
|
|
30
|
+
integer?: boolean;
|
|
31
|
+
|
|
32
|
+
/** @deprecated */
|
|
33
|
+
index?: number;
|
|
34
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type {VertexFormat} from './vertex-formats';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Provides specific details about the memory layout of the actual buffers
|
|
5
|
+
* that will be provided to a `RenderPipeline`.
|
|
6
|
+
*
|
|
7
|
+
* BufferLayout lets the application describe whether
|
|
8
|
+
* - A single buffer can be used for multiple attributes (using interleaving or offsets),
|
|
9
|
+
* - The data format of the memory being supplied to a specific shader attribute.
|
|
10
|
+
*
|
|
11
|
+
* `BufferLayout` complements the "static" attribute declarations in a ShaderLayout
|
|
12
|
+
* with information about the "dynamic" memory layout of each buffer that will be bound
|
|
13
|
+
* to the render pipeline.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Specify memory layout for one buffer, describing how it is used by one or more attribute
|
|
18
|
+
* @note Specifies format, stride, offset and step mode
|
|
19
|
+
* @note The buffer can be set using the buffer name:`.setAttributes({[bufferName]: buffer})`.
|
|
20
|
+
* @note Needs to match type/components of the ShaderLayout ('f32', 'i32', 's32')
|
|
21
|
+
*
|
|
22
|
+
* A buffer layout is used to specify "non-standard" buffer layouts (buffers with offsets, interleaved buffers etc)
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```
|
|
26
|
+
device.createRenderPipeline({
|
|
27
|
+
...
|
|
28
|
+
shaderLayout,
|
|
29
|
+
bufferLayout: [
|
|
30
|
+
{name: 'positions', stepMode: 'vertex', format: 'float32x3'},
|
|
31
|
+
// interleaved bindings, auto offset
|
|
32
|
+
{name: 'particles', stepMode: 'instance', byteStride: 32, attributes: [
|
|
33
|
+
{name: 'instancePositions', format: 'float32x4', byteOffset: 0},
|
|
34
|
+
{name: 'instanceVelocities', format: 'float32x4', byteOffset: 16}
|
|
35
|
+
]},
|
|
36
|
+
]
|
|
37
|
+
];
|
|
38
|
+
```
|
|
39
|
+
*/
|
|
40
|
+
export type BufferLayout = {
|
|
41
|
+
/** Name of buffer */
|
|
42
|
+
name: string;
|
|
43
|
+
/** Is the attribute is instanced. Default: auto-deduced from shader name. */
|
|
44
|
+
stepMode?: 'vertex' | 'instance';
|
|
45
|
+
/** bytes between successive elements. If omitted, stride is set to reflect a "packed" buffer */
|
|
46
|
+
byteStride?: number;
|
|
47
|
+
/** Option 1: interleaved attributes that read from this buffer */
|
|
48
|
+
attributes?: BufferAttributeLayout[];
|
|
49
|
+
/** Option 2: Single attribute with same name as buffer. */
|
|
50
|
+
format?: VertexFormat;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/** Specifies how the GPU should read one specific attribute from a buffer. */
|
|
54
|
+
export type BufferAttributeLayout = {
|
|
55
|
+
/** Name of attribute that maps to a "view" of this buffer */
|
|
56
|
+
attribute: string;
|
|
57
|
+
/** Data format of the memory in the buffer that is mapped to this attribute */
|
|
58
|
+
format: VertexFormat;
|
|
59
|
+
/** Sum up any the "global" offset (or 0) and the offset each stride (for interleaved data). */
|
|
60
|
+
byteOffset: number;
|
|
61
|
+
};
|
|
62
|
+
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import {DepthStencilTextureFormat} from './texture-formats';
|
|
2
|
+
|
|
3
|
+
export type CompareFunction =
|
|
4
|
+
'never' |
|
|
5
|
+
'less' |
|
|
6
|
+
'equal' |
|
|
7
|
+
'less-equal' |
|
|
8
|
+
'greater' |
|
|
9
|
+
'not-equal' |
|
|
10
|
+
'greater-equal' |
|
|
11
|
+
'always';
|
|
12
|
+
|
|
13
|
+
// Primitive state
|
|
14
|
+
|
|
15
|
+
export type PrimitiveTopology =
|
|
16
|
+
'point-list' |
|
|
17
|
+
'line-list' |
|
|
18
|
+
'line-strip' |
|
|
19
|
+
/** @deprecated */
|
|
20
|
+
'line-loop-webgl' |
|
|
21
|
+
'triangle-list' |
|
|
22
|
+
'triangle-strip' |
|
|
23
|
+
/** @deprecated */
|
|
24
|
+
'triangle-fan-webgl';
|
|
25
|
+
|
|
26
|
+
export type IndexFormat = 'uint16' | 'uint32';
|
|
27
|
+
|
|
28
|
+
export type CullMode = 'none' | 'front' | 'back';
|
|
29
|
+
export type FrontFace = 'ccw' | 'cw';
|
|
30
|
+
|
|
31
|
+
// Rasterization Parameters
|
|
32
|
+
|
|
33
|
+
type _RenderParameters = {
|
|
34
|
+
/** Defines which polygon orientation will be culled, if any. Only applies to triangle topologies/ */
|
|
35
|
+
cullMode?: CullMode;
|
|
36
|
+
/** Defines which polygons are considered front-facing. Only applies to triangle topologies. Default to "ccw" */
|
|
37
|
+
frontFace?: FrontFace;
|
|
38
|
+
/** TBD */
|
|
39
|
+
depthClamp?: boolean;
|
|
40
|
+
/** Constant depth bias (polygon offset) added to each fragment. */
|
|
41
|
+
depthBias?: number;
|
|
42
|
+
/** Depth bias (polygon offset) that scales with the fragment’s slope. */
|
|
43
|
+
depthBiasSlopeScale?: number;
|
|
44
|
+
/** Maximum depth bias of a fragment. */
|
|
45
|
+
depthBiasClamp?: number;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export type RasterizationParameters = _RenderParameters & {
|
|
49
|
+
/** The type of primitive to be constructed from the vertex inputs. Defaults to "triangle-list". */
|
|
50
|
+
topology?: PrimitiveTopology;
|
|
51
|
+
/** For pipelines with strip topologies ("line-strip" or "triangle-strip"), this determines the index buffer format and primitive restart value ("uint16"/0xFFFF or "uint32"/0xFFFFFFFF). It is not allowed on pipelines with non-strip topologies. */
|
|
52
|
+
stripIndexFormat?: IndexFormat; // WebGPU only
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Depth Stencil Parameters
|
|
56
|
+
|
|
57
|
+
/** Types of operations that can be performed on stencil buffers when various tests pass */
|
|
58
|
+
export type StencilOperation =
|
|
59
|
+
'keep' |
|
|
60
|
+
'zero' |
|
|
61
|
+
'replace' |
|
|
62
|
+
'invert' |
|
|
63
|
+
'increment-clamp' |
|
|
64
|
+
'decrement-clamp' |
|
|
65
|
+
'increment-wrap' |
|
|
66
|
+
'decrement-wrap';
|
|
67
|
+
|
|
68
|
+
export type DepthStencilParameters = {
|
|
69
|
+
/** Whether this GPURenderPipeline can modify depthStencilAttachment depth values. */
|
|
70
|
+
depthWriteEnabled?: boolean;
|
|
71
|
+
/** The comparison operation used to test fragment depths against existing depthStencilAttachment depth values. */
|
|
72
|
+
depthCompare?: CompareFunction;
|
|
73
|
+
/** The format of depthStencilAttachment this GPURenderPipeline will be compatible with. */
|
|
74
|
+
depthFormat?: DepthStencilTextureFormat;
|
|
75
|
+
|
|
76
|
+
/** Bitmask controlling which depthStencilAttachment stencil value bits are read when performing stencil comparison tests. */
|
|
77
|
+
stencilReadMask?: number;
|
|
78
|
+
/** Bitmask controlling which depthStencilAttachment stencil value bits are written to when performing stencil operations. */
|
|
79
|
+
stencilWriteMask?: number;
|
|
80
|
+
|
|
81
|
+
/** The CompareFunction used when testing fragments against depthStencilAttachment stencil values. */
|
|
82
|
+
stencilCompare?: CompareFunction;
|
|
83
|
+
/** The StencilOperation performed if the fragment stencil comparison test described by compare fails. */
|
|
84
|
+
stencilPassOperation?: StencilOperation;
|
|
85
|
+
/** The GPUStencilOperation performed if the fragment depth comparison described by depthCompare fails. */
|
|
86
|
+
stencilFailOperation?: StencilOperation;
|
|
87
|
+
/** The GPUStencilOperation performed if the fragment stencil comparison test described by compare passes. */
|
|
88
|
+
stencilDepthFailOperation?: StencilOperation;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Color Parameters
|
|
92
|
+
|
|
93
|
+
/** BlendFactor defines how either a source or destination blend factors is calculated */
|
|
94
|
+
export type BlendFactor =
|
|
95
|
+
'zero' |
|
|
96
|
+
'one' |
|
|
97
|
+
'src-color' |
|
|
98
|
+
'one-minus-src-color' |
|
|
99
|
+
'src-alpha' |
|
|
100
|
+
'one-minus-src-alpha' |
|
|
101
|
+
'dst-color' |
|
|
102
|
+
'one-minus-dst-color' |
|
|
103
|
+
'dst-alpha' |
|
|
104
|
+
'one-minus-dst-alpha' |
|
|
105
|
+
'src-alpha-saturated' |
|
|
106
|
+
'blend-color' |
|
|
107
|
+
'one-minus-blend-color';
|
|
108
|
+
|
|
109
|
+
/** BlendOperation defines the algorithm used to combine source and destination blend factors: */
|
|
110
|
+
export type BlendOperation =
|
|
111
|
+
'add' |
|
|
112
|
+
'subtract' |
|
|
113
|
+
'reverse-subtract' |
|
|
114
|
+
'min' |
|
|
115
|
+
'max';
|
|
116
|
+
|
|
117
|
+
/*
|
|
118
|
+
export const ColorWrite = {
|
|
119
|
+
RED: 0x1,
|
|
120
|
+
GREEN: 0x2,
|
|
121
|
+
BLUE: 0x4,
|
|
122
|
+
ALPHA: 0x8,
|
|
123
|
+
ALL: 0xF
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
blend: {
|
|
127
|
+
color: {operation, srcFactor, dstFactor}
|
|
128
|
+
alpha: {operation, srcFactor, dstFactor}
|
|
129
|
+
}
|
|
130
|
+
colorWriteMask
|
|
131
|
+
|
|
132
|
+
rgba
|
|
133
|
+
rgb
|
|
134
|
+
rga
|
|
135
|
+
rba
|
|
136
|
+
gba
|
|
137
|
+
rg
|
|
138
|
+
rb
|
|
139
|
+
ra
|
|
140
|
+
gb
|
|
141
|
+
ga
|
|
142
|
+
ba
|
|
143
|
+
r
|
|
144
|
+
g
|
|
145
|
+
b
|
|
146
|
+
a
|
|
147
|
+
none
|
|
148
|
+
*/
|
|
149
|
+
|
|
150
|
+
/* Color parameters are set on the RenderPipeline */
|
|
151
|
+
export type ColorParameters = {
|
|
152
|
+
/** Defines the operation used to calculate the values written to the target attachment components. */
|
|
153
|
+
blendColorOperation?: BlendOperation;
|
|
154
|
+
/** Defines the operation to be performed on values from the fragment shader. */
|
|
155
|
+
blendColorSrcFactor?: BlendFactor;
|
|
156
|
+
/** Defines the operation to be performed on values from the target attachment. */
|
|
157
|
+
blendColorDstFactor?: BlendFactor;
|
|
158
|
+
|
|
159
|
+
/** Defines the operation used to calculate the values written to the target attachment components. */
|
|
160
|
+
blendAlphaOperation?: BlendOperation;
|
|
161
|
+
/** Defines the operation to be performed on values from the fragment shader. */
|
|
162
|
+
blendAlphaSrcFactor?: BlendFactor;
|
|
163
|
+
/** Defines the operation to be performed on values from the target attachment. */
|
|
164
|
+
blendAlphaDstFactor?: BlendFactor;
|
|
165
|
+
|
|
166
|
+
/** Bitmask controlling which channels are are written to when drawing to this color target. defaulting to 0xF */
|
|
167
|
+
colorMask?: number;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/** Multisample */
|
|
171
|
+
export type MultisampleParameters = {
|
|
172
|
+
/** Number of samples per pixel. RenderPipeline will be compatible only with attachment textures with matching sampleCounts. */
|
|
173
|
+
sampleCount?: number; // = 1;
|
|
174
|
+
/** Mask determining which samples are written to. defaulting to 0xFFFFFFFF */
|
|
175
|
+
sampleMask?: number;
|
|
176
|
+
/** When true indicates that a fragment’s alpha channel should be used to generate a sample coverage mask. */
|
|
177
|
+
sampleAlphaToCoverageEnabled?: boolean; // = false;
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
/** These parameters are set on the render pass and are thus easy to change frequently */
|
|
181
|
+
export type RenderPassParameters = {
|
|
182
|
+
/** Linear map from normalized device coordinates to viewport coordinates [x, y, width, height, minDepth, maxDepth] */
|
|
183
|
+
viewport?: number[];
|
|
184
|
+
/** Sets scissor rectangle used during rasterization. Discards fragments outside viewport coords [x, y, width, height]. */
|
|
185
|
+
scissorRect?: number[]; // ;
|
|
186
|
+
/** Sets constant blend color and alpha values used with "constant" and "one-minus-constant" blend factors. */
|
|
187
|
+
blendConstant?: number[]; // GPUColor
|
|
188
|
+
/** Stencil operation "replace" sets the value to stencilReference */
|
|
189
|
+
stencilReference?: number; // GPUStencilValue
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
export type RenderPipelineParameters =
|
|
193
|
+
RasterizationParameters &
|
|
194
|
+
DepthStencilParameters &
|
|
195
|
+
ColorParameters &
|
|
196
|
+
MultisampleParameters;
|
|
197
|
+
|
|
198
|
+
export type Parameters =
|
|
199
|
+
_RenderParameters &
|
|
200
|
+
DepthStencilParameters &
|
|
201
|
+
ColorParameters &
|
|
202
|
+
MultisampleParameters;
|
|
203
|
+
|
|
204
|
+
// export const DEFAULT_PARAMETERS: Parameters;
|
|
205
|
+
|
|
206
|
+
export const DEFAULT_PARAMETERS: Required<Parameters> = {
|
|
207
|
+
|
|
208
|
+
// Rasterization Parameters
|
|
209
|
+
|
|
210
|
+
cullMode: 'none',
|
|
211
|
+
frontFace: 'ccw',
|
|
212
|
+
|
|
213
|
+
// Depth Parameters
|
|
214
|
+
|
|
215
|
+
depthWriteEnabled: false,
|
|
216
|
+
depthCompare: 'always',
|
|
217
|
+
depthFormat: 'depth24plus',
|
|
218
|
+
|
|
219
|
+
depthClamp: false,
|
|
220
|
+
depthBias: 0,
|
|
221
|
+
depthBiasSlopeScale: 0,
|
|
222
|
+
depthBiasClamp: 0,
|
|
223
|
+
|
|
224
|
+
// Stencil parameters
|
|
225
|
+
|
|
226
|
+
stencilReadMask: 0xFFFFFFFF,
|
|
227
|
+
stencilWriteMask: 0xFFFFFFFF,
|
|
228
|
+
|
|
229
|
+
stencilCompare: 'always',
|
|
230
|
+
stencilPassOperation: 'keep',
|
|
231
|
+
stencilFailOperation: 'keep',
|
|
232
|
+
stencilDepthFailOperation: 'keep',
|
|
233
|
+
|
|
234
|
+
// Multisample parameters
|
|
235
|
+
sampleCount: 0,
|
|
236
|
+
sampleMask: 0xFFFFFFFF,
|
|
237
|
+
sampleAlphaToCoverageEnabled: false,
|
|
238
|
+
|
|
239
|
+
// Color and blend parameters
|
|
240
|
+
|
|
241
|
+
blendColorOperation: 'add',
|
|
242
|
+
blendColorSrcFactor: 'one',
|
|
243
|
+
blendColorDstFactor: 'zero',
|
|
244
|
+
|
|
245
|
+
blendAlphaOperation: 'add',
|
|
246
|
+
blendAlphaSrcFactor: 'one',
|
|
247
|
+
blendAlphaDstFactor: 'zero',
|
|
248
|
+
|
|
249
|
+
colorMask: 0xF
|
|
250
|
+
};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
import type {TextureFormat} from '../types/texture-formats';
|
|
3
|
+
import type {ShaderUniformType, ShaderAttributeType} from './shader-types';
|
|
4
|
+
import {AccessorObject} from '../types/accessor';
|
|
5
|
+
import type {Buffer} from '../resources/buffer';
|
|
6
|
+
import type {Sampler} from '../resources/sampler';
|
|
7
|
+
import type {Texture} from '../resources/texture';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Describes all shader binding points for a `RenderPipeline` or `ComputePipeline`
|
|
11
|
+
* A ShaderLayout describes the static structure of a shader pipeline.
|
|
12
|
+
* It also allows the numeric locations in the shader to accessed with the same variable names
|
|
13
|
+
* used in the shader.
|
|
14
|
+
* @note A ShaderLayout needs to be complemented by a BufferLayout that describes
|
|
15
|
+
* the actual memory layout of the buffers that will be used with the pipeline.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```
|
|
19
|
+
device.createRenderPipeline({
|
|
20
|
+
shaderLayout: [
|
|
21
|
+
attributes: [
|
|
22
|
+
{name: 'instancePositions', location: 0, format: 'vec3<f32>', stepMode: 'instance'},
|
|
23
|
+
{name: 'instanceVelocities', location: 1, format: 'vec3<f32>', stepMode: 'instance'},
|
|
24
|
+
{name: 'vertexPositions', location: 2, format: 'vec3<f32>', stepMode: 'vertex'}
|
|
25
|
+
],
|
|
26
|
+
bindings: [...]
|
|
27
|
+
]
|
|
28
|
+
})
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export type ShaderLayout = {
|
|
32
|
+
/** All attributes, their locations, and basic type information. Also an auto-deduced step mode */
|
|
33
|
+
attributes: AttributeDeclaration[];
|
|
34
|
+
/** All bidning points (textures, samplers, uniform buffers) with their locations and type */
|
|
35
|
+
bindings: BindingDeclaration[];
|
|
36
|
+
/** WebGL only (WebGPU use bindings and uniform buffers) */
|
|
37
|
+
uniforms?: any[];
|
|
38
|
+
/** WebGL2 only (WebGPU use compute shaders) */
|
|
39
|
+
varyings?: VaryingBinding[];
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Declares one for attributes
|
|
44
|
+
*/
|
|
45
|
+
export type AttributeDeclaration = {
|
|
46
|
+
/** The name of this attribute in the shader */
|
|
47
|
+
name: string;
|
|
48
|
+
/** The index into the GPU's vertex array buffer bank (usually between 0-15) */
|
|
49
|
+
location: number;
|
|
50
|
+
/** WebGPU-style shader type. The declared format of the attribute in the shader code. Buffer's vertex format needs to map to this. */
|
|
51
|
+
type: ShaderAttributeType;
|
|
52
|
+
/** Inferred from attribute name. @note Technically not part of static structure of shader */
|
|
53
|
+
stepMode?: 'vertex' | 'instance';
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// BINDING LAYOUTS
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
type Binding = {
|
|
60
|
+
binding: number;
|
|
61
|
+
visibility: number;
|
|
62
|
+
|
|
63
|
+
buffer?: {
|
|
64
|
+
type?: 'uniform' | 'storage' | 'read-only-storage';
|
|
65
|
+
hasDynamicOffset?: false;
|
|
66
|
+
minBindingSize?: number;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// type = sampler
|
|
70
|
+
samplerType?: 'filtering' | 'non-filtering' | 'comparison';
|
|
71
|
+
|
|
72
|
+
// type = texture
|
|
73
|
+
viewDimension?: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
|
|
74
|
+
sampleType?: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
|
|
75
|
+
multisampled?: boolean;
|
|
76
|
+
|
|
77
|
+
// type = storage
|
|
78
|
+
viewDimension?: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
|
|
79
|
+
access: 'read-only' | 'write-only';
|
|
80
|
+
format: string;
|
|
81
|
+
};
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
/** ShaderLayout for bindings */
|
|
85
|
+
export type BindingDeclaration =
|
|
86
|
+
| UniformBufferBindingLayout
|
|
87
|
+
| BufferBindingLayout
|
|
88
|
+
| TextureBindingLayout
|
|
89
|
+
| SamplerBindingLayout
|
|
90
|
+
| StorageTextureBindingLayout;
|
|
91
|
+
|
|
92
|
+
export type UniformBufferBindingLayout = {
|
|
93
|
+
type: 'uniform';
|
|
94
|
+
name: string;
|
|
95
|
+
location: number;
|
|
96
|
+
visibility?: number;
|
|
97
|
+
hasDynamicOffset?: boolean;
|
|
98
|
+
minBindingSize?: number;
|
|
99
|
+
uniforms?: UniformInfo[];
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export type UniformInfo = {
|
|
103
|
+
name: string;
|
|
104
|
+
format: ShaderUniformType;
|
|
105
|
+
type?: string;
|
|
106
|
+
arrayLength: number;
|
|
107
|
+
byteOffset: number;
|
|
108
|
+
byteStride: number;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export type BufferBindingLayout = {
|
|
112
|
+
type: 'uniform' | 'storage' | 'read-only-storage';
|
|
113
|
+
name: string;
|
|
114
|
+
location: number;
|
|
115
|
+
visibility?: number;
|
|
116
|
+
hasDynamicOffset?: boolean;
|
|
117
|
+
minBindingSize?: number;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
type TextureBindingLayout = {
|
|
121
|
+
type: 'texture';
|
|
122
|
+
name: string;
|
|
123
|
+
location: number;
|
|
124
|
+
visibility?: number;
|
|
125
|
+
viewDimension?: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d'; // default: '2d'
|
|
126
|
+
sampleType?: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint'; // default: 'float'
|
|
127
|
+
multisampled?: boolean;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
type SamplerBindingLayout = {
|
|
131
|
+
type: 'sampler';
|
|
132
|
+
name: string;
|
|
133
|
+
location: number;
|
|
134
|
+
visibility?: number;
|
|
135
|
+
samplerType?: 'filtering' | 'non-filtering' | 'comparison'; // default: filtering
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
type StorageTextureBindingLayout = {
|
|
139
|
+
type: 'storage';
|
|
140
|
+
name: string;
|
|
141
|
+
location: number;
|
|
142
|
+
visibility?: number;
|
|
143
|
+
access?: 'write-only';
|
|
144
|
+
format: TextureFormat;
|
|
145
|
+
viewDimension?: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
// BINDINGS
|
|
149
|
+
|
|
150
|
+
/** Binding value */
|
|
151
|
+
export type Binding = Texture | Sampler | Buffer | {buffer: Buffer; offset?: number; size?: number};
|
|
152
|
+
|
|
153
|
+
// SHADER LAYOUTS
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Describes a varying binding for a program
|
|
157
|
+
* @deprecated Varyings are WebGL-only
|
|
158
|
+
*/
|
|
159
|
+
export type VaryingBinding = {
|
|
160
|
+
location: number;
|
|
161
|
+
name: string;
|
|
162
|
+
accessor: AccessorObject;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// Uniform bindings
|
|
166
|
+
|
|
167
|
+
/** Describes a uniform block binding for a program */
|
|
168
|
+
export type UniformBlockBinding = {
|
|
169
|
+
location: number;
|
|
170
|
+
name: string;
|
|
171
|
+
byteLength: number;
|
|
172
|
+
vertex: boolean;
|
|
173
|
+
fragment: boolean;
|
|
174
|
+
uniformCount: number;
|
|
175
|
+
uniformIndices?: number[];
|
|
176
|
+
uniforms: UniformInfo[];
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
/** Describes a uniform (sampler etc) binding for a program */
|
|
180
|
+
export type UniformBinding = {
|
|
181
|
+
location: number;
|
|
182
|
+
name: string;
|
|
183
|
+
size: number;
|
|
184
|
+
type: number;
|
|
185
|
+
isArray: boolean;
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
/** @deprecated */
|
|
189
|
+
export type AttributeBinding = {
|
|
190
|
+
name: string;
|
|
191
|
+
location: number;
|
|
192
|
+
accessor: AccessorObject;
|
|
193
|
+
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Primitive data types understood by shaders
|
|
6
|
+
* @note These types describe the type used in shader calculations, but for attribute inputs these can be populated from a different in-memory type.
|
|
7
|
+
* @note bindings (like textures, samplers, and uniform buffers) are considered "bindings", not types
|
|
8
|
+
* @note `f16` requires the `f16` extension
|
|
9
|
+
*/
|
|
10
|
+
export type ShaderDataType = 'u32' | 'i32' | 'f32' | 'f16';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Describes the type of an attribute as defined in the shader source code.
|
|
14
|
+
* @note Buffers with various `VertexFormat`s can be supplied for each type, and the GPU will convert them at runtime,
|
|
15
|
+
* but there are limitations, see documentation for details.
|
|
16
|
+
*/
|
|
17
|
+
export type ShaderAttributeType =
|
|
18
|
+
| 'f32'
|
|
19
|
+
| 'vec2<f32>'
|
|
20
|
+
| 'vec3<f32>'
|
|
21
|
+
| 'vec4<f32>'
|
|
22
|
+
| 'i32'
|
|
23
|
+
| 'vec2<i32>'
|
|
24
|
+
| 'vec3<i32>'
|
|
25
|
+
| 'vec4<i32>'
|
|
26
|
+
| 'u32'
|
|
27
|
+
| 'vec2<u32>'
|
|
28
|
+
| 'vec3<u32>'
|
|
29
|
+
| 'vec4<u32>'
|
|
30
|
+
// requires `f16` extension
|
|
31
|
+
| 'f16'
|
|
32
|
+
| 'vec2<f16>'
|
|
33
|
+
| 'vec3<f16>'
|
|
34
|
+
| 'vec4<f16>';
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Describes the type of a uniform as described in the shader source code.
|
|
38
|
+
* Uniforms can be of a wider range of types than attributes.
|
|
39
|
+
*/
|
|
40
|
+
export type ShaderUniformType =
|
|
41
|
+
| 'f32'
|
|
42
|
+
| 'i32'
|
|
43
|
+
| 'u32'
|
|
44
|
+
| 'vec2<f32>'
|
|
45
|
+
| 'vec3<f32>'
|
|
46
|
+
| 'vec4<f32>'
|
|
47
|
+
| 'vec2<i32>'
|
|
48
|
+
| 'vec3<i32>'
|
|
49
|
+
| 'vec4<i32>'
|
|
50
|
+
| 'vec2<u32>'
|
|
51
|
+
| 'vec3<u32>'
|
|
52
|
+
| 'vec4<u32>'
|
|
53
|
+
| 'mat2x2<f32>'
|
|
54
|
+
| 'mat2x3<f32>'
|
|
55
|
+
| 'mat2x4<f32>'
|
|
56
|
+
| 'mat3x2<f32>'
|
|
57
|
+
| 'mat3x3<f32>'
|
|
58
|
+
| 'mat3x4<f32>'
|
|
59
|
+
| 'mat4x2<f32>'
|
|
60
|
+
| 'mat4x3<f32>'
|
|
61
|
+
| 'mat4x4<f32>';
|
|
62
|
+
|
|
63
|
+
/** Shorthand type aliases recognized by WGSL */
|
|
64
|
+
export type ShaderTypeAlias =
|
|
65
|
+
| 'vec2i'
|
|
66
|
+
| 'vec3i'
|
|
67
|
+
| 'vec4i'
|
|
68
|
+
| 'vec2u'
|
|
69
|
+
| 'vec3u'
|
|
70
|
+
| 'vec4u'
|
|
71
|
+
| 'vec2f'
|
|
72
|
+
| 'vec3f'
|
|
73
|
+
| 'vec4f'
|
|
74
|
+
// Requires the f16 extension.
|
|
75
|
+
| 'vec2h'
|
|
76
|
+
| 'vec3h'
|
|
77
|
+
| 'vec4h';
|