mirror of
https://github.com/BinomialLLC/basis_universal.git
synced 2026-06-08 00:23:52 +00:00
Adding new fields to the basis header: texture type and framerate. Texture type may be 2D, 2D array, video, volume, or cubemap array. The compressor makes sure that anything other than pure 2D follows certain constraints (cubemap arrays must have a multiple of 6 input images, videos/texture array images all must have the same resolution/# of mipmaps, etc.) When unpacking cubemaps, the -unpack command now writes cubemap .KTX files which various tools like PVRTexTool support.
71 lines
2.1 KiB
C++
71 lines
2.1 KiB
C++
// basisu_basis_file.h
|
|
// Copyright (C) 2017-2019 Binomial LLC. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
#pragma once
|
|
#include "transcoder/basisu_file_headers.h"
|
|
#include "basisu_backend.h"
|
|
|
|
namespace basisu
|
|
{
|
|
class basisu_file
|
|
{
|
|
BASISU_NO_EQUALS_OR_COPY_CONSTRUCT(basisu_file);
|
|
|
|
public:
|
|
basisu_file()
|
|
{
|
|
}
|
|
|
|
void clear()
|
|
{
|
|
m_comp_data.clear();
|
|
|
|
clear_obj(m_header);
|
|
m_images_descs.clear();
|
|
|
|
m_header_file_ofs = 0;
|
|
m_slice_descs_file_ofs = 0;
|
|
m_endpoint_cb_file_ofs = 0;
|
|
m_selector_cb_file_ofs = 0;
|
|
m_tables_file_ofs = 0;
|
|
m_first_image_file_ofs = 0;
|
|
m_total_file_size = 0;
|
|
}
|
|
|
|
bool init(const basisu_backend_output& encoder_output, basist::basis_texture_type tex_type, uint32_t userdata0, uint32_t userdata1, bool y_flipped, uint32_t us_per_frame);
|
|
|
|
const uint8_vec &get_compressed_data() const { return m_comp_data; }
|
|
|
|
private:
|
|
basist::basis_file_header m_header;
|
|
std::vector<basist::basis_slice_desc> m_images_descs;
|
|
|
|
uint8_vec m_comp_data;
|
|
|
|
uint32_t m_header_file_ofs;
|
|
uint32_t m_slice_descs_file_ofs;
|
|
uint32_t m_endpoint_cb_file_ofs;
|
|
uint32_t m_selector_cb_file_ofs;
|
|
uint32_t m_tables_file_ofs;
|
|
uint32_t m_first_image_file_ofs;
|
|
uint32_t m_total_file_size;
|
|
|
|
void create_header(const basisu_backend_output& encoder_output, basist::basis_texture_type tex_type, uint32_t userdata0, uint32_t userdata1, bool y_flipped, uint32_t us_per_frame);
|
|
bool create_image_descs(const basisu_backend_output& encoder_output);
|
|
void create_comp_data(const basisu_backend_output& encoder_output);
|
|
void fixup_crcs();
|
|
};
|
|
|
|
} // namespace basisu
|