Преглед изворни кода

Multiple assembly reload works

BearishSun пре 10 година
родитељ
комит
dba1e7bfba

+ 11 - 2
BansheeCore/Source/BsRendererUtility.cpp

@@ -14,6 +14,7 @@ namespace BansheeEngine
 	{
 		VertexDataDescPtr vertexDesc = bs_shared_ptr_new<VertexDataDesc>();
 		vertexDesc->addVertElem(VET_FLOAT3, VES_POSITION);
+		vertexDesc->addVertElem(VET_FLOAT2, VES_TEXCOORD);
 
 		MeshDataPtr meshData = bs_shared_ptr_new<MeshData>(4, 6, vertexDesc);
 
@@ -23,6 +24,12 @@ namespace BansheeEngine
 		vecIter.setValue(Vector3(-1.0f, -1.0f, 0));
 		vecIter.setValue(Vector3(1.0f, -1.0f, 0));
 
+		auto uvIter = meshData->getVec2DataIter(VES_TEXCOORD);
+		uvIter.setValue(Vector2(0.0f, 0.0));
+		uvIter.setValue(Vector2(1.0f, 0.0f));
+		uvIter.setValue(Vector2(0.0f, 1.0f));
+		uvIter.setValue(Vector2(1.0f, 1.0f));
+
 		auto indices = meshData->getIndices32();
 		indices[0] = 0;
 		indices[1] = 1;
@@ -161,15 +168,17 @@ namespace BansheeEngine
 	void RendererUtility::drawScreenQuad(const ViewportCore& viewport)
 	{
 		// Note: Consider drawing the quad using a single large triangle for possibly better performance
-		Vector3 vertices[4];
-
 		Rect2I viewArea = viewport.getArea();
 
+		Vector3 vertices[4];
 		vertices[0] = Vector3((float)viewArea.x, (float)viewArea.y, 0.0f);
 		vertices[1] = Vector3((float)viewArea.x + (float)viewArea.width, (float)viewArea.y, 0.0f);
 		vertices[2] = Vector3((float)viewArea.x, (float)viewArea.y + (float)viewArea.height, 0.0f);
 		vertices[3] = Vector3((float)viewArea.x + (float)viewArea.width, (float)viewArea.y + (float)viewArea.width, 0.0f);
 
+		Vector2 uvs[4];
+		// TODO - Set UVs
+
 		auto targetProps = viewport.getTarget()->getProperties();;
 
 		RenderAPICore& rapi = RenderAPICore::instance();

+ 19 - 19
RenderBeast/Source/BsRenderBeast.cpp

@@ -473,32 +473,32 @@ namespace BansheeEngine
 
 			RenderAPICore::instance().beginFrame();
 
-			UINT32 numCameras = (UINT32)cameras.size();
-			for (UINT32 i = 0; i < numCameras; i++)
-				render(renderTargetData, i);
+			//UINT32 numCameras = (UINT32)cameras.size();
+			//for (UINT32 i = 0; i < numCameras; i++)
+			//	render(renderTargetData, i);
 
 			// BEGIN OLD STUFF
-			//RenderAPICore::instance().setRenderTarget(target);
-			//for(auto& camera : cameras)
-			//{
-			//	SPtr<ViewportCore> viewport = camera->getViewport();
-			//	RenderAPICore::instance().setViewport(viewport->getNormArea());
+			RenderAPICore::instance().setRenderTarget(target);
+			for(auto& camera : cameras)
+			{
+				SPtr<ViewportCore> viewport = camera->getViewport();
+				RenderAPICore::instance().setViewport(viewport->getNormArea());
 
-			//	UINT32 clearBuffers = 0;
-			//	if(viewport->getRequiresColorClear())
-			//		clearBuffers |= FBT_COLOR;
+				UINT32 clearBuffers = 0;
+				if(viewport->getRequiresColorClear())
+					clearBuffers |= FBT_COLOR;
 
-			//	if(viewport->getRequiresDepthClear())
-			//		clearBuffers |= FBT_DEPTH;
+				if(viewport->getRequiresDepthClear())
+					clearBuffers |= FBT_DEPTH;
 
-			//	if(viewport->getRequiresStencilClear())
-			//		clearBuffers |= FBT_STENCIL;
+				if(viewport->getRequiresStencilClear())
+					clearBuffers |= FBT_STENCIL;
 
-			//	if(clearBuffers != 0)
-			//		RenderAPICore::instance().clearViewport(clearBuffers, viewport->getClearColor(), viewport->getClearDepthValue(), viewport->getClearStencilValue());
+				if(clearBuffers != 0)
+					RenderAPICore::instance().clearViewport(clearBuffers, viewport->getClearColor(), viewport->getClearDepthValue(), viewport->getClearStencilValue());
 
-			//	renderOLD(*camera);
-			//}
+				renderOLD(*camera);
+			}
 			// END OLD STUFF
 
 			RenderAPICore::instance().endFrame();

+ 5 - 0
SBansheeEngine/Include/BsScriptGUISkin.h

@@ -18,6 +18,11 @@ namespace BansheeEngine
 
 		ScriptGUISkin(MonoObject* instance, const HGUISkin& skin);
 
+		/**
+		 * @copydoc	ScriptObjectBase::_createManagedInstance
+		 */
+		MonoObject* _createManagedInstance(bool construct) override;
+
 		/**
 		 * @brief	Creates an empty, uninitialized managed instance of the resource interop object.
 		 */

+ 5 - 0
SBansheeEngine/Include/BsScriptMaterial.h

@@ -25,6 +25,11 @@ namespace BansheeEngine
 
 		ScriptMaterial(MonoObject* instance, const HMaterial& material);
 
+		/**
+		 * @copydoc	ScriptObjectBase::_createManagedInstance
+		 */
+		MonoObject* _createManagedInstance(bool construct) override;
+
 		/**
 		 * @brief	Creates an empty, uninitialized managed instance of the resource interop object.
 		 */

+ 5 - 0
SBansheeEngine/Include/BsScriptStringTable.h

@@ -19,6 +19,11 @@ namespace BansheeEngine
 
 		ScriptStringTable(MonoObject* instance, const HStringTable& table);
 
+		/**
+		 * @copydoc	ScriptObjectBase::_createManagedInstance
+		 */
+		MonoObject* _createManagedInstance(bool construct) override;
+
 		/**
 		 * @brief	Creates an empty, uninitialized managed instance of the resource interop object.
 		 */

+ 8 - 0
SBansheeEngine/Source/BsScriptGUISkin.cpp

@@ -94,4 +94,12 @@ namespace BansheeEngine
 
 		return metaData.scriptClass->createInstance("bool", params);
 	}
+
+	MonoObject* ScriptGUISkin::_createManagedInstance(bool construct)
+	{
+		if (construct)
+			return createInstance();
+		
+		return metaData.scriptClass->createInstance(false);
+	}
 }

+ 8 - 0
SBansheeEngine/Source/BsScriptMaterial.cpp

@@ -285,4 +285,12 @@ namespace BansheeEngine
 
 		return metaData.scriptClass->createInstance("bool", params);
 	}
+
+	MonoObject* ScriptMaterial::_createManagedInstance(bool construct)
+	{
+		if (construct)
+			return createInstance();
+
+		return metaData.scriptClass->createInstance(false);
+	}
 }

+ 8 - 0
SBansheeEngine/Source/BsScriptStringTable.cpp

@@ -113,4 +113,12 @@ namespace BansheeEngine
 
 		return metaData.scriptClass->createInstance("bool", params);
 	}
+
+	MonoObject* ScriptStringTable::_createManagedInstance(bool construct)
+	{
+		if (construct)
+			return createInstance();
+
+		return metaData.scriptClass->createInstance(false);
+	}
 }

+ 0 - 14
TODO.txt

@@ -7,12 +7,6 @@ TODO - Implement param block and sampler support
 TODO - When creating a Material without a shader, a default one should be used, at least in editor
 TODO - Setting Material array parameters isn't possible from C#
 
----------------------------------------------------------------------
-ProjectLibrary import
-
-I'm not sure if queued dependencies are handled properly. They're handled on an internal ProjectLibrary loop but perhaps I should
-return them in checkForModifications?
-
 ----------------------------------------------------------------------
 Polish
 
@@ -138,14 +132,6 @@ VisualStudio integration
   - Community edition should work similarily to Pro, but might have a different executable and/or registry paths
  - Make sure that 3rd party assemblies can be imported in the project, and that they are properly referenced in VS project generation and compilation
 
-----------------------------------------------------------------------
-Script compilation
-
- - I need to hook up script compilation with assembly refresh, and the build system.
-   - e.g. when recompiling inside the editor it should automatically start compiling when changes are detected,
-     show some kind of visual indicator and refresh assemblies when its done. When publishing it should recompile
-	 assemblies for release. Also hook up console to compiler output?
-
 ----------------------------------------------------------------------
 Library window
 

+ 3 - 3
TODOExperimentation.txt

@@ -14,9 +14,9 @@ Assign ViewOrigin, PreViewTranslation, TransViewProj
  - Do this after I have basic rendering working, to avoid additional issues when I'm initially trying to get it to work
  
 Next week:
- - Default shaders need to render to gbuffer
- - When shader input layout doesn't match with the vertex buffer report this error only once except for every frame
-  - When issue is found print mesh & shader names, as well as the exact attributes that are missing
+ - Default(dummy) shaders need to render to gbuffer
+ - Draw fullscreen needs UVs
+ - When input layout mismatch is found found print mesh & shader names, as well as the exact attributes that are missing
  - Finish up DefferedPointLightPass by generating cone geometry in shader
  - Modify Light so it generated adequate number of vertices required for cone geometry, without actually creating the cone
  - Think about how to handle post-processing shaders (HDR tone mapping)