Pārlūkot izejas kodu

Bug fixes and some work on the samples

Panagiotis Christopoulos Charitos 8 gadi atpakaļ
vecāks
revīzija
ee65c5e39a
34 mainītis faili ar 486 papildinājumiem un 2760 dzēšanām
  1. 7 3
      samples/simple_scene/assets/ms_diffc_specc_roughc_metalc_normal0_emisc_subsc_par0.ankiprog
  2. 6 2
      samples/simple_scene/assets/room-material.ankimtl
  3. 18 116
      samples/sponza/assets/Material__57_001-material.ankimtl
  4. 18 116
      samples/sponza/assets/arch-material.ankimtl
  5. 18 116
      samples/sponza/assets/bricks-material.ankimtl
  6. 18 116
      samples/sponza/assets/ceiling-material.ankimtl
  7. 18 96
      samples/sponza/assets/chain-material.ankimtl
  8. 18 116
      samples/sponza/assets/column_a-material.ankimtl
  9. 18 116
      samples/sponza/assets/column_b-material.ankimtl
  10. 18 116
      samples/sponza/assets/column_c-material.ankimtl
  11. 18 116
      samples/sponza/assets/details-material.ankimtl
  12. 18 116
      samples/sponza/assets/fabric_a-material.ankimtl
  13. 18 116
      samples/sponza/assets/fabric_c-material.ankimtl
  14. 18 116
      samples/sponza/assets/fabric_d-material.ankimtl
  15. 18 116
      samples/sponza/assets/fabric_e-material.ankimtl
  16. 18 116
      samples/sponza/assets/fabric_f-material.ankimtl
  17. 18 116
      samples/sponza/assets/flagpole-material.ankimtl
  18. 18 116
      samples/sponza/assets/floor-material.ankimtl
  19. 18 116
      samples/sponza/assets/leaf-material.ankimtl
  20. 18 105
      samples/sponza/assets/lion-material.ankimtl
  21. 18 116
      samples/sponza/assets/lion_stand-material.ankimtl
  22. 18 116
      samples/sponza/assets/roof-material.ankimtl
  23. 18 116
      samples/sponza/assets/vase-material.ankimtl
  24. 18 116
      samples/sponza/assets/vase_hanging-material.ankimtl
  25. 18 116
      samples/sponza/assets/vase_round_001-material.ankimtl
  26. 18 96
      samples/sponza/assets/writings-material.ankimtl
  27. 2 2
      shaders/MsCommonFrag.glsl
  28. 1 1
      shaders/MsCommonVert.glsl
  29. 2 0
      src/anki/renderer/Drawer.cpp
  30. 5 5
      src/anki/resource/Material.cpp
  31. 8 8
      src/anki/resource/ShaderProgramResource.cpp
  32. 1 1
      src/anki/resource/ShaderProgramResource.h
  33. 15 2
      tools/scene/ExporterMaterial.cpp
  34. 7 3
      tools/shader/generate_program_permutations.py

+ 7 - 3
samples/simple_scene/assets/ms_diffc_specc_roughc_metalc_normal0_emisc_subsc_par0.ankiprog

@@ -9,13 +9,15 @@
 				<input><type>mat3</type><name>normalMat</name><depth>0</depth></input>
 
 			</inputs>
-			<source><![CDATA[
+			<source><![CDATA[#include "shaders/MsCommonVert.glsl"
+void main() {
 #if COLOR
 positionUvNormalTangent(mvp, normalMat);
 #else
 ANKI_WRITE_POSITION(mvp * vec4(in_position, 1.0));
 #endif
 
+}
 			]]></source>
 		</shader>
 		<shader>
@@ -29,13 +31,15 @@ ANKI_WRITE_POSITION(mvp * vec4(in_position, 1.0));
 				<input><type>float</type><name>subsurface</name><const>1</const><depth>0</depth></input>
 
 			</inputs>
-			<source><![CDATA[
+			<source><![CDATA[#include "shaders/MsCommonFrag.glsl"
+void main() {
 #if COLOR
 vec2 uv = in_uv;
 vec3 normal = in_normal;
-writeRts(diffCol, normal, specCol, roughness, subsurface, emission, metallic);
+writeRts(diffColor, normal, specColor, roughness, subsurface, emission, metallic);
 #endif
 
+}
 			]]></source>
 		</shader>
 	</shaders>

+ 6 - 2
samples/simple_scene/assets/room-material.ankimtl

@@ -4,8 +4,12 @@
 	<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>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffColor</shaderInput><value>0.799988 0.635542 0.640324</value></input>
+		<input><shaderInput>specColor</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>
 		

+ 18 - 116
samples/sponza/assets/Material__57_001-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.039993 0.039993 0.039993</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/VasePlant_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/VasePlant_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/VasePlant_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.250000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/VasePlant_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.039993 0.039993 0.039993</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/VasePlant_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/VasePlant_normal.ankitex</value></input>
+		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
+		<input><shaderInput>subsurface</shaderInput><value>0.250000</value></input>
+		
+	</inputs>
+</material>

+ 18 - 116
samples/sponza/assets/arch-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Arch_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Arch_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Arch_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Arch_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Arch_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Arch_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/bricks-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Bricks_a_Roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Bricks_a_Albedo.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Bricks_a_Normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Bricks_a_Albedo.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Bricks_a_Roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Bricks_a_Normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/ceiling-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Ceiling_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Ceiling_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Ceiling_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Ceiling_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Ceiling_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Ceiling_normal.ankitex</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>

+ 18 - 96
samples/sponza/assets/chain-material.ankimtl

@@ -1,98 +1,20 @@
 <?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.039993 0.039993 0.039993</value></input>
-				<input><type>float</type><name>roughness</name><const>1</const><value>0.097847</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/ChainTexture_Albedo.ankitex</value></input>
-				 
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				 
-				
-				
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out0</argument>
-						<argument>uSpecularColor</argument>
-						<argument>roughness</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_roughc_metalc_normal0_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/ChainTexture_Albedo.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.039993 0.039993 0.039993</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>

+ 18 - 116
samples/sponza/assets/column_a-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Column_a_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Column_a_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Column_a_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_a_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_a_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_a_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/column_b-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Column_b_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Column_b_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Column_b_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_b_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_b_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_b_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/column_c-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.037417 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Column_c_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Column_c_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Column_c_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_c_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.037417 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_c_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_c_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/details-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Details_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Details_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Details_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Details_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Details_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Details_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/fabric_a-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Fabric_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Fabric_Red_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Fabric_Red_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.100000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Fabric_Red_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Fabric_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Fabric_Red_normal.ankitex</value></input>
+		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
+		<input><shaderInput>subsurface</shaderInput><value>0.100000</value></input>
+		
+	</inputs>
+</material>

+ 18 - 116
samples/sponza/assets/fabric_c-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.000000 0.000000 0.000000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Curtain_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Curtain_Green_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Curtain_Red_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.250000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Curtain_Green_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.000000 0.000000 0.000000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Curtain_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Curtain_Red_normal.ankitex</value></input>
+		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
+		<input><shaderInput>subsurface</shaderInput><value>0.250000</value></input>
+		
+	</inputs>
+</material>

+ 18 - 116
samples/sponza/assets/fabric_d-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Fabric_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Fabric_Green_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Fabric_Red_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.100000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Fabric_Green_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Fabric_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Fabric_Red_normal.ankitex</value></input>
+		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
+		<input><shaderInput>subsurface</shaderInput><value>0.100000</value></input>
+		
+	</inputs>
+</material>

+ 18 - 116
samples/sponza/assets/fabric_e-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.006237 0.005484 0.005563</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Fabric_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Fabric_Blue_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Fabric_Red_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.100000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Fabric_Blue_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.006237 0.005484 0.005563</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Fabric_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Fabric_Red_normal.ankitex</value></input>
+		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
+		<input><shaderInput>subsurface</shaderInput><value>0.100000</value></input>
+		
+	</inputs>
+</material>

+ 18 - 116
samples/sponza/assets/fabric_f-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.039993 0.039993 0.039993</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Curtain_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Curtain_Red_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Curtain_Red_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.250000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Curtain_Red_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.039993 0.039993 0.039993</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Curtain_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Curtain_Red_normal.ankitex</value></input>
+		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
+		<input><shaderInput>subsurface</shaderInput><value>0.250000</value></input>
+		
+	</inputs>
+</material>

+ 18 - 116
samples/sponza/assets/flagpole-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_FlagPole_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_FlagPole_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_FlagPole_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_FlagPole_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_FlagPole_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_FlagPole_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/floor-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Column_b_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Floor_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Floor_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Floor_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Column_b_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Floor_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/leaf-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.037779 0.039480 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Thorn_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Thorn_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Thorn_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.100000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Thorn_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.037779 0.039480 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Thorn_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Thorn_normal.ankitex</value></input>
+		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
+		<input><shaderInput>subsurface</shaderInput><value>0.100000</value></input>
+		
+	</inputs>
+</material>

+ 18 - 105
samples/sponza/assets/lion-material.ankimtl

@@ -1,107 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Lion_Roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Lion_Albedo.ankitex</value></input>
-				 
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				 
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out0</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normal0_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Lion_Albedo.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Lion_Roughness.ankitex</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>

+ 18 - 116
samples/sponza/assets/lion_stand-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.039993 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Background_Roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Background_Albedo.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Background_Normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Background_Albedo.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.039993 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Background_Roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Background_Normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/roof-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.094086 0.094086 0.094086</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Sponza_Roof_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Roof_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Sponza_Roof_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Roof_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.094086 0.094086 0.094086</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Roof_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Roof_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/vase-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/Vase_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Vase_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/Vase_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Vase_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Vase_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Vase_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/vase_hanging-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.039993 0.039993 0.039993</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/VaseHanging_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/VaseHanging_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/VaseHanging_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/VaseHanging_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.039993 0.039993 0.039993</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/VaseHanging_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/VaseHanging_normal.ankitex</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>

+ 18 - 116
samples/sponza/assets/vase_round_001-material.ankimtl

@@ -1,118 +1,20 @@
 <?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.039993 0.039993 0.039993</value></input>
-				<input><type>sampler2D</type><name>roughness</name><value>assets/VaseRound_roughness.ankitex</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/VaseRound_diffuse.ankitex</value></input>
-				<input><type>sampler2D</type><name>uNormal</name><value>assets/VaseRound_normal.ankitex</value></input>
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				<operation>
-					<id>20</id>
-					<returnType>vec3</returnType>
-					<function>readNormalFromTexture</function>
-					<arguments>
-						<argument>out0</argument>
-						<argument>out1</argument>
-						<argument>uNormal</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>60</id>
-					<returnType>float</returnType>
-					<function>readRFromTexture</function>
-					<arguments>
-						<argument>roughness</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out20</argument>
-						<argument>uSpecularColor</argument>
-						<argument>out60</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/VaseRound_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.039993 0.039993 0.039993</value></input>
+		<input><shaderInput>roughnessTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/VaseRound_roughness.ankitex</value></input>
+		<input><shaderInput>metallic</shaderInput><value>0.000000</value></input>
+		<input><shaderInput>normalTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/VaseRound_normal.ankitex</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>

+ 18 - 96
samples/sponza/assets/writings-material.ankimtl

@@ -1,98 +1,20 @@
 <?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.040000 0.040000 0.040000</value></input>
-				<input><type>float</type><name>roughness</name><const>1</const><value>0.097847</value></input>
-				<input><type>sampler2D</type><name>uDiffuseColor</name><value>assets/Sponza_Ceiling_diffuse.ankitex</value></input>
-				 
-				<input><type>float</type><name>subsurface</name><const>1</const><value>0.000000</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>10</id>
-					<returnType>vec3</returnType>
-					<function>readRgbFromTexture</function>
-					<arguments>
-						<argument>uDiffuseColor</argument>
-						<argument>out2</argument>
-					</arguments>
-				</operation>
-				 
-				
-				
-				
-				
-				<operation>
-					<id>100</id>
-					<returnType>void</returnType>
-					<function>writeRts</function>
-					<arguments>
-						<argument>out10</argument>
-						<argument>out0</argument>
-						<argument>uSpecularColor</argument>
-						<argument>roughness</argument>
-						<argument>subsurface</argument>
-						<argument>emission</argument>
-						<argument>metallic</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>	</material>
+	<shaderProgram>assets/ms_difft_specc_roughc_metalc_normal0_emisc_subsc_par0.ankiprog</shaderProgram>
+	
+	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		
+	
+		<input><shaderInput>diffTex</shaderInput><value>/home/godlike/src/anki/samples/sponza/assets/Sponza_Ceiling_diffuse.ankitex</value></input>
+		<input><shaderInput>specColor</shaderInput><value>0.040000 0.040000 0.040000</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>

+ 2 - 2
shaders/MsCommonFrag.glsl

@@ -138,7 +138,7 @@ void writeRts(in vec3 diffColor, // from 0 to 1
 	in vec3 specularColor,
 	in float roughness,
 	in float subsurface,
-	in float emission,
+	in vec3 emission,
 	in float metallic)
 {
 	GbufferInfo g;
@@ -147,7 +147,7 @@ void writeRts(in vec3 diffColor, // from 0 to 1
 	g.specular = specularColor;
 	g.roughness = roughness;
 	g.subsurface = subsurface;
-	g.emission = emission;
+	g.emission = (emission.r + emission.g + emission.b) / 3.0;
 	g.metallic = metallic;
 	writeGBuffer(g, out_msRt0, out_msRt1, out_msRt2);
 }

+ 1 - 1
shaders/MsCommonVert.glsl

@@ -24,7 +24,7 @@ out gl_PerVertex
 	vec4 gl_Position;
 };
 
-layout(location = 0) out highp vec4 out_uv;
+layout(location = 0) out highp vec2 out_uv;
 layout(location = 1) out mediump vec3 out_normal;
 layout(location = 2) out mediump vec4 out_tangent;
 #if CALC_BITANGENT_IN_VERT

+ 2 - 0
src/anki/renderer/Drawer.cpp

@@ -287,6 +287,8 @@ void RenderableDrawer::setupUniforms(DrawContext& ctx, CompleteRenderingBuildInf
 			default:
 				ANKI_ASSERT(0);
 			}
+
+			break;
 		}
 		case ShaderVariableDataType::SAMPLER_2D:
 		case ShaderVariableDataType::SAMPLER_2D_ARRAY:

+ 5 - 5
src/anki/resource/Material.cpp

@@ -41,7 +41,8 @@ Material::Material(ResourceManager* manager)
 
 Material::~Material()
 {
-	// TODO
+	m_vars.destroy(getAllocator());
+	m_constValues.destroy(getAllocator());
 }
 
 Error Material::load(const ResourceFilename& filename)
@@ -160,8 +161,7 @@ Error Material::parseInputs(XmlElement inputsEl)
 			XmlElement valueEl;
 			ANKI_CHECK(inputEl.getChildElement("value", valueEl));
 
-			--constInputCount;
-			ShaderProgramResourceConstantValue& constVal = m_constValues[constInputCount];
+			ShaderProgramResourceConstantValue& constVal = m_constValues[--constInputCount];
 			constVal.m_variable = foundVar;
 
 			switch(foundVar->getShaderVariableDataType())
@@ -225,7 +225,7 @@ Error Material::parseInputs(XmlElement inputsEl)
 					return ErrorCode::USER_DATA;
 				}
 
-				MaterialVariable& mtlVar = m_vars[nonConstInputCount--];
+				MaterialVariable& mtlVar = m_vars[--nonConstInputCount];
 				mtlVar.m_input = foundVar;
 				mtlVar.m_builtin = BuiltinMaterialVariableId(i + 1);
 			}
@@ -239,7 +239,7 @@ Error Material::parseInputs(XmlElement inputsEl)
 					return ErrorCode::USER_DATA;
 				}
 
-				MaterialVariable& mtlVar = m_vars[nonConstInputCount--];
+				MaterialVariable& mtlVar = m_vars[--nonConstInputCount];
 				mtlVar.m_input = foundVar;
 
 				XmlElement valueEl;

+ 8 - 8
src/anki/resource/ShaderProgramResource.cpp

@@ -267,6 +267,8 @@ Error ShaderProgramResource::load(const ResourceFilename& filename)
 	}
 
 	// <shader> again
+	inputVarCount = 0;
+	inputsNameLen = 0;
 	ShaderTypeBit presentShaders = ShaderTypeBit::NONE;
 	ANKI_CHECK(shadersEl.getChildElement("shader", shaderEl));
 	do
@@ -298,7 +300,7 @@ Error ShaderProgramResource::load(const ResourceFilename& filename)
 
 		if(inputsEl)
 		{
-			ANKI_CHECK(parseInputs(inputsEl));
+			ANKI_CHECK(parseInputs(inputsEl, inputVarCount, inputsNameLen));
 		}
 
 		// <source>
@@ -320,6 +322,9 @@ Error ShaderProgramResource::load(const ResourceFilename& filename)
 		ANKI_CHECK(shaderEl.getNextSiblingElement("shader", shaderEl));
 	} while(shaderEl);
 
+	ANKI_ASSERT(inputsNameLen == m_inputVarsNames.getSize());
+	ANKI_ASSERT(inputVarCount == m_inputVars.getSize());
+
 	// Sanity checks
 	if(!(presentShaders & ShaderTypeBit::VERTEX))
 	{
@@ -336,11 +341,8 @@ Error ShaderProgramResource::load(const ResourceFilename& filename)
 	return ErrorCode::NONE;
 }
 
-Error ShaderProgramResource::parseInputs(XmlElement& inputsEl)
+Error ShaderProgramResource::parseInputs(XmlElement& inputsEl, U& inputVarCount, U& namePos)
 {
-	U inputVarCount = 0;
-	U namePos = 0;
-
 	XmlElement inputEl;
 	ANKI_CHECK(inputsEl.getChildElement("input", inputEl));
 	do
@@ -448,8 +450,6 @@ Error ShaderProgramResource::parseInputs(XmlElement& inputsEl)
 		ANKI_CHECK(inputEl.getNextSiblingElement("input", inputEl));
 	} while(inputEl);
 
-	ANKI_ASSERT(namePos == m_inputVarsNames.getSize());
-
 	return ErrorCode::NONE;
 }
 
@@ -708,7 +708,7 @@ void ShaderProgramResource::initVariant(const RenderingKey& key,
 		StringAuto str(getTempAllocator());
 		blockCode.join("", str);
 
-		shaderHeaderSrc.pushBack("layout(ANKI_UBO_BINDING(0, 0)) uniform u0_ {\n");
+		shaderHeaderSrc.pushBack("layout(ANKI_UBO_BINDING(0, 0), std140, row_major) uniform u0_ {\n");
 		shaderHeaderSrc.pushBack(str.toCString());
 		shaderHeaderSrc.pushBack("};\n");
 	}

+ 1 - 1
src/anki/resource/ShaderProgramResource.h

@@ -239,7 +239,7 @@ private:
 	Bool8 m_instanced = false;
 
 	/// Parse whatever is inside <inputs>
-	ANKI_USE_RESULT Error parseInputs(XmlElement& inputsEl);
+	ANKI_USE_RESULT Error parseInputs(XmlElement& inputsEl, U& inputVarCount, U& namePos);
 
 	U64 computeVariantHash(
 		const RenderingKey& key, WeakArray<const ShaderProgramResourceConstantValue> constants) const;

+ 15 - 2
tools/scene/ExporterMaterial.cpp

@@ -12,6 +12,10 @@ const char* MATERIAL_TEMPLATE = R"(<?xml version="1.0" encoding="UTF-8" ?>
 	<shaderProgram>%shaderProg%</shaderProgram>
 	
 	<inputs>
+		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
+		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		%modelViewMat%
+	
 		<input>%diff%</input>
 		<input>%spec%</input>
 		<input>%roughness%</input>
@@ -56,7 +60,8 @@ void Exporter::exportMaterial(const aiMaterial& mtl) const
 
 		xml = replaceAllString(xml,
 			"%diff%",
-			"<shaderInput>diffCol</shaderInput><value>" + std::to_string(diffCol[0]) + " " + std::to_string(diffCol[1])
+			"<shaderInput>diffColor</shaderInput><value>" + std::to_string(diffCol[0]) + " "
+				+ std::to_string(diffCol[1])
 				+ " "
 				+ std::to_string(diffCol[2])
 				+ "</value>");
@@ -86,7 +91,8 @@ void Exporter::exportMaterial(const aiMaterial& mtl) const
 
 		xml = replaceAllString(xml,
 			"%spec%",
-			"<shaderInput>specCol</shaderInput><value>" + std::to_string(specCol[0]) + " " + std::to_string(specCol[1])
+			"<shaderInput>specColor</shaderInput><value>" + std::to_string(specCol[0]) + " "
+				+ std::to_string(specCol[1])
 				+ " "
 				+ std::to_string(specCol[2])
 				+ "</value>");
@@ -240,6 +246,10 @@ void Exporter::exportMaterial(const aiMaterial& mtl) const
 					+ "</value></input>\n"
 					  "\t\t<input><shaderInput>heightMapScale</input><value>0.05</value></input>");
 
+			xml = replaceAllString(xml,
+				"%modelViewMat%",
+				"<input><shaderInput>modelViewMat</shaderInput><builtin>MODEL_VIEW_MATRIX</builtin></input>");
+
 			prog_fname += "par1";
 		}
 		else
@@ -250,6 +260,9 @@ void Exporter::exportMaterial(const aiMaterial& mtl) const
 	else
 	{
 		xml = replaceAllString(xml, "%height%", "");
+
+		xml = replaceAllString(xml, "%modelViewMat%", "");
+
 		prog_fname += "par0";
 	}
 

+ 7 - 3
tools/shader/generate_program_permutations.py

@@ -18,8 +18,10 @@ template_xml = """<?xml version="1.0" encoding="UTF-8" ?>
 			<inputs>
 %vertInputs%
 			</inputs>
-			<source><![CDATA[
+			<source><![CDATA[#include "shaders/MsCommonVert.glsl"
+void main() {
 %vertSrc%
+}
 			]]></source>
 		</shader>
 		<shader>
@@ -27,8 +29,10 @@ template_xml = """<?xml version="1.0" encoding="UTF-8" ?>
 			<inputs>
 %fragInputs%
 			</inputs>
-			<source><![CDATA[
+			<source><![CDATA[#include "shaders/MsCommonFrag.glsl"
+void main() {
 %fragSrc%
+}
 			]]></source>
 		</shader>
 	</shaders>
@@ -233,7 +237,7 @@ ANKI_WRITE_POSITION(mvp * vec4(in_position, 1.0));
 	else:
 		assert 0
 
-	frag_src += "writeRts(diffCol, normal, specCol, roughness, subsurface, emission, metallic);\n"
+	frag_src += "writeRts(diffColor, normal, specColor, roughness, subsurface, emission, metallic);\n"
 	frag_src += "#endif\n"
 
 	xml = template_xml