2014-12-03 23:16:20 -05:00
|
|
|
/*
|
2015-01-01 18:04:46 -05:00
|
|
|
* Copyright 2011-2015 Branimir Karadzic. All rights reserved.
|
2014-12-03 23:16:20 -05:00
|
|
|
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef SHADERC_H_HEADER_GUARD
|
|
|
|
#define SHADERC_H_HEADER_GUARD
|
|
|
|
|
|
|
|
#define _BX_TRACE(_format, ...) \
|
|
|
|
BX_MACRO_BLOCK_BEGIN \
|
|
|
|
if (g_verbose) \
|
|
|
|
{ \
|
|
|
|
fprintf(stderr, BX_FILE_LINE_LITERAL "" _format "\n", ##__VA_ARGS__); \
|
|
|
|
} \
|
|
|
|
BX_MACRO_BLOCK_END
|
|
|
|
|
|
|
|
#define _BX_WARN(_condition, _format, ...) \
|
|
|
|
BX_MACRO_BLOCK_BEGIN \
|
|
|
|
if (!(_condition) ) \
|
|
|
|
{ \
|
|
|
|
BX_TRACE("WARN " _format, ##__VA_ARGS__); \
|
|
|
|
} \
|
|
|
|
BX_MACRO_BLOCK_END
|
|
|
|
|
|
|
|
#define _BX_CHECK(_condition, _format, ...) \
|
|
|
|
BX_MACRO_BLOCK_BEGIN \
|
|
|
|
if (!(_condition) ) \
|
|
|
|
{ \
|
|
|
|
BX_TRACE("CHECK " _format, ##__VA_ARGS__); \
|
|
|
|
bx::debugBreak(); \
|
|
|
|
} \
|
|
|
|
BX_MACRO_BLOCK_END
|
|
|
|
|
|
|
|
#define BX_TRACE _BX_TRACE
|
|
|
|
#define BX_WARN _BX_WARN
|
|
|
|
#define BX_CHECK _BX_CHECK
|
|
|
|
|
2015-04-10 21:00:46 -04:00
|
|
|
#ifndef SHADERC_CONFIG_HLSL
|
|
|
|
# define SHADERC_CONFIG_HLSL BX_PLATFORM_WINDOWS
|
|
|
|
#endif // SHADERC_CONFIG_HLSL
|
2014-12-03 23:16:20 -05:00
|
|
|
|
|
|
|
extern bool g_verbose;
|
|
|
|
|
|
|
|
#include <alloca.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <algorithm>
|
|
|
|
#include <string>
|
|
|
|
#include <vector>
|
|
|
|
#include <unordered_map>
|
|
|
|
|
|
|
|
#include <bx/bx.h>
|
|
|
|
#include <bx/debug.h>
|
|
|
|
#include <bx/commandline.h>
|
|
|
|
#include <bx/endian.h>
|
|
|
|
#include <bx/uint32_t.h>
|
|
|
|
#include <bx/readerwriter.h>
|
|
|
|
#include <bx/string.h>
|
|
|
|
#include <bx/hash.h>
|
|
|
|
#include "../../src/vertexdecl.h"
|
|
|
|
|
|
|
|
struct UniformType
|
|
|
|
{
|
|
|
|
enum Enum
|
|
|
|
{
|
|
|
|
Uniform1i,
|
|
|
|
Uniform1f,
|
|
|
|
End,
|
|
|
|
|
|
|
|
Uniform1iv,
|
|
|
|
Uniform1fv,
|
|
|
|
Uniform2fv,
|
|
|
|
Uniform3fv,
|
|
|
|
Uniform4fv,
|
|
|
|
Uniform3x3fv,
|
|
|
|
Uniform4x4fv,
|
|
|
|
|
|
|
|
Count
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
#define BGFX_UNIFORM_FRAGMENTBIT UINT8_C(0x10)
|
|
|
|
|
|
|
|
const char* getUniformTypeName(UniformType::Enum _enum);
|
|
|
|
UniformType::Enum nameToUniformTypeEnum(const char* _name);
|
|
|
|
|
|
|
|
struct Uniform
|
|
|
|
{
|
|
|
|
std::string name;
|
|
|
|
UniformType::Enum type;
|
|
|
|
uint8_t num;
|
|
|
|
uint16_t regIndex;
|
|
|
|
uint16_t regCount;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef std::vector<Uniform> UniformArray;
|
|
|
|
|
|
|
|
void printCode(const char* _code, int32_t _line = 0, int32_t _start = 0, int32_t _end = INT32_MAX);
|
|
|
|
void strreplace(char* _str, const char* _find, const char* _replace);
|
|
|
|
int32_t writef(bx::WriterI* _writer, const char* _format, ...);
|
|
|
|
void writeFile(const char* _filePath, const void* _data, int32_t _size);
|
|
|
|
|
2015-04-10 21:00:46 -04:00
|
|
|
bool compileHLSLShader(bx::CommandLine& _cmdLine, uint32_t _d3d, const std::string& _code, bx::WriterI* _writer);
|
2014-12-03 23:16:20 -05:00
|
|
|
bool compileGLSLShader(bx::CommandLine& _cmdLine, uint32_t _gles, const std::string& _code, bx::WriterI* _writer);
|
|
|
|
|
|
|
|
#endif // SHADERC_H_HEADER_GUARD
|