Kaynağa Gözat

Renamed DeferredRenderContext to CoreThreadAccessor
Removed DeferredRenderContextFwd.h

Marko Pintera 12 yıl önce
ebeveyn
işleme
1b18f9ddd3

+ 1 - 2
BansheeEngine/Include/BsDebugDraw.h

@@ -1,7 +1,6 @@
 #pragma once
 
 #include "BsPrerequisites.h"
-#include "CmDeferredRenderContextFwd.h"
 #include "CmModule.h"
 #include "CmColor.h"
 #include "CmAxisAlignedBox.h"
@@ -38,7 +37,7 @@ namespace BansheeEngine
 		//void drawAABB(const AxisAlignedBox& aab, const Color& color = Color::Green, float timeout = 0.0f);
 		//void drawSphere(const Vector3& center, float radius, const Color& color = Color::Green, float timeout = 0.0f);
 
-		void render(const Camera* camera, CM::RenderContext& renderContext);
+		void render(const Camera* camera, CM::CoreAccessor& coreAccessor);
 
 	private:
 		CM::HMesh mTriangleMesh;

+ 1 - 2
BansheeEngine/Include/BsGUIManager.h

@@ -5,7 +5,6 @@
 #include "BsGUIKeyEvent.h"
 #include "CmModule.h"
 #include "CmInput.h"
-#include "CmDeferredRenderContextFwd.h"
 #include <boost/signals/connection.hpp>
 
 namespace BansheeEngine
@@ -36,7 +35,7 @@ namespace BansheeEngine
 		void unregisterWidget(GUIWidget* widget);
 
 		void update();
-		void render(CM::ViewportPtr& target, CM::RenderContext& renderContext);
+		void render(CM::ViewportPtr& target, CM::CoreAccessor& coreAccessor);
 	private:
 		CM::Vector<GUIWidget*>::type mWidgets;
 		CM::UnorderedMap<const CM::Viewport*, GUIRenderData>::type mCachedGUIData;

+ 2 - 2
BansheeEngine/Include/BsOverlay.h

@@ -1,7 +1,7 @@
 #pragma once
 
 #include "BsPrerequisites.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 #include "CmComponent.h"
 
 namespace BansheeEngine
@@ -24,7 +24,7 @@ namespace BansheeEngine
 		 */
 		void initialize(CM::Viewport* target);
 
-		virtual void render(CM::RenderContext& renderContext) const = 0;
+		virtual void render(CM::CoreAccessor& coreAccessor) const = 0;
 		virtual void update() {}
 
 		CM::Viewport* getTarget() const { return mRenderTarget; }

+ 2 - 2
BansheeEngine/Include/BsOverlayManager.h

@@ -1,7 +1,7 @@
 #pragma once
 
 #include "BsPrerequisites.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 #include "CmModule.h"
 
 namespace BansheeEngine
@@ -22,7 +22,7 @@ namespace BansheeEngine
 		};
 
 	public:
-		void render(CM::ViewportPtr& target, CM::RenderContext& renderContext) const;
+		void render(CM::ViewportPtr& target, CM::CoreAccessor& coreAccessor) const;
 
 	private:
 		friend class Overlay;

+ 7 - 7
BansheeEngine/Source/BsDebugDraw.cpp

@@ -160,7 +160,7 @@ namespace BansheeEngine
 		gMainSyncedCA().submitToCoreThread(true);
 	}
 
-	void DebugDraw::render(const Camera* camera, RenderContext& renderContext)
+	void DebugDraw::render(const Camera* camera, CoreAccessor& coreAccessor)
 	{
 		if(mCommands.size() == 0)
 			return;
@@ -170,23 +170,23 @@ namespace BansheeEngine
 		for(UINT32 i = 0; i < mLineMaterial->getNumPasses(); i++)
 		{
 			PassPtr pass = mLineMaterial->getPass(i);
-			pass->activate(renderContext);
+			pass->activate(coreAccessor);
 
 			PassParametersPtr paramsPtr = mLineMaterial->getPassParameters(i);
-			pass->bindParameters(renderContext, paramsPtr);
+			pass->bindParameters(coreAccessor, paramsPtr);
 
-			renderContext.render(mLineMesh->getRenderOperation());
+			coreAccessor.render(mLineMesh->getRenderOperation());
 		}
 
 		for(UINT32 i = 0; i < mTriangleMaterial->getNumPasses(); i++)
 		{
 			PassPtr pass = mTriangleMaterial->getPass(i);
-			pass->activate(renderContext);
+			pass->activate(coreAccessor);
 
 			PassParametersPtr paramsPtr = mTriangleMaterial->getPassParameters(i);
-			pass->bindParameters(renderContext, paramsPtr);
+			pass->bindParameters(coreAccessor, paramsPtr);
 
-			renderContext.render(mTriangleMesh->getRenderOperation());
+			coreAccessor.render(mTriangleMesh->getRenderOperation());
 		}
 	}
 

+ 5 - 5
BansheeEngine/Source/BsGUIManager.cpp

@@ -119,14 +119,14 @@ namespace BansheeEngine
 		updateMeshes();
 	}
 
-	void GUIManager::render(ViewportPtr& target, RenderContext& renderContext)
+	void GUIManager::render(ViewportPtr& target, CoreAccessor& coreAccessor)
 	{
 		auto findIter = mCachedGUIData.find(target.get());
 
 		if(findIter == mCachedGUIData.end())
 			return;
 
-		renderContext.setViewport(target);
+		coreAccessor.setViewport(target);
 
 		GUIRenderData& renderData = findIter->second;
 
@@ -157,12 +157,12 @@ namespace BansheeEngine
 				for(UINT32 i = 0; i < material->getNumPasses(); i++)
 				{
 					PassPtr pass = material->getPass(i);
-					pass->activate(renderContext);
+					pass->activate(coreAccessor);
 
 					PassParametersPtr paramsPtr = material->getPassParameters(i);
-					pass->bindParameters(renderContext, paramsPtr);
+					pass->bindParameters(coreAccessor, paramsPtr);
 
-					renderContext.render(mesh->getRenderOperation());
+					coreAccessor.render(mesh->getRenderOperation());
 				}
 
 				meshIdx++;

+ 1 - 1
BansheeEngine/Source/BsGUIWidget.cpp

@@ -5,7 +5,7 @@
 #include "BsGUIMouseEvent.h"
 #include "BsGUIArea.h"
 #include "CmApplication.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 #include "CmMaterial.h"
 #include "CmPass.h"
 #include "CmMesh.h"

+ 3 - 3
BansheeEngine/Source/BsOverlayManager.cpp

@@ -11,19 +11,19 @@ namespace BansheeEngine
 		return a->getDepth() > b->getDepth();
 	}
 
-	void OverlayManager::render(CM::ViewportPtr& target, RenderContext& renderContext) const
+	void OverlayManager::render(CM::ViewportPtr& target, CoreAccessor& coreAccessor) const
 	{
 		auto overlays = mOverlaysPerTarget.find(target.get());
 
 		if(overlays == mOverlaysPerTarget.end())
 			return;
 
-		renderContext.setViewport(target);
+		coreAccessor.setViewport(target);
 		
 		// Render all overlays. They should already be sorted by depth, front most rendering last
 		for(auto& overlay : overlays->second)
 		{
-			overlay->render(renderContext);
+			overlay->render(coreAccessor);
 		}
 	}
 

+ 12 - 12
BansheeForwardRenderer/Source/BsForwardRenderer.cpp

@@ -33,7 +33,7 @@ namespace BansheeEngine
 
 	void ForwardRenderer::renderAll() 
 	{
-		RenderContext& renderContext = gMainCA();
+		CoreAccessor& coreAccessor = gMainCA();
 		const Vector<HCamera>::type& allCameras = gSceneManager().getAllCameras();
 
 		// Find all unique render targets
@@ -51,9 +51,9 @@ namespace BansheeEngine
 
 		// Clear all targets
 		for(auto& target : renderTargets)
-			renderContext.clear(target, FBT_COLOR | FBT_DEPTH, Color::Blue);
+			coreAccessor.clear(target, FBT_COLOR | FBT_DEPTH, Color::Blue);
 
-		renderContext.beginFrame();
+		coreAccessor.beginFrame();
 
 		// TODO - Attempt to render all different elements in such a way that there is only 1 render target switch per render target
 
@@ -63,17 +63,17 @@ namespace BansheeEngine
 
 		// Render overlays for all targets
 		for(auto& camera : allCameras)
-			OverlayManager::instance().render(camera->getViewport(), renderContext);
+			OverlayManager::instance().render(camera->getViewport(), coreAccessor);
 
 		// Render all GUI elements
 		for(auto& camera : allCameras)
-			GUIManager::instance().render(camera->getViewport(), renderContext);
+			GUIManager::instance().render(camera->getViewport(), coreAccessor);
 
-		renderContext.endFrame();
+		coreAccessor.endFrame();
 
 		// Swap all targets
 		for(auto& target : renderTargets)
-			renderContext.swapBuffers(target);
+			coreAccessor.swapBuffers(target);
 	}
 
 	void ForwardRenderer::render(const HCamera& camera) 
@@ -83,8 +83,8 @@ namespace BansheeEngine
 		if(!camera->getIgnoreSceneRenderables())
 			allRenderables = gSceneManager().getVisibleRenderables(camera);
 
-		RenderContext& renderContext = gMainCA();
-		renderContext.setViewport(camera->getViewport());
+		CoreAccessor& coreAccessor = gMainCA();
+		coreAccessor.setViewport(camera->getViewport());
 
 		Matrix4 projMatrixCstm = camera->getProjectionMatrix();
 		Matrix4 viewMatrixCstm = camera->getViewMatrix();
@@ -112,12 +112,12 @@ namespace BansheeEngine
 			for(UINT32 i = 0; i < material->getNumPasses(); i++)
 			{
 				PassPtr pass = material->getPass(i);
-				pass->activate(renderContext);
+				pass->activate(coreAccessor);
 
 				PassParametersPtr paramsPtr = material->getPassParameters(i);
-				pass->bindParameters(renderContext, paramsPtr);
+				pass->bindParameters(coreAccessor, paramsPtr);
 
-				renderContext.render(mesh->getRenderOperation());
+				coreAccessor.render(mesh->getRenderOperation());
 			}
 		}
 

+ 2 - 3
CamelotCore/CamelotCore.vcxproj

@@ -177,7 +177,6 @@
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClInclude Include="Include\CmCoreThread.h" />
-    <ClInclude Include="Include\CmDeferredRenderContextFwd.h" />
     <ClInclude Include="Include\CmGameObjectHandle.h" />
     <ClInclude Include="Include\CmGameObject.h" />
     <ClInclude Include="Include\CmGameObjectRTTI.h" />
@@ -203,7 +202,7 @@
     <ClInclude Include="Include\CmComponentRTTI.h" />
     <ClInclude Include="Include\CmCoreObject.h" />
     <ClInclude Include="Include\CmCoreObjectManager.h" />
-    <ClInclude Include="Include\CmDeferredRenderContext.h" />
+    <ClInclude Include="Include\CmCoreThreadAccessor.h" />
     <ClInclude Include="Include\CmDepthStencilStateRTTI.h" />
     <ClInclude Include="Include\CmDepthStencilState.h" />
     <ClInclude Include="Include\CmFont.h" />
@@ -311,7 +310,7 @@
     <ClCompile Include="Source\CmCommandQueue.cpp" />
     <ClCompile Include="Source\CmCoreObject.cpp" />
     <ClCompile Include="Source\CmCoreObjectManager.cpp" />
-    <ClCompile Include="Source\CmDeferredRenderContext.cpp" />
+    <ClCompile Include="Source\CmCoreThreadAccessor.cpp" />
     <ClCompile Include="Source\CmDepthStencilState.cpp" />
     <ClCompile Include="Source\CmFont.cpp" />
     <ClCompile Include="Source\CmFontImportOptions.cpp" />

+ 32 - 29
CamelotCore/CamelotCore.vcxproj.filters

@@ -85,6 +85,12 @@
     <Filter Include="Source Files\Text">
       <UniqueIdentifier>{96b913ee-4ffb-4c60-9aa9-a51e0faf8060}</UniqueIdentifier>
     </Filter>
+    <Filter Include="Header Files\Core">
+      <UniqueIdentifier>{62281c40-1fc0-47f6-bc61-ff28314d8e13}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\Core">
+      <UniqueIdentifier>{402fe837-7d94-4343-a288-c8308fda8c18}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="Include\CmWindowEventUtilities.h">
@@ -258,12 +264,6 @@
     <ClInclude Include="Include\CmResourceHandleRTTI.h">
       <Filter>Header Files\RTTI</Filter>
     </ClInclude>
-    <ClInclude Include="Include\CmCommandQueue.h">
-      <Filter>Header Files\RenderSystem</Filter>
-    </ClInclude>
-    <ClInclude Include="Include\CmDeferredRenderContext.h">
-      <Filter>Header Files\RenderSystem</Filter>
-    </ClInclude>
     <ClInclude Include="Include\CmDepthStencilState.h">
       <Filter>Header Files\RenderSystem</Filter>
     </ClInclude>
@@ -375,12 +375,6 @@
     <ClInclude Include="Include\CmFontManager.h">
       <Filter>Header Files\Text</Filter>
     </ClInclude>
-    <ClInclude Include="Include\CmCoreObject.h">
-      <Filter>Header Files\RenderSystem</Filter>
-    </ClInclude>
-    <ClInclude Include="Include\CmCoreObjectManager.h">
-      <Filter>Header Files\RenderSystem</Filter>
-    </ClInclude>
     <ClInclude Include="Include\CmFontImportOptions.h">
       <Filter>Header Files\Text</Filter>
     </ClInclude>
@@ -429,9 +423,6 @@
     <ClInclude Include="Include\CmGpuResourceDataRTTI.h">
       <Filter>Header Files\RTTI</Filter>
     </ClInclude>
-    <ClInclude Include="Include\CmDeferredRenderContextFwd.h">
-      <Filter>Header Files\RenderSystem</Filter>
-    </ClInclude>
     <ClInclude Include="Include\Win32\CmCursorImpl.h">
       <Filter>Header Files\Win32</Filter>
     </ClInclude>
@@ -450,8 +441,20 @@
     <ClInclude Include="Include\CmInputFwd.h">
       <Filter>Header Files\Input</Filter>
     </ClInclude>
+    <ClInclude Include="Include\CmCommandQueue.h">
+      <Filter>Header Files\Core</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\CmCoreObject.h">
+      <Filter>Header Files\Core</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\CmCoreObjectManager.h">
+      <Filter>Header Files\Core</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\CmCoreThreadAccessor.h">
+      <Filter>Header Files\Core</Filter>
+    </ClInclude>
     <ClInclude Include="Include\CmCoreThread.h">
-      <Filter>Header Files</Filter>
+      <Filter>Header Files\Core</Filter>
     </ClInclude>
   </ItemGroup>
   <ItemGroup>
@@ -566,12 +569,6 @@
     <ClCompile Include="Source\CmSpecificImporter.cpp">
       <Filter>Source Files\Importer</Filter>
     </ClCompile>
-    <ClCompile Include="Source\CmCommandQueue.cpp">
-      <Filter>Source Files\RenderSystem</Filter>
-    </ClCompile>
-    <ClCompile Include="Source\CmDeferredRenderContext.cpp">
-      <Filter>Source Files\RenderSystem</Filter>
-    </ClCompile>
     <ClCompile Include="Source\CmDepthStencilState.cpp">
       <Filter>Source Files\RenderSystem</Filter>
     </ClCompile>
@@ -653,12 +650,6 @@
     <ClCompile Include="Source\CmFontManager.cpp">
       <Filter>Source Files\Text</Filter>
     </ClCompile>
-    <ClCompile Include="Source\CmCoreObject.cpp">
-      <Filter>Source Files\RenderSystem</Filter>
-    </ClCompile>
-    <ClCompile Include="Source\CmCoreObjectManager.cpp">
-      <Filter>Source Files\RenderSystem</Filter>
-    </ClCompile>
     <ClCompile Include="Source\CmFontImportOptions.cpp">
       <Filter>Source Files\Text</Filter>
     </ClCompile>
@@ -696,7 +687,19 @@
       <Filter>Source Files\Input</Filter>
     </ClCompile>
     <ClCompile Include="Source\CmCoreThread.cpp">
-      <Filter>Source Files</Filter>
+      <Filter>Source Files\Core</Filter>
+    </ClCompile>
+    <ClCompile Include="Source\CmCommandQueue.cpp">
+      <Filter>Source Files\Core</Filter>
+    </ClCompile>
+    <ClCompile Include="Source\CmCoreObject.cpp">
+      <Filter>Source Files\Core</Filter>
+    </ClCompile>
+    <ClCompile Include="Source\CmCoreObjectManager.cpp">
+      <Filter>Source Files\Core</Filter>
+    </ClCompile>
+    <ClCompile Include="Source\CmCoreThreadAccessor.cpp">
+      <Filter>Source Files\Core</Filter>
     </ClCompile>
   </ItemGroup>
 </Project>

+ 8 - 8
CamelotCore/Include/CmApplication.h

@@ -1,7 +1,7 @@
 #pragma once
 
 #include "CmPrerequisites.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 #include "CmHighLevelGpuProgram.h"
 #include "CmRenderWindow.h"
 
@@ -78,12 +78,12 @@ namespace CamelotFramework
 			boost::signal<void()> mainLoopCallback;
 
 	private:
-		friend CM_EXPORT RenderContext& gMainCA();
-		friend CM_EXPORT SyncedRenderContext& gMainSyncedCA();
+		friend CM_EXPORT CoreAccessor& gMainCA();
+		friend CM_EXPORT SyncedCoreAccessor& gMainSyncedCA();
 
 		RenderWindowPtr mPrimaryWindow;
-		RenderContextPtr mPrimaryRenderContext;
-		SyncedRenderContext* mPrimarySyncedRenderContext;
+		CoreAccessorPtr mPrimaryCoreAccessor;
+		SyncedCoreAccessor* mPrimarySyncedCoreAccessor;
 
 		bool mIsFrameRenderingFinished;
 		CM_MUTEX(mFrameRenderingFinishedMutex);
@@ -107,15 +107,15 @@ namespace CamelotFramework
 	 * @brief	A shortcut for accessing the primary core accessor. It may only be accessed safely
 	 * 			from the main thread.
 	 */
-	CM_EXPORT RenderContext& gMainCA();
+	CM_EXPORT CoreAccessor& gMainCA();
 
 	/**
-	 * @brief	A shortcut for accessing the primary synchronized core accessor. This context may be accessed
+	 * @brief	A shortcut for accessing the primary synchronized core accessor. This accessor may be accessed
 	 * 			from all threads except the core thread. All operations from this accessor will be executed after
 	 * 			non-synchronized primary accessor has finished executing.
 	 * 			
 	 * @note	It is more efficient to create your own non-synchronized core accessor if you plan on often using it from
 	 * 			threads other than main.
 	 */
-	CM_EXPORT SyncedRenderContext& gMainSyncedCA();
+	CM_EXPORT SyncedCoreAccessor& gMainSyncedCA();
 }

+ 4 - 4
CamelotCore/Include/CmCoreThread.h

@@ -3,7 +3,7 @@
 #include "CmPrerequisites.h"
 #include "CmModule.h"
 #include "CmCommandQueue.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 
 namespace CamelotFramework
 {
@@ -30,7 +30,7 @@ public:
 		* 			is that you do not use a single instance on more than one thread. Each thread
 		* 			requires its own accessor. The accessor will be bound to the thread you call this method on.
 		*/
-	RenderContextPtr createAccessor();
+	CoreAccessorPtr createAccessor();
 
 	/**
 	* @brief	Retrieves an accessor that you can use for executing commands on the core thread from
@@ -38,7 +38,7 @@ public:
 	* 			Note however that it is much more efficient to create a separate non-synchronized accessor using
 	* 			"createCoreAccessor" for each thread you will be using it on.
 		*/
-	SyncedRenderContext& getSyncedAccessor();
+	SyncedCoreAccessor& getSyncedAccessor();
 
 	/**
 		* @brief	Queues a new command that will be added to the global command queue. You are allowed to call this from any thread,
@@ -94,7 +94,7 @@ private:
 	UINT32 mMaxCommandNotifyId; // ID that will be assigned to the next command with a notifier callback
 	Vector<UINT32>::type mCommandsCompleted; // Completed commands that have notifier callbacks set up
 
-	SyncedRenderContext* mSyncedCoreAccessor;
+	SyncedCoreAccessor* mSyncedCoreAccessor;
 
 	/**
 		* @brief	Initializes a separate core thread. Should only be called once.

+ 5 - 11
CamelotCore/Include/CmDeferredRenderContext.h → CamelotCore/Include/CmCoreThreadAccessor.h

@@ -1,7 +1,6 @@
 #pragma once
 
 #include "CmPrerequisites.h"
-#include "CmDeferredRenderContextFwd.h"
 #include "CmCommonEnums.h"
 #include "CmRenderSystem.h"
 #include "CmCommandQueue.h"
@@ -13,30 +12,25 @@
 namespace CamelotFramework
 {
 	/**
-	 * @brief	Deferred render context allows you to execute RenderSystem commands outside of the core thread.
+	 * @brief	Core thread accessor allows you to schedule core commands outside of the core thread.
 	 * 			
 	 * @note	All commands are queued and only executed after the call to submitToCoreThread, in the order they were called.
 	 */
 	template <class CommandQueueSyncPolicy = CommandQueueNoSync>
-	class CM_EXPORT DeferredRenderContext
+	class CM_EXPORT CoreThreadAccessor
 	{
 	public:
 		/**
 		 * @brief	Constructor.
 		 *
-		 * @param	rs  			Render system to be used by the context.
-		 * @param	threadId		Identifier for the thread that created the context.
-		 * @param	syncedAccess	If false, the deferred render context can only be safely accessed from the thread that created it.
-		 * 							If true, deferred render context can be accessed from any thread safely, however there will be a slight performance
-		 * 							hit due to synchronization. In most cases you will want not to use synced access and instead create a separate context
-		 * 							for specific threads.
+		 * @param	threadId		Identifier for the thread that created the accessor.
 		 */
-		DeferredRenderContext(CM_THREAD_ID_TYPE threadId)
+		CoreThreadAccessor(CM_THREAD_ID_TYPE threadId)
 		{
 			mCommandQueue = cm_new<CommandQueue<CommandQueueSyncPolicy>>(threadId);
 		}
 
-		~DeferredRenderContext()
+		~CoreThreadAccessor()
 		{
 			cm_delete(mCommandQueue);
 		}

+ 0 - 15
CamelotCore/Include/CmDeferredRenderContextFwd.h

@@ -1,15 +0,0 @@
-#pragma once
-
-#include "CmPrerequisites.h"
-#include "CmCommandQueue.h"
-
-namespace CamelotFramework
-{	// TODO - This is duplicated here and in DeferredRenderContext
-	template<class T>
-	class DeferredRenderContext;
-
-	typedef DeferredRenderContext<CommandQueueNoSync> RenderContext;
-	typedef DeferredRenderContext<CommandQueueSync> SyncedRenderContext;
-	typedef std::shared_ptr<DeferredRenderContext<CommandQueueNoSync>> RenderContextPtr;
-	typedef std::shared_ptr<DeferredRenderContext<CommandQueueSync>> SyncedRenderContextPtr;
-}

+ 2 - 2
CamelotCore/Include/CmGpuParams.h

@@ -60,12 +60,12 @@ namespace CamelotFramework
 
 		/**
 		 * @brief	Creates the copy of this object in a special way. Should only be called
-		 * 			internally by deferred render context when passing gpu params to the core thread.
+		 * 			internally by core thread accessor when passing gpu params to the core thread.
 		 */
 		static BindableGpuParams createBindableCopy(GpuParamsPtr params);
 
 		/**
-		 * @brief	Needs to be called on any copy created with "createCopyForDeferred" before the object is deleted.
+		 * @brief	Needs to be called on any copy created with "createBindableCopy" before the object is deleted.
 		 */
 		static void releaseBindableCopy(BindableGpuParams& bindableParams);
 	private:

+ 0 - 1
CamelotCore/Include/CmMeshManager.h

@@ -1,7 +1,6 @@
 #pragma once
 
 #include "CmPrerequisites.h"
-#include "CmDeferredRenderContextFwd.h"
 #include "CmModule.h"
 
 namespace CamelotFramework

+ 3 - 3
CamelotCore/Include/CmPass.h

@@ -2,7 +2,7 @@
 
 #include "CmPrerequisites.h"
 #include "CmCommonEnums.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 #include "CmColor.h"
 #include "CmIReflectable.h"
 
@@ -108,12 +108,12 @@ namespace CamelotFramework
 		/**
 		 * @brief	Makes this pass active. Anything rendered after this command will use this pass.
 		 */
-		void activate(RenderContext& renderContext) const;
+		void activate(CoreAccessor& renderContext) const;
 
 		/**
 		 * @brief	Applies specified parameters to the active pass. 
 		 */
-		void bindParameters(RenderContext& renderContext, const PassParametersPtr& params) const;
+		void bindParameters(CoreAccessor& renderContext, const PassParametersPtr& params) const;
 
 		/************************************************************************/
 		/* 								RTTI		                     		*/

+ 9 - 0
CamelotCore/Include/CmPrerequisites.h

@@ -179,6 +179,11 @@ namespace CamelotFramework {
 	struct RENDER_TEXTURE_DESC;
 	struct RENDER_WINDOW_DESC;
 	struct FONT_DESC;
+
+	template<class T>
+	class CoreThreadAccessor;
+	class CommandQueueNoSync;
+	class CommandQueueSync;
 }
 
 /************************************************************************/
@@ -225,6 +230,10 @@ namespace CamelotFramework
 	typedef std::shared_ptr<const ImportOptions> ConstImportOptionsPtr;
 	typedef std::shared_ptr<Font> FontPtr;
 	typedef std::shared_ptr<GpuResource> GpuResourcePtr;
+	typedef CoreThreadAccessor<CommandQueueNoSync> CoreAccessor;
+	typedef CoreThreadAccessor<CommandQueueSync> SyncedCoreAccessor;
+	typedef std::shared_ptr<CoreThreadAccessor<CommandQueueNoSync>> CoreAccessorPtr;
+	typedef std::shared_ptr<CoreThreadAccessor<CommandQueueSync>> SyncedCoreAccessorPtr;
 }
 
 /************************************************************************/

+ 0 - 1
CamelotCore/Include/CmRenderSystem.h

@@ -39,7 +39,6 @@ THE SOFTWARE.
 #include "CmCommonEnums.h"
 
 #include "CmCommandQueue.h"
-#include "CmDeferredRenderContextFwd.h"
 #include "CmRenderOperation.h"
 #include "CmRenderSystemCapabilities.h"
 #include "CmRenderTarget.h"

+ 1 - 1
CamelotCore/Include/CmTextureRTTI.h

@@ -6,7 +6,7 @@
 #include "CmManagedDataBlock.h"
 #include "CmMath.h"
 #include "CmApplication.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 
 // DEBUG ONLY
 #include "CmTextureManager.h"

+ 8 - 8
CamelotCore/Source/CmApplication.cpp

@@ -65,8 +65,8 @@ namespace CamelotFramework
 		loadPlugin(desc.renderer);
 		RendererManager::instance().setActive(desc.renderer);
 
-		mPrimaryRenderContext = gCoreThread().createAccessor();
-		mPrimarySyncedRenderContext = &gCoreThread().getSyncedAccessor();
+		mPrimaryCoreAccessor = gCoreThread().createAccessor();
+		mPrimarySyncedCoreAccessor = &gCoreThread().getSyncedAccessor();
 
 		SceneManager::startUp((SceneManager*)loadPlugin(desc.sceneManager));
 
@@ -116,11 +116,11 @@ namespace CamelotFramework
 				}
 				
 				gCoreThread().queueCommand(boost::bind(&Application::updateMessagePump, this));
-				mPrimaryRenderContext->submitToCoreThread();
+				mPrimaryCoreAccessor->submitToCoreThread();
 				gCoreThread().queueCommand(boost::bind(&Application::frameRenderingFinishedCallback, this));
 			}
 			else
-				mPrimaryRenderContext->cancelAll();
+				mPrimaryCoreAccessor->cancelAll();
 
 			gTime().update();
 		}
@@ -218,13 +218,13 @@ namespace CamelotFramework
 		return application;
 	}
 
-	RenderContext& gMainCA()
+	CoreAccessor& gMainCA()
 	{
-		return *gApplication().mPrimaryRenderContext.get();
+		return *gApplication().mPrimaryCoreAccessor.get();
 	}
 
-	SyncedRenderContext& gMainSyncedCA()
+	SyncedCoreAccessor& gMainSyncedCA()
 	{
-		return *gApplication().mPrimarySyncedRenderContext;
+		return *gApplication().mPrimarySyncedCoreAccessor;
 	}
 }

+ 4 - 4
CamelotCore/Source/CmCoreThread.cpp

@@ -52,7 +52,7 @@ namespace CamelotFramework
 	{
 #if !CM_FORCE_SINGLETHREADED_RENDERING
 		mCoreThreadId = CM_THREAD_CURRENT_ID;
-		mSyncedCoreAccessor = cm_new<DeferredRenderContext<CommandQueueSync>>(CM_THREAD_CURRENT_ID);
+		mSyncedCoreAccessor = cm_new<CoreThreadAccessor<CommandQueueSync>>(CM_THREAD_CURRENT_ID);
 
 		{
 			CM_LOCK_MUTEX(mCoreThreadStartMutex);
@@ -116,12 +116,12 @@ namespace CamelotFramework
 		mCoreThreadStarted = false;
 	}
 
-	RenderContextPtr CoreThread::createAccessor()
+	CoreAccessorPtr CoreThread::createAccessor()
 	{
-		return cm_shared_ptr<DeferredRenderContext<CommandQueueNoSync>>(CM_THREAD_CURRENT_ID);
+		return cm_shared_ptr<CoreThreadAccessor<CommandQueueNoSync>>(CM_THREAD_CURRENT_ID);
 	}
 
-	SyncedRenderContext& CoreThread::getSyncedAccessor()
+	SyncedCoreAccessor& CoreThread::getSyncedAccessor()
 	{
 		return *mSyncedCoreAccessor;
 	}

+ 1 - 1
CamelotCore/Source/CmDeferredRenderContext.cpp → CamelotCore/Source/CmCoreThreadAccessor.cpp

@@ -1,4 +1,4 @@
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 #include "CmCommandQueue.h"
 #include "CmRenderSystem.h"
 #include "CmBlendState.h"

+ 4 - 4
CamelotCore/Source/CmMeshManager.cpp

@@ -1,5 +1,5 @@
 #include "CmMeshManager.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 #include "CmApplication.h"
 #include "CmVector3.h"
 #include "CmMesh.h"
@@ -50,10 +50,10 @@ namespace CamelotFramework
 		indices[1] = 0;
 		indices[2] = 0;
 
-		SyncedRenderContext& renderContext = gMainSyncedCA();
+		SyncedCoreAccessor& coreAccessor = gMainSyncedCA();
 
 		mDummyMesh = Mesh::create();
-		renderContext.writeSubresource(mDummyMesh.getInternalPtr(), 0, *mDummyMeshData);
-		renderContext.submitToCoreThread(true); // TODO - Only temporary until I fix write/read subresource
+		coreAccessor.writeSubresource(mDummyMesh.getInternalPtr(), 0, *mDummyMeshData);
+		coreAccessor.submitToCoreThread(true); // TODO - Only temporary until I fix write/read subresource
 	}
 }

+ 2 - 2
CamelotCore/Source/CmPass.cpp

@@ -105,7 +105,7 @@ namespace CamelotFramework
 		return mStencilRefValue;
 	}
 	//----------------------------------------------------------------------
-	void Pass::activate(RenderContext& renderContext) const
+	void Pass::activate(CoreAccessor& renderContext) const
 	{
 		HGpuProgram vertProgram = getVertexProgram();
 		if(vertProgram)
@@ -162,7 +162,7 @@ namespace CamelotFramework
 			renderContext.setRasterizerState(RasterizerState::getDefault());
 	}
 	//----------------------------------------------------------------------
-	void Pass::bindParameters(RenderContext& renderContext, const PassParametersPtr& params) const
+	void Pass::bindParameters(CoreAccessor& renderContext, const PassParametersPtr& params) const
 	{
 		HGpuProgram vertProgram = getVertexProgram();
 		if(vertProgram)

+ 1 - 1
CamelotCore/Source/CmRenderSystem.cpp

@@ -33,7 +33,7 @@ THE SOFTWARE.
 
 #include "CmRenderSystem.h"
 
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 #include "CmViewport.h"
 #include "CmException.h"
 #include "CmRenderTarget.h"

+ 1 - 1
CamelotFontImporter/Source/CmFontImporter.cpp

@@ -6,7 +6,7 @@
 #include "CmDebug.h"
 #include "CmTexAtlasGenerator.h"
 #include "CmApplication.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 
 #include <ft2build.h>
 #include <freetype/freetype.h>

+ 1 - 1
CamelotFreeImgImporter/Source/CmFreeImgImporter.cpp

@@ -8,7 +8,7 @@
 #include "CmTexture.h"
 #include "CmFileSystem.h"
 #include "CmApplication.h"
-#include "CmDeferredRenderContext.h"
+#include "CmCoreThreadAccessor.h"
 
 #include "FreeImage.h"