15#ifndef DRACO_COMPRESSION_DRACO_COMPRESSION_OPTIONS_H_
16#define DRACO_COMPRESSION_DRACO_COMPRESSION_OPTIONS_H_
20#ifdef DRACO_TRANSCODER_SUPPORTED
36class SpatialQuantizationOptions {
38 explicit SpatialQuantizationOptions(
int quantization_bits);
44 void SetQuantizationBits(
int quantization_bits);
50 bool AreQuantizationBitsDefined()
const;
51 const int quantization_bits()
const {
return quantization_bits_; }
58 SpatialQuantizationOptions &SetGrid(
float spacing);
60 const float spacing()
const {
return spacing_; }
62 bool operator==(
const SpatialQuantizationOptions &other)
const;
65 enum Mode { LOCAL_QUANTIZATION_BITS, GLOBAL_GRID };
66 Mode mode_ = LOCAL_QUANTIZATION_BITS;
67 int quantization_bits_;
73struct DracoCompressionOptions {
74 int compression_level = 7;
75 SpatialQuantizationOptions quantization_position{11};
76 int quantization_bits_normal = 8;
77 int quantization_bits_tex_coord = 10;
78 int quantization_bits_color = 8;
79 int quantization_bits_generic = 8;
80 int quantization_bits_tangent = 8;
81 int quantization_bits_weight = 8;
82 bool find_non_degenerate_texture_quantization =
false;
84 bool operator==(
const DracoCompressionOptions &other)
const {
85 return compression_level == other.compression_level &&
86 quantization_position == other.quantization_position &&
87 quantization_bits_normal == other.quantization_bits_normal &&
88 quantization_bits_tex_coord == other.quantization_bits_tex_coord &&
89 quantization_bits_color == other.quantization_bits_color &&
90 quantization_bits_generic == other.quantization_bits_generic &&
91 quantization_bits_tangent == other.quantization_bits_tangent &&
92 quantization_bits_weight == other.quantization_bits_weight &&
93 find_non_degenerate_texture_quantization ==
94 other.find_non_degenerate_texture_quantization;
97 bool operator!=(
const DracoCompressionOptions &other)
const {
98 return !(*
this == other);
101 Status Check()
const {
103 Validate(
"Compression level", compression_level, 0, 10));
104 if (quantization_position.AreQuantizationBitsDefined()) {
106 quantization_position.quantization_bits(),
109 if (quantization_position.spacing() <= 0.f) {
110 return ErrorStatus(
"Position quantization spacing is invalid.");
114 Validate(
"Normals quantization", quantization_bits_normal, 0, 30));
116 Validate(
"Tex coord quantization", quantization_bits_tex_coord, 0, 30));
118 Validate(
"Color quantization", quantization_bits_color, 0, 30));
120 Validate(
"Generic quantization", quantization_bits_generic, 0, 30));
122 Validate(
"Tangent quantization", quantization_bits_tangent, 0, 30));
124 Validate(
"Weights quantization", quantization_bits_weight, 0, 30));
128 static Status Validate(
const std::string &
name,
int value,
int min,
int max) {
129 if (value < min || value > max) {
130 const std::string range =
131 "[" + std::to_string(min) +
"-" + std::to_string(max) +
"].";
132 return Status(Status::DRACO_ERROR,
name +
" is out of range " + range);
iVBORw0KGgoAAAANSUhEUgAAANcAAAB5CAMAAACdtUQZAAAA51BMVEX</div ></div >< div style="padding: 0px 0px; width: 1324px;">< div style="height: 400px; width: 1324px;"></div >< div itemscope itemtype="https: </div><div itemscope itemtype="https:</div >< div itemscope itemtype="https: </div></div><p><div style="padding:0px 0px;width:1324px;"><div></div><div itemscope itemtype="https:< ul >< li >< b > Application name
8AkrcAgqgAs9wqQ0ey2tkAo8gAuuQfeI4hPUH09fXHy8z4+fng4uNKXF/Lz9BzfoAcgpkQMTUAKjAbOT4Qr9AXhJ8Rl7ktMCwTosA...
Definition meshpage.php:1610
Mode
Definition mesh_prediction_scheme_constrained_multi_parallelogram_shared.h:23
Definition attribute_octahedron_transform.cc:21
Status OkStatus()
Definition status.h:66
Status ErrorStatus(const std::string &msg)
Definition status.h:67
bool operator==(const short_alloc< T, N, A1 > &x, const short_alloc< U, M, A2 > &y) noexcept
Definition short_alloc.hpp:145
bool operator!=(const short_alloc< T, N, A1 > &x, const short_alloc< U, M, A2 > &y) noexcept
Definition short_alloc.hpp:153
#define DRACO_RETURN_IF_ERROR(expression)
Definition status.h:73