Browse Source

Modify the simple_scene. It's time for testing

Panagiotis Christopoulos Charitos 8 years ago
parent
commit
092f25917d

+ 42 - 0
samples/simple_scene/assets/ms_diffc_specc_roughc_metalc_normal0_emisc_subsc_par0.ankiprog

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!-- This file is auto generated by generate_program_permutations.py -->
+<shaderProgram>
+	<shaders>
+		<shader>
+			<type>vert</type>
+			<inputs>
+				<input><type>mat4</type><name>mvp</name></input>
+				<input><type>mat3</type><name>normalMat</name><depth>0</depth></input>
+
+			</inputs>
+			<source><![CDATA[
+#if COLOR
+positionUvNormalTangent(mvp, normalMat);
+#else
+ANKI_WRITE_POSITION(mvp * vec4(in_position, 1.0));
+#endif
+
+			]]></source>
+		</shader>
+		<shader>
+			<type>frag</type>
+			<inputs>
+				<input><type>vec3</type><name>diffColor</name><const>1</const><depth>0</depth></input>
+				<input><type>vec3</type><name>specColor</name><const>1</const><depth>0</depth></input>
+				<input><type>float</type><name>roughness</name><const>1</const><depth>0</depth></input>
+				<input><type>float</type><name>metallic</name><const>1</const><depth>0</depth></input>
+				<input><type>vec3</type><name>emission</name><const>1</const><depth>0</depth></input>
+				<input><type>float</type><name>subsurface</name><const>1</const><depth>0</depth></input>
+
+			</inputs>
+			<source><![CDATA[
+#if COLOR
+vec2 uv = in_uv;
+vec3 normal = in_normal;
+writeRts(diffCol, normal, specCol, roughness, subsurface, emission, metallic);
+#endif
+
+			]]></source>
+		</shader>
+	</shaders>
+</shaderProgram>

+ 14 - 87
samples/simple_scene/assets/room-material.ankimtl

@@ -1,89 +1,16 @@
 <?xml version="1.0" encoding="UTF-8" ?>
+<!-- This file is auto generated by ExporterMaterial.cpp -->
 <material>
-	<programs>
-		<program>
-			<type>vert</type>
-			<includes>
-				<include>shaders/MsCommonVert.glsl</include>
-			</includes>
-
-			<inputs>
-				<input><type>mat4</type><name>anki_mvp</name></input>
-				<input><type>mat3</type><name>anki_n</name><inShadow>0</inShadow></input>
-				 
-			</inputs>
-
-			<operations>
-				<operation>
-					<id>0</id>
-					<returnType>void</returnType>
-					<function>writePositionAndUv</function>
-					<arguments><argument>anki_mvp</argument></arguments>
-				</operation>
-				<operation>
-					<id>1</id>
-					<returnType>void</returnType>
-					<function>writeNormalAndTangent</function>
-					<arguments><argument>anki_n</argument></arguments>
-				</operation>
-				 
-			</operations>
-		</program>
-		<program>
-			<type>frag</type>
-
-			<includes>
-				<include>shaders/MsCommonFrag.glsl</include>
-			</includes>
-
-			<inputs>
-				<input><type>vec3</type><name>uSpecularColor</name><value>0.500000 0.500000 0.500000</value></input>
-				<input><type>float</type><name>uSpecularPower</name><value>0.097847</value></input>
-				<input><type>vec3</type><name>uDiffuseColor</name><value>0.799988 0.635542 0.640324</value></input>
-				 
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.0</value></input>
-				<input><type>float</type><name>emission</name><value>0.000000</value><const>1</const></input>
-				<input><type>float</type><name>metallic</name><value>0.000000</value><const>1</const></input>
-				 
-			</inputs>
-
-			<operations>
-				<operation>
-					<id>0</id>
-					<returnType>vec3</returnType>
-					<function>getNormal</function>
-				</operation>
-				<operation>
-					<id>1</id>
-					<returnType>vec4</returnType>
-					<function>getTangent</function>
-				</operation>
-				<operation>
-					<id>2</id>
-					<returnType>vec2</returnType>
-					<function>getTextureCoord</function>
-				</operation>
-				 
-				
-				 
-				
-				
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out0</argument>
-						<argument>uSpecularColor</argument>
-						<argument>uSpecularPower</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_diffc_specc_roughc_metalc_normal0_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>diffCol</shaderInput><value>0.799988 0.635542 0.640324</value></input>
+		<input><shaderInput>specCol</shaderInput><value>0.500000 0.500000 0.500000</value></input>
+		<input><shaderInput>roughness</shaderInput><value>0.097847</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		
+		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
+		<input><shaderInput>subsurface</shaderInput><value>0.000000</value></input>
+		
+	</inputs>
+</material>

+ 1 - 0
tools/scene/Exporter.h

@@ -111,6 +111,7 @@ public:
 	std::string m_outputDirectory;
 	std::string m_rpath;
 	std::string m_texrpath;
+	std::string m_progrpath = "programs";
 
 	bool m_flipyz = false;
 

+ 1 - 1
tools/scene/ExporterMaterial.cpp

@@ -253,7 +253,7 @@ void Exporter::exportMaterial(const aiMaterial& mtl) const
 		prog_fname += "par0";
 	}
 
-	xml = replaceAllString(xml, "%shaderProg%", "programs/" + prog_fname + ".ankiprog");
+	xml = replaceAllString(xml, "%shaderProg%", m_progrpath + prog_fname + ".ankiprog");
 
 	// Replace texture extensions with .anki
 	xml = replaceAllString(xml, ".tga", ".ankitex");

+ 17 - 3
tools/scene/Main.cpp

@@ -9,9 +9,10 @@ static void parseCommandLineArgs(int argc, char** argv, Exporter& exporter)
 {
 	static const char* usage = R"(Usage: %s in_file out_dir [options]
 Options:
--rpath <string>    : Append a string to the meshes and materials
--texrpath <string> : Append a string to the textures paths
--flipyz            : Flip y with z (For blender exports)
+-rpath <string>     : Replace all absolute paths of assets with that path
+-texrpath <string>  : Same as rpath but for textures
+-progrpath <string> : Same as rpath but for shader programs
+-flipyz             : Flip y with z (For blender exports)
 )";
 
 	// Parse config
@@ -51,6 +52,19 @@ Options:
 				goto error;
 			}
 		}
+		else if(strcmp(argv[i], "-progrpath") == 0)
+		{
+			++i;
+
+			if(i < argc)
+			{
+				exporter.m_progrpath = argv[i] + std::string("/");
+			}
+			else
+			{
+				goto error;
+			}
+		}
 		else if(strcmp(argv[i], "-flipyz") == 0)
 		{
 			exporter.m_flipyz = true;

+ 1 - 1
tools/shader/generate_program_permutations.py

@@ -196,7 +196,7 @@ ANKI_WRITE_POSITION(mvp * vec4(in_position, 1.0));
 		frag_src += "vec3 normal = readNormalFromTexture(normalTex, uv);\n"
 
 		fname += "normalt_"
-	elif wheel[NORMAL] == INPUT_CONST:
+	elif wheel[NORMAL] == INPUT_NONE:
 		frag_src += "vec3 normal = in_normal;\n"
 
 		fname += "normal0_"