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

Fixed global material application in renderer

Ivan Safrin 9 лет назад
Родитель
Сommit
ba73b482ec

BIN
assets/default/default.pak


+ 30 - 0
assets/default/default/default.mat

@@ -72,38 +72,68 @@
 		</material>		
 		<material name="Default">
 			<shader name="DefaultUntexturedShader">
+				<params>
+					<param name="entityColor" value="1.0 1.0 1.0 1.0" />
+					<param name="diffuse_color" value="1.0 1.0 1.0 1.0" />
+				</params>					
 			</shader>
 		</material>				
 		<material name="DefaultTextured">
 			<shader name="DefaultShader">
+				<params>
+					<param name="entityColor" value="1.0 1.0 1.0 1.0" />
+					<param name="diffuse_color" value="1.0 1.0 1.0 1.0" />
+				</params>					
 			</shader>
 		</material>
 		<material name="DefaultTexturedShadows">
 			<shader name="DefaultShaderShadows">
+				<params>
+					<param name="entityColor" value="1.0 1.0 1.0 1.0" />
+					<param name="diffuse_color" value="1.0 1.0 1.0 1.0" />
+				</params>					
 			</shader>
 		</material>	
 		<material name="Unlit">
 			<shader name="Unlit">
+				<params>
+					<param name="entityColor" value="1.0 1.0 1.0 1.0" />
+				</params>				
 			</shader>
 		</material>
 		<material name="UnlitAdditive" blendingMode="2">
 			<shader name="Unlit">
+				<params>
+					<param name="entityColor" value="1.0 1.0 1.0 1.0" />
+				</params>				
 			</shader>
 		</material>		
 		<material name="UnlitPointUntextured">
 			<shader name="UnlitPointUntextured">
+				<params>
+					<param name="entityColor" value="1.0 1.0 1.0 1.0" />
+				</params>					
 			</shader>
 		</material>		
 		<material name="UnlitUntextured">
 			<shader name="UnlitUntextured">
+				<params>
+					<param name="entityColor" value="1.0 1.0 1.0 1.0" />
+				</params>					
 			</shader>
 		</material>
 		<material name="UnlitUntexturedVertexColor">
 			<shader name="UnlitUntexturedVertexColor">
+				<params>
+					<param name="entityColor" value="1.0 1.0 1.0 1.0" />
+				</params>					
 			</shader>
 		</material>
 		<material name="UnlitWireframe">
 			<shader name="UnlitWireframe" wireframe="true">
+				<params>
+					<param name="entityColor" value="1.0 1.0 1.0 1.0" />
+				</params>					
 			</shader>
 		</material>				
 	</materials>

+ 4 - 2
build/osx/TemplateApp/TemplateApp/PolycodeTemplateApp.mm

@@ -23,7 +23,9 @@ PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
     scene->clearColor.setColor(0.2, 0.2, 0.2, 1.0);
     
     
-    for(int i=0; i  < 5000; i++) {
+    scene->setOverrideMaterial((Material*)globalPool->getResource(Resource::RESOURCE_MATERIAL, "Unlit"));
+    
+    for(int i=0; i  < 1; i++) {
         test = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.5, 0.5);
         test->setMaterialByName("Unlit");
         test->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "main_icon.png");
@@ -36,7 +38,7 @@ PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
        Camera *camera = scene->getDefaultCamera();
 
     fpsLabel = new SceneLabel("FPS:", 32, "main", Label::ANTIALIAS_FULL, 0.1);
-    scene->addChild(fpsLabel);
+  //  scene->addChild(fpsLabel);
     fpsLabel->setPositionX(-0.6);
     /*
     scene->getDefaultCamera()->setPostFilterByName("HDRProcessBloom");

+ 6 - 0
src/core/PolyRenderer.cpp

@@ -262,6 +262,12 @@ void RenderThread::processDrawBuffer(GPUDrawBuffer *buffer) {
                 
                 bool rebindAttributes = false;
                 
+                // TODO: this is a slow solution
+                
+                if(buffer->globalMaterial) {
+                    rebindAttributes = true;
+                }
+                
                 if(buffer->drawCalls[i].shaderPasses[s].shaderBinding->targetShader != shaderPass.shader) {
                     buffer->drawCalls[i].shaderPasses[s].shaderBinding->targetShader = shaderPass.shader;
                     rebindAttributes = true;