diff options
Diffstat (limited to '3rdparty/bgfx/include/bgfx/embedded_shader.h')
-rw-r--r-- | 3rdparty/bgfx/include/bgfx/embedded_shader.h | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/3rdparty/bgfx/include/bgfx/embedded_shader.h b/3rdparty/bgfx/include/bgfx/embedded_shader.h new file mode 100644 index 00000000000..1675fde7499 --- /dev/null +++ b/3rdparty/bgfx/include/bgfx/embedded_shader.h @@ -0,0 +1,139 @@ +/* + * Copyright 2011-2017 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE + */ + +#ifndef BGFX_EMBEDDED_SHADER_H_HEADER_GUARD +#define BGFX_EMBEDDED_SHADER_H_HEADER_GUARD + +#include <bx/platform.h> +#include "bgfx.h" + +#define BGFX_EMBEDDED_SHADER_DXBC(...) +#define BGFX_EMBEDDED_SHADER_DX9BC(...) +#define BGFX_EMBEDDED_SHADER_PSSL(...) +#define BGFX_EMBEDDED_SHADER_ESSL(...) +#define BGFX_EMBEDDED_SHADER_GLSL(...) +#define BGFX_EMBEDDED_SHADER_SPIRV(...) +#define BGFX_EMBEDDED_SHADER_METAL(...) + +#define BGFX_PLATFORM_SUPPORTS_DX9BC (0 \ + || BX_PLATFORM_WINDOWS \ + || BX_PLATFORM_XBOX360 \ + ) +#define BGFX_PLATFORM_SUPPORTS_DXBC (0 \ + || BX_PLATFORM_WINDOWS \ + || BX_PLATFORM_WINRT \ + || BX_PLATFORM_XBOXONE \ + ) +#define BGFX_PLATFORM_SUPPORTS_PSSL (0 \ + || BX_PLATFORM_PS4 \ + ) +#define BGFX_PLATFORM_SUPPORTS_ESSL (0 \ + || BX_PLATFORM_ANDROID \ + || BX_PLATFORM_EMSCRIPTEN \ + || BX_PLATFORM_IOS \ + || BX_PLATFORM_LINUX \ + || BX_PLATFORM_NACL \ + || BX_PLATFORM_OSX \ + || BX_PLATFORM_QNX \ + || BX_PLATFORM_RPI \ + || BX_PLATFORM_STEAMLINK \ + || BX_PLATFORM_WINDOWS \ + ) +#define BGFX_PLATFORM_SUPPORTS_GLSL (0 \ + || BX_PLATFORM_BSD \ + || BX_PLATFORM_LINUX \ + || BX_PLATFORM_OSX \ + || BX_PLATFORM_WINDOWS \ + ) +#define BGFX_PLATFORM_SUPPORTS_METAL (0 \ + || BX_PLATFORM_IOS \ + || BX_PLATFORM_OSX \ + ) +#define BGFX_PLATFORM_SUPPORTS_SPIRV (0 \ + || BX_PLATFORM_ANDROID \ + || BX_PLATFORM_LINUX \ + || BX_PLATFORM_WINDOWS \ + ) + +#if BGFX_PLATFORM_SUPPORTS_DX9BC +# undef BGFX_EMBEDDED_SHADER_DX9BC +# define BGFX_EMBEDDED_SHADER_DX9BC(_renderer, _name) { _renderer, BX_CONCATENATE(_name, _dx9 ), sizeof(BX_CONCATENATE(_name, _dx9 ) ) }, +#endif // BGFX_PLATFORM_SUPPORTS_DX9BC + +#if BGFX_PLATFORM_SUPPORTS_DXBC +# undef BGFX_EMBEDDED_SHADER_DXBC +# define BGFX_EMBEDDED_SHADER_DXBC(_renderer, _name) { _renderer, BX_CONCATENATE(_name, _dx11), sizeof(BX_CONCATENATE(_name, _dx11) ) }, +#endif // BGFX_PLATFORM_SUPPORTS_DXBC + +#if BGFX_PLATFORM_SUPPORTS_PSSL +# undef BGFX_EMBEDDED_SHADER_PSSL +# define BGFX_EMBEDDED_SHADER_PSSL(_renderer, _name) { _renderer, BX_CONCATENATE(_name, _pssl), BX_CONCATENATE(_name, _pssl_size) }, +#endif // BGFX_PLATFORM_SUPPORTS_PSSL + +#if BGFX_PLATFORM_SUPPORTS_ESSL +# undef BGFX_EMBEDDED_SHADER_ESSL +# define BGFX_EMBEDDED_SHADER_ESSL(_renderer, _name) { _renderer, BX_CONCATENATE(_name, _glsl), sizeof(BX_CONCATENATE(_name, _glsl) ) }, +#endif // BGFX_PLATFORM_SUPPORTS_PSSL + +#if BGFX_PLATFORM_SUPPORTS_GLSL +# undef BGFX_EMBEDDED_SHADER_GLSL +# define BGFX_EMBEDDED_SHADER_GLSL(_renderer, _name) { _renderer, BX_CONCATENATE(_name, _glsl), sizeof(BX_CONCATENATE(_name, _glsl) ) }, +#endif // BGFX_PLATFORM_SUPPORTS_PSSL + +#if 0 // BGFX_PLATFORM_SUPPORTS_SPIRV +# undef BGFX_EMBEDDED_SHADER_SPIRV +# define BGFX_EMBEDDED_SHADER_SPIRV(_renderer, _name) { _renderer, BX_CONCATENATE(_name, _spv), sizeof(BX_CONCATENATE(_name, _spv) ) }, +#endif // BGFX_PLATFORM_SUPPORTS_PSSL + +#if BGFX_PLATFORM_SUPPORTS_METAL +# undef BGFX_EMBEDDED_SHADER_METAL +# define BGFX_EMBEDDED_SHADER_METAL(_renderer, _name) { _renderer, BX_CONCATENATE(_name, _mtl), sizeof(BX_CONCATENATE(_name, _mtl) ) }, +#endif // BGFX_PLATFORM_SUPPORTS_PSSL + +#define BGFX_EMBEDDED_SHADER(_name) \ + { \ + #_name, \ + { \ + BGFX_EMBEDDED_SHADER_DX9BC(bgfx::RendererType::Direct3D9, _name) \ + BGFX_EMBEDDED_SHADER_DXBC (bgfx::RendererType::Direct3D11, _name) \ + BGFX_EMBEDDED_SHADER_DXBC (bgfx::RendererType::Direct3D12, _name) \ + BGFX_EMBEDDED_SHADER_PSSL (bgfx::RendererType::Gnm, _name) \ + BGFX_EMBEDDED_SHADER_METAL(bgfx::RendererType::Metal, _name) \ + BGFX_EMBEDDED_SHADER_ESSL (bgfx::RendererType::OpenGLES, _name) \ + BGFX_EMBEDDED_SHADER_GLSL (bgfx::RendererType::OpenGL, _name) \ + BGFX_EMBEDDED_SHADER_SPIRV(bgfx::RendererType::Vulkan, _name) \ + { bgfx::RendererType::Noop, (const uint8_t*)"VSH\x4\x0\x0\x0\x0\x0\x0", 10 }, \ + { bgfx::RendererType::Count, NULL, 0 } \ + } \ + } + +#define BGFX_EMBEDDED_SHADER_END() \ + { \ + NULL, \ + { \ + { bgfx::RendererType::Count, NULL, 0 } \ + } \ + } + +namespace bgfx +{ + struct EmbeddedShader + { + struct Data + { + RendererType::Enum type; + const uint8_t* data; + uint32_t size; + }; + + const char* name; + Data data[RendererType::Count]; + }; + + ShaderHandle createEmbeddedShader(const bgfx::EmbeddedShader* _es, RendererType::Enum _type, const char* _name); + +} // namespace bgfx + +#endif // BGFX_EMBEDDED_SHADER_H_HEADER_GUARD |