소스 검색

Nothing important

Panagiotis Christopoulos Charitos 13 년 전
부모
커밋
7840f5605d
1개의 변경된 파일28개의 추가작업 그리고 2개의 파일을 삭제
  1. 28 2
      src/resource/MaterialShaderProgramCreator.cpp

+ 28 - 2
src/resource/MaterialShaderProgramCreator.cpp

@@ -32,8 +32,30 @@ void MaterialShaderProgramCreator::parseShaderProgramTag(
 		shaderEl = shaderEl.getNextSiblingElement("shader");
 	} while(shaderEl);
 
-	source = srcLines.join("\n");
-	//std::cout << source << std::endl;
+	// Create block
+	StringList block;
+	block.push_back("layout(std140, row_major, binding = 0) "
+		"uniform commonBlock\n{");
+	for(Input* in : inputs)
+	{
+		if(in->type == "sampler2D"
+			|| in->const_)
+		{
+			continue;
+		}
+
+		block.push_back("\tuniform " + in->type + " " + in->name + "_;");
+	}
+	block.push_back("};\n");
+
+	if(block.size() > 2)
+	{
+		source = block.join("\n") + srcLines.join("\n");
+	}
+	else
+	{
+		source = srcLines.join("\n");
+	}
 }
 
 //==============================================================================
@@ -119,6 +141,10 @@ void MaterialShaderProgramCreator::parseInputTag(
 	{
 		inpvar->const_ = constEl.getInt();
 	}
+	else
+	{
+		inpvar->const_ = false;
+	}
 
 	if(valueEl.getText())
 	{