trunk/3rdparty/bgfx/scripts/genie.lua
| r244990 | r244991 | |
| 84 | 84 | end |
| 85 | 85 | |
| 86 | 86 | includedirs { |
| 87 | | path.join(BX_DIR, "include"), |
| 87 | path.join(BX_DIR, "include"), |
| 88 | 88 | path.join(BGFX_DIR, "include"), |
| 89 | 89 | path.join(BGFX_DIR, "3rdparty"), |
| 90 | 90 | path.join(BGFX_DIR, "examples/common"), |
| 91 | 91 | } |
| 92 | 92 | |
| 93 | 93 | files { |
| 94 | | path.join(BGFX_DIR, "examples", _name, "**.c"), |
| 95 | 94 | path.join(BGFX_DIR, "examples", _name, "**.cpp"), |
| 96 | 95 | path.join(BGFX_DIR, "examples", _name, "**.h"), |
| 97 | 96 | } |
| r244990 | r244991 | |
| 309 | 308 | exampleProject("22-windows") |
| 310 | 309 | exampleProject("23-vectordisplay") |
| 311 | 310 | exampleProject("24-nbody") |
| 312 | | exampleProject("25-c99") |
| 313 | 311 | |
| 314 | 312 | if _OPTIONS["with-shared-lib"] then |
| 315 | 313 | group "libs" |
trunk/3rdparty/bgfx/src/bgfx_shader.sh
| r244990 | r244991 | |
| 74 | 74 | Texture3D m_texture; |
| 75 | 75 | }; |
| 76 | 76 | |
| 77 | | struct BgfxISampler3D |
| 78 | | { |
| 79 | | Texture3D<ivec4> m_texture; |
| 80 | | }; |
| 81 | | |
| 82 | | struct BgfxUSampler3D |
| 83 | | { |
| 84 | | Texture3D<uvec4> m_texture; |
| 85 | | }; |
| 86 | | |
| 87 | 77 | vec4 bgfxTexture3D(BgfxSampler3D _sampler, vec3 _coord) |
| 88 | 78 | { |
| 89 | 79 | return _sampler.m_texture.Sample(_sampler.m_sampler, _coord); |
| r244990 | r244991 | |
| 94 | 84 | return _sampler.m_texture.SampleLevel(_sampler.m_sampler, _coord, _level); |
| 95 | 85 | } |
| 96 | 86 | |
| 97 | | ivec4 bgfxTexture3D(BgfxISampler3D _sampler, vec3 _coord) |
| 98 | | { |
| 99 | | ivec3 size; |
| 100 | | _sampler.m_texture.GetDimensions(size.x, size.y, size.z); |
| 101 | | return _sampler.m_texture.Load(ivec4(_coord * size, 0) ); |
| 102 | | } |
| 103 | | |
| 104 | | uvec4 bgfxTexture3D(BgfxUSampler3D _sampler, vec3 _coord) |
| 105 | | { |
| 106 | | uvec3 size; |
| 107 | | _sampler.m_texture.GetDimensions(size.x, size.y, size.z); |
| 108 | | return _sampler.m_texture.Load(uvec4(_coord * size, 0) ); |
| 109 | | } |
| 110 | | |
| 111 | 87 | struct BgfxSamplerCube |
| 112 | 88 | { |
| 113 | 89 | SamplerState m_sampler; |
| r244990 | r244991 | |
| 145 | 121 | uniform SamplerState _name ## Sampler : register(s[_reg]); \ |
| 146 | 122 | uniform Texture3D _name ## Texture : register(t[_reg]); \ |
| 147 | 123 | static BgfxSampler3D _name = { _name ## Sampler, _name ## Texture } |
| 148 | | # define ISAMPLER3D(_name, _reg) \ |
| 149 | | uniform Texture3D<ivec4> _name ## Texture : register(t[_reg]); \ |
| 150 | | static BgfxISampler3D _name = { _name ## Texture } |
| 151 | | # define USAMPLER3D(_name, _reg) \ |
| 152 | | uniform Texture3D<uvec4> _name ## Texture : register(t[_reg]); \ |
| 153 | | static BgfxUSampler3D _name = { _name ## Texture } |
| 154 | 124 | # define sampler3D BgfxSampler3D |
| 155 | 125 | # define texture3D(_sampler, _coord) bgfxTexture3D(_sampler, _coord) |
| 156 | 126 | # define texture3DLod(_sampler, _coord, _level) bgfxTexture3DLod(_sampler, _coord, _level) |
| r244990 | r244991 | |
| 277 | 247 | # define uvec3_splat(_x) uvec3(_x) |
| 278 | 248 | # define uvec4_splat(_x) uvec4(_x) |
| 279 | 249 | |
| 280 | | # if BGFX_SHADER_LANGUAGE_GLSL >= 130 |
| 281 | | # define ISAMPLER3D(_name, _reg) uniform isampler3D _name |
| 282 | | # define USAMPLER3D(_name, _reg) uniform usampler3D _name |
| 283 | | ivec4 texture3D(isampler3D _sampler, vec3 _coord) { return texture(_sampler, _coord); } |
| 284 | | uvec4 texture3D(usampler3D _sampler, vec3 _coord) { return texture(_sampler, _coord); } |
| 285 | | # endif // BGFX_SHADER_LANGUAGE_GLSL >= 130 |
| 286 | | |
| 287 | 250 | vec3 instMul(vec3 _vec, mat3 _mtx) { return mul(_vec, _mtx); } |
| 288 | 251 | vec3 instMul(mat3 _mtx, vec3 _vec) { return mul(_mtx, _vec); } |
| 289 | 252 | vec4 instMul(vec4 _vec, mat4 _mtx) { return mul(_vec, _mtx); } |
trunk/3rdparty/bgfx/src/renderer_d3d11.cpp
| r244990 | r244991 | |
| 203 | 203 | { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // Unknown |
| 204 | 204 | { DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_UNKNOWN }, // R1 |
| 205 | 205 | { DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_UNKNOWN }, // R8 |
| 206 | | { DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_UINT, DXGI_FORMAT_UNKNOWN }, // R16 |
| 206 | { DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_UNKNOWN }, // R16 |
| 207 | 207 | { DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_UNKNOWN }, // R16F |
| 208 | 208 | { DXGI_FORMAT_R32_UINT, DXGI_FORMAT_R32_UINT, DXGI_FORMAT_UNKNOWN }, // R32 |
| 209 | 209 | { DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_UNKNOWN }, // R32F |
trunk/3rdparty/bgfx/src/vertexdecl.cpp
| r244990 | r244991 | |
| 41 | 41 | |
| 42 | 42 | static const uint8_t (*s_attribTypeSize[])[AttribType::Count][4] = |
| 43 | 43 | { |
| 44 | | &s_attribTypeSizeDx9, // Null |
| 44 | #if BGFX_CONFIG_RENDERER_DIRECT3D9 |
| 45 | &s_attribTypeSizeDx9, |
| 46 | #elif BGFX_CONFIG_RENDERER_DIRECT3D11 || BGFX_CONFIG_RENDERER_DIRECT3D12 |
| 47 | &s_attribTypeSizeDx1x, |
| 48 | #elif BGFX_CONFIG_RENDERER_OPENGL || BGFX_CONFIG_RENDERER_OPENGLES || BGFX_CONFIG_RENDERER_VULKAN |
| 49 | &s_attribTypeSizeGl, |
| 50 | #else |
| 51 | &s_attribTypeSizeDx9, |
| 52 | #endif // BGFX_CONFIG_RENDERER_ |
| 45 | 53 | &s_attribTypeSizeDx9, // Direct3D9 |
| 46 | 54 | &s_attribTypeSizeDx1x, // Direct3D11 |
| 47 | 55 | &s_attribTypeSizeDx1x, // Direct3D12 |
| 48 | 56 | &s_attribTypeSizeGl, // OpenGLES |
| 49 | 57 | &s_attribTypeSizeGl, // OpenGL |
| 50 | 58 | &s_attribTypeSizeGl, // Vulkan |
| 51 | | &s_attribTypeSizeDx9, // Count |
| 52 | 59 | }; |
| 53 | | BX_STATIC_ASSERT(BX_COUNTOF(s_attribTypeSize) == RendererType::Count+1); |
| 60 | BX_STATIC_ASSERT(BX_COUNTOF(s_attribTypeSize) == bgfx::RendererType::Count); |
| 54 | 61 | |
| 55 | 62 | void initAttribTypeSizeTable(RendererType::Enum _type) |
| 56 | 63 | { |
| 57 | | s_attribTypeSize[0] = s_attribTypeSize[_type]; |
| 58 | | s_attribTypeSize[RendererType::Count] = s_attribTypeSize[_type]; |
| 64 | s_attribTypeSize[0] = s_attribTypeSize[_type]; |
| 59 | 65 | } |
| 60 | 66 | |
| 61 | 67 | void dbgPrintfVargs(const char* _format, va_list _argList) |
trunk/3rdparty/bgfx/tools/shaderc/shaderc.cpp
| r244990 | r244991 | |
| 751 | 751 | |
| 752 | 752 | bool raw = cmdLine.hasArg('\0', "raw"); |
| 753 | 753 | |
| 754 | | uint32_t glsl = 0; |
| 755 | | uint32_t essl = 0; |
| 754 | uint32_t gles = 0; |
| 756 | 755 | uint32_t hlsl = 2; |
| 757 | 756 | uint32_t d3d = 11; |
| 758 | 757 | const char* profile = cmdLine.findOption('p', "profile"); |
| r244990 | r244991 | |
| 775 | 774 | { |
| 776 | 775 | hlsl = 5; |
| 777 | 776 | } |
| 778 | | else |
| 779 | | { |
| 780 | | glsl = atoi(profile); |
| 781 | | } |
| 782 | 777 | } |
| 783 | 778 | else |
| 784 | 779 | { |
| 785 | | essl = 2; |
| 780 | gles = 2; |
| 786 | 781 | } |
| 787 | 782 | |
| 788 | 783 | const char* bin2c = NULL; |
| r244990 | r244991 | |
| 816 | 811 | bool preprocessOnly = cmdLine.hasArg("preprocess"); |
| 817 | 812 | const char* includeDir = cmdLine.findOption('i'); |
| 818 | 813 | |
| 819 | | Preprocessor preprocessor(filePath, 0 != essl, includeDir); |
| 814 | Preprocessor preprocessor(filePath, 0 != gles, includeDir); |
| 820 | 815 | |
| 821 | 816 | std::string dir; |
| 822 | 817 | { |
| r244990 | r244991 | |
| 844 | 839 | preprocessor.setDefaultDefine("BGFX_SHADER_TYPE_FRAGMENT"); |
| 845 | 840 | preprocessor.setDefaultDefine("BGFX_SHADER_TYPE_VERTEX"); |
| 846 | 841 | |
| 847 | | char glslDefine[128]; |
| 848 | | bx::snprintf(glslDefine, BX_COUNTOF(glslDefine), "BGFX_SHADER_LANGUAGE_GLSL=%d", glsl); |
| 842 | bool glsl = false; |
| 849 | 843 | |
| 850 | 844 | if (0 == bx::stricmp(platform, "android") ) |
| 851 | 845 | { |
| 852 | 846 | preprocessor.setDefine("BX_PLATFORM_ANDROID=1"); |
| 853 | 847 | preprocessor.setDefine("BGFX_SHADER_LANGUAGE_GLSL=1"); |
| 848 | glsl = true; |
| 854 | 849 | } |
| 855 | 850 | else if (0 == bx::stricmp(platform, "asm.js") ) |
| 856 | 851 | { |
| 857 | 852 | preprocessor.setDefine("BX_PLATFORM_EMSCRIPTEN=1"); |
| 858 | 853 | preprocessor.setDefine("BGFX_SHADER_LANGUAGE_GLSL=1"); |
| 854 | glsl = true; |
| 859 | 855 | } |
| 860 | 856 | else if (0 == bx::stricmp(platform, "ios") ) |
| 861 | 857 | { |
| 862 | 858 | preprocessor.setDefine("BX_PLATFORM_IOS=1"); |
| 863 | 859 | preprocessor.setDefine("BGFX_SHADER_LANGUAGE_GLSL=1"); |
| 860 | glsl = true; |
| 864 | 861 | } |
| 865 | 862 | else if (0 == bx::stricmp(platform, "linux") ) |
| 866 | 863 | { |
| 867 | 864 | preprocessor.setDefine("BX_PLATFORM_LINUX=1"); |
| 868 | | preprocessor.setDefine(glslDefine); |
| 865 | preprocessor.setDefine("BGFX_SHADER_LANGUAGE_GLSL=1"); |
| 866 | glsl = true; |
| 869 | 867 | } |
| 870 | 868 | else if (0 == bx::stricmp(platform, "nacl") ) |
| 871 | 869 | { |
| 872 | 870 | preprocessor.setDefine("BX_PLATFORM_NACL=1"); |
| 873 | 871 | preprocessor.setDefine("BGFX_SHADER_LANGUAGE_GLSL=1"); |
| 872 | glsl = true; |
| 874 | 873 | } |
| 875 | 874 | else if (0 == bx::stricmp(platform, "osx") ) |
| 876 | 875 | { |
| 877 | 876 | preprocessor.setDefine("BX_PLATFORM_OSX=1"); |
| 878 | | preprocessor.setDefine(glslDefine); |
| 877 | preprocessor.setDefine("BGFX_SHADER_LANGUAGE_GLSL=1"); |
| 878 | glsl = true; |
| 879 | 879 | } |
| 880 | 880 | else if (0 == bx::stricmp(platform, "windows") ) |
| 881 | 881 | { |
| r244990 | r244991 | |
| 1120 | 1120 | bx::write(writer, outputHash); |
| 1121 | 1121 | } |
| 1122 | 1122 | |
| 1123 | | if (0 != glsl) |
| 1123 | if (glsl) |
| 1124 | 1124 | { |
| 1125 | 1125 | bx::write(writer, uint16_t(0) ); |
| 1126 | 1126 | |
| r244990 | r244991 | |
| 1155 | 1155 | } |
| 1156 | 1156 | else |
| 1157 | 1157 | { |
| 1158 | | if (0 != glsl) |
| 1158 | if (glsl) |
| 1159 | 1159 | { |
| 1160 | 1160 | } |
| 1161 | 1161 | else |
| r244990 | r244991 | |
| 1269 | 1269 | bx::write(writer, BGFX_CHUNK_MAGIC_CSH); |
| 1270 | 1270 | bx::write(writer, outputHash); |
| 1271 | 1271 | |
| 1272 | | if (0 != glsl) |
| 1272 | if (glsl) |
| 1273 | 1273 | { |
| 1274 | 1274 | std::string code; |
| 1275 | 1275 | |
| 1276 | | if (essl) |
| 1276 | if (gles) |
| 1277 | 1277 | { |
| 1278 | 1278 | bx::stringPrintf(code, "#version 310 es\n"); |
| 1279 | 1279 | } |
| 1280 | 1280 | else |
| 1281 | 1281 | { |
| 1282 | | bx::stringPrintf(code, "#version %d\n", glsl == 0 ? 430 : glsl); |
| 1282 | int32_t version = atoi(profile); |
| 1283 | bx::stringPrintf(code, "#version %d\n", version == 0 ? 430 : version); |
| 1283 | 1284 | } |
| 1284 | 1285 | |
| 1285 | 1286 | code += preprocessor.m_preprocessed; |
| r244990 | r244991 | |
| 1293 | 1294 | |
| 1294 | 1295 | compiled = true; |
| 1295 | 1296 | #else |
| 1296 | | compiled = compileGLSLShader(cmdLine, essl, code, writer); |
| 1297 | compiled = compileGLSLShader(cmdLine, gles, code, writer); |
| 1297 | 1298 | #endif // 0 |
| 1298 | 1299 | } |
| 1299 | 1300 | else |
| r244990 | r244991 | |
| 1338 | 1339 | } |
| 1339 | 1340 | else |
| 1340 | 1341 | { |
| 1341 | | if (0 != glsl) |
| 1342 | if (glsl) |
| 1342 | 1343 | { |
| 1343 | | if (120 == glsl |
| 1344 | | || essl) |
| 1345 | | { |
| 1346 | | preprocessor.writef( |
| 1347 | | "#define ivec2 vec2\n" |
| 1348 | | "#define ivec3 vec3\n" |
| 1349 | | "#define ivec4 vec4\n" |
| 1350 | | ); |
| 1351 | | } |
| 1344 | preprocessor.writef( |
| 1345 | "#define ivec2 vec2\n" |
| 1346 | "#define ivec3 vec3\n" |
| 1347 | "#define ivec4 vec4\n" |
| 1348 | ); |
| 1352 | 1349 | |
| 1353 | | if (0 == essl) |
| 1350 | if (0 == gles) |
| 1354 | 1351 | { |
| 1355 | 1352 | // bgfx shadow2D/Proj behave like EXT_shadow_samplers |
| 1356 | 1353 | // not as GLSL language 1.2 specs shadow2D/Proj. |
| r244990 | r244991 | |
| 1648 | 1645 | return EXIT_FAILURE; |
| 1649 | 1646 | } |
| 1650 | 1647 | |
| 1651 | | if (0 != glsl) |
| 1648 | if (glsl) |
| 1652 | 1649 | { |
| 1653 | 1650 | const char* profile = cmdLine.findOption('p', "profile"); |
| 1654 | 1651 | if (NULL == profile) |
| r244990 | r244991 | |
| 1700 | 1697 | bx::write(writer, outputHash); |
| 1701 | 1698 | } |
| 1702 | 1699 | |
| 1703 | | if (0 != glsl) |
| 1700 | if (glsl) |
| 1704 | 1701 | { |
| 1705 | 1702 | std::string code; |
| 1706 | 1703 | |
| 1707 | 1704 | bool hasTextureLod = NULL != bx::findIdentifierMatch(input, s_ARB_shader_texture_lod /*EXT_shader_texture_lod*/); |
| 1708 | 1705 | |
| 1709 | | if (0 == essl) |
| 1706 | if (0 == gles) |
| 1710 | 1707 | { |
| 1711 | 1708 | bx::stringPrintf(code, "#version %s\n", profile); |
| 1709 | int32_t version = atoi(profile); |
| 1712 | 1710 | |
| 1713 | 1711 | bx::stringPrintf(code |
| 1714 | 1712 | , "#define bgfxShadow2D shadow2D\n" |
| r244990 | r244991 | |
| 1716 | 1714 | ); |
| 1717 | 1715 | |
| 1718 | 1716 | if (hasTextureLod |
| 1719 | | && 130 > glsl) |
| 1717 | && 130 > version) |
| 1720 | 1718 | { |
| 1721 | 1719 | bx::stringPrintf(code |
| 1722 | 1720 | , "#extension GL_ARB_shader_texture_lod : enable\n" |
| r244990 | r244991 | |
| 1769 | 1767 | } |
| 1770 | 1768 | |
| 1771 | 1769 | code += preprocessor.m_preprocessed; |
| 1772 | | compiled = compileGLSLShader(cmdLine, essl, code, writer); |
| 1770 | compiled = compileGLSLShader(cmdLine, gles, code, writer); |
| 1773 | 1771 | } |
| 1774 | 1772 | else |
| 1775 | 1773 | { |