diff --git a/examples/common/common.sh b/examples/common/common.sh index c0566ab03..d9354bd19 100644 --- a/examples/common/common.sh +++ b/examples/common/common.sh @@ -3,5 +3,5 @@ * License: http://www.opensource.org/licenses/BSD-2-Clause */ -#include "../../src/common.sh" +#include #include "shaderlib.sh" diff --git a/premake/shader.mk b/premake/shader.mk index c2152f8ae..55a2b3678 100644 --- a/premake/shader.mk +++ b/premake/shader.mk @@ -49,6 +49,10 @@ endif endif endif +THISDIR := $(dir $(lastword $(MAKEFILE_LIST))) +VS_FLAGS+=-i $(THISDIR)../src/ +FS_FLAGS+=-i $(THISDIR)../src/ + BUILD_OUTPUT_DIR=$(addprefix ./, $(RUNTIME_DIR)/$(SHADER_PATH)) BUILD_INTERMEDIATE_DIR=$(addprefix $(BUILD_DIR)/, $(SHADER_PATH)) diff --git a/src/bgfx_shader.sh b/src/bgfx_shader.sh index 65367d1ce..b06b8a6fd 100644 --- a/src/bgfx_shader.sh +++ b/src/bgfx_shader.sh @@ -133,10 +133,16 @@ bvec2 equal(vec2 _a, vec2 _b) { return _a == _b; } bvec3 equal(vec3 _a, vec3 _b) { return _a == _b; } bvec4 equal(vec4 _a, vec4 _b) { return _a == _b; } +float mix(float _a, float _b, float _t) { return lerp(_a, _b, _t); } vec2 mix(vec2 _a, vec2 _b, vec2 _t) { return lerp(_a, _b, _t); } vec3 mix(vec3 _a, vec3 _b, vec3 _t) { return lerp(_a, _b, _t); } vec4 mix(vec4 _a, vec4 _b, vec4 _t) { return lerp(_a, _b, _t); } +float mod(float _a, float _b) { return _a - _b * floor(_a / _b); } +vec2 mod(vec2 _a, vec2 _b) { return _a - _b * floor(_a / _b); } +vec3 mod(vec3 _a, vec3 _b) { return _a - _b * floor(_a / _b); } +vec4 mod(vec4 _a, vec4 _b) { return _a - _b * floor(_a / _b); } + #elif BGFX_SHADER_LANGUAGE_GLSL # define atan2(_x, _y) atan(_x, _y) # define frac(_x) fract(_x) @@ -156,6 +162,17 @@ vec4 instMul(vec4 _vec, mat4 _mtx) { return mul(_vec, _mtx); } vec4 instMul(mat4 _mtx, vec4 _vec) { return mul(_mtx, _vec); } #endif // BGFX_SHADER_LANGUAGE_HLSL +uniform vec4 u_viewRect; +uniform vec4 u_viewTexel; +uniform mat4 u_view; +uniform mat4 u_viewProj; +uniform mat4 u_model; +uniform mat4 u_modelView; +uniform mat4 u_modelViewProj; +uniform mat4 u_modelViewProjX; +uniform mat4 u_viewProjX; +uniform float u_alphaRef; + #endif // __cplusplus #endif // __BGFX_SHADER_H__ diff --git a/src/common.sh b/src/common.sh deleted file mode 100644 index ea719d645..000000000 --- a/src/common.sh +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2011-2013 Branimir Karadzic. All rights reserved. - * License: http://www.opensource.org/licenses/BSD-2-Clause - */ - -#ifndef __SHADER_COMMON_H__ -#define __SHADER_COMMON_H__ - -#include "bgfx_shader.sh" - -uniform vec4 u_viewRect; -uniform vec4 u_viewTexel; -uniform mat4 u_view; -uniform mat4 u_viewProj; -uniform mat4 u_model; -uniform mat4 u_modelView; -uniform mat4 u_modelViewProj; -uniform mat4 u_modelViewProjX; -uniform mat4 u_viewProjX; -uniform float u_alphaRef; - -#endif // __SHADER_COMMON_H__ diff --git a/tools/bin/shaderc.exe b/tools/bin/shaderc.exe index bc7df9122..5aa28914f 100644 Binary files a/tools/bin/shaderc.exe and b/tools/bin/shaderc.exe differ diff --git a/tools/shaderc/shaderc.cpp b/tools/shaderc/shaderc.cpp index 8178da56c..e214dcab9 100644 --- a/tools/shaderc/shaderc.cpp +++ b/tools/shaderc/shaderc.cpp @@ -999,7 +999,7 @@ bool compileHLSLShaderDx11(bx::CommandLine& _cmdLine, const std::string& _code, struct Preprocessor { - Preprocessor(const char* _filePath) + Preprocessor(const char* _filePath, const char* _includeDir = NULL) : m_tagptr(m_tags) , m_scratchPos(0) , m_fgetsPos(0) @@ -1036,6 +1036,13 @@ struct Preprocessor m_tagptr->data = scratch(_filePath); m_tagptr++; + if (NULL != _includeDir) + { + m_tagptr->tag = FPPTAG_INCLUDE_DIR; + m_tagptr->data = scratch(_includeDir); + m_tagptr++; + } + m_default = "#define lowp\n#define mediump\n#define highp\n"; } @@ -1243,6 +1250,7 @@ void help(const char* _error = NULL) "\n" "Options:\n" " -f Input file path.\n" + " -i Include path.\n" " -o Output file path.\n" " --bin2c Generate C header file.\n" " --depends Generate makefile style depends file.\n" @@ -1353,8 +1361,9 @@ int main(int _argc, const char* _argv[]) bool depends = cmdLine.hasArg("depends"); bool preprocessOnly = cmdLine.hasArg("preprocess"); + const char* includeDir = cmdLine.findOption('i'); - Preprocessor preprocessor(filePath); + Preprocessor preprocessor(filePath, includeDir); preprocessor.setDefaultDefine("BX_PLATFORM_ANDROID"); preprocessor.setDefaultDefine("BX_PLATFORM_IOS");