This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
// File: crn_dxt5a.h
|
||||
// See Copyright Notice and license at the end of inc/crnlib.h
|
||||
#pragma once
|
||||
#include "crn_dxt.h"
|
||||
|
||||
namespace crnlib
|
||||
{
|
||||
class dxt5_endpoint_optimizer
|
||||
{
|
||||
public:
|
||||
dxt5_endpoint_optimizer();
|
||||
|
||||
struct params
|
||||
{
|
||||
params() :
|
||||
m_block_index(0),
|
||||
m_pPixels(NULL),
|
||||
m_num_pixels(0),
|
||||
m_comp_index(3),
|
||||
m_quality(cCRNDXTQualityUber),
|
||||
m_use_both_block_types(true)
|
||||
{
|
||||
}
|
||||
|
||||
uint m_block_index;
|
||||
|
||||
const color_quad_u8* m_pPixels;
|
||||
uint m_num_pixels;
|
||||
uint m_comp_index;
|
||||
|
||||
crn_dxt_quality m_quality;
|
||||
|
||||
bool m_use_both_block_types;
|
||||
};
|
||||
|
||||
struct results
|
||||
{
|
||||
uint8* m_pSelectors;
|
||||
|
||||
uint64 m_error;
|
||||
|
||||
uint8 m_first_endpoint;
|
||||
uint8 m_second_endpoint;
|
||||
|
||||
uint8 m_block_type; // 1 if 6-alpha, otherwise 8-alpha
|
||||
};
|
||||
|
||||
bool compute(const params& p, results& r);
|
||||
|
||||
private:
|
||||
const params* m_pParams;
|
||||
results* m_pResults;
|
||||
|
||||
crnlib::vector<uint8> m_unique_values;
|
||||
crnlib::vector<uint> m_unique_value_weights;
|
||||
|
||||
crnlib::vector<uint8> m_trial_selectors;
|
||||
crnlib::vector<uint8> m_best_selectors;
|
||||
int m_unique_value_map[256];
|
||||
|
||||
sparse_bit_array m_flags;
|
||||
|
||||
void evaluate_solution(uint low_endpoint, uint high_endpoint);
|
||||
};
|
||||
|
||||
} // namespace crnlib
|
||||
Reference in New Issue
Block a user