mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-04-21 13:19:57 +08:00
parent
f0747f0f82
commit
58ae243278
@ -5,7 +5,6 @@
|
||||
~~~~~
|
||||
void DecodeMetadata() {
|
||||
ParseMetadataCount();
|
||||
|
||||
for (i = 0; i < num_att_metadata; ++i) {
|
||||
ParseAttributeMetadataId(i);
|
||||
DecodeMetadataElement(att_metadata[i]);
|
||||
|
@ -39,7 +39,8 @@ void DecodeDataNeededByPortableTransforms() {
|
||||
if (seq_att_dec_decoder_type[curr_att_dec][curr_att] ==
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODER_NORMALS) {
|
||||
ParseQuantizationBits();
|
||||
} else if (seq_att_dec_decoder_type[curr_att_dec][curr_att] == SEQUENTIAL_ATTRIBUTE_ENCODER_QUANTIZATION) {
|
||||
} else if (seq_att_dec_decoder_type[curr_att_dec][curr_att] ==
|
||||
SEQUENTIAL_ATTRIBUTE_ENCODER_QUANTIZATION) {
|
||||
ParseQuantizationData();
|
||||
}
|
||||
}
|
||||
@ -229,7 +230,8 @@ void PredictionSchemeDifference_ComputeOriginalValues(num_values) {
|
||||
PredictionSchemeTransform_ComputeOriginalValue(
|
||||
&zero_vals[0], &signed_values[0], &out_values[0]);
|
||||
for (i = num_components; i < size; i += num_components) {
|
||||
PredictionSchemeTransform_ComputeOriginalValue(&out_values[i - num_components], &signed_values[i], &out_values[i]);
|
||||
PredictionSchemeTransform_ComputeOriginalValue(
|
||||
&out_values[i - num_components], &signed_values[i], &out_values[i]);
|
||||
}
|
||||
seq_int_att_dec_original_values[curr_att_dec][curr_att] = out_values;
|
||||
}
|
||||
|
@ -60,12 +60,14 @@ void MeshPredictionSchemeConstrainedMultiParallelogramDecoder_ComputeOriginalVal
|
||||
dst_offset = p * num_components;
|
||||
if (num_used_parallelograms == 0) {
|
||||
src_offset = (p - 1) * num_components;
|
||||
PredictionSchemeTransform_ComputeOriginalValue(&out_values[src_offset], &signed_values[dst_offset], &out_values[dst_offset]);
|
||||
PredictionSchemeTransform_ComputeOriginalValue(&out_values[src_offset],
|
||||
&signed_values[dst_offset], &out_values[dst_offset]);
|
||||
} else {
|
||||
for (c = 0; c < num_components; ++c) {
|
||||
multi_pred_vals[c] /= num_used_parallelograms;
|
||||
}
|
||||
PredictionSchemeTransform_ComputeOriginalValue(multi_pred_vals, &signed_values[dst_offset], &out_values[dst_offset]);
|
||||
PredictionSchemeTransform_ComputeOriginalValue(multi_pred_vals,
|
||||
&signed_values[dst_offset], &out_values[dst_offset]);
|
||||
}
|
||||
}
|
||||
seq_int_att_dec_original_values[curr_att_dec][curr_att] = out_values;
|
||||
|
@ -170,15 +170,16 @@ void MeshPredictionSchemeGeometricNormalDecoder_ComputeOriginalValues(num_values
|
||||
out_values = signed_values;
|
||||
for (data_id = 0; data_id < corner_map_size; ++data_id) {
|
||||
corner_id = encoded_attribute_value_index_to_corner_map[curr_att_dec][data_id];
|
||||
MeshPredictionSchemeGeometricNormalPredictorArea_ComputePredictedValue(corner_id, &pred_normal_3d);
|
||||
MeshPredictionSchemeGeometricNormalPredictorArea_ComputePredictedValue(
|
||||
corner_id, &pred_normal_3d);
|
||||
CanonicalizeIntegerVector(pred_normal_3d, center_value_);
|
||||
if (flip_normal_bits[data_id]) {
|
||||
for (i = 0; i < pred_normal_3d.size(); ++i) {
|
||||
pred_normal_3d[i] = -pred_normal_3d[i];
|
||||
}
|
||||
}
|
||||
IntegerVectorToQuantizedOctahedralCoords(&pred_normal_3d[0], &pred_normal_oct[0],
|
||||
&pred_normal_oct[1], center_value_, max_value_);
|
||||
IntegerVectorToQuantizedOctahedralCoords(&pred_normal_3d[0],
|
||||
&pred_normal_oct[0], &pred_normal_oct[1], center_value_, max_value_);
|
||||
data_offset = data_id * 2;
|
||||
PredictionSchemeNormalOctahedronCanonicalizedDecodingTransform_ComputeOriginalValue(
|
||||
&pred_normal_oct[0], &out_values[data_offset], &out_values[data_offset]);
|
||||
|
@ -55,13 +55,14 @@ void GetTexCoordForEntryId(entry_id, data, tex_coords) {
|
||||
void MeshPredictionSchemeTexCoordsPortablePredictor_ComputePredictedValue(
|
||||
corner_id, data, data_id, predicted_value_) {
|
||||
CornerToVerts(curr_att_dec, corner_id, &vert_id, &next_vert_id, &prev_vert_id);
|
||||
next_data_id = vertex_to_encoded_attribute_value_index_map[curr_att_dec][next_vert_id];
|
||||
prev_data_id = vertex_to_encoded_attribute_value_index_map[curr_att_dec][prev_vert_id];
|
||||
next_data_id =
|
||||
vertex_to_encoded_attribute_value_index_map[curr_att_dec][next_vert_id];
|
||||
prev_data_id =
|
||||
vertex_to_encoded_attribute_value_index_map[curr_att_dec][prev_vert_id];
|
||||
|
||||
if (prev_data_id < data_id && next_data_id < data_id) {
|
||||
GetTexCoordForEntryId(next_data_id, data, &n_uv);
|
||||
GetTexCoordForEntryId(prev_data_id, data, &p_uv);
|
||||
|
||||
if (p_uv == n_uv) {
|
||||
predicted_value_[0] = p_uv[0];
|
||||
predicted_value_[1] = p_uv[1];
|
||||
@ -128,14 +129,16 @@ void MeshPredictionSchemeTexCoordsPortablePredictor_ComputePredictedValue(
|
||||
### MeshPredictionSchemeTexCoordsPortableDecoder_ComputeOriginalValues()
|
||||
|
||||
~~~~~
|
||||
void MeshPredictionSchemeTexCoordsPortableDecoder_ComputeOriginalValues(num_values) {
|
||||
void MeshPredictionSchemeTexCoordsPortableDecoder_ComputeOriginalValues(num_values)
|
||||
{
|
||||
signed_values = seq_int_att_dec_symbols_to_signed_ints[curr_att_dec][curr_att];
|
||||
num_components = GetNumComponents();
|
||||
corner_map_size = num_values;
|
||||
out_values = signed_values;
|
||||
for (p = 0; p < corner_map_size; ++p) {
|
||||
corner_id = encoded_attribute_value_index_to_corner_map[curr_att_dec][p];
|
||||
MeshPredictionSchemeTexCoordsPortablePredictor_ComputePredictedValue(corner_id, &out_values[0], p, &predicted_value_);
|
||||
MeshPredictionSchemeTexCoordsPortablePredictor_ComputePredictedValue(
|
||||
corner_id, &out_values[0], p, &predicted_value_);
|
||||
dst_offset = p * num_components;
|
||||
PredictionSchemeWrapDecodingTransform_ComputeOriginalValue(
|
||||
&predicted_value_[0], &out_values[dst_offset], &out_values[dst_offset]);
|
||||
|
Loading…
x
Reference in New Issue
Block a user