diff options
Diffstat (limited to '3rdparty/bgfx/src')
-rw-r--r-- | 3rdparty/bgfx/src/bgfx_shader.sh | 37 | ||||
-rw-r--r-- | 3rdparty/bgfx/src/renderer_d3d11.cpp | 2 | ||||
-rw-r--r-- | 3rdparty/bgfx/src/renderer_gl.cpp | 1 | ||||
-rw-r--r-- | 3rdparty/bgfx/src/vertexdecl.cpp | 16 |
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) |