@@ -608,6 +608,27 @@ MESHOPTIMIZER_API void meshopt_spatialSortRemap(unsigned int* destination, const
608
608
*/
609
609
MESHOPTIMIZER_EXPERIMENTAL void meshopt_spatialSortTriangles (unsigned int * destination, const unsigned int * indices, size_t index_count, const float * vertex_positions, size_t vertex_count, size_t vertex_positions_stride);
610
610
611
+ /* *
612
+ * Quantize a float into half-precision (as defined by IEEE-754 fp16) floating point value
613
+ * Generates +-inf for overflow, preserves NaN, flushes denormals to zero, rounds to nearest
614
+ * Representable magnitude range: [6e-5; 65504]
615
+ * Maximum relative reconstruction error: 5e-4
616
+ */
617
+ MESHOPTIMIZER_API unsigned short meshopt_quantizeHalf (float v);
618
+
619
+ /* *
620
+ * Quantize a float into a floating point value with a limited number of significant mantissa bits, preserving the IEEE-754 fp32 binary representation
621
+ * Generates +-inf for overflow, preserves NaN, flushes denormals to zero, rounds to nearest
622
+ * Assumes N is in a valid mantissa precision range, which is 1..23
623
+ */
624
+ MESHOPTIMIZER_API float meshopt_quantizeFloat (float v, int N);
625
+
626
+ /* *
627
+ * Reverse quantization of a half-precision (as defined by IEEE-754 fp16) floating point value
628
+ * Preserves Inf/NaN, flushes denormals to zero
629
+ */
630
+ MESHOPTIMIZER_API float meshopt_dequantizeHalf (unsigned short h);
631
+
611
632
/* *
612
633
* Set allocation callbacks
613
634
* These callbacks will be used instead of the default operator new/operator delete for all temporary allocations in the library.
@@ -620,7 +641,7 @@ MESHOPTIMIZER_API void meshopt_setAllocator(void* (MESHOPTIMIZER_ALLOC_CALLCONV*
620
641
} /* extern "C" */
621
642
#endif
622
643
623
- /* Quantization into commonly supported data formats */
644
+ /* Quantization into fixed point normalized formats; these are only available as inline C++ functions */
624
645
#ifdef __cplusplus
625
646
/* *
626
647
* Quantize a float in [0..1] range into an N-bit fixed point unorm value
@@ -635,27 +656,6 @@ inline int meshopt_quantizeUnorm(float v, int N);
635
656
* Maximum reconstruction error: 1/2^N
636
657
*/
637
658
inline int meshopt_quantizeSnorm (float v, int N);
638
-
639
- /* *
640
- * Quantize a float into half-precision (as defined by IEEE-754 fp16) floating point value
641
- * Generates +-inf for overflow, preserves NaN, flushes denormals to zero, rounds to nearest
642
- * Representable magnitude range: [6e-5; 65504]
643
- * Maximum relative reconstruction error: 5e-4
644
- */
645
- MESHOPTIMIZER_API unsigned short meshopt_quantizeHalf (float v);
646
-
647
- /* *
648
- * Quantize a float into a floating point value with a limited number of significant mantissa bits, preserving the IEEE-754 fp32 binary representation
649
- * Generates +-inf for overflow, preserves NaN, flushes denormals to zero, rounds to nearest
650
- * Assumes N is in a valid mantissa precision range, which is 1..23
651
- */
652
- MESHOPTIMIZER_API float meshopt_quantizeFloat (float v, int N);
653
-
654
- /* *
655
- * Reverse quantization of a half-precision (as defined by IEEE-754 fp16) floating point value
656
- * Preserves Inf/NaN, flushes denormals to zero
657
- */
658
- MESHOPTIMIZER_API float meshopt_dequantizeHalf (unsigned short h);
659
659
#endif
660
660
661
661
/* *
0 commit comments