Jelajahi Sumber

Added submit depth value for sorting.

bkaradzic 13 tahun lalu
induk
melakukan
c5fdfc27a2
3 mengubah file dengan 15 tambahan dan 12 penghapusan
  1. 4 4
      include/bgfx.h
  2. 9 6
      src/bgfx.cpp
  3. 2 2
      src/bgfx_p.h

+ 4 - 4
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);

+ 9 - 6
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)

+ 2 - 2
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)