Initial commit: Final state of the master project
This commit is contained in:
34
Research/scene/TextureCompressor/BlockHashers.h
Normal file
34
Research/scene/TextureCompressor/BlockHashers.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#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;
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user