diff --git a/include/bgfx.h b/include/bgfx.h index bdeca412e..47c05972a 100644 --- a/include/bgfx.h +++ b/include/bgfx.h @@ -554,11 +554,11 @@ namespace bgfx /// void setTexture(uint8_t _stage, UniformHandle _sampler, RenderTargetHandle _handle, bool _depth = false); - /// - void submit(uint8_t _id); + /// Submit primitive for rendering into single view. + void submit(uint8_t _id, int32_t _depth = 0); - /// - void submitMask(uint32_t _viewMask); + /// Submit primitive for rendering into multiple views. + void submitMask(uint32_t _viewMask, int32_t _depth = 0); /// void saveScreenShot(const char* _filePath); diff --git a/src/bgfx.cpp b/src/bgfx.cpp index f3d2dbe5a..81afaee6c 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -417,7 +417,7 @@ namespace bgfx return PredefinedUniform::Count; } - void Frame::submit(uint8_t _id) + void Frame::submit(uint8_t _id, int32_t _depth) { if (m_discard) { @@ -432,6 +432,7 @@ namespace bgfx return; } + m_key.m_depth = _depth; m_key.m_view = _id; m_key.m_seq = s_ctx.m_seq[_id] & s_ctx.m_seqMask[_id]; s_ctx.m_seq[_id]++; @@ -448,7 +449,7 @@ namespace bgfx m_flags = BGFX_STATE_NONE; } - void Frame::submitMask(uint32_t _viewMask) + void Frame::submitMask(uint32_t _viewMask, int32_t _depth) { if (m_discard) { @@ -463,6 +464,8 @@ namespace bgfx return; } + m_key.m_depth = _depth; + for (uint32_t id = 0, viewMask = _viewMask, ntz = uint32_cnttz(_viewMask); 0 != viewMask; viewMask >>= 1, id += 1, ntz = uint32_cnttz(viewMask) ) { viewMask >>= ntz; @@ -1221,14 +1224,14 @@ namespace bgfx s_ctx.m_submit->setTexture(_stage, _sampler, _handle, _depth); } - void submit(uint8_t _id) + void submit(uint8_t _id, int32_t _depth) { - s_ctx.m_submit->submit(_id); + s_ctx.m_submit->submit(_id, _depth); } - void submitMask(uint32_t _viewMask) + void submitMask(uint32_t _viewMask, int32_t _depth) { - s_ctx.m_submit->submitMask(_viewMask); + s_ctx.m_submit->submitMask(_viewMask, _depth); } void saveScreenShot(const char* _filePath) diff --git a/src/bgfx_p.h b/src/bgfx_p.h index 129eb157f..edfa51f52 100644 --- a/src/bgfx_p.h +++ b/src/bgfx_p.h @@ -1187,8 +1187,8 @@ namespace bgfx } } - void submit(uint8_t _id); - void submitMask(uint32_t _viewMask); + void submit(uint8_t _id, int32_t _depth); + void submitMask(uint32_t _viewMask, int32_t _depth); void sort(); bool checkAvailTransientIndexBuffer(uint16_t _num)