summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/src
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/src')
-rw-r--r--3rdparty/bgfx/src/bgfx_shader.sh37
-rw-r--r--3rdparty/bgfx/src/renderer_d3d11.cpp2
-rw-r--r--3rdparty/bgfx/src/renderer_gl.cpp1
-rw-r--r--3rdparty/bgfx/src/vertexdecl.cpp16
4 files changed, 44 insertions, 12 deletions
diff --git a/3rdparty/bgfx/src/bgfx_shader.sh b/3rdparty/bgfx/src/bgfx_shader.sh
index e0e14cf544b..52de12e84a0 100644
--- a/3rdparty/bgfx/src/bgfx_shader.sh
+++ b/3rdparty/bgfx/src/bgfx_shader.sh
@@ -74,6 +74,16 @@ struct BgfxSampler3D
Texture3D m_texture;
};
+struct BgfxISampler3D
+{
+ Texture3D<ivec4> m_texture;
+};
+
+struct BgfxUSampler3D
+{
+ Texture3D<uvec4> m_texture;
+};
+
vec4 bgfxTexture3D(BgfxSampler3D _sampler, vec3 _coord)
{
return _sampler.m_texture.Sample(_sampler.m_sampler, _coord);
@@ -84,6 +94,20 @@ vec4 bgfxTexture3DLod(BgfxSampler3D _sampler, vec3 _coord, float _level)
return _sampler.m_texture.SampleLevel(_sampler.m_sampler, _coord, _level);
}
+ivec4 bgfxTexture3D(BgfxISampler3D _sampler, vec3 _coord)
+{
+ ivec3 size;
+ _sampler.m_texture.GetDimensions(size.x, size.y, size.z);
+ return _sampler.m_texture.Load(ivec4(_coord * size, 0) );
+}
+
+uvec4 bgfxTexture3D(BgfxUSampler3D _sampler, vec3 _coord)
+{
+ uvec3 size;
+ _sampler.m_texture.GetDimensions(size.x, size.y, size.z);
+ return _sampler.m_texture.Load(uvec4(_coord * size, 0) );
+}
+
struct BgfxSamplerCube
{
SamplerState m_sampler;
@@ -121,6 +145,12 @@ vec4 bgfxTextureCubeLod(BgfxSamplerCube _sampler, vec3 _coord, float _level)
uniform SamplerState _name ## Sampler : register(s[_reg]); \
uniform Texture3D _name ## Texture : register(t[_reg]); \
static BgfxSampler3D _name = { _name ## Sampler, _name ## Texture }
+# define ISAMPLER3D(_name, _reg) \
+ uniform Texture3D<ivec4> _name ## Texture : register(t[_reg]); \
+ static BgfxISampler3D _name = { _name ## Texture }
+# define USAMPLER3D(_name, _reg) \
+ uniform Texture3D<uvec4> _name ## Texture : register(t[_reg]); \
+ static BgfxUSampler3D _name = { _name ## Texture }
# define sampler3D BgfxSampler3D
# define texture3D(_sampler, _coord) bgfxTexture3D(_sampler, _coord)
# define texture3DLod(_sampler, _coord, _level) bgfxTexture3DLod(_sampler, _coord, _level)
@@ -247,6 +277,13 @@ vec4 mod(vec4 _a, vec4 _b) { return _a - _b * floor(_a / _b); }
# define uvec3_splat(_x) uvec3(_x)
# define uvec4_splat(_x) uvec4(_x)
+# if BGFX_SHADER_LANGUAGE_GLSL >= 130
+# define ISAMPLER3D(_name, _reg) uniform isampler3D _name
+# define USAMPLER3D(_name, _reg) uniform usampler3D _name
+ivec4 texture3D(isampler3D _sampler, vec3 _coord) { return texture(_sampler, _coord); }
+uvec4 texture3D(usampler3D _sampler, vec3 _coord) { return texture(_sampler, _coord); }
+# endif // BGFX_SHADER_LANGUAGE_GLSL >= 130
+
vec3 instMul(vec3 _vec, mat3 _mtx) { return mul(_vec, _mtx); }
vec3 instMul(mat3 _mtx, vec3 _vec) { return mul(_mtx, _vec); }
vec4 instMul(vec4 _vec, mat4 _mtx) { return mul(_vec, _mtx); }
diff --git a/3rdparty/bgfx/src/renderer_d3d11.cpp b/3rdparty/bgfx/src/renderer_d3d11.cpp
index 93806ea9431..1ccaeffd290 100644
--- a/3rdparty/bgfx/src/renderer_d3d11.cpp
+++ b/3rdparty/bgfx/src/renderer_d3d11.cpp
@@ -203,7 +203,7 @@ namespace bgfx
{ DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // Unknown
{ DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_UNKNOWN }, // R1
{ DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_UNKNOWN }, // R8
- { DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_UNKNOWN }, // R16
+ { DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_UINT, DXGI_FORMAT_UNKNOWN }, // R16
{ DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_UNKNOWN }, // R16F
{ DXGI_FORMAT_R32_UINT, DXGI_FORMAT_R32_UINT, DXGI_FORMAT_UNKNOWN }, // R32
{ DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_UNKNOWN }, // R32F
diff --git a/3rdparty/bgfx/src/renderer_gl.cpp b/3rdparty/bgfx/src/renderer_gl.cpp
index 8285bfdea18..6d4dc557175 100644
--- a/3rdparty/bgfx/src/renderer_gl.cpp
+++ b/3rdparty/bgfx/src/renderer_gl.cpp
@@ -721,6 +721,7 @@ namespace bgfx
"usampler3D",
"isamplerCube",
"usamplerCube",
+ NULL
};
static void GL_APIENTRY stubVertexAttribDivisor(GLuint /*_index*/, GLuint /*_divisor*/)
diff --git a/3rdparty/bgfx/src/vertexdecl.cpp b/3rdparty/bgfx/src/vertexdecl.cpp
index c0c4edeef1d..83435fa8cf2 100644
--- a/3rdparty/bgfx/src/vertexdecl.cpp
+++ b/3rdparty/bgfx/src/vertexdecl.cpp
@@ -41,27 +41,21 @@ namespace bgfx
static const uint8_t (*s_attribTypeSize[])[AttribType::Count][4] =
{
-#if BGFX_CONFIG_RENDERER_DIRECT3D9
- &s_attribTypeSizeDx9,
-#elif BGFX_CONFIG_RENDERER_DIRECT3D11 || BGFX_CONFIG_RENDERER_DIRECT3D12
- &s_attribTypeSizeDx1x,
-#elif BGFX_CONFIG_RENDERER_OPENGL || BGFX_CONFIG_RENDERER_OPENGLES || BGFX_CONFIG_RENDERER_VULKAN
- &s_attribTypeSizeGl,
-#else
- &s_attribTypeSizeDx9,
-#endif // BGFX_CONFIG_RENDERER_
+ &s_attribTypeSizeDx9, // Null
&s_attribTypeSizeDx9, // Direct3D9
&s_attribTypeSizeDx1x, // Direct3D11
&s_attribTypeSizeDx1x, // Direct3D12
&s_attribTypeSizeGl, // OpenGLES
&s_attribTypeSizeGl, // OpenGL
&s_attribTypeSizeGl, // Vulkan
+ &s_attribTypeSizeDx9, // Count
};
- BX_STATIC_ASSERT(BX_COUNTOF(s_attribTypeSize) == bgfx::RendererType::Count);
+ BX_STATIC_ASSERT(BX_COUNTOF(s_attribTypeSize) == RendererType::Count+1);
void initAttribTypeSizeTable(RendererType::Enum _type)
{
- s_attribTypeSize[0] = s_attribTypeSize[_type];
+ s_attribTypeSize[0] = s_attribTypeSize[_type];
+ s_attribTypeSize[RendererType::Count] = s_attribTypeSize[_type];
}
void dbgPrintfVargs(const char* _format, va_list _argList)