Files
CDAG/Research/scene/TextureCompressor/BlockHashers.h

34 lines
808 B
C++

#pragma once
#include <unordered_map>
#include "../../core/Defines.h"
#include "../../core/BitHelper.h"
#include "../Material/Block.h"
#include "../Material/MaterialLibraryPointer.h"
namespace std
{
//template<>
//struct hash<Block<MaterialLibraryPointer>>
//{
// size_t operator()(const Block<MaterialLibraryPointer> &value) const
// {
// size_t res = 0;
// for (size_t i = 0; i < value.size(); i++)
// res ^= BitHelper::CircularShiftLeft<size_t>(hash<MaterialLibraryPointer>()(value.Get(i)), i);
// return res;
// }
//};
template<typename T>
struct hash<Block<T>>
{
size_t operator()(const Block<T> &value) const
{
size_t res = 0;
for (size_t i = 0; i < value.size(); i++)
res ^= BitHelper::CircularShiftLeft<size_t>(hash<T>()(value.Get(i)), i);
return res;
}
};
}