1 /* 2 * Copyright 2011-2019 Branimir Karadzic. All rights reserved. 3 * License: https://github.com/bkaradzic/bx#license-bsd-2-clause 4 */ 5 6 #ifndef BX_PIXEL_FORMAT_H_HEADER_GUARD 7 #define BX_PIXEL_FORMAT_H_HEADER_GUARD 8 9 #include "math.h" 10 #include "uint32_t.h" 11 12 namespace bx 13 { 14 /// 15 struct EncodingType 16 { 17 enum Enum /// 18 { 19 Unorm, 20 Int, 21 Uint, 22 Float, 23 Snorm, 24 25 Count 26 }; 27 }; 28 29 typedef void (*PackFn)(void*, const float*); 30 typedef void (*UnpackFn)(float*, const void*); 31 32 /// 33 uint32_t toUnorm(float _value, float _scale); 34 35 /// 36 float fromUnorm(uint32_t _value, float _scale); 37 38 /// 39 int32_t toSnorm(float _value, float _scale); 40 41 /// 42 float fromSnorm(int32_t _value, float _scale); 43 44 // A8 45 void packA8(void* _dst, const float* _src); 46 void unpackA8(float* _dst, const void* _src); 47 48 // R8 49 void packR8(void* _dst, const float* _src); 50 void unpackR8(float* _dst, const void* _src); 51 52 // R8S 53 void packR8S(void* _dst, const float* _src); 54 void unpackR8S(float* _dst, const void* _src); 55 56 // R8I 57 void packR8I(void* _dst, const float* _src); 58 void unpackR8I(float* _dst, const void* _src); 59 60 // R8U 61 void packR8U(void* _dst, const float* _src); 62 void unpackR8U(float* _dst, const void* _src); 63 64 // RG8 65 void packRg8(void* _dst, const float* _src); 66 void unpackRg8(float* _dst, const void* _src); 67 68 // RG8S 69 void packRg8S(void* _dst, const float* _src); 70 void unpackRg8S(float* _dst, const void* _src); 71 72 // RG8I 73 void packRg8I(void* _dst, const float* _src); 74 void unpackRg8I(float* _dst, const void* _src); 75 76 // RG8U 77 void packRg8U(void* _dst, const float* _src); 78 void unpackRg8U(float* _dst, const void* _src); 79 80 // RGB8 81 void packRgb8(void* _dst, const float* _src); 82 void unpackRgb8(float* _dst, const void* _src); 83 84 // RGB8S 85 void packRgb8S(void* _dst, const float* _src); 86 void unpackRgb8S(float* _dst, const void* _src); 87 88 // RGB8I 89 void packRgb8I(void* _dst, const float* _src); 90 void unpackRgb8I(float* _dst, const void* _src); 91 92 // RGB8U 93 void packRgb8U(void* _dst, const float* _src); 94 void unpackRgb8U(float* _dst, const void* _src); 95 96 // RGBA8 97 void packRgba8(void* _dst, const float* _src); 98 void unpackRgba8(float* _dst, const void* _src); 99 100 // BGRA8 101 void packBgra8(void* _dst, const float* _src); 102 void unpackBgra8(float* _dst, const void* _src); 103 104 // RGBA8S 105 void packRgba8S(void* _dst, const float* _src); 106 void unpackRgba8S(float* _dst, const void* _src); 107 108 // RGBA8I 109 void packRgba8I(void* _dst, const float* _src); 110 void unpackRgba8I(float* _dst, const void* _src); 111 112 // RGBA8U 113 void packRgba8U(void* _dst, const float* _src); 114 void unpackRgba8U(float* _dst, const void* _src); 115 116 // R16 117 void packR16(void* _dst, const float* _src); 118 void unpackR16(float* _dst, const void* _src); 119 120 // R16S 121 void packR16S(void* _dst, const float* _src); 122 void unpackR16S(float* _dst, const void* _src); 123 124 // R16I 125 void packR16I(void* _dst, const float* _src); 126 void unpackR16I(float* _dst, const void* _src); 127 128 // R16U 129 void packR16U(void* _dst, const float* _src); 130 void unpackR16U(float* _dst, const void* _src); 131 132 // R16F 133 void packR16F(void* _dst, const float* _src); 134 void unpackR16F(float* _dst, const void* _src); 135 136 // RG16 137 void packRg16(void* _dst, const float* _src); 138 void unpackRg16(float* _dst, const void* _src); 139 140 // RG16S 141 void packRg16S(void* _dst, const float* _src); 142 void unpackRg16S(float* _dst, const void* _src); 143 144 // RG16I 145 void packRg16I(void* _dst, const float* _src); 146 void unpackRg16I(float* _dst, const void* _src); 147 148 // RG16U 149 void packRg16U(void* _dst, const float* _src); 150 void unpackRg16U(float* _dst, const void* _src); 151 152 // RG16F 153 void packRg16F(void* _dst, const float* _src); 154 void unpackRg16F(float* _dst, const void* _src); 155 156 // RGBA16 157 void packRgba16(void* _dst, const float* _src); 158 void unpackRgba16(float* _dst, const void* _src); 159 160 // RGBA16S 161 void packRgba16S(void* _dst, const float* _src); 162 void unpackRgba16S(float* _dst, const void* _src); 163 164 // RGBA16I 165 void packRgba16I(void* _dst, const float* _src); 166 void unpackRgba16I(float* _dst, const void* _src); 167 168 // RGBA16U 169 void packRgba16U(void* _dst, const float* _src); 170 void unpackRgba16U(float* _dst, const void* _src); 171 172 // RGBA16F 173 void packRgba16F(void* _dst, const float* _src); 174 void unpackRgba16F(float* _dst, const void* _src); 175 176 // R32I 177 void packR32I(void* _dst, const float* _src); 178 void unpackR32I(float* _dst, const void* _src); 179 180 // R32U 181 void packR32U(void* _dst, const float* _src); 182 void unpackR32U(float* _dst, const void* _src); 183 184 // R32F 185 void packR32F(void* _dst, const float* _src); 186 void unpackR32F(float* _dst, const void* _src); 187 188 // RG32I 189 void packRg32I(void* _dst, const float* _src); 190 void unpackRg32I(float* _dst, const void* _src); 191 192 // RG32U 193 void packRg32U(void* _dst, const float* _src); 194 void unpackRg32U(float* _dst, const void* _src); 195 196 // RGB9E5F 197 void packRgb9E5F(void* _dst, const float* _src); 198 void unpackRgb9E5F(float* _dst, const void* _src); 199 200 // RGBA32I 201 void packRgba32I(void* _dst, const float* _src); 202 void unpackRgba32I(float* _dst, const void* _src); 203 204 // RGBA32U 205 void packRgba32U(void* _dst, const float* _src); 206 void unpackRgba32U(float* _dst, const void* _src); 207 208 // RGBA32F 209 void packRgba32F(void* _dst, const float* _src); 210 void unpackRgba32F(float* _dst, const void* _src); 211 212 // R5G6B5 213 void packR5G6B5(void* _dst, const float* _src); 214 void unpackR5G6B5(float* _dst, const void* _src); 215 216 // RGBA4 217 void packRgba4(void* _dst, const float* _src); 218 void unpackRgba4(float* _dst, const void* _src); 219 220 // RGBA4 221 void packBgra4(void* _dst, const float* _src); 222 void unpackBgra4(float* _dst, const void* _src); 223 224 // RGB5A1 225 void packRgb5a1(void* _dst, const float* _src); 226 void unpackRgb5a1(float* _dst, const void* _src); 227 228 // BGR5A1 229 void packBgr5a1(void* _dst, const float* _src); 230 void unpackBgr5a1(float* _dst, const void* _src); 231 232 // RGB10A2 233 void packRgb10A2(void* _dst, const float* _src); 234 void unpackRgb10A2(float* _dst, const void* _src); 235 236 // RG11B10F 237 void packRG11B10F(void* _dst, const float* _src); 238 void unpackRG11B10F(float* _dst, const void* _src); 239 240 // RG32F 241 void packRg32F(void* _dst, const float* _src); 242 void unpackRg32F(float* _dst, const void* _src); 243 244 } // namespace bx 245 246 #include "inline/pixelformat.inl" 247 248 #endif // BX_PIXEL_FORMAT_H_HEADER_GUARD 249