#ifndef COMMON_H_ | |
#define COMMON_H_ | |
#include "VmaUsage.h" | |
#ifdef _WIN32 | |
#define MATHFU_COMPILE_WITHOUT_SIMD_SUPPORT | |
#include <mathfu/glsl_mappings.h> | |
#include <mathfu/constants.h> | |
#include <iostream> | |
#include <fstream> | |
#include <vector> | |
#include <memory> | |
#include <algorithm> | |
#include <numeric> | |
#include <array> | |
#include <type_traits> | |
#include <utility> | |
#include <chrono> | |
#include <string> | |
#include <cassert> | |
#include <cstdlib> | |
#include <cstdio> | |
#include <cstdarg> | |
typedef std::chrono::high_resolution_clock::time_point time_point; | |
typedef std::chrono::high_resolution_clock::duration duration; | |
#define ERR_GUARD_VULKAN(Expr) do { VkResult res__ = (Expr); if (res__ < 0) assert(0); } while(0) | |
extern VkPhysicalDevice g_hPhysicalDevice; | |
extern VkDevice g_hDevice; | |
extern VmaAllocator g_hAllocator; | |
extern bool g_MemoryAliasingWarningEnabled; | |
inline float ToFloatSeconds(duration d) | |
{ | |
return std::chrono::duration_cast<std::chrono::duration<float>>(d).count(); | |
} | |
template <typename T> | |
inline T ceil_div(T x, T y) | |
{ | |
return (x+y-1) / y; | |
} | |
template <typename T> | |
static inline T align_up(T val, T align) | |
{ | |
return (val + align - 1) / align * align; | |
} | |
class RandomNumberGenerator | |
{ | |
public: | |
RandomNumberGenerator() : m_Value{GetTickCount()} {} | |
RandomNumberGenerator(uint32_t seed) : m_Value{seed} { } | |
void Seed(uint32_t seed) { m_Value = seed; } | |
uint32_t Generate() { return GenerateFast() ^ (GenerateFast() >> 7); } | |
private: | |
uint32_t m_Value; | |
uint32_t GenerateFast() { return m_Value = (m_Value * 196314165 + 907633515); } | |
}; | |
void ReadFile(std::vector<char>& out, const char* fileName); | |
enum class CONSOLE_COLOR | |
{ | |
INFO, | |
NORMAL, | |
WARNING, | |
ERROR_, | |
COUNT | |
}; | |
void SetConsoleColor(CONSOLE_COLOR color); | |
void PrintMessage(CONSOLE_COLOR color, const char* msg); | |
void PrintMessage(CONSOLE_COLOR color, const wchar_t* msg); | |
inline void Print(const char* msg) { PrintMessage(CONSOLE_COLOR::NORMAL, msg); } | |
inline void Print(const wchar_t* msg) { PrintMessage(CONSOLE_COLOR::NORMAL, msg); } | |
inline void PrintWarning(const char* msg) { PrintMessage(CONSOLE_COLOR::WARNING, msg); } | |
inline void PrintWarning(const wchar_t* msg) { PrintMessage(CONSOLE_COLOR::WARNING, msg); } | |
inline void PrintError(const char* msg) { PrintMessage(CONSOLE_COLOR::ERROR_, msg); } | |
inline void PrintError(const wchar_t* msg) { PrintMessage(CONSOLE_COLOR::ERROR_, msg); } | |
void PrintMessageV(CONSOLE_COLOR color, const char* format, va_list argList); | |
void PrintMessageV(CONSOLE_COLOR color, const wchar_t* format, va_list argList); | |
void PrintMessageF(CONSOLE_COLOR color, const char* format, ...); | |
void PrintMessageF(CONSOLE_COLOR color, const wchar_t* format, ...); | |
void PrintWarningF(const char* format, ...); | |
void PrintWarningF(const wchar_t* format, ...); | |
void PrintErrorF(const char* format, ...); | |
void PrintErrorF(const wchar_t* format, ...); | |
void SaveFile(const wchar_t* filePath, const void* data, size_t dataSize); | |
#endif // #ifdef _WIN32 | |
#endif |