pixelformat.h 6.1 KB

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