Просмотр исходного кода

Making sure scene grid renders after all objects so its depth is valid

Marko Pintera 10 лет назад
Родитель
Сommit
9e5b116ee1

+ 4 - 2
BansheeCore/Include/BsShader.h

@@ -49,6 +49,8 @@ namespace BansheeEngine
 	 */
 	struct BS_CORE_EXPORT SHADER_DESC
 	{
+		SHADER_DESC();
+
 		/**
 		 * @brief	Registers a new data (int, Vector2, etc.) parameter you that you may then use 
 		 *			via Material by providing the parameter name. All parameters internally map to 
@@ -123,7 +125,7 @@ namespace BansheeEngine
 		 *			provided in "QueuePriority" are just for general guidance and feel free to increase them
 		 *			or decrease them for finer tuning. (e.g. "QueuePriority::Opaque + 1").
 		 */
-		UINT32 queuePriority;
+		INT32 queuePriority;
 
 		/**
 		 * @brief	Enables or disables separable passes. When separable passes are disabled
@@ -167,7 +169,7 @@ namespace BansheeEngine
 		 *
 		 * @see		SHADER_DESC::queuePriority
 		 */
-		UINT32 getQueuePriority() const { return mDesc.queuePriority; }
+		INT32 getQueuePriority() const { return mDesc.queuePriority; }
 
 		/**
 		 * @brief	Returns if separable passes are allowed.

+ 2 - 2
BansheeCore/Include/BsShaderRTTI.h

@@ -205,8 +205,8 @@ namespace BansheeEngine
 		UINT32& getQueueSortType(Shader* obj) { return (UINT32&)obj->mDesc.queueSortType; }
 		void setQueueSortType(Shader* obj, UINT32& value) { obj->mDesc.queueSortType = (QueueSortType)value; }
 
-		UINT32& getQueuePriority(Shader* obj) { return obj->mDesc.queuePriority; }
-		void setQueuePriority(Shader* obj, UINT32& value) { obj->mDesc.queuePriority = value; }
+		INT32& getQueuePriority(Shader* obj) { return obj->mDesc.queuePriority; }
+		void setQueuePriority(Shader* obj, INT32& value) { obj->mDesc.queuePriority = value; }
 
 		bool& getAllowSeparablePasses(Shader* obj) { return obj->mDesc.separablePasses; }
 		void setAllowSeparablePasses(Shader* obj, bool& value) { obj->mDesc.separablePasses = value; }

+ 6 - 0
BansheeCore/Source/BsShader.cpp

@@ -9,6 +9,12 @@
 
 namespace BansheeEngine
 {
+	SHADER_DESC::SHADER_DESC()
+		:queuePriority(0), queueSortType(QueueSortType::None), separablePasses(false)
+	{
+
+	}
+
 	void SHADER_DESC::addParameter(const String& name, const String& gpuVariableName, GpuParamDataType type, UINT32 rendererSemantic, UINT32 arraySize, UINT32 elementSize)
 	{
 		if(type == GPDT_STRUCT && elementSize <= 0)

+ 1 - 0
BansheeEditor/Source/BsBuiltinEditorResources.cpp

@@ -1465,6 +1465,7 @@ namespace BansheeEngine
 		shaderDesc.addParameter("gridBorderWidth", "gridBorderWidth", GPDT_FLOAT1);
 		shaderDesc.addParameter("gridFadeOutStart", "gridFadeOutStart", GPDT_FLOAT1);
 		shaderDesc.addParameter("gridFadeOutEnd", "gridFadeOutEnd", GPDT_FLOAT1);
+		shaderDesc.queuePriority = -10000;
 
 		mShaderSceneGrid = Shader::create("SceneGridShader", shaderDesc, { newTechnique });
 	}

+ 2 - 0
BansheeEditor/Source/Win32/BsVSCodeEditor.cpp

@@ -5,7 +5,9 @@
 #include "BsDataStream.h"
 
 // Import EnvDTE
+#pragma warning(disable: 4278)
 #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids
+#pragma warning(default: 4278)
 
 namespace BansheeEngine
 {

+ 1 - 1
BansheeEngine/Include/BsRenderQueue.h

@@ -37,7 +37,7 @@ namespace BansheeEngine
 			RenderQueueElement element;
 			QueueSortType sortType;
 			UINT32 seqIdx;
-			UINT32 priority;
+			INT32 priority;
 			float distFromCamera;
 		};