Jelajahi Sumber

Fixes material generation for new shaders/material system

seanpaultaylor 12 tahun lalu
induk
melakukan
1f9924ab3b
1 mengubah file dengan 23 tambahan dan 47 penghapusan
  1. 23 47
      tools/encoder/src/FBXSceneEncoder.cpp

+ 23 - 47
tools/encoder/src/FBXSceneEncoder.cpp

@@ -607,24 +607,13 @@ static string getBaseMaterialName(Material* material)
     ostringstream baseName;
     if (material->isTextured())
     {
-        baseName << "Textured";
+        baseName << "textured";
     }
     else
     {
-        baseName << "Colored";
+        baseName << "colored";
     }
 
-    if (material->isLit())
-    {
-        if (material->isSpecular())
-        {
-            baseName << "Specular";
-        }
-    }
-    else
-    {
-        baseName << "Unlit";
-    }
     return baseName.str();
 }
 
@@ -660,36 +649,15 @@ Material* FBXSceneEncoder::createBaseMaterial(const string& baseMaterialName, Ma
     baseMaterial->setUniform("u_worldViewProjectionMatrix", "WORLD_VIEW_PROJECTION_MATRIX");
     baseMaterial->setRenderState("cullFace", "true");
     baseMaterial->setRenderState("depthTest", "true");
-    if (childMaterial->isLit())
-    {
-        baseMaterial->setLit(true);
-        baseMaterial->setUniform("u_inverseTransposeWorldViewMatrix", "INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX");
 
-        if (childMaterial->isSpecular())
-        {
-            baseMaterial->addDefine(SPECULAR);
-            baseMaterial->setUniform("u_cameraPosition", "CAMERA_WORLD_POSITION");
-        }
-    }
     if (childMaterial->isTextured())
     {
-        if (childMaterial->isLit())
-        {
-            if (childMaterial->isBumped())
-            {
-                baseMaterial->setVertexShader("res/shaders/textured-bumped.vert");
-                baseMaterial->setFragmentShader("res/shaders/textured-bumped.frag");
-            }
-            else
-            {
-                baseMaterial->setVertexShader("res/shaders/textured.vert");
-                baseMaterial->setFragmentShader("res/shaders/textured.frag");
-            }
-        }
-        else
+		baseMaterial->setVertexShader("res/shaders/textured.vert");
+        baseMaterial->setFragmentShader("res/shaders/textured.frag");
+
+        if (childMaterial->isLit() && childMaterial->isBumped())
         {
-            baseMaterial->setVertexShader("res/shaders/textured-unlit.vert");
-            baseMaterial->setFragmentShader("res/shaders/textured-unlit.frag");
+			baseMaterial->addDefine("BUMPED");
         }
         Sampler* sampler = baseMaterial->createSampler(u_diffuseTexture);
         sampler->set("mipmap", "true");
@@ -700,16 +668,24 @@ Material* FBXSceneEncoder::createBaseMaterial(const string& baseMaterialName, Ma
     }
     else
     {
-        if (childMaterial->isLit())
-        {
-            baseMaterial->setVertexShader("res/shaders/colored.vert");
-            baseMaterial->setFragmentShader("res/shaders/colored.frag");
-        }
-        else
+		baseMaterial->setVertexShader("res/shaders/colored.vert");
+        baseMaterial->setFragmentShader("res/shaders/colored.frag");
+    }
+
+	if (childMaterial->isLit())
+    {
+        baseMaterial->setLit(true);
+		baseMaterial->setUniform("u_inverseTransposeWorldViewMatrix", "INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX");
+		baseMaterial->setUniform("u_directionalLightColor[0]", "1, 1, 1");
+		baseMaterial->setUniform("u_directionalLightDirection[0]", "0, -1, 0");		
+
+        if (childMaterial->isSpecular())
         {
-            baseMaterial->setVertexShader("res/shaders/colored-unlit.vert");
-            baseMaterial->setFragmentShader("res/shaders/colored-unlit.frag");
+            baseMaterial->addDefine(SPECULAR);
+            baseMaterial->setUniform("u_cameraPosition", "CAMERA_WORLD_POSITION");
         }
+
+		baseMaterial->addDefine("DIRECTIONAL_LIGHT_COUNT 1");		
     }
     assert(baseMaterial);
     return baseMaterial;