1 | import { TYPES, FORMATS } from '@pixi/constants';
|
2 |
|
3 | function mapTypeAndFormatToInternalFormat(gl) {
|
4 | let table;
|
5 | if ("WebGL2RenderingContext" in globalThis && gl instanceof globalThis.WebGL2RenderingContext) {
|
6 | table = {
|
7 | [TYPES.UNSIGNED_BYTE]: {
|
8 | [FORMATS.RGBA]: gl.RGBA8,
|
9 | [FORMATS.RGB]: gl.RGB8,
|
10 | [FORMATS.RG]: gl.RG8,
|
11 | [FORMATS.RED]: gl.R8,
|
12 | [FORMATS.RGBA_INTEGER]: gl.RGBA8UI,
|
13 | [FORMATS.RGB_INTEGER]: gl.RGB8UI,
|
14 | [FORMATS.RG_INTEGER]: gl.RG8UI,
|
15 | [FORMATS.RED_INTEGER]: gl.R8UI,
|
16 | [FORMATS.ALPHA]: gl.ALPHA,
|
17 | [FORMATS.LUMINANCE]: gl.LUMINANCE,
|
18 | [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA
|
19 | },
|
20 | [TYPES.BYTE]: {
|
21 | [FORMATS.RGBA]: gl.RGBA8_SNORM,
|
22 | [FORMATS.RGB]: gl.RGB8_SNORM,
|
23 | [FORMATS.RG]: gl.RG8_SNORM,
|
24 | [FORMATS.RED]: gl.R8_SNORM,
|
25 | [FORMATS.RGBA_INTEGER]: gl.RGBA8I,
|
26 | [FORMATS.RGB_INTEGER]: gl.RGB8I,
|
27 | [FORMATS.RG_INTEGER]: gl.RG8I,
|
28 | [FORMATS.RED_INTEGER]: gl.R8I
|
29 | },
|
30 | [TYPES.UNSIGNED_SHORT]: {
|
31 | [FORMATS.RGBA_INTEGER]: gl.RGBA16UI,
|
32 | [FORMATS.RGB_INTEGER]: gl.RGB16UI,
|
33 | [FORMATS.RG_INTEGER]: gl.RG16UI,
|
34 | [FORMATS.RED_INTEGER]: gl.R16UI,
|
35 | [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT16
|
36 | },
|
37 | [TYPES.SHORT]: {
|
38 | [FORMATS.RGBA_INTEGER]: gl.RGBA16I,
|
39 | [FORMATS.RGB_INTEGER]: gl.RGB16I,
|
40 | [FORMATS.RG_INTEGER]: gl.RG16I,
|
41 | [FORMATS.RED_INTEGER]: gl.R16I
|
42 | },
|
43 | [TYPES.UNSIGNED_INT]: {
|
44 | [FORMATS.RGBA_INTEGER]: gl.RGBA32UI,
|
45 | [FORMATS.RGB_INTEGER]: gl.RGB32UI,
|
46 | [FORMATS.RG_INTEGER]: gl.RG32UI,
|
47 | [FORMATS.RED_INTEGER]: gl.R32UI,
|
48 | [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT24
|
49 | },
|
50 | [TYPES.INT]: {
|
51 | [FORMATS.RGBA_INTEGER]: gl.RGBA32I,
|
52 | [FORMATS.RGB_INTEGER]: gl.RGB32I,
|
53 | [FORMATS.RG_INTEGER]: gl.RG32I,
|
54 | [FORMATS.RED_INTEGER]: gl.R32I
|
55 | },
|
56 | [TYPES.FLOAT]: {
|
57 | [FORMATS.RGBA]: gl.RGBA32F,
|
58 | [FORMATS.RGB]: gl.RGB32F,
|
59 | [FORMATS.RG]: gl.RG32F,
|
60 | [FORMATS.RED]: gl.R32F,
|
61 | [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT32F
|
62 | },
|
63 | [TYPES.HALF_FLOAT]: {
|
64 | [FORMATS.RGBA]: gl.RGBA16F,
|
65 | [FORMATS.RGB]: gl.RGB16F,
|
66 | [FORMATS.RG]: gl.RG16F,
|
67 | [FORMATS.RED]: gl.R16F
|
68 | },
|
69 | [TYPES.UNSIGNED_SHORT_5_6_5]: {
|
70 | [FORMATS.RGB]: gl.RGB565
|
71 | },
|
72 | [TYPES.UNSIGNED_SHORT_4_4_4_4]: {
|
73 | [FORMATS.RGBA]: gl.RGBA4
|
74 | },
|
75 | [TYPES.UNSIGNED_SHORT_5_5_5_1]: {
|
76 | [FORMATS.RGBA]: gl.RGB5_A1
|
77 | },
|
78 | [TYPES.UNSIGNED_INT_2_10_10_10_REV]: {
|
79 | [FORMATS.RGBA]: gl.RGB10_A2,
|
80 | [FORMATS.RGBA_INTEGER]: gl.RGB10_A2UI
|
81 | },
|
82 | [TYPES.UNSIGNED_INT_10F_11F_11F_REV]: {
|
83 | [FORMATS.RGB]: gl.R11F_G11F_B10F
|
84 | },
|
85 | [TYPES.UNSIGNED_INT_5_9_9_9_REV]: {
|
86 | [FORMATS.RGB]: gl.RGB9_E5
|
87 | },
|
88 | [TYPES.UNSIGNED_INT_24_8]: {
|
89 | [FORMATS.DEPTH_STENCIL]: gl.DEPTH24_STENCIL8
|
90 | },
|
91 | [TYPES.FLOAT_32_UNSIGNED_INT_24_8_REV]: {
|
92 | [FORMATS.DEPTH_STENCIL]: gl.DEPTH32F_STENCIL8
|
93 | }
|
94 | };
|
95 | } else {
|
96 | table = {
|
97 | [TYPES.UNSIGNED_BYTE]: {
|
98 | [FORMATS.RGBA]: gl.RGBA,
|
99 | [FORMATS.RGB]: gl.RGB,
|
100 | [FORMATS.ALPHA]: gl.ALPHA,
|
101 | [FORMATS.LUMINANCE]: gl.LUMINANCE,
|
102 | [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA
|
103 | },
|
104 | [TYPES.UNSIGNED_SHORT_5_6_5]: {
|
105 | [FORMATS.RGB]: gl.RGB
|
106 | },
|
107 | [TYPES.UNSIGNED_SHORT_4_4_4_4]: {
|
108 | [FORMATS.RGBA]: gl.RGBA
|
109 | },
|
110 | [TYPES.UNSIGNED_SHORT_5_5_5_1]: {
|
111 | [FORMATS.RGBA]: gl.RGBA
|
112 | }
|
113 | };
|
114 | }
|
115 | return table;
|
116 | }
|
117 |
|
118 | export { mapTypeAndFormatToInternalFormat };
|
119 |
|