mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-17 20:52:36 +01:00
Separating sampler flags from texture creation flags.
This commit is contained in:
@@ -172,10 +172,10 @@ public:
|
||||
// Create vertex stream declaration.
|
||||
PosTexcoordVertex::init();
|
||||
|
||||
m_textures[ 0] = loadTexture("textures/texture_compression_bc1.ktx", BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP);
|
||||
m_textures[ 1] = loadTexture("textures/texture_compression_bc2.ktx", BGFX_TEXTURE_U_CLAMP);
|
||||
m_textures[ 2] = loadTexture("textures/texture_compression_bc3.ktx", BGFX_TEXTURE_V_CLAMP);
|
||||
m_textures[ 3] = loadTexture("textures/texture_compression_etc1.ktx", BGFX_TEXTURE_U_BORDER | BGFX_TEXTURE_V_BORDER | BGFX_TEXTURE_BORDER_COLOR(1));
|
||||
m_textures[ 0] = loadTexture("textures/texture_compression_bc1.ktx", BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP);
|
||||
m_textures[ 1] = loadTexture("textures/texture_compression_bc2.ktx", BGFX_SAMPLER_U_CLAMP);
|
||||
m_textures[ 2] = loadTexture("textures/texture_compression_bc3.ktx", BGFX_SAMPLER_V_CLAMP);
|
||||
m_textures[ 3] = loadTexture("textures/texture_compression_etc1.ktx", BGFX_SAMPLER_U_BORDER | BGFX_SAMPLER_V_BORDER | BGFX_SAMPLER_BORDER_COLOR(1));
|
||||
m_textures[ 4] = loadTexture("textures/texture_compression_etc2.ktx");
|
||||
m_textures[ 5] = loadTexture("textures/texture_compression_ptc12.pvr");
|
||||
m_textures[ 6] = loadTexture("textures/texture_compression_ptc14.pvr");
|
||||
@@ -214,17 +214,17 @@ public:
|
||||
|
||||
if (0 != (BGFX_CAPS_FORMAT_TEXTURE_3D & caps->formats[bgfx::TextureFormat::R8]) )
|
||||
{
|
||||
m_textures3d[m_numTextures3d++] = bgfx::createTexture3D(32, 32, 32, false, bgfx::TextureFormat::R8, BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP|BGFX_TEXTURE_W_CLAMP, mem8);
|
||||
m_textures3d[m_numTextures3d++] = bgfx::createTexture3D(32, 32, 32, false, bgfx::TextureFormat::R8, BGFX_SAMPLER_U_CLAMP|BGFX_SAMPLER_V_CLAMP|BGFX_SAMPLER_W_CLAMP, mem8);
|
||||
}
|
||||
|
||||
if (0 != (BGFX_CAPS_FORMAT_TEXTURE_3D & caps->formats[bgfx::TextureFormat::R16F]) )
|
||||
{
|
||||
m_textures3d[m_numTextures3d++] = bgfx::createTexture3D(32, 32, 32, false, bgfx::TextureFormat::R16F, BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP|BGFX_TEXTURE_W_CLAMP, mem16f);
|
||||
m_textures3d[m_numTextures3d++] = bgfx::createTexture3D(32, 32, 32, false, bgfx::TextureFormat::R16F, BGFX_SAMPLER_U_CLAMP|BGFX_SAMPLER_V_CLAMP|BGFX_SAMPLER_W_CLAMP, mem16f);
|
||||
}
|
||||
|
||||
if (0 != (BGFX_CAPS_FORMAT_TEXTURE_3D & caps->formats[bgfx::TextureFormat::R32F]) )
|
||||
{
|
||||
m_textures3d[m_numTextures3d++] = bgfx::createTexture3D(32, 32, 32, false, bgfx::TextureFormat::R32F, BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP|BGFX_TEXTURE_W_CLAMP, mem32f);
|
||||
m_textures3d[m_numTextures3d++] = bgfx::createTexture3D(32, 32, 32, false, bgfx::TextureFormat::R32F, BGFX_SAMPLER_U_CLAMP|BGFX_SAMPLER_V_CLAMP|BGFX_SAMPLER_W_CLAMP, mem32f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -266,7 +266,7 @@ public:
|
||||
, false
|
||||
, 1
|
||||
, bgfx::TextureFormat::BGRA8
|
||||
, BGFX_TEXTURE_MIN_POINT|BGFX_TEXTURE_MAG_POINT|BGFX_TEXTURE_MIP_POINT
|
||||
, BGFX_SAMPLER_MIN_POINT|BGFX_SAMPLER_MAG_POINT|BGFX_SAMPLER_MIP_POINT
|
||||
);
|
||||
|
||||
if (m_blitSupported)
|
||||
@@ -276,7 +276,7 @@ public:
|
||||
, false
|
||||
, 1
|
||||
, bgfx::TextureFormat::BGRA8
|
||||
, BGFX_TEXTURE_MIN_POINT|BGFX_TEXTURE_MAG_POINT|BGFX_TEXTURE_MIP_POINT|BGFX_TEXTURE_BLIT_DST
|
||||
, BGFX_SAMPLER_MIN_POINT|BGFX_SAMPLER_MAG_POINT|BGFX_SAMPLER_MIP_POINT|BGFX_TEXTURE_BLIT_DST
|
||||
);
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ public:
|
||||
, false
|
||||
, 1
|
||||
, bgfx::TextureFormat::BGRA8
|
||||
, BGFX_TEXTURE_MIN_POINT|BGFX_TEXTURE_MAG_POINT|BGFX_TEXTURE_MIP_POINT
|
||||
, BGFX_SAMPLER_MIN_POINT|BGFX_SAMPLER_MAG_POINT|BGFX_SAMPLER_MIP_POINT
|
||||
);
|
||||
|
||||
m_texture2dData = (uint8_t*)malloc(kTexture2dSize*kTexture2dSize*4);
|
||||
|
||||
@@ -170,9 +170,9 @@ public:
|
||||
|
||||
m_uffizi = loadTexture("textures/uffizi.ktx"
|
||||
, 0
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_TEXTURE_W_CLAMP
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
| BGFX_SAMPLER_W_CLAMP
|
||||
);
|
||||
|
||||
m_skyProgram = loadProgram("vs_hdr_skybox", "fs_hdr_skybox");
|
||||
@@ -307,7 +307,7 @@ public:
|
||||
, false
|
||||
, 1
|
||||
, bgfx::TextureFormat::BGRA8
|
||||
, ((msaa + 1) << BGFX_TEXTURE_RT_MSAA_SHIFT) | BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP
|
||||
, ((msaa + 1) << BGFX_TEXTURE_RT_MSAA_SHIFT) | BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP
|
||||
);
|
||||
|
||||
const uint32_t textureFlags = BGFX_TEXTURE_RT_WRITE_ONLY|( (msaa+1)<<BGFX_TEXTURE_RT_MSAA_SHIFT);
|
||||
|
||||
@@ -81,7 +81,7 @@ public:
|
||||
|
||||
m_textureStipple = bgfx::createTexture2D(8, 4, false, 1
|
||||
, bgfx::TextureFormat::R8
|
||||
, BGFX_TEXTURE_MAG_POINT|BGFX_TEXTURE_MIN_POINT
|
||||
, BGFX_SAMPLER_MAG_POINT|BGFX_SAMPLER_MIN_POINT
|
||||
, stippleTex
|
||||
);
|
||||
|
||||
|
||||
@@ -1913,7 +1913,7 @@ public:
|
||||
|
||||
bgfx::TextureHandle fbtextures[] =
|
||||
{
|
||||
bgfx::createTexture2D(uint16_t(m_viewState.m_width), uint16_t(m_viewState.m_height), false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP | BGFX_TEXTURE_RT),
|
||||
bgfx::createTexture2D(uint16_t(m_viewState.m_width), uint16_t(m_viewState.m_height), false, 1, bgfx::TextureFormat::BGRA8, BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP | BGFX_TEXTURE_RT),
|
||||
bgfx::createTexture2D(uint16_t(m_viewState.m_width), uint16_t(m_viewState.m_height), false, 1, bgfx::TextureFormat::D16, BGFX_TEXTURE_RT_WRITE_ONLY),
|
||||
};
|
||||
|
||||
@@ -2117,7 +2117,7 @@ public:
|
||||
|
||||
bgfx::TextureHandle fbtextures[] =
|
||||
{
|
||||
bgfx::createTexture2D(uint16_t(m_viewState.m_width), uint16_t(m_viewState.m_height), false, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP|BGFX_TEXTURE_RT),
|
||||
bgfx::createTexture2D(uint16_t(m_viewState.m_width), uint16_t(m_viewState.m_height), false, 1, bgfx::TextureFormat::BGRA8, BGFX_SAMPLER_U_CLAMP|BGFX_SAMPLER_V_CLAMP|BGFX_TEXTURE_RT),
|
||||
bgfx::createTexture2D(uint16_t(m_viewState.m_width), uint16_t(m_viewState.m_height), false, 1, bgfx::TextureFormat::D16, BGFX_TEXTURE_RT_WRITE_ONLY)
|
||||
};
|
||||
s_stencilFb = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true);
|
||||
|
||||
@@ -146,7 +146,7 @@ public:
|
||||
, false
|
||||
, 1
|
||||
, bgfx::TextureFormat::D16
|
||||
, BGFX_TEXTURE_RT | BGFX_TEXTURE_COMPARE_LEQUAL
|
||||
, BGFX_TEXTURE_RT | BGFX_SAMPLER_COMPARE_LEQUAL
|
||||
),
|
||||
};
|
||||
shadowMapTexture = fbtextures[0];
|
||||
|
||||
@@ -160,10 +160,10 @@ struct LightProbe
|
||||
char filePath[512];
|
||||
|
||||
bx::snprintf(filePath, BX_COUNTOF(filePath), "textures/%s_lod.dds", _name);
|
||||
m_tex = loadTexture(filePath, BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP|BGFX_TEXTURE_W_CLAMP);
|
||||
m_tex = loadTexture(filePath, BGFX_SAMPLER_U_CLAMP|BGFX_SAMPLER_V_CLAMP|BGFX_SAMPLER_W_CLAMP);
|
||||
|
||||
bx::snprintf(filePath, BX_COUNTOF(filePath), "textures/%s_irr.dds", _name);
|
||||
m_texIrr = loadTexture(filePath, BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP|BGFX_TEXTURE_W_CLAMP);
|
||||
m_texIrr = loadTexture(filePath, BGFX_SAMPLER_U_CLAMP|BGFX_SAMPLER_V_CLAMP|BGFX_SAMPLER_W_CLAMP);
|
||||
}
|
||||
|
||||
void destroy()
|
||||
|
||||
@@ -420,11 +420,11 @@ public:
|
||||
|
||||
const uint32_t samplerFlags = 0
|
||||
| BGFX_TEXTURE_RT
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
;
|
||||
m_gbufferTex[0] = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::BGRA8, samplerFlags);
|
||||
m_gbufferTex[1] = bgfx::createTexture2D(uint16_t(m_width), uint16_t(m_height), false, 1, bgfx::TextureFormat::BGRA8, samplerFlags);
|
||||
|
||||
@@ -829,11 +829,11 @@ void VectorDisplay::setupResDependent()
|
||||
{
|
||||
const uint32_t samplerFlags = 0
|
||||
| BGFX_TEXTURE_RT
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
;
|
||||
m_sceneFrameBuffer = bgfx::createFrameBuffer(m_screenWidth, m_screenHeight, bgfx::TextureFormat::BGRA8, samplerFlags);
|
||||
|
||||
@@ -879,10 +879,10 @@ void VectorDisplay::genLinetex() // generate
|
||||
}
|
||||
|
||||
const uint32_t flags = 0
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
;
|
||||
|
||||
m_lineTexId = bgfx::createTexture2D(TEXTURE_SIZE, TEXTURE_SIZE, false, 1, bgfx::TextureFormat::BGRA8, flags, mem);
|
||||
|
||||
@@ -118,19 +118,19 @@ public:
|
||||
// Set up ID buffer, which has a color target and depth buffer
|
||||
m_pickingRT = bgfx::createTexture2D(ID_DIM, ID_DIM, false, 1, bgfx::TextureFormat::RGBA8, 0
|
||||
| BGFX_TEXTURE_RT
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
);
|
||||
m_pickingRTDepth = bgfx::createTexture2D(ID_DIM, ID_DIM, false, 1, bgfx::TextureFormat::D24S8, 0
|
||||
| BGFX_TEXTURE_RT
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
);
|
||||
|
||||
// CPU texture for blitting to and reading ID buffer so we can see what was clicked on.
|
||||
@@ -140,11 +140,11 @@ public:
|
||||
m_blitTex = bgfx::createTexture2D(ID_DIM, ID_DIM, false, 1, bgfx::TextureFormat::RGBA8, 0
|
||||
| BGFX_TEXTURE_BLIT_DST
|
||||
| BGFX_TEXTURE_READ_BACK
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
);
|
||||
|
||||
bgfx::TextureHandle rt[2] =
|
||||
|
||||
@@ -304,11 +304,11 @@ public:
|
||||
|
||||
const uint32_t samplerFlags = 0
|
||||
| BGFX_TEXTURE_RT
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
;
|
||||
|
||||
// Make gbuffer and related textures
|
||||
@@ -327,11 +327,11 @@ public:
|
||||
// Make shadow buffer
|
||||
const uint32_t rsmFlags = 0
|
||||
| BGFX_TEXTURE_RT
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
;
|
||||
|
||||
// Reflective shadow map
|
||||
@@ -553,7 +553,7 @@ public:
|
||||
bgfx::setTexture(2, s_light, bgfx::getTexture(m_lightBuffer, 0) );
|
||||
bgfx::setTexture(3, s_depth, bgfx::getTexture(m_gbuffer, GBUFFER_RT_DEPTH) );
|
||||
bgfx::setTexture(4, s_shadowMap, bgfx::getTexture(m_shadowBuffer, SHADOW_RT_DEPTH)
|
||||
, BGFX_TEXTURE_COMPARE_LEQUAL
|
||||
, BGFX_SAMPLER_COMPARE_LEQUAL
|
||||
);
|
||||
|
||||
// Uniforms for combine pass
|
||||
|
||||
@@ -590,11 +590,11 @@ public:
|
||||
{
|
||||
const uint32_t samplerFlags = 0
|
||||
| BGFX_TEXTURE_RT
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
;
|
||||
|
||||
// Create buffers for the HiZ pass
|
||||
|
||||
@@ -23,7 +23,7 @@ bgfx::ShaderHandle loadShader(const char* _name);
|
||||
bgfx::ProgramHandle loadProgram(const char* _vsName, const char* _fsName);
|
||||
|
||||
///
|
||||
bgfx::TextureHandle loadTexture(const char* _name, uint32_t _flags = BGFX_TEXTURE_NONE, uint8_t _skip = 0, bgfx::TextureInfo* _info = NULL, bimg::Orientation::Enum* _orientation = NULL);
|
||||
bgfx::TextureHandle loadTexture(const char* _name, uint32_t _flags = BGFX_SAMPLER_NONE, uint8_t _skip = 0, bgfx::TextureInfo* _info = NULL, bimg::Orientation::Enum* _orientation = NULL);
|
||||
|
||||
///
|
||||
bimg::ImageContainer* imageLoad(const char* _filePath, bgfx::TextureFormat::Enum _dstFormat);
|
||||
|
||||
@@ -299,7 +299,7 @@ Atlas::Atlas(uint16_t _textureSize, const uint8_t* _textureBuffer, uint16_t _reg
|
||||
, false
|
||||
, 1
|
||||
, bgfx::TextureFormat::BGRA8
|
||||
, BGFX_TEXTURE_NONE
|
||||
, BGFX_SAMPLER_NONE
|
||||
, bgfx::makeRef(m_textureBuffer, getTextureBufferSize() )
|
||||
);
|
||||
}
|
||||
|
||||
@@ -331,7 +331,7 @@ namespace
|
||||
, false
|
||||
, 1
|
||||
, NVG_TEXTURE_RGBA == _type ? bgfx::TextureFormat::RGBA8 : bgfx::TextureFormat::R8
|
||||
, BGFX_TEXTURE_NONE
|
||||
, BGFX_SAMPLER_NONE
|
||||
);
|
||||
|
||||
if (NULL != mem)
|
||||
|
||||
@@ -2530,7 +2530,7 @@ namespace bgfx
|
||||
///
|
||||
TextureHandle createTexture(
|
||||
const Memory* _mem
|
||||
, uint32_t _flags = BGFX_TEXTURE_NONE
|
||||
, uint32_t _flags = BGFX_SAMPLER_NONE
|
||||
, uint8_t _skip = 0
|
||||
, TextureInfo* _info = NULL
|
||||
);
|
||||
@@ -2562,7 +2562,7 @@ namespace bgfx
|
||||
, bool _hasMips
|
||||
, uint16_t _numLayers
|
||||
, TextureFormat::Enum _format
|
||||
, uint32_t _flags = BGFX_TEXTURE_NONE
|
||||
, uint32_t _flags = BGFX_SAMPLER_NONE
|
||||
, const Memory* _mem = NULL
|
||||
);
|
||||
|
||||
@@ -2589,7 +2589,7 @@ namespace bgfx
|
||||
, bool _hasMips
|
||||
, uint16_t _numLayers
|
||||
, TextureFormat::Enum _format
|
||||
, uint32_t _flags = BGFX_TEXTURE_NONE
|
||||
, uint32_t _flags = BGFX_SAMPLER_NONE
|
||||
);
|
||||
|
||||
/// Create 3D texture.
|
||||
@@ -2617,7 +2617,7 @@ namespace bgfx
|
||||
, uint16_t _depth
|
||||
, bool _hasMips
|
||||
, TextureFormat::Enum _format
|
||||
, uint32_t _flags = BGFX_TEXTURE_NONE
|
||||
, uint32_t _flags = BGFX_SAMPLER_NONE
|
||||
, const Memory* _mem = NULL
|
||||
);
|
||||
|
||||
@@ -2646,7 +2646,7 @@ namespace bgfx
|
||||
, bool _hasMips
|
||||
, uint16_t _numLayers
|
||||
, TextureFormat::Enum _format
|
||||
, uint32_t _flags = BGFX_TEXTURE_NONE
|
||||
, uint32_t _flags = BGFX_SAMPLER_NONE
|
||||
, const Memory* _mem = NULL
|
||||
);
|
||||
|
||||
@@ -2828,7 +2828,7 @@ namespace bgfx
|
||||
uint16_t _width
|
||||
, uint16_t _height
|
||||
, TextureFormat::Enum _format
|
||||
, uint32_t _textureFlags = BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP
|
||||
, uint32_t _textureFlags = BGFX_SAMPLER_U_CLAMP|BGFX_SAMPLER_V_CLAMP
|
||||
);
|
||||
|
||||
/// Create frame buffer with size based on backbuffer ratio. Frame buffer will maintain ratio
|
||||
@@ -2851,7 +2851,7 @@ namespace bgfx
|
||||
FrameBufferHandle createFrameBuffer(
|
||||
BackbufferRatio::Enum _ratio
|
||||
, TextureFormat::Enum _format
|
||||
, uint32_t _textureFlags = BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP
|
||||
, uint32_t _textureFlags = BGFX_SAMPLER_U_CLAMP|BGFX_SAMPLER_V_CLAMP
|
||||
);
|
||||
|
||||
/// Create MRT frame buffer from texture handles (simple).
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#ifndef BGFX_DEFINES_H_HEADER_GUARD
|
||||
#define BGFX_DEFINES_H_HEADER_GUARD
|
||||
|
||||
#define BGFX_API_VERSION UINT32_C(76)
|
||||
#define BGFX_API_VERSION UINT32_C(77)
|
||||
|
||||
/// Color RGB/alpha/depth write. When it's not specified write will be disabled.
|
||||
#define BGFX_STATE_WRITE_R UINT64_C(0x0000000000000001) //!< Enable R write.
|
||||
@@ -334,34 +334,8 @@
|
||||
| BGFX_BUFFER_COMPUTE_WRITE \
|
||||
)
|
||||
|
||||
///
|
||||
/// Texture creation flags.
|
||||
#define BGFX_TEXTURE_NONE UINT32_C(0x00000000) //!<
|
||||
#define BGFX_TEXTURE_U_MIRROR UINT32_C(0x00000001) //!< Wrap U mode: Mirror
|
||||
#define BGFX_TEXTURE_U_CLAMP UINT32_C(0x00000002) //!< Wrap U mode: Clamp
|
||||
#define BGFX_TEXTURE_U_BORDER UINT32_C(0x00000003) //!< Wrap U mode: Border
|
||||
#define BGFX_TEXTURE_U_SHIFT 0 //!<
|
||||
#define BGFX_TEXTURE_U_MASK UINT32_C(0x00000003) //!<
|
||||
#define BGFX_TEXTURE_V_MIRROR UINT32_C(0x00000004) //!< Wrap V mode: Mirror
|
||||
#define BGFX_TEXTURE_V_CLAMP UINT32_C(0x00000008) //!< Wrap V mode: Clamp
|
||||
#define BGFX_TEXTURE_V_BORDER UINT32_C(0x0000000c) //!< Wrap V mode: Border
|
||||
#define BGFX_TEXTURE_V_SHIFT 2 //!<
|
||||
#define BGFX_TEXTURE_V_MASK UINT32_C(0x0000000c) //!<
|
||||
#define BGFX_TEXTURE_W_MIRROR UINT32_C(0x00000010) //!< Wrap W mode: Mirror
|
||||
#define BGFX_TEXTURE_W_CLAMP UINT32_C(0x00000020) //!< Wrap W mode: Clamp
|
||||
#define BGFX_TEXTURE_W_BORDER UINT32_C(0x00000030) //!< Wrap W mode: Border
|
||||
#define BGFX_TEXTURE_W_SHIFT 4 //!<
|
||||
#define BGFX_TEXTURE_W_MASK UINT32_C(0x00000030) //!<
|
||||
#define BGFX_TEXTURE_MIN_POINT UINT32_C(0x00000040) //!< Min sampling mode: Point
|
||||
#define BGFX_TEXTURE_MIN_ANISOTROPIC UINT32_C(0x00000080) //!< Min sampling mode: Anisotropic
|
||||
#define BGFX_TEXTURE_MIN_SHIFT 6 //!<
|
||||
#define BGFX_TEXTURE_MIN_MASK UINT32_C(0x000000c0) //!<
|
||||
#define BGFX_TEXTURE_MAG_POINT UINT32_C(0x00000100) //!< Mag sampling mode: Point
|
||||
#define BGFX_TEXTURE_MAG_ANISOTROPIC UINT32_C(0x00000200) //!< Mag sampling mode: Anisotropic
|
||||
#define BGFX_TEXTURE_MAG_SHIFT 8 //!<
|
||||
#define BGFX_TEXTURE_MAG_MASK UINT32_C(0x00000300) //!<
|
||||
#define BGFX_TEXTURE_MIP_POINT UINT32_C(0x00000400) //!< Mip sampling mode: Point
|
||||
#define BGFX_TEXTURE_MIP_SHIFT 10 //!<
|
||||
#define BGFX_TEXTURE_MIP_MASK UINT32_C(0x00000400) //!<
|
||||
#define BGFX_TEXTURE_MSAA_SAMPLE UINT32_C(0x00000800) //!< Texture will be used for MSAA sampling.
|
||||
#define BGFX_TEXTURE_RT UINT32_C(0x00001000) //!<
|
||||
#define BGFX_TEXTURE_RT_MSAA_X2 UINT32_C(0x00002000) //!< Render target MSAAx2 mode.
|
||||
@@ -372,35 +346,64 @@
|
||||
#define BGFX_TEXTURE_RT_MSAA_MASK UINT32_C(0x00007000) //!<
|
||||
#define BGFX_TEXTURE_RT_WRITE_ONLY UINT32_C(0x00008000) //!< Render target will be used for writing only.
|
||||
#define BGFX_TEXTURE_RT_MASK UINT32_C(0x0000f000) //!<
|
||||
#define BGFX_TEXTURE_COMPARE_LESS UINT32_C(0x00010000) //!< Compare when sampling depth texture: less.
|
||||
#define BGFX_TEXTURE_COMPARE_LEQUAL UINT32_C(0x00020000) //!< Compare when sampling depth texture: less or equal.
|
||||
#define BGFX_TEXTURE_COMPARE_EQUAL UINT32_C(0x00030000) //!< Compare when sampling depth texture: equal.
|
||||
#define BGFX_TEXTURE_COMPARE_GEQUAL UINT32_C(0x00040000) //!< Compare when sampling depth texture: greater or equal.
|
||||
#define BGFX_TEXTURE_COMPARE_GREATER UINT32_C(0x00050000) //!< Compare when sampling depth texture: greater.
|
||||
#define BGFX_TEXTURE_COMPARE_NOTEQUAL UINT32_C(0x00060000) //!< Compare when sampling depth texture: not equal.
|
||||
#define BGFX_TEXTURE_COMPARE_NEVER UINT32_C(0x00070000) //!< Compare when sampling depth texture: never.
|
||||
#define BGFX_TEXTURE_COMPARE_ALWAYS UINT32_C(0x00080000) //!< Compare when sampling depth texture: always.
|
||||
#define BGFX_TEXTURE_COMPARE_SHIFT 16 //!<
|
||||
#define BGFX_TEXTURE_COMPARE_MASK UINT32_C(0x000f0000) //!<
|
||||
#define BGFX_TEXTURE_COMPUTE_WRITE UINT32_C(0x00100000) //!< Texture will be used for compute write.
|
||||
#define BGFX_TEXTURE_SRGB UINT32_C(0x00200000) //!< Sample texture as sRGB.
|
||||
#define BGFX_TEXTURE_BLIT_DST UINT32_C(0x00400000) //!< Texture will be used as blit destination.
|
||||
#define BGFX_TEXTURE_READ_BACK UINT32_C(0x00800000) //!< Texture will be used for read back from GPU.
|
||||
#define BGFX_TEXTURE_BORDER_COLOR_SHIFT 24 //!<
|
||||
#define BGFX_TEXTURE_BORDER_COLOR_MASK UINT32_C(0x0f000000) //!<
|
||||
#define BGFX_TEXTURE_RESERVED_SHIFT 28 //!<
|
||||
#define BGFX_TEXTURE_RESERVED_MASK UINT32_C(0xf0000000) //!<
|
||||
|
||||
#define BGFX_TEXTURE_BORDER_COLOR(_index) ( (_index << BGFX_TEXTURE_BORDER_COLOR_SHIFT) & BGFX_TEXTURE_BORDER_COLOR_MASK)
|
||||
/// Sampler flags.
|
||||
#define BGFX_SAMPLER_NONE UINT32_C(0x00000000) //!<
|
||||
#define BGFX_SAMPLER_U_MIRROR UINT32_C(0x00000001) //!< Wrap U mode: Mirror
|
||||
#define BGFX_SAMPLER_U_CLAMP UINT32_C(0x00000002) //!< Wrap U mode: Clamp
|
||||
#define BGFX_SAMPLER_U_BORDER UINT32_C(0x00000003) //!< Wrap U mode: Border
|
||||
#define BGFX_SAMPLER_U_SHIFT 0 //!<
|
||||
#define BGFX_SAMPLER_U_MASK UINT32_C(0x00000003) //!<
|
||||
#define BGFX_SAMPLER_V_MIRROR UINT32_C(0x00000004) //!< Wrap V mode: Mirror
|
||||
#define BGFX_SAMPLER_V_CLAMP UINT32_C(0x00000008) //!< Wrap V mode: Clamp
|
||||
#define BGFX_SAMPLER_V_BORDER UINT32_C(0x0000000c) //!< Wrap V mode: Border
|
||||
#define BGFX_SAMPLER_V_SHIFT 2 //!<
|
||||
#define BGFX_SAMPLER_V_MASK UINT32_C(0x0000000c) //!<
|
||||
#define BGFX_SAMPLER_W_MIRROR UINT32_C(0x00000010) //!< Wrap W mode: Mirror
|
||||
#define BGFX_SAMPLER_W_CLAMP UINT32_C(0x00000020) //!< Wrap W mode: Clamp
|
||||
#define BGFX_SAMPLER_W_BORDER UINT32_C(0x00000030) //!< Wrap W mode: Border
|
||||
#define BGFX_SAMPLER_W_SHIFT 4 //!<
|
||||
#define BGFX_SAMPLER_W_MASK UINT32_C(0x00000030) //!<
|
||||
#define BGFX_SAMPLER_MIN_POINT UINT32_C(0x00000040) //!< Min sampling mode: Point
|
||||
#define BGFX_SAMPLER_MIN_ANISOTROPIC UINT32_C(0x00000080) //!< Min sampling mode: Anisotropic
|
||||
#define BGFX_SAMPLER_MIN_SHIFT 6 //!<
|
||||
#define BGFX_SAMPLER_MIN_MASK UINT32_C(0x000000c0) //!<
|
||||
#define BGFX_SAMPLER_MAG_POINT UINT32_C(0x00000100) //!< Mag sampling mode: Point
|
||||
#define BGFX_SAMPLER_MAG_ANISOTROPIC UINT32_C(0x00000200) //!< Mag sampling mode: Anisotropic
|
||||
#define BGFX_SAMPLER_MAG_SHIFT 8 //!<
|
||||
#define BGFX_SAMPLER_MAG_MASK UINT32_C(0x00000300) //!<
|
||||
#define BGFX_SAMPLER_MIP_POINT UINT32_C(0x00000400) //!< Mip sampling mode: Point
|
||||
#define BGFX_SAMPLER_MIP_SHIFT 10 //!<
|
||||
#define BGFX_SAMPLER_MIP_MASK UINT32_C(0x00000400) //!<
|
||||
#define BGFX_SAMPLER_COMPARE_LESS UINT32_C(0x00010000) //!< Compare when sampling depth texture: less.
|
||||
#define BGFX_SAMPLER_COMPARE_LEQUAL UINT32_C(0x00020000) //!< Compare when sampling depth texture: less or equal.
|
||||
#define BGFX_SAMPLER_COMPARE_EQUAL UINT32_C(0x00030000) //!< Compare when sampling depth texture: equal.
|
||||
#define BGFX_SAMPLER_COMPARE_GEQUAL UINT32_C(0x00040000) //!< Compare when sampling depth texture: greater or equal.
|
||||
#define BGFX_SAMPLER_COMPARE_GREATER UINT32_C(0x00050000) //!< Compare when sampling depth texture: greater.
|
||||
#define BGFX_SAMPLER_COMPARE_NOTEQUAL UINT32_C(0x00060000) //!< Compare when sampling depth texture: not equal.
|
||||
#define BGFX_SAMPLER_COMPARE_NEVER UINT32_C(0x00070000) //!< Compare when sampling depth texture: never.
|
||||
#define BGFX_SAMPLER_COMPARE_ALWAYS UINT32_C(0x00080000) //!< Compare when sampling depth texture: always.
|
||||
#define BGFX_SAMPLER_COMPARE_SHIFT 16 //!<
|
||||
#define BGFX_SAMPLER_COMPARE_MASK UINT32_C(0x000f0000) //!<
|
||||
#define BGFX_SAMPLER_BORDER_COLOR_SHIFT 24 //!<
|
||||
#define BGFX_SAMPLER_BORDER_COLOR_MASK UINT32_C(0x0f000000) //!<
|
||||
#define BGFX_SAMPLER_RESERVED_SHIFT 28 //!<
|
||||
#define BGFX_SAMPLER_RESERVED_MASK UINT32_C(0xf0000000) //!<
|
||||
|
||||
#define BGFX_TEXTURE_SAMPLER_BITS_MASK (0 \
|
||||
| BGFX_TEXTURE_U_MASK \
|
||||
| BGFX_TEXTURE_V_MASK \
|
||||
| BGFX_TEXTURE_W_MASK \
|
||||
| BGFX_TEXTURE_MIN_MASK \
|
||||
| BGFX_TEXTURE_MAG_MASK \
|
||||
| BGFX_TEXTURE_MIP_MASK \
|
||||
| BGFX_TEXTURE_COMPARE_MASK \
|
||||
#define BGFX_SAMPLER_BORDER_COLOR(_index) ( (_index << BGFX_SAMPLER_BORDER_COLOR_SHIFT) & BGFX_SAMPLER_BORDER_COLOR_MASK)
|
||||
|
||||
#define BGFX_SAMPLER_BITS_MASK (0 \
|
||||
| BGFX_SAMPLER_U_MASK \
|
||||
| BGFX_SAMPLER_V_MASK \
|
||||
| BGFX_SAMPLER_W_MASK \
|
||||
| BGFX_SAMPLER_MIN_MASK \
|
||||
| BGFX_SAMPLER_MAG_MASK \
|
||||
| BGFX_SAMPLER_MIP_MASK \
|
||||
| BGFX_SAMPLER_COMPARE_MASK \
|
||||
)
|
||||
|
||||
///
|
||||
|
||||
@@ -134,7 +134,7 @@ namespace bgfx
|
||||
///
|
||||
/// @attention C99 equivalent is `bgfx_override_internal_texture`.
|
||||
///
|
||||
uintptr_t overrideInternal(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips, TextureFormat::Enum _format, uint32_t _flags = BGFX_TEXTURE_NONE);
|
||||
uintptr_t overrideInternal(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips, TextureFormat::Enum _format, uint32_t _flags = BGFX_SAMPLER_NONE);
|
||||
|
||||
} // namespace bgfx
|
||||
|
||||
|
||||
16
src/bgfx.cpp
16
src/bgfx.cpp
@@ -609,11 +609,11 @@ namespace bgfx
|
||||
charsetFillTexture(vga8x8, rgba, 8, pitch, bpp);
|
||||
charsetFillTexture(vga8x16, &rgba[8*pitch], 16, pitch, bpp);
|
||||
m_texture = createTexture2D(width, height, false, 1, TextureFormat::R8
|
||||
, BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
, BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
, mem
|
||||
);
|
||||
|
||||
@@ -4541,9 +4541,9 @@ BGFX_TEXTURE_FORMAT_BIMG(Count);
|
||||
#define FLAGS_MASK_TEST(_flags, _mask) ( (_flags) == ( (_flags) & (_mask) ) )
|
||||
|
||||
BX_STATIC_ASSERT(FLAGS_MASK_TEST(0
|
||||
| BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER
|
||||
| BGFX_TEXTURE_INTERNAL_SHARED
|
||||
, BGFX_TEXTURE_RESERVED_MASK
|
||||
| BGFX_SAMPLER_INTERNAL_DEFAULT
|
||||
| BGFX_SAMPLER_INTERNAL_SHARED
|
||||
, BGFX_SAMPLER_RESERVED_MASK
|
||||
) );
|
||||
|
||||
BX_STATIC_ASSERT(FLAGS_MASK_TEST(0
|
||||
|
||||
20
src/bgfx_p.h
20
src/bgfx_p.h
@@ -209,13 +209,13 @@ namespace stl = std;
|
||||
|
||||
#define BGFX_MAX_COMPUTE_BINDINGS BGFX_CONFIG_MAX_TEXTURE_SAMPLERS
|
||||
|
||||
#define BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER UINT32_C(0x10000000)
|
||||
#define BGFX_TEXTURE_INTERNAL_SHARED UINT32_C(0x20000000)
|
||||
#define BGFX_SAMPLER_INTERNAL_DEFAULT UINT32_C(0x10000000)
|
||||
#define BGFX_SAMPLER_INTERNAL_SHARED UINT32_C(0x20000000)
|
||||
|
||||
#define BGFX_RESET_INTERNAL_FORCE UINT32_C(0x80000000)
|
||||
#define BGFX_RESET_INTERNAL_FORCE UINT32_C(0x80000000)
|
||||
|
||||
#define BGFX_STATE_INTERNAL_SCISSOR UINT64_C(0x2000000000000000)
|
||||
#define BGFX_STATE_INTERNAL_OCCLUSION_QUERY UINT64_C(0x4000000000000000)
|
||||
#define BGFX_STATE_INTERNAL_SCISSOR UINT64_C(0x2000000000000000)
|
||||
#define BGFX_STATE_INTERNAL_OCCLUSION_QUERY UINT64_C(0x4000000000000000)
|
||||
|
||||
#define BGFX_SUBMIT_INTERNAL_OCCLUSION_VISIBLE UINT8_C(0x80)
|
||||
|
||||
@@ -493,9 +493,9 @@ namespace bgfx
|
||||
|
||||
inline bool needBorderColor(uint32_t _flags)
|
||||
{
|
||||
return BGFX_TEXTURE_U_BORDER == (_flags & BGFX_TEXTURE_U_BORDER)
|
||||
|| BGFX_TEXTURE_V_BORDER == (_flags & BGFX_TEXTURE_V_BORDER)
|
||||
|| BGFX_TEXTURE_W_BORDER == (_flags & BGFX_TEXTURE_W_BORDER)
|
||||
return BGFX_SAMPLER_U_BORDER == (_flags & BGFX_SAMPLER_U_BORDER)
|
||||
|| BGFX_SAMPLER_V_BORDER == (_flags & BGFX_SAMPLER_V_BORDER)
|
||||
|| BGFX_SAMPLER_W_BORDER == (_flags & BGFX_SAMPLER_W_BORDER)
|
||||
;
|
||||
}
|
||||
|
||||
@@ -2295,8 +2295,8 @@ namespace bgfx
|
||||
Binding& bind = m_bind.m_bind[_stage];
|
||||
bind.m_idx = _handle.idx;
|
||||
bind.m_type = uint8_t(Binding::Texture);
|
||||
bind.m_un.m_draw.m_textureFlags = (_flags&BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER)
|
||||
? BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER
|
||||
bind.m_un.m_draw.m_textureFlags = (_flags&BGFX_SAMPLER_INTERNAL_DEFAULT)
|
||||
? BGFX_SAMPLER_INTERNAL_DEFAULT
|
||||
: _flags
|
||||
;
|
||||
|
||||
|
||||
@@ -2012,7 +2012,7 @@ namespace bgfx { namespace d3d11
|
||||
setShaderUniform(flags, predefined.m_loc, proj, 4);
|
||||
|
||||
commitShaderConstants();
|
||||
m_textures[_blitter.m_texture.idx].commit(0, BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER, NULL);
|
||||
m_textures[_blitter.m_texture.idx].commit(0, BGFX_SAMPLER_INTERNAL_DEFAULT, NULL);
|
||||
commitTextureStage();
|
||||
}
|
||||
|
||||
@@ -2788,12 +2788,12 @@ namespace bgfx { namespace d3d11
|
||||
|
||||
ID3D11SamplerState* getSamplerState(uint32_t _flags, const float _rgba[4])
|
||||
{
|
||||
const uint32_t index = (_flags & BGFX_TEXTURE_BORDER_COLOR_MASK) >> BGFX_TEXTURE_BORDER_COLOR_SHIFT;
|
||||
_flags &= BGFX_TEXTURE_SAMPLER_BITS_MASK;
|
||||
const uint32_t index = (_flags & BGFX_SAMPLER_BORDER_COLOR_MASK) >> BGFX_SAMPLER_BORDER_COLOR_SHIFT;
|
||||
_flags &= BGFX_SAMPLER_BITS_MASK;
|
||||
|
||||
// Force both min+max anisotropic, can't be set individually.
|
||||
_flags |= 0 != (_flags & (BGFX_TEXTURE_MIN_ANISOTROPIC|BGFX_TEXTURE_MAG_ANISOTROPIC) )
|
||||
? BGFX_TEXTURE_MIN_ANISOTROPIC|BGFX_TEXTURE_MAG_ANISOTROPIC
|
||||
_flags |= 0 != (_flags & (BGFX_SAMPLER_MIN_ANISOTROPIC|BGFX_SAMPLER_MAG_ANISOTROPIC) )
|
||||
? BGFX_SAMPLER_MIN_ANISOTROPIC|BGFX_SAMPLER_MAG_ANISOTROPIC
|
||||
: 0
|
||||
;
|
||||
|
||||
@@ -2835,17 +2835,17 @@ namespace bgfx { namespace d3d11
|
||||
|
||||
if (NULL == sampler)
|
||||
{
|
||||
const uint32_t cmpFunc = (_flags&BGFX_TEXTURE_COMPARE_MASK)>>BGFX_TEXTURE_COMPARE_SHIFT;
|
||||
const uint8_t minFilter = s_textureFilter[0][(_flags&BGFX_TEXTURE_MIN_MASK)>>BGFX_TEXTURE_MIN_SHIFT];
|
||||
const uint8_t magFilter = s_textureFilter[1][(_flags&BGFX_TEXTURE_MAG_MASK)>>BGFX_TEXTURE_MAG_SHIFT];
|
||||
const uint8_t mipFilter = s_textureFilter[2][(_flags&BGFX_TEXTURE_MIP_MASK)>>BGFX_TEXTURE_MIP_SHIFT];
|
||||
const uint32_t cmpFunc = (_flags&BGFX_SAMPLER_COMPARE_MASK)>>BGFX_SAMPLER_COMPARE_SHIFT;
|
||||
const uint8_t minFilter = s_textureFilter[0][(_flags&BGFX_SAMPLER_MIN_MASK)>>BGFX_SAMPLER_MIN_SHIFT];
|
||||
const uint8_t magFilter = s_textureFilter[1][(_flags&BGFX_SAMPLER_MAG_MASK)>>BGFX_SAMPLER_MAG_SHIFT];
|
||||
const uint8_t mipFilter = s_textureFilter[2][(_flags&BGFX_SAMPLER_MIP_MASK)>>BGFX_SAMPLER_MIP_SHIFT];
|
||||
const uint8_t filter = 0 == cmpFunc ? 0 : D3D11_COMPARISON_FILTERING_BIT;
|
||||
|
||||
D3D11_SAMPLER_DESC sd;
|
||||
sd.Filter = (D3D11_FILTER)(filter|minFilter|magFilter|mipFilter);
|
||||
sd.AddressU = s_textureAddress[(_flags&BGFX_TEXTURE_U_MASK)>>BGFX_TEXTURE_U_SHIFT];
|
||||
sd.AddressV = s_textureAddress[(_flags&BGFX_TEXTURE_V_MASK)>>BGFX_TEXTURE_V_SHIFT];
|
||||
sd.AddressW = s_textureAddress[(_flags&BGFX_TEXTURE_W_MASK)>>BGFX_TEXTURE_W_SHIFT];
|
||||
sd.AddressU = s_textureAddress[(_flags&BGFX_SAMPLER_U_MASK)>>BGFX_SAMPLER_U_SHIFT];
|
||||
sd.AddressV = s_textureAddress[(_flags&BGFX_SAMPLER_V_MASK)>>BGFX_SAMPLER_V_SHIFT];
|
||||
sd.AddressW = s_textureAddress[(_flags&BGFX_SAMPLER_W_MASK)>>BGFX_SAMPLER_W_SHIFT];
|
||||
sd.MipLODBias = float(BGFX_CONFIG_MIP_LOD_BIAS);
|
||||
sd.MaxAnisotropy = m_maxAnisotropy;
|
||||
sd.ComparisonFunc = 0 == cmpFunc ? D3D11_COMPARISON_NEVER : s_cmpFunc[cmpFunc];
|
||||
@@ -4333,7 +4333,7 @@ namespace bgfx { namespace d3d11
|
||||
DX_RELEASE(m_rt, 0);
|
||||
DX_RELEASE(m_srv, 0);
|
||||
DX_RELEASE(m_uav, 0);
|
||||
if (0 == (m_flags & BGFX_TEXTURE_INTERNAL_SHARED) )
|
||||
if (0 == (m_flags & BGFX_SAMPLER_INTERNAL_SHARED) )
|
||||
{
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
}
|
||||
@@ -4342,7 +4342,7 @@ namespace bgfx { namespace d3d11
|
||||
void TextureD3D11::overrideInternal(uintptr_t _ptr)
|
||||
{
|
||||
destroy();
|
||||
m_flags |= BGFX_TEXTURE_INTERNAL_SHARED;
|
||||
m_flags |= BGFX_SAMPLER_INTERNAL_SHARED;
|
||||
m_ptr = (ID3D11Resource*)_ptr;
|
||||
|
||||
s_renderD3D11->m_device->CreateShaderResourceView(m_ptr, NULL, &m_srv);
|
||||
@@ -4410,11 +4410,11 @@ namespace bgfx { namespace d3d11
|
||||
{
|
||||
TextureStage& ts = s_renderD3D11->m_textureStage;
|
||||
ts.m_srv[_stage] = m_srv;
|
||||
uint32_t flags = 0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags)
|
||||
uint32_t flags = 0 == (BGFX_SAMPLER_INTERNAL_DEFAULT & _flags)
|
||||
? _flags
|
||||
: m_flags
|
||||
;
|
||||
uint32_t index = (flags & BGFX_TEXTURE_BORDER_COLOR_MASK) >> BGFX_TEXTURE_BORDER_COLOR_SHIFT;
|
||||
uint32_t index = (flags & BGFX_SAMPLER_BORDER_COLOR_MASK) >> BGFX_SAMPLER_BORDER_COLOR_SHIFT;
|
||||
ts.m_sampler[_stage] = s_renderD3D11->getSamplerState(flags
|
||||
, _palette[index])
|
||||
;
|
||||
|
||||
@@ -1890,7 +1890,7 @@ namespace bgfx { namespace d3d12
|
||||
m_commandList->SetGraphicsRootConstantBufferView(Rdt::CBV, gpuAddress);
|
||||
|
||||
TextureD3D12& texture = m_textures[_blitter.m_texture.idx];
|
||||
uint32_t samplerFlags[BGFX_CONFIG_MAX_TEXTURE_SAMPLERS] = { texture.m_flags & BGFX_TEXTURE_SAMPLER_BITS_MASK };
|
||||
uint32_t samplerFlags[BGFX_CONFIG_MAX_TEXTURE_SAMPLERS] = { texture.m_flags & BGFX_SAMPLER_BITS_MASK };
|
||||
uint16_t samplerStateIdx = getSamplerState(samplerFlags, BGFX_CONFIG_MAX_TEXTURE_SAMPLERS, NULL);
|
||||
m_commandList->SetGraphicsRootDescriptorTable(Rdt::Sampler, m_samplerAllocator.get(samplerStateIdx) );
|
||||
D3D12_GPU_DESCRIPTOR_HANDLE srvHandle;
|
||||
@@ -3492,22 +3492,22 @@ namespace bgfx { namespace d3d12
|
||||
{
|
||||
uint32_t flags = _flags[ii];
|
||||
|
||||
const uint32_t cmpFunc = (flags&BGFX_TEXTURE_COMPARE_MASK)>>BGFX_TEXTURE_COMPARE_SHIFT;
|
||||
const uint8_t minFilter = s_textureFilter[0][(flags&BGFX_TEXTURE_MIN_MASK)>>BGFX_TEXTURE_MIN_SHIFT];
|
||||
const uint8_t magFilter = s_textureFilter[1][(flags&BGFX_TEXTURE_MAG_MASK)>>BGFX_TEXTURE_MAG_SHIFT];
|
||||
const uint8_t mipFilter = s_textureFilter[2][(flags&BGFX_TEXTURE_MIP_MASK)>>BGFX_TEXTURE_MIP_SHIFT];
|
||||
const uint32_t cmpFunc = (flags&BGFX_SAMPLER_COMPARE_MASK)>>BGFX_SAMPLER_COMPARE_SHIFT;
|
||||
const uint8_t minFilter = s_textureFilter[0][(flags&BGFX_SAMPLER_MIN_MASK)>>BGFX_SAMPLER_MIN_SHIFT];
|
||||
const uint8_t magFilter = s_textureFilter[1][(flags&BGFX_SAMPLER_MAG_MASK)>>BGFX_SAMPLER_MAG_SHIFT];
|
||||
const uint8_t mipFilter = s_textureFilter[2][(flags&BGFX_SAMPLER_MIP_MASK)>>BGFX_SAMPLER_MIP_SHIFT];
|
||||
const uint8_t filter = 0 == cmpFunc ? 0 : D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT;
|
||||
|
||||
D3D12_SAMPLER_DESC sd;
|
||||
sd.Filter = (D3D12_FILTER)(filter|minFilter|magFilter|mipFilter);
|
||||
sd.AddressU = s_textureAddress[(flags&BGFX_TEXTURE_U_MASK)>>BGFX_TEXTURE_U_SHIFT];
|
||||
sd.AddressV = s_textureAddress[(flags&BGFX_TEXTURE_V_MASK)>>BGFX_TEXTURE_V_SHIFT];
|
||||
sd.AddressW = s_textureAddress[(flags&BGFX_TEXTURE_W_MASK)>>BGFX_TEXTURE_W_SHIFT];
|
||||
sd.AddressU = s_textureAddress[(flags&BGFX_SAMPLER_U_MASK)>>BGFX_SAMPLER_U_SHIFT];
|
||||
sd.AddressV = s_textureAddress[(flags&BGFX_SAMPLER_V_MASK)>>BGFX_SAMPLER_V_SHIFT];
|
||||
sd.AddressW = s_textureAddress[(flags&BGFX_SAMPLER_W_MASK)>>BGFX_SAMPLER_W_SHIFT];
|
||||
sd.MipLODBias = float(BGFX_CONFIG_MIP_LOD_BIAS);
|
||||
sd.MaxAnisotropy = maxAnisotropy;
|
||||
sd.ComparisonFunc = 0 == cmpFunc ? D3D12_COMPARISON_FUNC_NEVER : s_cmpFunc[cmpFunc];
|
||||
|
||||
uint32_t index = (flags & BGFX_TEXTURE_BORDER_COLOR_MASK) >> BGFX_TEXTURE_BORDER_COLOR_SHIFT;
|
||||
uint32_t index = (flags & BGFX_SAMPLER_BORDER_COLOR_MASK) >> BGFX_SAMPLER_BORDER_COLOR_SHIFT;
|
||||
|
||||
if (NULL != _palette
|
||||
&& needBorderColor(flags) )
|
||||
@@ -6100,10 +6100,10 @@ namespace bgfx { namespace d3d12
|
||||
TextureD3D12& texture = m_textures[bind.m_idx];
|
||||
texture.setState(m_commandList, D3D12_RESOURCE_STATE_GENERIC_READ);
|
||||
scratchBuffer.allocSrv(srvHandle[stage], texture);
|
||||
samplerFlags[stage] = (0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & bind.m_un.m_draw.m_textureFlags)
|
||||
samplerFlags[stage] = (0 == (BGFX_SAMPLER_INTERNAL_DEFAULT & bind.m_un.m_draw.m_textureFlags)
|
||||
? bind.m_un.m_draw.m_textureFlags
|
||||
: texture.m_flags
|
||||
) & (BGFX_TEXTURE_SAMPLER_BITS_MASK | BGFX_TEXTURE_BORDER_COLOR_MASK | BGFX_TEXTURE_COMPARE_MASK)
|
||||
) & (BGFX_SAMPLER_BITS_MASK | BGFX_SAMPLER_BORDER_COLOR_MASK | BGFX_SAMPLER_COMPARE_MASK)
|
||||
;
|
||||
|
||||
++numSet;
|
||||
|
||||
@@ -1347,7 +1347,7 @@ namespace bgfx { namespace d3d9
|
||||
uint8_t flags = predefined.m_type;
|
||||
setShaderUniform(flags, predefined.m_loc, proj, 4);
|
||||
|
||||
m_textures[_blitter.m_texture.idx].commit(0, BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER, NULL);
|
||||
m_textures[_blitter.m_texture.idx].commit(0, BGFX_SAMPLER_INTERNAL_DEFAULT, NULL);
|
||||
}
|
||||
|
||||
void blitRender(TextVideoMemBlitter& _blitter, uint32_t _numIndices) override
|
||||
@@ -1696,18 +1696,18 @@ namespace bgfx { namespace d3d9
|
||||
|
||||
void setSamplerState(uint8_t _stage, uint32_t _flags, const float _rgba[4])
|
||||
{
|
||||
const uint32_t flags = _flags&( (~BGFX_TEXTURE_RESERVED_MASK) | BGFX_TEXTURE_SAMPLER_BITS_MASK | BGFX_TEXTURE_SRGB);
|
||||
const uint32_t flags = _flags&( (~BGFX_SAMPLER_RESERVED_MASK) | BGFX_SAMPLER_BITS_MASK | BGFX_TEXTURE_SRGB);
|
||||
BX_CHECK(_stage < BX_COUNTOF(m_samplerFlags), "");
|
||||
if (m_samplerFlags[_stage] != flags)
|
||||
{
|
||||
m_samplerFlags[_stage] = flags;
|
||||
IDirect3DDevice9* device = m_device;
|
||||
D3DTEXTUREADDRESS tau = s_textureAddress[(_flags&BGFX_TEXTURE_U_MASK)>>BGFX_TEXTURE_U_SHIFT];
|
||||
D3DTEXTUREADDRESS tav = s_textureAddress[(_flags&BGFX_TEXTURE_V_MASK)>>BGFX_TEXTURE_V_SHIFT];
|
||||
D3DTEXTUREADDRESS taw = s_textureAddress[(_flags&BGFX_TEXTURE_W_MASK)>>BGFX_TEXTURE_W_SHIFT];
|
||||
D3DTEXTUREFILTERTYPE minFilter = s_textureFilter[(_flags&BGFX_TEXTURE_MIN_MASK)>>BGFX_TEXTURE_MIN_SHIFT];
|
||||
D3DTEXTUREFILTERTYPE magFilter = s_textureFilter[(_flags&BGFX_TEXTURE_MAG_MASK)>>BGFX_TEXTURE_MAG_SHIFT];
|
||||
D3DTEXTUREFILTERTYPE mipFilter = s_textureFilter[(_flags&BGFX_TEXTURE_MIP_MASK)>>BGFX_TEXTURE_MIP_SHIFT];
|
||||
D3DTEXTUREADDRESS tau = s_textureAddress[(_flags&BGFX_SAMPLER_U_MASK)>>BGFX_SAMPLER_U_SHIFT];
|
||||
D3DTEXTUREADDRESS tav = s_textureAddress[(_flags&BGFX_SAMPLER_V_MASK)>>BGFX_SAMPLER_V_SHIFT];
|
||||
D3DTEXTUREADDRESS taw = s_textureAddress[(_flags&BGFX_SAMPLER_W_MASK)>>BGFX_SAMPLER_W_SHIFT];
|
||||
D3DTEXTUREFILTERTYPE minFilter = s_textureFilter[(_flags&BGFX_SAMPLER_MIN_MASK)>>BGFX_SAMPLER_MIN_SHIFT];
|
||||
D3DTEXTUREFILTERTYPE magFilter = s_textureFilter[(_flags&BGFX_SAMPLER_MAG_MASK)>>BGFX_SAMPLER_MAG_SHIFT];
|
||||
D3DTEXTUREFILTERTYPE mipFilter = s_textureFilter[(_flags&BGFX_SAMPLER_MIP_MASK)>>BGFX_SAMPLER_MIP_SHIFT];
|
||||
|
||||
setSamplerState(device, _stage, D3DSAMP_ADDRESSU, tau);
|
||||
setSamplerState(device, _stage, D3DSAMP_ADDRESSV, tav);
|
||||
@@ -3107,11 +3107,11 @@ namespace bgfx { namespace d3d9
|
||||
|
||||
void TextureD3D9::commit(uint8_t _stage, uint32_t _flags, const float _palette[][4])
|
||||
{
|
||||
uint32_t flags = 0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags)
|
||||
uint32_t flags = 0 == (BGFX_SAMPLER_INTERNAL_DEFAULT & _flags)
|
||||
? _flags
|
||||
: m_flags
|
||||
;
|
||||
uint32_t index = (flags & BGFX_TEXTURE_BORDER_COLOR_MASK) >> BGFX_TEXTURE_BORDER_COLOR_SHIFT;
|
||||
uint32_t index = (flags & BGFX_SAMPLER_BORDER_COLOR_MASK) >> BGFX_SAMPLER_BORDER_COLOR_SHIFT;
|
||||
s_renderD3D9->setSamplerState(_stage, flags, _palette[index]);
|
||||
|
||||
IDirect3DDevice9* device = s_renderD3D9->m_device;
|
||||
|
||||
@@ -318,7 +318,7 @@ namespace bgfx { namespace d3d9
|
||||
|
||||
void destroy(bool _resize = false)
|
||||
{
|
||||
if (0 == (m_flags & BGFX_TEXTURE_INTERNAL_SHARED) )
|
||||
if (0 == (m_flags & BGFX_SAMPLER_INTERNAL_SHARED) )
|
||||
{
|
||||
if (_resize)
|
||||
{
|
||||
@@ -340,7 +340,7 @@ namespace bgfx { namespace d3d9
|
||||
void overrideInternal(uintptr_t _ptr)
|
||||
{
|
||||
destroy();
|
||||
m_flags |= BGFX_TEXTURE_INTERNAL_SHARED;
|
||||
m_flags |= BGFX_SAMPLER_INTERNAL_SHARED;
|
||||
m_ptr = (IDirect3DBaseTexture9*)_ptr;
|
||||
}
|
||||
|
||||
|
||||
@@ -1650,9 +1650,9 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
|
||||
static void getFilters(uint32_t _flags, bool _hasMips, GLenum& _magFilter, GLenum& _minFilter)
|
||||
{
|
||||
const uint32_t mag = (_flags&BGFX_TEXTURE_MAG_MASK)>>BGFX_TEXTURE_MAG_SHIFT;
|
||||
const uint32_t min = (_flags&BGFX_TEXTURE_MIN_MASK)>>BGFX_TEXTURE_MIN_SHIFT;
|
||||
const uint32_t mip = (_flags&BGFX_TEXTURE_MIP_MASK)>>BGFX_TEXTURE_MIP_SHIFT;
|
||||
const uint32_t mag = (_flags&BGFX_SAMPLER_MAG_MASK)>>BGFX_SAMPLER_MAG_SHIFT;
|
||||
const uint32_t min = (_flags&BGFX_SAMPLER_MIN_MASK)>>BGFX_SAMPLER_MIN_SHIFT;
|
||||
const uint32_t mip = (_flags&BGFX_SAMPLER_MIP_MASK)>>BGFX_SAMPLER_MIP_SHIFT;
|
||||
_magFilter = s_textureFilterMag[mag];
|
||||
_minFilter = s_textureFilterMin[min][_hasMips ? mip+1 : 0];
|
||||
}
|
||||
@@ -2435,7 +2435,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
m_srgbWriteControlSupport = s_extension[Extension::EXT_sRGB_write_control].m_supported;
|
||||
|
||||
m_borderColorSupport = s_extension[Extension::NV_texture_border_clamp].m_supported;
|
||||
s_textureAddress[BGFX_TEXTURE_U_BORDER>>BGFX_TEXTURE_U_SHIFT] = s_extension[Extension::NV_texture_border_clamp].m_supported
|
||||
s_textureAddress[BGFX_SAMPLER_U_BORDER>>BGFX_SAMPLER_U_SHIFT] = s_extension[Extension::NV_texture_border_clamp].m_supported
|
||||
? GL_CLAMP_TO_BORDER
|
||||
: GL_CLAMP_TO_EDGE
|
||||
;
|
||||
@@ -3336,13 +3336,13 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
if ( (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) )
|
||||
&& m_samplerObjectSupport)
|
||||
{
|
||||
if (0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags) )
|
||||
if (0 == (BGFX_SAMPLER_INTERNAL_DEFAULT & _flags) )
|
||||
{
|
||||
const uint32_t index = (_flags & BGFX_TEXTURE_BORDER_COLOR_MASK) >> BGFX_TEXTURE_BORDER_COLOR_SHIFT;
|
||||
const uint32_t index = (_flags & BGFX_SAMPLER_BORDER_COLOR_MASK) >> BGFX_SAMPLER_BORDER_COLOR_SHIFT;
|
||||
|
||||
_flags &= ~BGFX_TEXTURE_RESERVED_MASK;
|
||||
_flags &= BGFX_TEXTURE_SAMPLER_BITS_MASK;
|
||||
_flags |= _numMips<<BGFX_TEXTURE_RESERVED_SHIFT;
|
||||
_flags &= ~BGFX_SAMPLER_RESERVED_MASK;
|
||||
_flags &= BGFX_SAMPLER_BITS_MASK;
|
||||
_flags |= _numMips<<BGFX_SAMPLER_RESERVED_SHIFT;
|
||||
|
||||
GLuint sampler;
|
||||
|
||||
@@ -3381,15 +3381,15 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
|
||||
GL_CHECK(glSamplerParameteri(sampler
|
||||
, GL_TEXTURE_WRAP_S
|
||||
, s_textureAddress[(_flags&BGFX_TEXTURE_U_MASK)>>BGFX_TEXTURE_U_SHIFT]
|
||||
, s_textureAddress[(_flags&BGFX_SAMPLER_U_MASK)>>BGFX_SAMPLER_U_SHIFT]
|
||||
) );
|
||||
GL_CHECK(glSamplerParameteri(sampler
|
||||
, GL_TEXTURE_WRAP_T
|
||||
, s_textureAddress[(_flags&BGFX_TEXTURE_V_MASK)>>BGFX_TEXTURE_V_SHIFT]
|
||||
, s_textureAddress[(_flags&BGFX_SAMPLER_V_MASK)>>BGFX_SAMPLER_V_SHIFT]
|
||||
) );
|
||||
GL_CHECK(glSamplerParameteri(sampler
|
||||
, GL_TEXTURE_WRAP_R
|
||||
, s_textureAddress[(_flags&BGFX_TEXTURE_W_MASK)>>BGFX_TEXTURE_W_SHIFT]
|
||||
, s_textureAddress[(_flags&BGFX_SAMPLER_W_MASK)>>BGFX_SAMPLER_W_SHIFT]
|
||||
) );
|
||||
|
||||
GLenum minFilter;
|
||||
@@ -3409,7 +3409,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
GL_CHECK(glSamplerParameterfv(sampler, GL_TEXTURE_BORDER_COLOR, _rgba) );
|
||||
}
|
||||
|
||||
if (0 != (_flags & (BGFX_TEXTURE_MIN_ANISOTROPIC|BGFX_TEXTURE_MAG_ANISOTROPIC) )
|
||||
if (0 != (_flags & (BGFX_SAMPLER_MIN_ANISOTROPIC|BGFX_SAMPLER_MAG_ANISOTROPIC) )
|
||||
&& 0.0f < m_maxAnisotropy)
|
||||
{
|
||||
GL_CHECK(glSamplerParameterf(sampler, GL_TEXTURE_MAX_ANISOTROPY_EXT, m_maxAnisotropy) );
|
||||
@@ -3418,7 +3418,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30)
|
||||
|| m_shadowSamplersSupport)
|
||||
{
|
||||
const uint32_t cmpFunc = (_flags&BGFX_TEXTURE_COMPARE_MASK)>>BGFX_TEXTURE_COMPARE_SHIFT;
|
||||
const uint32_t cmpFunc = (_flags&BGFX_SAMPLER_COMPARE_MASK)>>BGFX_SAMPLER_COMPARE_SHIFT;
|
||||
if (0 == cmpFunc)
|
||||
{
|
||||
GL_CHECK(glSamplerParameteri(sampler, GL_TEXTURE_COMPARE_MODE, GL_NONE) );
|
||||
@@ -4918,7 +4918,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
|
||||
void TextureGL::destroy()
|
||||
{
|
||||
if (0 == (m_flags & BGFX_TEXTURE_INTERNAL_SHARED)
|
||||
if (0 == (m_flags & BGFX_SAMPLER_INTERNAL_SHARED)
|
||||
&& 0 != m_id)
|
||||
{
|
||||
GL_CHECK(glBindTexture(m_target, 0) );
|
||||
@@ -4936,7 +4936,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
void TextureGL::overrideInternal(uintptr_t _ptr)
|
||||
{
|
||||
destroy();
|
||||
m_flags |= BGFX_TEXTURE_INTERNAL_SHARED;
|
||||
m_flags |= BGFX_SAMPLER_INTERNAL_SHARED;
|
||||
m_id = (GLuint)_ptr;
|
||||
}
|
||||
|
||||
@@ -5055,18 +5055,18 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
{
|
||||
// Force point sampling when texture format doesn't support linear sampling.
|
||||
_flags &= ~(0
|
||||
| BGFX_TEXTURE_MIN_MASK
|
||||
| BGFX_TEXTURE_MAG_MASK
|
||||
| BGFX_TEXTURE_MIP_MASK
|
||||
| BGFX_SAMPLER_MIN_MASK
|
||||
| BGFX_SAMPLER_MAG_MASK
|
||||
| BGFX_SAMPLER_MIP_MASK
|
||||
);
|
||||
_flags |= 0
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
;
|
||||
}
|
||||
|
||||
const uint32_t flags = (0 != (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags) ? m_flags : _flags) & BGFX_TEXTURE_SAMPLER_BITS_MASK;
|
||||
const uint32_t flags = (0 != (BGFX_SAMPLER_INTERNAL_DEFAULT & _flags) ? m_flags : _flags) & BGFX_SAMPLER_BITS_MASK;
|
||||
|
||||
bool hasBorderColor = false;
|
||||
bx::HashMurmur2A murmur;
|
||||
@@ -5074,9 +5074,9 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
murmur.add(flags);
|
||||
if (NULL != _rgba)
|
||||
{
|
||||
if (BGFX_TEXTURE_U_BORDER == (flags & BGFX_TEXTURE_U_BORDER)
|
||||
|| BGFX_TEXTURE_V_BORDER == (flags & BGFX_TEXTURE_V_BORDER)
|
||||
|| BGFX_TEXTURE_W_BORDER == (flags & BGFX_TEXTURE_W_BORDER) )
|
||||
if (BGFX_SAMPLER_U_BORDER == (flags & BGFX_SAMPLER_U_BORDER)
|
||||
|| BGFX_SAMPLER_V_BORDER == (flags & BGFX_SAMPLER_V_BORDER)
|
||||
|| BGFX_SAMPLER_W_BORDER == (flags & BGFX_SAMPLER_W_BORDER) )
|
||||
{
|
||||
murmur.add(_rgba, 16);
|
||||
hasBorderColor = true;
|
||||
@@ -5090,8 +5090,8 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
const GLenum targetMsaa = m_target;
|
||||
const uint8_t numMips = m_numMips;
|
||||
|
||||
GL_CHECK(glTexParameteri(target, GL_TEXTURE_WRAP_S, s_textureAddress[(flags&BGFX_TEXTURE_U_MASK)>>BGFX_TEXTURE_U_SHIFT]) );
|
||||
GL_CHECK(glTexParameteri(target, GL_TEXTURE_WRAP_T, s_textureAddress[(flags&BGFX_TEXTURE_V_MASK)>>BGFX_TEXTURE_V_SHIFT]) );
|
||||
GL_CHECK(glTexParameteri(target, GL_TEXTURE_WRAP_S, s_textureAddress[(flags&BGFX_SAMPLER_U_MASK)>>BGFX_SAMPLER_U_SHIFT]) );
|
||||
GL_CHECK(glTexParameteri(target, GL_TEXTURE_WRAP_T, s_textureAddress[(flags&BGFX_SAMPLER_V_MASK)>>BGFX_SAMPLER_V_SHIFT]) );
|
||||
|
||||
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL || BGFX_CONFIG_RENDERER_OPENGLES >= 30)
|
||||
|| s_extension[Extension::APPLE_texture_max_level].m_supported)
|
||||
@@ -5101,7 +5101,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
|
||||
if (target == GL_TEXTURE_3D)
|
||||
{
|
||||
GL_CHECK(glTexParameteri(target, GL_TEXTURE_WRAP_R, s_textureAddress[(flags&BGFX_TEXTURE_W_MASK)>>BGFX_TEXTURE_W_SHIFT]) );
|
||||
GL_CHECK(glTexParameteri(target, GL_TEXTURE_WRAP_R, s_textureAddress[(flags&BGFX_SAMPLER_W_MASK)>>BGFX_SAMPLER_W_SHIFT]) );
|
||||
}
|
||||
|
||||
GLenum magFilter;
|
||||
@@ -5121,7 +5121,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
GL_CHECK(glTexParameterfv(target, GL_TEXTURE_BORDER_COLOR, _rgba) );
|
||||
}
|
||||
|
||||
if (0 != (flags & (BGFX_TEXTURE_MIN_ANISOTROPIC|BGFX_TEXTURE_MAG_ANISOTROPIC) )
|
||||
if (0 != (flags & (BGFX_SAMPLER_MIN_ANISOTROPIC|BGFX_SAMPLER_MAG_ANISOTROPIC) )
|
||||
&& 0.0f < s_renderGL->m_maxAnisotropy)
|
||||
{
|
||||
GL_CHECK(glTexParameterf(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, s_renderGL->m_maxAnisotropy) );
|
||||
@@ -5130,7 +5130,7 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30)
|
||||
|| s_renderGL->m_shadowSamplersSupport)
|
||||
{
|
||||
const uint32_t cmpFunc = (flags&BGFX_TEXTURE_COMPARE_MASK)>>BGFX_TEXTURE_COMPARE_SHIFT;
|
||||
const uint32_t cmpFunc = (flags&BGFX_SAMPLER_COMPARE_MASK)>>BGFX_SAMPLER_COMPARE_SHIFT;
|
||||
if (0 == cmpFunc)
|
||||
{
|
||||
GL_CHECK(glTexParameteri(target, GL_TEXTURE_COMPARE_MODE, GL_NONE) );
|
||||
@@ -5148,11 +5148,11 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
||||
|
||||
void TextureGL::commit(uint32_t _stage, uint32_t _flags, const float _palette[][4])
|
||||
{
|
||||
const uint32_t flags = 0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags)
|
||||
const uint32_t flags = 0 == (BGFX_SAMPLER_INTERNAL_DEFAULT & _flags)
|
||||
? _flags
|
||||
: m_flags
|
||||
;
|
||||
const uint32_t index = (flags & BGFX_TEXTURE_BORDER_COLOR_MASK) >> BGFX_TEXTURE_BORDER_COLOR_SHIFT;
|
||||
const uint32_t index = (flags & BGFX_SAMPLER_BORDER_COLOR_MASK) >> BGFX_SAMPLER_BORDER_COLOR_SHIFT;
|
||||
|
||||
GL_CHECK(glActiveTexture(GL_TEXTURE0+_stage) );
|
||||
GL_CHECK(glBindTexture(m_target, m_id) );
|
||||
|
||||
@@ -871,7 +871,7 @@ namespace bgfx { namespace mtl
|
||||
uint8_t _stage
|
||||
, bool _vertex
|
||||
, bool _fragment
|
||||
, uint32_t _flags = BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER
|
||||
, uint32_t _flags = BGFX_SAMPLER_INTERNAL_DEFAULT
|
||||
);
|
||||
|
||||
Texture m_ptr;
|
||||
|
||||
@@ -2164,28 +2164,31 @@ namespace bgfx { namespace mtl
|
||||
|
||||
SamplerState getSamplerState(uint32_t _flags)
|
||||
{
|
||||
_flags &= BGFX_TEXTURE_SAMPLER_BITS_MASK;
|
||||
_flags &= BGFX_SAMPLER_BITS_MASK;
|
||||
SamplerState sampler = m_samplerStateCache.find(_flags);
|
||||
|
||||
if (NULL == sampler)
|
||||
{
|
||||
|
||||
m_samplerDescriptor.sAddressMode = s_textureAddress[(_flags&BGFX_TEXTURE_U_MASK)>>BGFX_TEXTURE_U_SHIFT];
|
||||
m_samplerDescriptor.tAddressMode = s_textureAddress[(_flags&BGFX_TEXTURE_V_MASK)>>BGFX_TEXTURE_V_SHIFT];
|
||||
m_samplerDescriptor.rAddressMode = s_textureAddress[(_flags&BGFX_TEXTURE_W_MASK)>>BGFX_TEXTURE_W_SHIFT];
|
||||
m_samplerDescriptor.minFilter = s_textureFilterMinMag[(_flags&BGFX_TEXTURE_MIN_MASK)>>BGFX_TEXTURE_MIN_SHIFT];
|
||||
m_samplerDescriptor.magFilter = s_textureFilterMinMag[(_flags&BGFX_TEXTURE_MAG_MASK)>>BGFX_TEXTURE_MAG_SHIFT];
|
||||
m_samplerDescriptor.mipFilter = s_textureFilterMip[(_flags&BGFX_TEXTURE_MIP_MASK)>>BGFX_TEXTURE_MIP_SHIFT];
|
||||
m_samplerDescriptor.sAddressMode = s_textureAddress[(_flags&BGFX_SAMPLER_U_MASK)>>BGFX_SAMPLER_U_SHIFT];
|
||||
m_samplerDescriptor.tAddressMode = s_textureAddress[(_flags&BGFX_SAMPLER_V_MASK)>>BGFX_SAMPLER_V_SHIFT];
|
||||
m_samplerDescriptor.rAddressMode = s_textureAddress[(_flags&BGFX_SAMPLER_W_MASK)>>BGFX_SAMPLER_W_SHIFT];
|
||||
m_samplerDescriptor.minFilter = s_textureFilterMinMag[(_flags&BGFX_SAMPLER_MIN_MASK)>>BGFX_SAMPLER_MIN_SHIFT];
|
||||
m_samplerDescriptor.magFilter = s_textureFilterMinMag[(_flags&BGFX_SAMPLER_MAG_MASK)>>BGFX_SAMPLER_MAG_SHIFT];
|
||||
m_samplerDescriptor.mipFilter = s_textureFilterMip[(_flags&BGFX_SAMPLER_MIP_MASK)>>BGFX_SAMPLER_MIP_SHIFT];
|
||||
m_samplerDescriptor.lodMinClamp = 0;
|
||||
m_samplerDescriptor.lodMaxClamp = FLT_MAX;
|
||||
m_samplerDescriptor.normalizedCoordinates = TRUE;
|
||||
m_samplerDescriptor.maxAnisotropy = (0 != (_flags & (BGFX_TEXTURE_MIN_ANISOTROPIC|BGFX_TEXTURE_MAG_ANISOTROPIC) ) ) ? m_maxAnisotropy : 1;
|
||||
m_samplerDescriptor.maxAnisotropy = (0 != (_flags & (BGFX_SAMPLER_MIN_ANISOTROPIC|BGFX_SAMPLER_MAG_ANISOTROPIC) ) ) ? m_maxAnisotropy : 1;
|
||||
|
||||
if (m_macOS11Runtime
|
||||
|| [m_device supportsFeatureSet:(MTLFeatureSet)4 /*MTLFeatureSet_iOS_GPUFamily3_v1*/])
|
||||
{
|
||||
const uint32_t cmpFunc = (_flags&BGFX_TEXTURE_COMPARE_MASK)>>BGFX_TEXTURE_COMPARE_SHIFT;
|
||||
m_samplerDescriptor.compareFunction = 0 == cmpFunc ? MTLCompareFunctionNever : s_cmpFunc[cmpFunc];
|
||||
const uint32_t cmpFunc = (_flags&BGFX_SAMPLER_COMPARE_MASK)>>BGFX_SAMPLER_COMPARE_SHIFT;
|
||||
m_samplerDescriptor.compareFunction = 0 == cmpFunc
|
||||
? MTLCompareFunctionNever
|
||||
: s_cmpFunc[cmpFunc]
|
||||
;
|
||||
}
|
||||
|
||||
sampler = m_device.newSamplerStateWithDescriptor(m_samplerDescriptor);
|
||||
@@ -2865,7 +2868,7 @@ namespace bgfx { namespace mtl
|
||||
{
|
||||
s_renderMtl->m_renderCommandEncoder.setVertexTexture(m_ptr, _stage);
|
||||
s_renderMtl->m_renderCommandEncoder.setVertexSamplerState(
|
||||
0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags)
|
||||
0 == (BGFX_SAMPLER_INTERNAL_DEFAULT & _flags)
|
||||
? s_renderMtl->getSamplerState(_flags)
|
||||
: m_sampler
|
||||
, _stage
|
||||
@@ -2876,7 +2879,7 @@ namespace bgfx { namespace mtl
|
||||
{
|
||||
s_renderMtl->m_renderCommandEncoder.setFragmentTexture(m_ptr, _stage);
|
||||
s_renderMtl->m_renderCommandEncoder.setFragmentSamplerState(
|
||||
0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags)
|
||||
0 == (BGFX_SAMPLER_INTERNAL_DEFAULT & _flags)
|
||||
? s_renderMtl->getSamplerState(_flags)
|
||||
: m_sampler
|
||||
, _stage
|
||||
@@ -4201,7 +4204,7 @@ namespace bgfx { namespace mtl
|
||||
|
||||
rce.setRenderPipelineState(m_screenshotBlitRenderPipelineState);
|
||||
|
||||
rce.setFragmentSamplerState(getSamplerState(BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP|BGFX_TEXTURE_MIN_POINT|BGFX_TEXTURE_MAG_POINT|BGFX_TEXTURE_MIP_POINT), 0);
|
||||
rce.setFragmentSamplerState(getSamplerState(BGFX_SAMPLER_U_CLAMP|BGFX_SAMPLER_V_CLAMP|BGFX_SAMPLER_MIN_POINT|BGFX_SAMPLER_MAG_POINT|BGFX_SAMPLER_MIP_POINT), 0);
|
||||
rce.setFragmentTexture(m_screenshotTarget, 0);
|
||||
|
||||
rce.drawPrimitives(MTLPrimitiveTypeTriangle, 0, 3, 1);
|
||||
|
||||
@@ -1252,9 +1252,9 @@ int _main_(int _argc, char** _argv)
|
||||
checkerBoard = bgfx::createTexture2D(checkerBoardSize, checkerBoardSize, false, 1
|
||||
, bgfx::TextureFormat::BGRA8
|
||||
, 0
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
, mem
|
||||
);
|
||||
}
|
||||
@@ -1813,9 +1813,9 @@ int _main_(int _argc, char** _argv)
|
||||
bimg::Orientation::Enum orientation;
|
||||
texture = loadTexture(fp.get()
|
||||
, 0
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_TEXTURE_W_CLAMP
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
| BGFX_SAMPLER_W_CLAMP
|
||||
, 0
|
||||
, &view.m_textureInfo
|
||||
, &orientation
|
||||
@@ -2003,13 +2003,13 @@ int _main_(int _argc, char** _argv)
|
||||
bgfx::setUniform(u_params, params);
|
||||
|
||||
const uint32_t textureFlags = 0
|
||||
| BGFX_TEXTURE_U_CLAMP
|
||||
| BGFX_TEXTURE_V_CLAMP
|
||||
| BGFX_TEXTURE_W_CLAMP
|
||||
| BGFX_SAMPLER_U_CLAMP
|
||||
| BGFX_SAMPLER_V_CLAMP
|
||||
| BGFX_SAMPLER_W_CLAMP
|
||||
| (view.m_filter ? 0 : 0
|
||||
| BGFX_TEXTURE_MIN_POINT
|
||||
| BGFX_TEXTURE_MIP_POINT
|
||||
| BGFX_TEXTURE_MAG_POINT
|
||||
| BGFX_SAMPLER_MIN_POINT
|
||||
| BGFX_SAMPLER_MIP_POINT
|
||||
| BGFX_SAMPLER_MAG_POINT
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user