@luma.gl/core 9.2.0-alpha.1 → 9.2.0-alpha.5
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/adapter/canvas-context.d.ts +19 -5
- package/dist/adapter/canvas-context.d.ts.map +1 -1
- package/dist/adapter/canvas-context.js +53 -3
- package/dist/adapter/canvas-context.js.map +1 -1
- package/dist/adapter/device.d.ts +56 -11
- package/dist/adapter/device.d.ts.map +1 -1
- package/dist/adapter/device.js +78 -22
- package/dist/adapter/device.js.map +1 -1
- package/dist/adapter/luma.js +1 -1
- package/dist/adapter/resources/buffer.d.ts +13 -7
- package/dist/adapter/resources/buffer.d.ts.map +1 -1
- package/dist/adapter/resources/buffer.js +1 -5
- package/dist/adapter/resources/buffer.js.map +1 -1
- package/dist/adapter/resources/command-encoder.d.ts +0 -1
- package/dist/adapter/resources/command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/command-encoder.js.map +1 -1
- package/dist/adapter/resources/framebuffer.d.ts +3 -3
- package/dist/adapter/resources/framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/pipeline-layout.d.ts +13 -0
- package/dist/adapter/resources/pipeline-layout.d.ts.map +1 -0
- package/dist/adapter/resources/pipeline-layout.js +21 -0
- package/dist/adapter/resources/pipeline-layout.js.map +1 -0
- package/dist/adapter/resources/render-pipeline.d.ts +4 -4
- package/dist/adapter/resources/render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/resource.d.ts +1 -0
- package/dist/adapter/resources/resource.d.ts.map +1 -1
- package/dist/adapter/resources/resource.js.map +1 -1
- package/dist/adapter/resources/texture-view.d.ts +1 -1
- package/dist/adapter/resources/texture-view.d.ts.map +1 -1
- package/dist/adapter/resources/texture.d.ts +1 -1
- package/dist/adapter/resources/texture.d.ts.map +1 -1
- package/dist/adapter/resources/vertex-array.js +1 -1
- package/dist/adapter/resources/vertex-array.js.map +1 -1
- package/dist/adapter/types/attachments.d.ts +3 -3
- package/dist/adapter/types/attachments.d.ts.map +1 -1
- package/dist/adapter/types/buffer-layout.d.ts +1 -1
- package/dist/adapter/types/buffer-layout.d.ts.map +1 -1
- package/dist/adapter/types/parameters.d.ts +2 -2
- package/dist/adapter/types/parameters.d.ts.map +1 -1
- package/dist/adapter/types/shader-layout.d.ts +5 -6
- package/dist/adapter/types/shader-layout.d.ts.map +1 -1
- package/dist/adapter-utils/get-attribute-from-layouts.d.ts +3 -3
- package/dist/adapter-utils/get-attribute-from-layouts.d.ts.map +1 -1
- package/dist/adapter-utils/get-attribute-from-layouts.js +2 -2
- package/dist/adapter-utils/get-attribute-from-layouts.js.map +1 -1
- package/dist/dist.dev.js +430 -274
- package/dist/dist.min.js +5 -4
- package/dist/index.cjs +426 -273
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +18 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -7
- package/dist/index.js.map +1 -1
- package/dist/portable/uniform-block.d.ts +1 -1
- package/dist/portable/uniform-block.d.ts.map +1 -1
- package/dist/portable/uniform-buffer-layout.d.ts +3 -3
- package/dist/portable/uniform-buffer-layout.d.ts.map +1 -1
- package/dist/portable/uniform-buffer-layout.js +8 -9
- package/dist/portable/uniform-buffer-layout.js.map +1 -1
- package/dist/portable/uniform-store.d.ts +2 -1
- package/dist/portable/uniform-store.d.ts.map +1 -1
- package/dist/portable/uniform-store.js +1 -1
- package/dist/portable/uniform-store.js.map +1 -1
- package/dist/shadertypes/{data-types.d.ts → data-types/data-types.d.ts} +4 -0
- package/dist/shadertypes/data-types/data-types.d.ts.map +1 -0
- package/dist/shadertypes/data-types/data-types.js.map +1 -0
- package/dist/shadertypes/{utils → data-types}/decode-data-types.d.ts +4 -4
- package/dist/shadertypes/data-types/decode-data-types.d.ts.map +1 -0
- package/dist/shadertypes/data-types/decode-data-types.js +74 -0
- package/dist/shadertypes/data-types/decode-data-types.js.map +1 -0
- package/dist/shadertypes/{utils → data-types}/decode-shader-types.d.ts +2 -2
- package/dist/shadertypes/data-types/decode-shader-types.d.ts.map +1 -0
- package/dist/shadertypes/data-types/decode-shader-types.js.map +1 -0
- package/dist/shadertypes/data-types/shader-types.d.ts.map +1 -0
- package/dist/shadertypes/data-types/shader-types.js.map +1 -0
- package/dist/shadertypes/textures/pixel-utils.d.ts +112 -0
- package/dist/shadertypes/textures/pixel-utils.d.ts.map +1 -0
- package/dist/shadertypes/textures/pixel-utils.js +193 -0
- package/dist/shadertypes/textures/pixel-utils.js.map +1 -0
- package/dist/shadertypes/textures/texture-format-decoder.d.ts +18 -0
- package/dist/shadertypes/textures/texture-format-decoder.d.ts.map +1 -0
- package/dist/shadertypes/{utils/decode-texture-format.js → textures/texture-format-decoder.js} +48 -35
- package/dist/shadertypes/textures/texture-format-decoder.js.map +1 -0
- package/dist/shadertypes/textures/texture-format-generics.d.ts +33 -0
- package/dist/shadertypes/textures/texture-format-generics.d.ts.map +1 -0
- package/dist/shadertypes/{texture-formats.js → textures/texture-format-generics.js} +1 -1
- package/dist/shadertypes/textures/texture-format-generics.js.map +1 -0
- package/dist/shadertypes/{utils → textures}/texture-format-table.d.ts +2 -1
- package/dist/shadertypes/textures/texture-format-table.d.ts.map +1 -0
- package/dist/shadertypes/{utils → textures}/texture-format-table.js +41 -42
- package/dist/shadertypes/textures/texture-format-table.js.map +1 -0
- package/dist/shadertypes/textures/texture-formats.d.ts +90 -0
- package/dist/shadertypes/textures/texture-formats.d.ts.map +1 -0
- package/dist/shadertypes/textures/texture-formats.js +58 -0
- package/dist/shadertypes/textures/texture-formats.js.map +1 -0
- package/dist/shadertypes/{utils → vertex-arrays}/decode-vertex-format.d.ts +2 -2
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.d.ts.map +1 -0
- package/dist/shadertypes/{utils → vertex-arrays}/decode-vertex-format.js +4 -4
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.js.map +1 -0
- package/dist/shadertypes/{vertex-formats.d.ts → vertex-arrays/vertex-formats.d.ts} +5 -3
- package/dist/shadertypes/vertex-arrays/vertex-formats.d.ts.map +1 -0
- package/dist/shadertypes/vertex-arrays/vertex-formats.js.map +1 -0
- package/package.json +2 -2
- package/src/adapter/canvas-context.ts +66 -8
- package/src/adapter/device.ts +132 -47
- package/src/adapter/resources/buffer.ts +30 -14
- package/src/adapter/resources/command-encoder.ts +0 -2
- package/src/adapter/resources/framebuffer.ts +5 -5
- package/src/adapter/resources/pipeline-layout.ts +30 -0
- package/src/adapter/resources/render-pipeline.ts +6 -6
- package/src/adapter/resources/resource.ts +1 -0
- package/src/adapter/resources/texture-view.ts +1 -1
- package/src/adapter/resources/texture.ts +1 -1
- package/src/adapter/resources/vertex-array.ts +1 -1
- package/src/adapter/types/attachments.ts +5 -5
- package/src/adapter/types/buffer-layout.ts +1 -1
- package/src/adapter/types/parameters.ts +2 -2
- package/src/adapter/types/shader-layout.ts +8 -5
- package/src/adapter-utils/get-attribute-from-layouts.ts +5 -5
- package/src/index.ts +60 -36
- package/src/portable/uniform-block.ts +1 -1
- package/src/portable/uniform-buffer-layout.ts +13 -12
- package/src/portable/uniform-store.ts +6 -2
- package/src/shadertypes/data-types/data-types.ts +96 -0
- package/src/shadertypes/data-types/decode-data-types.ts +91 -0
- package/src/shadertypes/{utils → data-types}/decode-shader-types.ts +2 -2
- package/src/shadertypes/textures/pixel-utils.ts +239 -0
- package/src/shadertypes/{utils/decode-texture-format.ts → textures/texture-format-decoder.ts} +63 -47
- package/src/shadertypes/textures/texture-format-generics.ts +190 -0
- package/src/shadertypes/{utils → textures}/texture-format-table.ts +62 -52
- package/src/shadertypes/{texture-formats.ts → textures/texture-formats.ts} +229 -147
- package/src/shadertypes/{utils → vertex-arrays}/decode-vertex-format.ts +6 -10
- package/src/shadertypes/{vertex-formats.ts → vertex-arrays/vertex-formats.ts} +20 -6
- package/dist/adapter-utils/buffer-layout-helper.d.ts +0 -11
- package/dist/adapter-utils/buffer-layout-helper.d.ts.map +0 -1
- package/dist/adapter-utils/buffer-layout-helper.js +0 -33
- package/dist/adapter-utils/buffer-layout-helper.js.map +0 -1
- package/dist/shadertypes/data-types.d.ts.map +0 -1
- package/dist/shadertypes/data-types.js.map +0 -1
- package/dist/shadertypes/shader-types.d.ts.map +0 -1
- package/dist/shadertypes/shader-types.js.map +0 -1
- package/dist/shadertypes/texture-formats.d.ts +0 -74
- package/dist/shadertypes/texture-formats.d.ts.map +0 -1
- package/dist/shadertypes/texture-formats.js.map +0 -1
- package/dist/shadertypes/utils/decode-data-types.d.ts.map +0 -1
- package/dist/shadertypes/utils/decode-data-types.js +0 -114
- package/dist/shadertypes/utils/decode-data-types.js.map +0 -1
- package/dist/shadertypes/utils/decode-shader-types.d.ts.map +0 -1
- package/dist/shadertypes/utils/decode-shader-types.js.map +0 -1
- package/dist/shadertypes/utils/decode-texture-format.d.ts +0 -15
- package/dist/shadertypes/utils/decode-texture-format.d.ts.map +0 -1
- package/dist/shadertypes/utils/decode-texture-format.js.map +0 -1
- package/dist/shadertypes/utils/decode-vertex-format.d.ts.map +0 -1
- package/dist/shadertypes/utils/decode-vertex-format.js.map +0 -1
- package/dist/shadertypes/utils/texture-format-table.d.ts.map +0 -1
- package/dist/shadertypes/utils/texture-format-table.js.map +0 -1
- package/dist/shadertypes/vertex-formats.d.ts.map +0 -1
- package/dist/shadertypes/vertex-formats.js.map +0 -1
- package/src/adapter-utils/buffer-layout-helper.ts +0 -41
- package/src/shadertypes/data-types.ts +0 -42
- package/src/shadertypes/utils/decode-data-types.ts +0 -131
- /package/dist/shadertypes/{data-types.js → data-types/data-types.js} +0 -0
- /package/dist/shadertypes/{utils → data-types}/decode-shader-types.js +0 -0
- /package/dist/shadertypes/{shader-types.d.ts → data-types/shader-types.d.ts} +0 -0
- /package/dist/shadertypes/{shader-types.js → data-types/shader-types.js} +0 -0
- /package/dist/shadertypes/{vertex-formats.js → vertex-arrays/vertex-formats.js} +0 -0
- /package/src/shadertypes/{shader-types.ts → data-types/shader-types.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pixel-utils.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/textures/pixel-utils.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG;IACtB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sNAAsN;IACtN,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BE;AAEF,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,EACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC/C,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CA6BlC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BE;AACF,wBAAgB,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACtC,IAAI,CAUN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CA0BR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAkCN"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
/**
|
|
5
|
+
* Extracts a single RGBA pixel value from PixelData at the given (x, y) coordinate.
|
|
6
|
+
*
|
|
7
|
+
* The pixel's data is assumed to be packed according to pixelData.bitsPerChannel.
|
|
8
|
+
* The pixel data for a given row is padded to pixelData.bytesPerRow.
|
|
9
|
+
*
|
|
10
|
+
* @param pixelData - The metadata and data for the pixel buffer.
|
|
11
|
+
* @param x - The x coordinate (0-based).
|
|
12
|
+
* @param y - The y coordinate (0-based).
|
|
13
|
+
* @returns A tuple [r, g, b, a] where each channel is the extracted numeric value.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
|
|
17
|
+
Assume you obtained an ArrayBuffer from copyTextureToBuffer and have the following metadata:
|
|
18
|
+
|
|
19
|
+
const pixelData: PixelData = {
|
|
20
|
+
bitsPerChannel: [5, 6, 5, 0], // For example, a 16-bit RGB565 format (no alpha)
|
|
21
|
+
width: 800,
|
|
22
|
+
height: 600,
|
|
23
|
+
bytesPerPixel: 2, // 16 bits per pixel
|
|
24
|
+
bytesPerRow: 1600, // Assuming no extra padding
|
|
25
|
+
arrayBuffer: myTextureBuffer, // Obtained from copyTextureToBuffer
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
You can then extract the pixel at (x, y) like so:
|
|
29
|
+
|
|
30
|
+
const rgba = extractPixel(pixelData, x, y);
|
|
31
|
+
console.log("Extracted RGBA:", rgba);
|
|
32
|
+
|
|
33
|
+
For RGBA formats where all channels are present (e.g. [8, 8, 8, 8]), the function will extract a 4-channel pixel value.
|
|
34
|
+
*/
|
|
35
|
+
export function readPixel(pixelData, x, y, bitsPerChannel) {
|
|
36
|
+
if (x < 0 || x >= pixelData.width || y < 0 || y >= pixelData.height) {
|
|
37
|
+
throw new Error('Coordinates out of bounds.');
|
|
38
|
+
}
|
|
39
|
+
// Compute the byte offset of the pixel in the buffer.
|
|
40
|
+
const byteOffset = y * pixelData.bytesPerRow + x * pixelData.bytesPerPixel;
|
|
41
|
+
// Create a Uint8Array view for this pixel's bytes.
|
|
42
|
+
// We only need to view pixelData.bytesPerPixel bytes.
|
|
43
|
+
const pixelDataView = new DataView(pixelData.arrayBuffer, byteOffset, pixelData.bytesPerPixel);
|
|
44
|
+
let bitOffsetWithinPixel = 0;
|
|
45
|
+
const channels = [];
|
|
46
|
+
// Extract each of the four channels.
|
|
47
|
+
for (let i = 0; i < 4; i++) {
|
|
48
|
+
const bits = bitsPerChannel[i];
|
|
49
|
+
// If a channel's bit width is zero or negative, consider it not present.
|
|
50
|
+
if (bits <= 0) {
|
|
51
|
+
channels.push(0);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const channelValue = readBitsFromDataView(pixelDataView, bitOffsetWithinPixel, bits);
|
|
55
|
+
channels.push(channelValue);
|
|
56
|
+
bitOffsetWithinPixel += bits;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return [channels[0], channels[1], channels[2], channels[3]];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Encodes an RGBA pixel into a DataView at a given bit offset according to a specified bit layout.
|
|
63
|
+
*
|
|
64
|
+
* The channels are written sequentially in the order R, G, B, A. For each channel, the number
|
|
65
|
+
* of bits is taken from the bitsPerChannel array. Channel values are masked to fit within the specified width.
|
|
66
|
+
*
|
|
67
|
+
* @param dataView - The DataView into which the pixel will be encoded.
|
|
68
|
+
* @param bitOffset - The bit offset in the DataView where the pixel should be written.
|
|
69
|
+
* @param bitsPerChannel - A tuple specifying the number of bits for each channel: [R, G, B, A].
|
|
70
|
+
* @param pixel - A tuple [r, g, b, a] containing the channel values (as numbers).
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
|
|
74
|
+
Assume you want to encode a pixel into a packed format where:
|
|
75
|
+
- Red uses 5 bits
|
|
76
|
+
- Green uses 6 bits
|
|
77
|
+
- Blue uses 5 bits
|
|
78
|
+
- Alpha is not used (0 bits)
|
|
79
|
+
And the pixel format is packed into 16 bits total.
|
|
80
|
+
|
|
81
|
+
You might have:
|
|
82
|
+
const bitsPerChannel: [number, number, number, number] = [5, 6, 5, 0];
|
|
83
|
+
const pixel: [number, number, number, number] = [15, 31, 15, 0]; // Example values
|
|
84
|
+
const buffer = new ArrayBuffer(2); // 16 bits = 2 bytes
|
|
85
|
+
const dataView = new DataView(buffer);
|
|
86
|
+
|
|
87
|
+
Now encode the pixel at bit offset 0:
|
|
88
|
+
encodePixel(dataView, 0, bitsPerChannel, pixel);
|
|
89
|
+
|
|
90
|
+
The dataView now contains the 16-bit packed pixel value in big-endian order.
|
|
91
|
+
*/
|
|
92
|
+
export function writePixel(dataView, bitOffset, bitsPerChannel, pixel) {
|
|
93
|
+
let currentBitOffset = bitOffset;
|
|
94
|
+
for (let channel = 0; channel < 4; channel++) {
|
|
95
|
+
const bits = bitsPerChannel[channel];
|
|
96
|
+
// Clamp the channel value to the maximum allowed by the bit width.
|
|
97
|
+
const maxValue = (1 << bits) - 1;
|
|
98
|
+
const channelValue = pixel[channel] & maxValue;
|
|
99
|
+
writeBitsToDataView(dataView, currentBitOffset, bits, channelValue);
|
|
100
|
+
currentBitOffset += bits;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Reads a specified number of bits from a DataView starting at a given bit offset.
|
|
105
|
+
*
|
|
106
|
+
* For channels with a bit width of 8, 16, or 32 bits and when the bitOffset is byte-aligned,
|
|
107
|
+
* this function uses DataView methods for fast extraction.
|
|
108
|
+
*
|
|
109
|
+
* Bits are assumed to be stored in big-endian order (i.e. the most-significant bit is at position 7 in each byte).
|
|
110
|
+
*
|
|
111
|
+
* @param dataView - The DataView containing the data.
|
|
112
|
+
* @param bitOffset - The offset (in bits) within the data from which to start reading.
|
|
113
|
+
* @param bitCount - The number of bits to read (supported range: 1 to 32).
|
|
114
|
+
* @returns The extracted value as a number.
|
|
115
|
+
*/
|
|
116
|
+
export function readBitsFromDataView(dataView, bitOffset, bitCount) {
|
|
117
|
+
// Check if we can optimize when bitOffset is byte-aligned.
|
|
118
|
+
if (bitOffset % 8 === 0) {
|
|
119
|
+
const byteOffset = bitOffset / 8;
|
|
120
|
+
if (bitCount === 8 && byteOffset + 1 <= dataView.byteLength) {
|
|
121
|
+
return dataView.getUint8(byteOffset);
|
|
122
|
+
}
|
|
123
|
+
else if (bitCount === 16 && byteOffset + 2 <= dataView.byteLength) {
|
|
124
|
+
// false for big-endian reading.
|
|
125
|
+
return dataView.getUint16(byteOffset, false);
|
|
126
|
+
}
|
|
127
|
+
else if (bitCount === 32 && byteOffset + 4 <= dataView.byteLength) {
|
|
128
|
+
return dataView.getUint32(byteOffset, false);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Fallback: bit-level extraction for non-aligned or non-standard bit widths.
|
|
132
|
+
let value = 0;
|
|
133
|
+
for (let i = 0; i < bitCount; i++) {
|
|
134
|
+
const overallBitIndex = bitOffset + i;
|
|
135
|
+
const byteIndex = Math.floor(overallBitIndex / 8);
|
|
136
|
+
const bitIndex = overallBitIndex % 8;
|
|
137
|
+
// Read the byte and extract the bit at position (7 - bitIndex).
|
|
138
|
+
const byteValue = dataView.getUint8(byteIndex);
|
|
139
|
+
const bit = (byteValue >> (7 - bitIndex)) & 1;
|
|
140
|
+
value = (value << 1) | bit;
|
|
141
|
+
}
|
|
142
|
+
return value;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Writes a specified number of bits from a value into a DataView at a given bit offset.
|
|
146
|
+
*
|
|
147
|
+
* For channels with a bit width of 8, 16, or 32 bits and when the bit offset is byte-aligned,
|
|
148
|
+
* this function uses DataView methods for fast writing.
|
|
149
|
+
*
|
|
150
|
+
* Bits are assumed to be stored in big-endian order (i.e. the most-significant bit is at position 7 in each byte).
|
|
151
|
+
*
|
|
152
|
+
* @param dataView - The DataView to write into.
|
|
153
|
+
* @param bitOffset - The bit offset at which to begin writing.
|
|
154
|
+
* @param bitCount - The number of bits to write (supported range: 1 to 32).
|
|
155
|
+
* @param value - The numeric value whose lower bitCount bits will be written.
|
|
156
|
+
*/
|
|
157
|
+
export function writeBitsToDataView(dataView, bitOffset, bitCount, value) {
|
|
158
|
+
// If the bitOffset is byte-aligned, we may optimize for common bit widths.
|
|
159
|
+
if (bitOffset % 8 === 0) {
|
|
160
|
+
const byteOffset = bitOffset / 8;
|
|
161
|
+
if (bitCount === 8 && byteOffset + 1 <= dataView.byteLength) {
|
|
162
|
+
dataView.setUint8(byteOffset, value & 0xff);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
else if (bitCount === 16 && byteOffset + 2 <= dataView.byteLength) {
|
|
166
|
+
dataView.setUint16(byteOffset, value & 0xffff, false); // big-endian
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
else if (bitCount === 32 && byteOffset + 4 <= dataView.byteLength) {
|
|
170
|
+
dataView.setUint32(byteOffset, value, false); // big-endian
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Fallback: write bit-by-bit.
|
|
175
|
+
for (let i = 0; i < bitCount; i++) {
|
|
176
|
+
const overallBitIndex = bitOffset + i;
|
|
177
|
+
const byteIndex = Math.floor(overallBitIndex / 8);
|
|
178
|
+
const bitIndex = overallBitIndex % 8;
|
|
179
|
+
const mask = 1 << (7 - bitIndex);
|
|
180
|
+
// Extract the i-th bit from value (starting from the most-significant bit)
|
|
181
|
+
const bitValue = (value >> (bitCount - 1 - i)) & 1;
|
|
182
|
+
// Read the current byte.
|
|
183
|
+
let currentByte = dataView.getUint8(byteIndex);
|
|
184
|
+
// Clear the target bit.
|
|
185
|
+
currentByte &= ~mask;
|
|
186
|
+
// Set the target bit if bitValue is 1.
|
|
187
|
+
if (bitValue) {
|
|
188
|
+
currentByte |= mask;
|
|
189
|
+
}
|
|
190
|
+
dataView.setUint8(byteIndex, currentByte);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=pixel-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pixel-utils.js","sourceRoot":"","sources":["../../../src/shadertypes/textures/pixel-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TextureFormat, TextureFormatCompressed, TextureFormatInfo, TextureFormatCapabilities, TextureFormatColor } from "./texture-formats.js";
|
|
2
|
+
export declare class TextureFormatDecoder {
|
|
3
|
+
/** Returns information about a texture format, e.g. attatchment type, components, byte length and flags (integer, signed, normalized) */
|
|
4
|
+
getInfo(format: TextureFormat): TextureFormatInfo;
|
|
5
|
+
/** Checks if a texture format is color */
|
|
6
|
+
isColor(format: TextureFormat): format is TextureFormatColor;
|
|
7
|
+
/** Checks if a texture format is depth or stencil */
|
|
8
|
+
isDepthStencil(format: TextureFormat): boolean;
|
|
9
|
+
/** Checks if a texture format is compressed */
|
|
10
|
+
isCompressed(format: TextureFormat): format is TextureFormatCompressed;
|
|
11
|
+
/**
|
|
12
|
+
* Returns the "static" capabilities of a texture format.
|
|
13
|
+
* @note Needs to be checked against current device
|
|
14
|
+
*/
|
|
15
|
+
getCapabilities(format: TextureFormat): TextureFormatCapabilities;
|
|
16
|
+
}
|
|
17
|
+
export declare const textureFormatDecoder: TextureFormatDecoder;
|
|
18
|
+
//# sourceMappingURL=texture-format-decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-decoder.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/textures/texture-format-decoder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EACnB,6BAA0B;AAU3B,qBAAa,oBAAoB;IAC/B,yIAAyI;IACzI,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB;IAIjD,0CAA0C;IAC1C,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,IAAI,kBAAkB;IAI5D,qDAAqD;IACrD,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAI9C,+CAA+C;IAC/C,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,IAAI,uBAAuB;IAItE;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,yBAAyB;CAyBlE;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|
package/dist/shadertypes/{utils/decode-texture-format.js → textures/texture-format-decoder.js}
RENAMED
|
@@ -1,25 +1,64 @@
|
|
|
1
1
|
// luma.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import { getDataTypeInfo } from "
|
|
4
|
+
import { getDataTypeInfo } from "../data-types/decode-data-types.js";
|
|
5
5
|
import { getTextureFormatDefinition } from "./texture-format-table.js";
|
|
6
6
|
// prettier-ignore
|
|
7
7
|
const COMPRESSED_TEXTURE_FORMAT_PREFIXES = [
|
|
8
8
|
'bc1', 'bc2', 'bc3', 'bc4', 'bc5', 'bc6', 'bc7', 'etc1', 'etc2', 'eac', 'atc', 'astc', 'pvrtc'
|
|
9
9
|
];
|
|
10
10
|
const RGB_FORMAT_REGEX = /^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
export class TextureFormatDecoder {
|
|
12
|
+
/** Returns information about a texture format, e.g. attatchment type, components, byte length and flags (integer, signed, normalized) */
|
|
13
|
+
getInfo(format) {
|
|
14
|
+
return getTextureFormatInfo(format);
|
|
15
|
+
}
|
|
16
|
+
/** Checks if a texture format is color */
|
|
17
|
+
isColor(format) {
|
|
18
|
+
return format.startsWith('rgba') || format.startsWith('bgra') || format.startsWith('rgb');
|
|
19
|
+
}
|
|
20
|
+
/** Checks if a texture format is depth or stencil */
|
|
21
|
+
isDepthStencil(format) {
|
|
22
|
+
return format.startsWith('depth') || format.startsWith('stencil');
|
|
23
|
+
}
|
|
24
|
+
/** Checks if a texture format is compressed */
|
|
25
|
+
isCompressed(format) {
|
|
26
|
+
return COMPRESSED_TEXTURE_FORMAT_PREFIXES.some(prefix => format.startsWith(prefix));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Returns the "static" capabilities of a texture format.
|
|
30
|
+
* @note Needs to be checked against current device
|
|
31
|
+
*/
|
|
32
|
+
getCapabilities(format) {
|
|
33
|
+
const info = getTextureFormatDefinition(format);
|
|
34
|
+
const formatCapabilities = {
|
|
35
|
+
format,
|
|
36
|
+
create: info.f ?? true,
|
|
37
|
+
render: info.render ?? true,
|
|
38
|
+
filter: info.filter ?? true,
|
|
39
|
+
blend: info.blend ?? true,
|
|
40
|
+
store: info.store ?? true
|
|
41
|
+
};
|
|
42
|
+
const formatInfo = getTextureFormatInfo(format);
|
|
43
|
+
const isDepthStencil = format.startsWith('depth') || format.startsWith('stencil');
|
|
44
|
+
const isSigned = formatInfo?.signed;
|
|
45
|
+
const isInteger = formatInfo?.integer;
|
|
46
|
+
const isWebGLSpecific = formatInfo?.webgl;
|
|
47
|
+
// signed formats are not renderable
|
|
48
|
+
formatCapabilities.render &&= !isSigned;
|
|
49
|
+
// signed and integer formats are not filterable
|
|
50
|
+
formatCapabilities.filter &&= !isDepthStencil && !isSigned && !isInteger && !isWebGLSpecific;
|
|
51
|
+
return formatCapabilities;
|
|
52
|
+
}
|
|
16
53
|
}
|
|
54
|
+
export const textureFormatDecoder = new TextureFormatDecoder();
|
|
55
|
+
// HELPERS
|
|
17
56
|
/**
|
|
18
57
|
* Decodes a texture format, returning e.g. attatchment type, components, byte length and flags (integer, signed, normalized)
|
|
19
58
|
*/
|
|
20
|
-
|
|
59
|
+
function getTextureFormatInfo(format) {
|
|
21
60
|
let formatInfo = getTextureFormatInfoUsingTable(format);
|
|
22
|
-
if (
|
|
61
|
+
if (textureFormatDecoder.isCompressed(format)) {
|
|
23
62
|
formatInfo.channels = 'rgb';
|
|
24
63
|
formatInfo.components = 3;
|
|
25
64
|
formatInfo.bytesPerPixel = 1;
|
|
@@ -75,32 +114,6 @@ export function getTextureFormatInfo(format) {
|
|
|
75
114
|
}
|
|
76
115
|
return formatInfo;
|
|
77
116
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Returns the "static" capabilities of a texture format.
|
|
80
|
-
* @note Needs to be checked against current device
|
|
81
|
-
*/
|
|
82
|
-
export function getTextureFormatCapabilities(format) {
|
|
83
|
-
const info = getTextureFormatDefinition(format);
|
|
84
|
-
const formatCapabilities = {
|
|
85
|
-
format,
|
|
86
|
-
create: info.f ?? true,
|
|
87
|
-
render: info.render ?? true,
|
|
88
|
-
filter: info.filter ?? true,
|
|
89
|
-
blend: info.blend ?? true,
|
|
90
|
-
store: info.store ?? true
|
|
91
|
-
};
|
|
92
|
-
const formatInfo = getTextureFormatInfo(format);
|
|
93
|
-
const isDepthStencil = format.startsWith('depth') || format.startsWith('stencil');
|
|
94
|
-
const isSigned = formatInfo?.signed;
|
|
95
|
-
const isInteger = formatInfo?.integer;
|
|
96
|
-
const isWebGLSpecific = formatInfo?.webgl;
|
|
97
|
-
// signed formats are not renderable
|
|
98
|
-
formatCapabilities.render &&= !isSigned;
|
|
99
|
-
// signed and integer formats are not filterable
|
|
100
|
-
formatCapabilities.filter &&= !isDepthStencil && !isSigned && !isInteger && !isWebGLSpecific;
|
|
101
|
-
return formatCapabilities;
|
|
102
|
-
}
|
|
103
|
-
// HELPERS
|
|
104
117
|
/** Decode texture format info from the table */
|
|
105
118
|
function getTextureFormatInfoUsingTable(format) {
|
|
106
119
|
const info = getTextureFormatDefinition(format);
|
|
@@ -250,4 +263,4 @@ function getCompressedTextureBlockSize(format) {
|
|
|
250
263
|
'astc-12x10-unorm-srgb': { },
|
|
251
264
|
'astc-12x12-unorm': { 16 },
|
|
252
265
|
*/
|
|
253
|
-
//# sourceMappingURL=
|
|
266
|
+
//# sourceMappingURL=texture-format-decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-decoder.js","sourceRoot":"","sources":["../../../src/shadertypes/textures/texture-format-decoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type TextureFormat, type TextureFormatDepthStencil, type TextureFormatCompressed } from "./texture-formats.js";
|
|
2
|
+
import { type DataTypeArray, NormalizedDataTypeArray } from "../data-types/data-types.js";
|
|
3
|
+
export type TextureFormatTypedArray<T extends TextureFormat> = DataTypeArray<TextureFormatDataType<T>>;
|
|
4
|
+
export type TextureFormatNormalizedTypedArray<T extends TextureFormat> = NormalizedDataTypeArray<TextureFormatDataType<T>>;
|
|
5
|
+
/** A numeric array of length matching the number of components in the texture format */
|
|
6
|
+
export type TextureFormatPixel<T extends TextureFormat> = TextureFormatPackedComponents<T> extends 1 ? [number] : TextureFormatPackedComponents<T> extends 2 ? [number, number] : TextureFormatPackedComponents<T> extends 3 ? [number, number, number] : TextureFormatPackedComponents<T> extends 4 ? [number, number, number, number] : never;
|
|
7
|
+
/** @note packed formats have only one component. Use TextureFormatPackedComponents */
|
|
8
|
+
export type TextureFormatComponents<T extends TextureFormat> = T extends TextureFormatR | TextureFormatPackedRGB | TextureFormatPackedRGBA ? 1 : T extends TextureFormatRG ? 2 : T extends TextureFormatRGB ? 3 : T extends TextureFormatRGBA ? 4 : never;
|
|
9
|
+
export type TextureFormatPackedComponents<T extends TextureFormat> = T extends TextureFormatR ? 1 : T extends TextureFormatRG ? 2 : T extends TextureFormatRGB | TextureFormatPackedRGB ? 3 : T extends TextureFormatRGBA | TextureFormatPackedRGBA ? 4 : never;
|
|
10
|
+
/** Get the data type for a texture format */
|
|
11
|
+
export type TextureFormatDataType<T extends TextureFormat> = T extends TextureFormatUint8 ? 'uint8' : T extends TextureFormatSint8 ? 'sint8' : T extends TextureFormatUnorm8 ? 'unorm8' : T extends TextureFormatSnorm8 ? 'snorm8' : T extends TextureFormatUint16 ? 'uint16' : T extends TextureFormatSint16 ? 'sint16' : T extends TextureFormatUnorm16 ? 'unorm16' : T extends TextureFormatSnorm16 ? 'snorm16' : T extends TextureFormatUint32 ? 'uint32' : T extends TextureFormatSint32 ? 'sint32' : T extends TextureFormatFloat16 ? 'float16' : T extends TextureFormatFloat32 ? 'float32' : T extends TextureFormatDepthStencil ? 'uint32' : T extends TextureFormatCompressed ? 'uint8' : T extends TextureFormatPacked16 ? 'uint16' : T extends TextureFormatPacked32 ? 'uint32' : never;
|
|
12
|
+
type TextureFormatR = 'r8uint' | 'r8sint' | 'r8unorm' | 'r8snorm' | 'r16unorm' | 'r16snorm' | 'r16uint' | 'r16sint' | 'r16float' | 'r32uint' | 'r32sint' | 'r32float';
|
|
13
|
+
type TextureFormatRG = 'rg8unorm' | 'rg8snorm' | 'rg8uint' | 'rg8sint' | 'rg16unorm' | 'rg16snorm' | 'rg16uint' | 'rg16sint' | 'rg16float' | 'rg32uint' | 'rg32sint' | 'rg32float';
|
|
14
|
+
type TextureFormatRGB = 'rgb8unorm-webgl' | 'rgb8snorm-webgl' | 'rgb16unorm-webgl' | 'rgb16snorm-webgl' | 'rgb32float-webgl';
|
|
15
|
+
type TextureFormatRGBA = 'rgba8uint' | 'rgba8unorm' | 'rgba8unorm-srgb' | 'rgba8snorm' | 'bgra8unorm' | 'bgra8unorm-srgb' | 'rgba8sint' | 'rgba16unorm' | 'rgba16snorm' | 'rgba16uint' | 'rgba16sint' | 'rgba16float' | 'rgba32uint' | 'rgba32sint' | 'rgba32float';
|
|
16
|
+
type TextureFormatPackedRGB = 'rgb565unorm-webgl' | 'rgb9e5ufloat' | 'rg11b10ufloat';
|
|
17
|
+
type TextureFormatPackedRGBA = 'rgba4unorm-webgl' | 'rgb5a1unorm-webgl' | 'rgb10a2unorm' | 'rgb10a2uint';
|
|
18
|
+
type TextureFormatUnorm8 = 'r8unorm' | 'rg8unorm' | 'rgb8unorm-webgl' | 'rgba8unorm' | 'rgba8unorm-srgb' | 'bgra8unorm' | 'bgra8unorm-srgb';
|
|
19
|
+
type TextureFormatSnorm8 = 'r8snorm' | 'rg8snorm' | 'rgb8snorm-webgl' | 'rgba8snorm';
|
|
20
|
+
type TextureFormatUint8 = 'r8uint' | 'rg8uint' | 'rgba8uint';
|
|
21
|
+
type TextureFormatSint8 = 'r8sint' | 'rg8sint' | 'rgba8sint';
|
|
22
|
+
type TextureFormatUnorm16 = 'r16unorm' | 'rg16unorm' | 'rgb16unorm-webgl' | 'rgba16unorm';
|
|
23
|
+
type TextureFormatSnorm16 = 'r16snorm' | 'rg16snorm' | 'rgb16snorm-webgl' | 'rgba16snorm';
|
|
24
|
+
type TextureFormatUint16 = 'r16uint' | 'rg16uint' | 'rgba16uint';
|
|
25
|
+
type TextureFormatSint16 = 'r16sint' | 'rg16sint' | 'rgba16sint';
|
|
26
|
+
type TextureFormatFloat16 = 'r16float' | 'rg16float' | 'rgba16float';
|
|
27
|
+
type TextureFormatUint32 = 'r32uint' | 'rg32uint' | 'rgba32uint';
|
|
28
|
+
type TextureFormatSint32 = 'r32sint' | 'rg32sint' | 'rgba32sint';
|
|
29
|
+
type TextureFormatFloat32 = 'r32float' | 'rg32float' | 'rgb32float-webgl' | 'rgba32float';
|
|
30
|
+
type TextureFormatPacked16 = 'rgba4unorm-webgl' | 'rgb565unorm-webgl' | 'rgb5a1unorm-webgl';
|
|
31
|
+
type TextureFormatPacked32 = 'rgb9e5ufloat' | 'rg11b10ufloat' | 'rgb10a2unorm' | 'rgb10a2uint';
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=texture-format-generics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-generics.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/textures/texture-format-generics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-generics.js","sourceRoot":"","sources":["../../../src/shadertypes/textures/texture-format-generics.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TextureFormat, TextureFeature, TextureFormatInfo } from "
|
|
1
|
+
import { TextureFormat, TextureFeature, TextureFormatInfo } from "./texture-formats.js";
|
|
2
2
|
/** https://www.w3.org/TR/webgpu/#texture-format-caps */
|
|
3
3
|
/** Internal type representing texture capabilities */
|
|
4
4
|
type TextureFormatDefinition = Partial<TextureFormatInfo> & {
|
|
@@ -22,5 +22,6 @@ type TextureFormatDefinition = Partial<TextureFormatInfo> & {
|
|
|
22
22
|
};
|
|
23
23
|
export declare function getTextureFormatDefinition(format: TextureFormat): TextureFormatDefinition;
|
|
24
24
|
export declare function getTextureFormatTable(): Readonly<Record<TextureFormat, TextureFormatDefinition>>;
|
|
25
|
+
export declare const TEXTURE_FORMAT_TABLE: Readonly<Record<TextureFormat, TextureFormatDefinition>>;
|
|
25
26
|
export {};
|
|
26
27
|
//# sourceMappingURL=texture-format-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-table.d.ts","sourceRoot":"","sources":["../../../src/shadertypes/textures/texture-format-table.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EAGb,cAAc,EACd,iBAAiB,EAElB,6BAA0B;AAqB3B,wDAAwD;AAExD,sDAAsD;AACtD,KAAK,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG;IAC1D,qCAAqC;IACrC,CAAC,CAAC,EAAE,cAAc,CAAC;IACnB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IAChC,0FAA0F;IAC1F,MAAM,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IAChC,KAAK,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IAE/B,wDAAwD;IACxD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,eAAe;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,iCAAiC;IACjC,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,GAAG,uBAAuB,CAMzF;AAED,wBAAgB,qBAAqB,IAAI,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC,CAEhG;AA8KD,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAGzF,CAAC"}
|
|
@@ -28,70 +28,62 @@ export function getTextureFormatTable() {
|
|
|
28
28
|
return TEXTURE_FORMAT_TABLE;
|
|
29
29
|
}
|
|
30
30
|
// prettier-ignore
|
|
31
|
-
const
|
|
31
|
+
const TEXTURE_FORMAT_COLOR_DEPTH_TABLE = {
|
|
32
32
|
// 8-bit formats
|
|
33
33
|
'r8unorm': {},
|
|
34
|
-
'r8snorm': { render: snorm8_renderable },
|
|
35
|
-
'r8uint': {},
|
|
36
|
-
'r8sint': {},
|
|
37
|
-
// 16-bit formats
|
|
38
34
|
'rg8unorm': {},
|
|
39
|
-
'rg8snorm': { render: snorm8_renderable },
|
|
40
|
-
'rg8uint': {},
|
|
41
|
-
'rg8sint': {},
|
|
42
|
-
'r16uint': {},
|
|
43
|
-
'r16sint': {},
|
|
44
|
-
'r16float': { render: float16_renderable, filter: 'float16-filterable-webgl' },
|
|
45
|
-
'r16unorm-webgl': { f: norm16_renderable },
|
|
46
|
-
'r16snorm-webgl': { f: snorm16_renderable },
|
|
47
|
-
// Packed 16-bit formats
|
|
48
|
-
'rgba4unorm-webgl': { channels: 'rgba', bitsPerChannel: [4, 4, 4, 4], packed: true },
|
|
49
|
-
'rgb565unorm-webgl': { channels: 'rgb', bitsPerChannel: [5, 6, 5, 0], packed: true },
|
|
50
|
-
'rgb5a1unorm-webgl': { channels: 'rgba', bitsPerChannel: [5, 5, 5, 1], packed: true },
|
|
51
|
-
// 24-bit formats
|
|
52
35
|
'rgb8unorm-webgl': {},
|
|
53
|
-
'rgb8snorm-webgl': {},
|
|
54
|
-
// 32-bit formats
|
|
55
36
|
'rgba8unorm': {},
|
|
56
37
|
'rgba8unorm-srgb': {},
|
|
38
|
+
'r8snorm': { render: snorm8_renderable },
|
|
39
|
+
'rg8snorm': { render: snorm8_renderable },
|
|
40
|
+
'rgb8snorm-webgl': {},
|
|
57
41
|
'rgba8snorm': { render: snorm8_renderable },
|
|
42
|
+
'r8uint': {},
|
|
43
|
+
'rg8uint': {},
|
|
58
44
|
'rgba8uint': {},
|
|
45
|
+
'r8sint': {},
|
|
46
|
+
'rg8sint': {},
|
|
59
47
|
'rgba8sint': {},
|
|
60
|
-
// 32-bit, reverse colors, webgpu only
|
|
61
48
|
'bgra8unorm': {},
|
|
62
49
|
'bgra8unorm-srgb': {},
|
|
50
|
+
'r16unorm': { f: norm16_renderable },
|
|
51
|
+
'rg16unorm': { render: norm16_renderable },
|
|
52
|
+
'rgb16unorm-webgl': { f: norm16_renderable }, // rgb not renderable
|
|
53
|
+
'rgba16unorm': { render: norm16_renderable },
|
|
54
|
+
'r16snorm': { f: snorm16_renderable },
|
|
55
|
+
'rg16snorm': { render: snorm16_renderable },
|
|
56
|
+
'rgb16snorm-webgl': { f: norm16_renderable }, // rgb not renderable
|
|
57
|
+
'rgba16snorm': { render: snorm16_renderable },
|
|
58
|
+
'r16uint': {},
|
|
63
59
|
'rg16uint': {},
|
|
60
|
+
'rgba16uint': {},
|
|
61
|
+
'r16sint': {},
|
|
64
62
|
'rg16sint': {},
|
|
63
|
+
'rgba16sint': {},
|
|
64
|
+
'r16float': { render: float16_renderable, filter: 'float16-filterable-webgl' },
|
|
65
65
|
'rg16float': { render: float16_renderable, filter: float16_filterable },
|
|
66
|
-
'
|
|
67
|
-
'rg16snorm-webgl': { render: snorm16_renderable },
|
|
66
|
+
'rgba16float': { render: float16_renderable, filter: float16_filterable },
|
|
68
67
|
'r32uint': {},
|
|
68
|
+
'rg32uint': {},
|
|
69
|
+
'rgba32uint': {},
|
|
69
70
|
'r32sint': {},
|
|
71
|
+
'rg32sint': {},
|
|
72
|
+
'rgba32sint': {},
|
|
70
73
|
'r32float': { render: float32_renderable, filter: float32_filterable },
|
|
74
|
+
'rg32float': { render: false, filter: float32_filterable },
|
|
75
|
+
'rgb32float-webgl': { render: float32_renderable, filter: float32_filterable },
|
|
76
|
+
'rgba32float': { render: float32_renderable, filter: float32_filterable },
|
|
77
|
+
// Packed 16-bit formats
|
|
78
|
+
'rgba4unorm-webgl': { channels: 'rgba', bitsPerChannel: [4, 4, 4, 4], packed: true },
|
|
79
|
+
'rgb565unorm-webgl': { channels: 'rgb', bitsPerChannel: [5, 6, 5, 0], packed: true },
|
|
80
|
+
'rgb5a1unorm-webgl': { channels: 'rgba', bitsPerChannel: [5, 5, 5, 1], packed: true },
|
|
71
81
|
// Packed 32 bit formats
|
|
72
82
|
'rgb9e5ufloat': { channels: 'rgb', packed: true, render: rgb9e5ufloat_renderable }, // , filter: true},
|
|
73
83
|
'rg11b10ufloat': { channels: 'rgb', bitsPerChannel: [11, 11, 10, 0], packed: true, p: 1, render: float32_renderable },
|
|
74
84
|
'rgb10a2unorm': { channels: 'rgba', bitsPerChannel: [10, 10, 10, 2], packed: true, p: 1 },
|
|
75
85
|
'rgb10a2uint': { channels: 'rgba', bitsPerChannel: [10, 10, 10, 2], packed: true, p: 1 },
|
|
76
|
-
//
|
|
77
|
-
'rgb16unorm-webgl': { f: norm16_renderable }, // rgb not renderable
|
|
78
|
-
'rgb16snorm-webgl': { f: norm16_renderable }, // rgb not renderable
|
|
79
|
-
// 64-bit formats
|
|
80
|
-
'rg32uint': {},
|
|
81
|
-
'rg32sint': {},
|
|
82
|
-
'rg32float': { render: false, filter: float32_filterable },
|
|
83
|
-
'rgba16uint': {},
|
|
84
|
-
'rgba16sint': {},
|
|
85
|
-
'rgba16float': { render: float16_renderable, filter: float16_filterable },
|
|
86
|
-
'rgba16unorm-webgl': { render: norm16_renderable },
|
|
87
|
-
'rgba16snorm-webgl': { render: snorm16_renderable },
|
|
88
|
-
// 96-bit formats (deprecated!)
|
|
89
|
-
'rgb32float-webgl': { render: float32_renderable, filter: float32_filterable },
|
|
90
|
-
// 128-bit formats
|
|
91
|
-
'rgba32uint': {},
|
|
92
|
-
'rgba32sint': {},
|
|
93
|
-
'rgba32float': { render: float32_renderable, filter: float32_filterable },
|
|
94
|
-
// Depth/stencil
|
|
86
|
+
// Depth/stencil Formats
|
|
95
87
|
// Depth and stencil formats
|
|
96
88
|
stencil8: { attachment: 'stencil', bitsPerChannel: [8, 0, 0, 0], dataType: 'uint8' },
|
|
97
89
|
'depth16unorm': { attachment: 'depth', bitsPerChannel: [16, 0, 0, 0], dataType: 'uint16' },
|
|
@@ -101,6 +93,9 @@ const TEXTURE_FORMAT_TABLE = {
|
|
|
101
93
|
'depth24plus-stencil8': { attachment: 'depth-stencil', bitsPerChannel: [24, 8, 0, 0], packed: true },
|
|
102
94
|
// "depth32float-stencil8" feature
|
|
103
95
|
'depth32float-stencil8': { attachment: 'depth-stencil', bitsPerChannel: [32, 8, 0, 0], packed: true },
|
|
96
|
+
};
|
|
97
|
+
// prettier-ignore
|
|
98
|
+
const TEXTURE_FORMAT_COMPRESSED_TABLE = {
|
|
104
99
|
// BC compressed formats: check device.features.has("texture-compression-bc");
|
|
105
100
|
'bc1-rgb-unorm-webgl': { f: texture_compression_bc },
|
|
106
101
|
'bc1-rgb-unorm-srgb-webgl': { f: texture_compression_bc },
|
|
@@ -171,4 +166,8 @@ const TEXTURE_FORMAT_TABLE = {
|
|
|
171
166
|
'atc-rgba-unorm-webgl': { f: texture_compression_atc_webgl },
|
|
172
167
|
'atc-rgbai-unorm-webgl': { f: texture_compression_atc_webgl }
|
|
173
168
|
};
|
|
169
|
+
export const TEXTURE_FORMAT_TABLE = {
|
|
170
|
+
...TEXTURE_FORMAT_COLOR_DEPTH_TABLE,
|
|
171
|
+
...TEXTURE_FORMAT_COMPRESSED_TABLE
|
|
172
|
+
};
|
|
174
173
|
//# sourceMappingURL=texture-format-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-format-table.js","sourceRoot":"","sources":["../../../src/shadertypes/textures/texture-format-table.ts"],"names":[],"mappings":"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"}
|