Browse Source

Bug fixes

Panagiotis Christopoulos Charitos 8 years ago
parent
commit
74c7e45795
43 changed files with 588 additions and 534 deletions
  1. 67 0
      programs/FsParticles.ankiprog
  2. 20 11
      samples/sponza/assets/Material__57_001-material.ankimtl
  3. 20 11
      samples/sponza/assets/arch-material.ankimtl
  4. 20 11
      samples/sponza/assets/bricks-material.ankimtl
  5. 20 11
      samples/sponza/assets/ceiling-material.ankimtl
  6. 19 10
      samples/sponza/assets/chain-material.ankimtl
  7. 20 11
      samples/sponza/assets/column_a-material.ankimtl
  8. 20 11
      samples/sponza/assets/column_b-material.ankimtl
  9. 20 11
      samples/sponza/assets/column_c-material.ankimtl
  10. 20 11
      samples/sponza/assets/details-material.ankimtl
  11. 20 11
      samples/sponza/assets/fabric_a-material.ankimtl
  12. 20 11
      samples/sponza/assets/fabric_c-material.ankimtl
  13. 20 11
      samples/sponza/assets/fabric_d-material.ankimtl
  14. 20 11
      samples/sponza/assets/fabric_e-material.ankimtl
  15. 20 11
      samples/sponza/assets/fabric_f-material.ankimtl
  16. 15 66
      samples/sponza/assets/fire.ankimtl
  17. 20 11
      samples/sponza/assets/flagpole-material.ankimtl
  18. 20 11
      samples/sponza/assets/floor-material.ankimtl
  19. 20 11
      samples/sponza/assets/leaf-material.ankimtl
  20. 19 10
      samples/sponza/assets/lion-material.ankimtl
  21. 20 11
      samples/sponza/assets/lion_stand-material.ankimtl
  22. 20 11
      samples/sponza/assets/roof-material.ankimtl
  23. 2 2
      samples/sponza/assets/scene.lua
  24. 15 63
      samples/sponza/assets/smoke.ankimtl
  25. BIN
      samples/sponza/assets/sponza_05.ankimesh
  26. BIN
      samples/sponza/assets/sponza_06.ankimesh
  27. BIN
      samples/sponza/assets/sponza_34.ankimesh
  28. BIN
      samples/sponza/assets/sponza_36.ankimesh
  29. BIN
      samples/sponza/assets/sponza_379.ankimesh
  30. BIN
      samples/sponza/assets/sponza_381.ankimesh
  31. BIN
      samples/sponza/assets/sponza_68.ankimesh
  32. BIN
      samples/sponza/assets/sponza_69.ankimesh
  33. 20 11
      samples/sponza/assets/vase-material.ankimtl
  34. 20 11
      samples/sponza/assets/vase_hanging-material.ankimtl
  35. 20 11
      samples/sponza/assets/vase_round_001-material.ankimtl
  36. 19 10
      samples/sponza/assets/writings-material.ankimtl
  37. 6 103
      shaders/FsCommonFrag.glsl
  38. 0 25
      shaders/FsCommonVert.glsl
  39. 0 8
      shaders/MsFsCommon.glsl
  40. 1 1
      src/anki/input/InputSdl.cpp
  41. 3 3
      src/anki/resource/Material.cpp
  42. 1 1
      src/anki/resource/ShaderProgramResource.cpp
  43. 1 1
      tools/scene/ExporterMaterial.cpp

+ 67 - 0
programs/FsParticles.ankiprog

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<shaderProgram>
+	<mutators>
+		<mutator name="ANIMATED_TEXTURE" values="0 1"/>
+		<mutator name="LIGHT" values="0 1"/>
+	</mutators>
+
+	<shaders>
+		<shader type="vert">
+			<inputs>
+				<input name="mvp" type="mat4"/>
+				<input name="cameraRotMat" type="mat3"/>
+				<input name="viewMat" type="mat4"/>
+			</inputs>
+
+			<source><![CDATA[#include "shaders/FsCommonVert.glsl"
+void main() 
+{
+	particle(mvp, cameraRotMat, viewMat);
+}
+			]]>
+			</source>
+		</shader>
+
+		<shader type="frag">
+			<inputs>
+				<input name="diffuseMap" type="sampler2D">
+					<mutators>
+						<mutator name="ANIMATED_TEXTURE" values="0"/>
+					</mutators>
+				</input>
+				<input name="diffuseMapArr" type="sampler2DArray">
+					<mutators>
+						<mutator name="ANIMATED_TEXTURE" values="1"/>
+					</mutators>
+				</input>
+				<input name="animationPeriod" type="float" const="1">
+					<mutators>
+						<mutator name="ANIMATED_TEXTURE" values="1"/>
+					</mutators>
+				</input>
+				<input name="colorScale" type="vec4" const="1"/>
+				<input name="colorBias" type="vec4" const="1"/>
+			</inputs>
+
+			<source><![CDATA[#include "shaders/FsCommonFrag.glsl"
+void main() 
+{
+#if ANIMATED_TEXTURE == 1
+	vec4 texCol = readAnimatedTextureRgba(diffuseMapArr, animationPeriod, in_uv, anki_u_time);
+#else
+	vec4 texCol = texture(diffuseMap, in_uv);
+#endif
+
+#if LIGHT
+	texCol.rgb = computeLightColor(texCol.rgb);
+#endif
+	
+	colorScale.a *= in_alpha;
+	particleAlpha(texCol, colorScale, colorBias);
+}
+			]]>
+			</source>
+		</shader>
+	</shaders>
+</shaderProgram>
+

+ 20 - 11
samples/sponza/assets/Material__57_001-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/VasePlant_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.039993 0.039993 0.039993"/>
+		<input shaderInput="roughnessTex" value="assets/VasePlant_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/VasePlant_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.250000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/arch-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Arch_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Arch_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Arch_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/bricks-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Bricks_a_Albedo.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Bricks_a_Roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Bricks_a_Normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/ceiling-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Ceiling_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Ceiling_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Ceiling_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 19 - 10
samples/sponza/assets/chain-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_roughc_metalc_normal0_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="0"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="0"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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="diffTex" value="assets/ChainTexture_Albedo.ankitex"/>
+		<input shaderInput="specColor" value="0.039993 0.039993 0.039993"/>
+		<input shaderInput="roughness" value="0.097847" />
+		<input shaderInput="metallic" value="0.000000"/>
 		
-		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
-		<input><shaderInput>subsurface</shaderInput><value>0.000000</value></input>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/column_a-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Column_a_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Column_a_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Column_a_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/column_b-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Column_b_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Column_b_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Column_b_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/column_c-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Column_c_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.037417 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Column_c_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Column_c_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/details-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Details_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Details_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Details_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/fabric_a-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Fabric_Red_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Fabric_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Fabric_Red_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.100000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/fabric_c-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Curtain_Green_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Curtain_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Curtain_Red_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.250000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/fabric_d-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Fabric_Green_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Fabric_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Fabric_Red_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.100000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/fabric_e-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Fabric_Blue_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.006237 0.005484 0.005563"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Fabric_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Fabric_Red_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.100000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/fabric_f-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Curtain_Red_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.039993 0.039993 0.039993"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Curtain_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Curtain_Red_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.250000"/>
 		
 	</inputs>
 </material>

+ 15 - 66
samples/sponza/assets/fire.ankimtl

@@ -1,69 +1,18 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
-<material>
-	<forwardShading>1</forwardShading>
-	<shadow>0</shadow>
-
-	<programs>
-		<program>
-			<type>vert</type>
-			<includes>
-				<include>shaders/FsCommonVert.glsl</include>
-			</includes>
-
-			<inputs>
-				<input><type>mat4</type><name>anki_mvp</name></input>
-				<input><type>mat3</type><name>anki_cameraRotation</name></input>
-				<input><type>mat4</type><name>anki_viewMatrix</name></input>
-			</inputs>
-
-			<operations>
-				<operation>
-					<id>0</id>
-					<returnType>void</returnType>
-					<function>particle</function>
-					<arguments>
-						<argument>anki_mvp</argument>
-						<argument>anki_cameraRotation</argument>
-						<argument>anki_viewMatrix</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-
-		<program>
-			<type>frag</type>
-
-			<includes>
-				<include>shaders/FsCommonFrag.glsl</include>
-			</includes>
-
-			<inputs>
-				<input><type>sampler2D</type><name>diffuseMap</name><value>assets/ember_mid.ankitex</value></input>
-				<input><type>vec4</type><name>mulCol</name><value>3. 3. 3. 1.</value><const>1</const></input>
-				<input><type>vec4</type><name>addCol</name><value>0 0 0 0</value><const>1</const></input>
-			</inputs>
-
-			<operations>
-				<operation>
-					<id>1</id>
-					<returnType>float</returnType>
-					<function>getAlpha</function>
-				</operation>
-				<operation>
-					<id>0</id>
-					<returnType>void</returnType>
-					<function>particleTextureAlpha</function>
-					<arguments>
-						<argument>diffuseMap</argument>
-						<argument>mulCol</argument>
-						<argument>addCol</argument>
-						<argument>out1</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>
+<material shaderProgram="programs/FsParticles.ankiprog" forwardShading="1">
+	<mutators>
+		<mutator name="ANIMATED_TEXTURE" value="0"/>
+		<mutator name="LIGHT" value="0"/>
+	</mutators>
+
+	<inputs>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="cameraRotMat" builtin="CAMERA_ROTATION_MATRIX"/>
+		<input shaderInput="viewMat" builtin="VIEW_MATRIX"/>
+
+		<input shaderInput="diffuseMap" value="assets/ember_mid.ankitex"/>
+		<input shaderInput="colorScale" value="0.3 0.3 0.3 1.0"/>
+		<input shaderInput="colorBias" value="0 0 0 0"/>
+	</inputs>
 </material>
 
-

+ 20 - 11
samples/sponza/assets/flagpole-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_FlagPole_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_FlagPole_roughness.ankitex"/>
+		<input shaderInput="metallic" value="1.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_FlagPole_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/floor-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Floor_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Column_b_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Floor_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/leaf-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Thorn_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.037779 0.039480 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Thorn_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Thorn_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.100000"/>
 		
 	</inputs>
 </material>

+ 19 - 10
samples/sponza/assets/lion-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normal0_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="0"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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="diffTex" value="assets/Lion_Albedo.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Lion_Roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
 		
-		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
-		<input><shaderInput>subsurface</shaderInput><value>0.000000</value></input>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/lion_stand-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Background_Albedo.ankitex"/>
+		<input shaderInput="specColor" value="0.039993 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Background_Roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Background_Normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/roof-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Sponza_Roof_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.094086 0.094086 0.094086"/>
+		<input shaderInput="roughnessTex" value="assets/Sponza_Roof_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Sponza_Roof_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 2 - 2
samples/sponza/assets/scene.lua

@@ -2689,8 +2689,8 @@ node:getSceneNodeBase():getMoveComponent():setLocalTransform(trf)
 
 node = scene:newSpotLight("Lamp")
 lcomp = node:getSceneNodeBase():getLightComponent()
-lcomp:setDiffuseColor(Vec4.new(0.475606, 0.689217, 1.00085, 1))
-lcomp:setSpecularColor(Vec4.new(0.475606, 0.689217, 1.00085, 1))
+lcomp:setDiffuseColor(Vec4.new(0.951211, 1.37843, 2.00171, 1))
+lcomp:setSpecularColor(Vec4.new(0.951211, 1.37843, 2.00171, 1))
 lcomp:setInnerAngle(0.737402)
 lcomp:setOuterAngle(1.4748)
 lcomp:setDistance(79.5799)

+ 15 - 63
samples/sponza/assets/smoke.ankimtl

@@ -1,66 +1,18 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
-<material>
-	<forwardShading>1</forwardShading>
-	<shadow>0</shadow>
-	<levelsOfDetail>2</levelsOfDetail>
-
-	<programs>
-		<program>
-			<type>vert</type>
-			<includes>
-				<include>shaders/FsCommonVert.glsl</include>
-			</includes>
-
-			<inputs>
-				<input><type>mat4</type><name>anki_mvp</name></input>
-				<input><type>mat3</type><name>anki_cameraRotation</name></input>
-				<input><type>mat4</type><name>anki_viewMatrix</name></input>
-			</inputs>
-
-			<operations>
-				<operation>
-					<id>0</id>
-					<returnType>void</returnType>
-					<function>particle</function>
-					<arguments>
-						<argument>anki_mvp</argument>
-						<argument>anki_cameraRotation</argument>
-						<argument>anki_viewMatrix</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-
-		<program>
-			<type>frag</type>
-
-			<includes>
-				<include>shaders/FsCommonFrag.glsl</include>
-			</includes>
-
-			<inputs>
-				<input><type>sampler2D</type><name>diffuseMap</name><value>assets/smoke.ankitex</value></input>
-			</inputs>
-
-			<operations>
-				<operation>
-					<id>1</id>
-					<returnType>float</returnType>
-					<function>getAlpha</function>
-				</operation>
-				<operation>
-					<id>0</id>
-					<returnType>void</returnType>
-					<function>particleTextureAlphaLight</function>
-					<arguments>
-						<argument>diffuseMap</argument>
-						<argument>out1</argument>
-					</arguments>
-				</operation>
-			</operations>
-		</program>
-	</programs>
+<material shaderProgram="programs/FsParticles.ankiprog" forwardShading="1">
+	<mutators>
+		<mutator name="ANIMATED_TEXTURE" value="0"/>
+		<mutator name="LIGHT" value="1"/>
+	</mutators>
+
+	<inputs>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="cameraRotMat" builtin="CAMERA_ROTATION_MATRIX"/>
+		<input shaderInput="viewMat" builtin="VIEW_MATRIX"/>
+
+		<input shaderInput="diffuseMap" value="assets/smoke.ankitex"/>
+		<input shaderInput="colorScale" value="1.0 1.0 1.0 1.0"/>
+		<input shaderInput="colorBias" value="0 0 0 0"/>
+	</inputs>
 </material>
 
-

BIN
samples/sponza/assets/sponza_05.ankimesh


BIN
samples/sponza/assets/sponza_06.ankimesh


BIN
samples/sponza/assets/sponza_34.ankimesh


BIN
samples/sponza/assets/sponza_36.ankimesh


BIN
samples/sponza/assets/sponza_379.ankimesh


BIN
samples/sponza/assets/sponza_381.ankimesh


BIN
samples/sponza/assets/sponza_68.ankimesh


BIN
samples/sponza/assets/sponza_69.ankimesh


+ 20 - 11
samples/sponza/assets/vase-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/Vase_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughnessTex" value="assets/Vase_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/Vase_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/vase_hanging-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/VaseHanging_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.039993 0.039993 0.039993"/>
+		<input shaderInput="roughnessTex" value="assets/VaseHanging_roughness.ankitex"/>
+		<input shaderInput="metallic" value="1.000000"/>
+		<input shaderInput="normalTex" value="assets/VaseHanging_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 20 - 11
samples/sponza/assets/vase_round_001-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_rought_metalc_normalt_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="1"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="1"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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>
+		<input shaderInput="diffTex" value="assets/VaseRound_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.039993 0.039993 0.039993"/>
+		<input shaderInput="roughnessTex" value="assets/VaseRound_roughness.ankitex"/>
+		<input shaderInput="metallic" value="0.000000"/>
+		<input shaderInput="normalTex" value="assets/VaseRound_normal.ankitex"/>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 19 - 10
samples/sponza/assets/writings-material.ankimtl

@@ -1,20 +1,29 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!-- This file is auto generated by ExporterMaterial.cpp -->
-<material>
-	<shaderProgram>assets/ms_difft_specc_roughc_metalc_normal0_emisc_subsc_par0.ankiprog</shaderProgram>
+<material shaderProgram="programs/MsGeneric.ankiprog">
+	
+	<mutators>
+		<mutator name="DIFFUSE_TEX" value="1"/>
+		<mutator name="SPECULAR_TEX" value="0"/>
+		<mutator name="ROUGHNESS_TEX" value="0"/>
+		<mutator name="METAL_TEX" value="0"/>
+		<mutator name="NORMAL_TEX" value="0"/>
+		<mutator name="PARALLAX" value="0"/>
+		<mutator name="EMISSIVE_TEX" value="0"/>
+	</mutators>
 	
 	<inputs>
-		<input><shaderInput>mvp</shaderInput><builtin>MODEL_VIEW_PROJECTION_MATRIX</builtin></input>
-		<input><shaderInput>normalMat</shaderInput><builtin>NORMAL_MATRIX</builtin></input>
+		<input shaderInput="mvp" builtin="MODEL_VIEW_PROJECTION_MATRIX"/>
+		<input shaderInput="normalMat" builtin="NORMAL_MATRIX"/>
 		
 	
-		<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="diffTex" value="assets/Sponza_Ceiling_diffuse.ankitex"/>
+		<input shaderInput="specColor" value="0.040000 0.040000 0.040000"/>
+		<input shaderInput="roughness" value="0.097847" />
+		<input shaderInput="metallic" value="0.000000"/>
 		
-		<input><shaderInput>emission</shaderInput><value>0.000000 0.000000 0.000000</value></input>
-		<input><shaderInput>subsurface</shaderInput><value>0.000000</value></input>
+		<input shaderInput="emission" value="0.000000 0.000000 0.000000"/>
+		<input shaderInput="subsurface" value="0.000000"/>
 		
 	</inputs>
 </material>

+ 6 - 103
shaders/FsCommonFrag.glsl

@@ -29,90 +29,18 @@ layout(location = 2) in vec3 in_posViewSpace;
 
 layout(location = 0) out vec4 out_color;
 
-#if PASS == COLOR
-#define texture_DEFINED
-#endif
-
-#define getAlpha_DEFINED
-float getAlpha()
-{
-	return in_alpha;
-}
-
-#define getPointCoord_DEFINED
-#define getPointCoord() gl_PointCoord
-
-#if PASS == COLOR
-#define writeGBuffer_DEFINED
 void writeGBuffer(in vec4 color)
 {
 	out_color = vec4(color.rgb, 1.0 - color.a);
 }
-#endif
-
-#if PASS == COLOR
-#define particleAlpha_DEFINED
-void particleAlpha(in sampler2D tex, in float alpha)
-{
-	vec4 color = texture(tex, gl_PointCoord);
-	color.a *= alpha;
-	writeGBuffer(color);
-}
-#endif
-
-#if PASS == COLOR
-#define particleSoftTextureAlpha_DEFINED
-void particleSoftTextureAlpha(in sampler2D depthMap, in sampler2D tex, in float alpha)
-{
-	vec2 screenSize = 1.0 / RENDERER_SIZE;
-
-	float depth = texture(depthMap, gl_FragCoord.xy * screenSize).r;
-
-	float delta = depth - gl_FragCoord.z;
-	float softalpha = clamp(delta * 50.0, 0.0, 1.0);
-
-	vec4 color = texture(tex, gl_PointCoord);
-	color.a *= alpha;
-	// color.a *= softalpha;
-
-	writeGBuffer(color);
-}
-#endif
-
-#if PASS == COLOR
-#define particleTextureAlpha_DEFINED
-void particleTextureAlpha(in sampler2D tex, vec4 mulColor, vec4 addColor, in float alpha)
-{
-	vec4 color = texture(tex, in_uv) * mulColor + addColor;
-	color.a *= alpha;
-
-	writeGBuffer(color);
-}
-#endif
 
-#if PASS == COLOR
-#define particleSoftColorAlpha_DEFINED
-void particleSoftColorAlpha(in sampler2D depthMap, in vec3 icolor, in float alpha)
+vec4 readAnimatedTextureRgba(sampler2DArray tex, float period, vec2 uv, float time)
 {
-	vec2 screenSize = 1.0 / RENDERER_SIZE;
-
-	float depth = texture(depthMap, gl_FragCoord.xy * screenSize).r;
-
-	float delta = depth - gl_FragCoord.z;
-	float softalpha = clamp(delta * 50.0, 0.0, 1.0);
-
-	vec2 pix = (1.0 - abs(gl_PointCoord * 2.0 - 1.0));
-	float roundFactor = pix.x * pix.y;
-
-	vec4 color;
-	color.rgb = icolor;
-	color.a = alpha * softalpha * roundFactor;
-	writeGBuffer(color);
+	float layerCount = float(textureSize(tex, 0).z);
+	float layer = mod(time * layerCount / period, layerCount);
+	return texture(tex, vec3(uv, layer));
 }
-#endif
 
-#if PASS == COLOR
-#define computeLightColor_DEFINED
 vec3 computeLightColor(vec3 diffCol)
 {
 	vec3 outColor = vec3(0.0);
@@ -187,36 +115,12 @@ vec3 computeLightColor(vec3 diffCol)
 
 	return outColor;
 }
-#endif
-
-#if PASS == COLOR
-#define particleTextureAlphaLight_DEFINED
-void particleTextureAlphaLight(in sampler2D tex, in float alpha)
-{
-	vec4 color = texture(tex, in_uv);
-	color.a *= alpha;
-
-	color.rgb = computeLightColor(color.rgb);
-
-	writeGBuffer(color);
-}
-#endif
 
-#if PASS == COLOR
-#define particleAnimatedTextureAlphaLight_DEFINED
-void particleAnimatedTextureAlphaLight(sampler2DArray tex, float alpha, float layerCount, float period)
+void particleAlpha(vec4 color, vec4 scaleColor, vec4 biasColor)
 {
-	vec4 color = readAnimatedTextureRgba(tex, layerCount, period, in_uv, anki_u_time);
-
-	color.rgb = computeLightColor(color.rgb);
-
-	color.a *= alpha;
-	writeGBuffer(color);
+	writeGBuffer(color * mulColor + addColor);
 }
-#endif
 
-#if PASS == COLOR
-#define fog_DEFINED
 void fog(in sampler2D depthMap, in vec3 color, in float fogScale)
 {
 	const vec2 screenSize = 1.0 / RENDERER_SIZE;
@@ -241,6 +145,5 @@ void fog(in sampler2D depthMap, in vec3 color, in float fogScale)
 
 	writeGBuffer(vec4(color, diff * fogScale));
 }
-#endif
 
 #endif

+ 0 - 25
shaders/FsCommonVert.glsl

@@ -34,25 +34,6 @@ out gl_PerVertex
 	vec4 gl_Position;
 };
 
-#define setPositionVec3_DEFINED
-void setPositionVec3(in vec3 pos)
-{
-	ANKI_WRITE_POSITION(vec4(pos, 1.0));
-}
-
-#define setPositionVec4_DEFINED
-void setPositionVec4(in vec4 pos)
-{
-	ANKI_WRITE_POSITION(pos);
-}
-
-#define writePositionMvp_DEFINED
-void writePositionMvp(in mat4 mvp)
-{
-	ANKI_WRITE_POSITION(mvp * vec4(in_position, 1.0));
-}
-
-#define particle_DEFINED
 void particle(in mat4 mvp, in mat3 camRot, in mat4 viewMat)
 {
 	const vec2 POSITIONS[4] = vec2[](vec2(-0.5, -0.5), vec2(0.5, -0.5), vec2(-0.5, 0.5), vec2(0.5, 0.5));
@@ -66,10 +47,4 @@ void particle(in mat4 mvp, in mat3 camRot, in mat4 viewMat)
 	out_uv = POSITIONS[gl_VertexID] + 0.5;
 }
 
-#define writeAlpha_DEFINED
-void writeAlpha(in float alpha)
-{
-	out_alpha = alpha;
-}
-
 #endif

+ 0 - 8
shaders/MsFsCommon.glsl

@@ -10,12 +10,4 @@
 
 #define CALC_BITANGENT_IN_VERT 1
 
-// Read from animated texture
-#define readAnimatedTextureRgba_DEFINED
-vec4 readAnimatedTextureRgba(sampler2DArray tex, float layerCount, float period, vec2 uv, float time)
-{
-	float layer = mod(time * layerCount / period, layerCount);
-	return texture(tex, vec3(uv, layer));
-}
-
 #endif

+ 1 - 1
src/anki/input/InputSdl.cpp

@@ -87,7 +87,7 @@ Error Input::init(NativeWindow* nativeWindow)
 	MAP(SDLK_q, Q);
 	MAP(SDLK_r, R);
 	MAP(SDLK_s, S);
-	MAP(SDLK_y, T);
+	MAP(SDLK_t, T);
 	MAP(SDLK_u, U);
 	MAP(SDLK_v, V);
 	MAP(SDLK_w, W);

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

@@ -60,7 +60,7 @@ Error Material::load(const ResourceFilename& filename)
 	// shaderProgram
 	CString fname;
 	ANKI_CHECK(rootEl.getAttributeText("shaderProgram", fname));
-	getManager().loadResource(fname, m_prog);
+	ANKI_CHECK(getManager().loadResource(fname, m_prog));
 
 	// shadow
 	ANKI_CHECK(rootEl.getAttributeNumberOptional("shadow", m_shadow, present));
@@ -94,7 +94,7 @@ Error Material::parseMutators(XmlElement mutatorsEl)
 	ANKI_CHECK(mutatorsEl.getChildElement("mutator", mutatorEl));
 
 	U32 mutatorCount = 0;
-	mutatorEl.getSiblingElementsCount(mutatorCount);
+	ANKI_CHECK(mutatorEl.getSiblingElementsCount(mutatorCount));
 	++mutatorCount;
 	ANKI_ASSERT(mutatorCount > 0);
 	m_mutations.create(getAllocator(), mutatorCount);
@@ -396,7 +396,7 @@ Error Material::parseInputs(XmlElement inputsEl)
 				{
 					CString texfname;
 					ANKI_CHECK(inputEl.getAttributeText("value", texfname));
-					getManager().loadResource(texfname, mtlVar.m_tex);
+					ANKI_CHECK(getManager().loadResource(texfname, mtlVar.m_tex));
 					break;
 				}
 

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

@@ -209,7 +209,7 @@ Error ShaderProgramResource::load(const ResourceFilename& filename)
 		XmlElement mutatorEl;
 		ANKI_CHECK(mutatorsEl.getChildElement("mutator", mutatorEl));
 		U32 count = 0;
-		mutatorEl.getSiblingElementsCount(count);
+		ANKI_CHECK(mutatorEl.getSiblingElementsCount(count));
 		++count;
 
 		m_mutators.create(getAllocator(), count);

+ 1 - 1
tools/scene/ExporterMaterial.cpp

@@ -175,7 +175,7 @@ void Exporter::exportMaterial(const aiMaterial& mtl) const
 		if(mtl.GetTexture(aiTextureType_NORMALS, 0, &path) == AI_SUCCESS)
 		{
 			std::string normTex = m_texrpath + getFilename(path.C_Str());
-			xml = replaceAllString(xml, "%normal%", "<input shaderInput=\"normalTex\" value\"" + normTex + "\"/>");
+			xml = replaceAllString(xml, "%normal%", "<input shaderInput=\"normalTex\" value=\"" + normTex + "\"/>");
 
 			xml = replaceAllString(xml, "%normalTexMutator%", "1");
 		}