summaryrefslogtreecommitdiffstats
path: root/tests/scenes
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2018-06-07 14:30:27 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2018-06-08 13:29:28 +0000
commitc935d5070888c2925701e5bacc8c905976d8e2df (patch)
treecab9f05b1a9b25a9aaf802eddff1f37deb17c734 /tests/scenes
parentd1669c623288a36f104d5d344b5799935e2857a4 (diff)
Generate custom material shadow map uniforms correctly
Send uNumShadowCubes, uNumShadowMaps, shadowMaps[], shadowCubes[] and set up shadowIdx correctly. Problem is, this won't actually fix the bug but at least we now generate the correct uniforms from our side. It also trades one FIXME for another one. Task-number: QT3DS-1840 Change-Id: I64ce5a841912f98616e558763a8360c8830741e5 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'tests/scenes')
-rw-r--r--tests/scenes/shadows/materials/porcelain.material181
-rw-r--r--tests/scenes/shadows/shadow_on_custommaterial.uip63
-rw-r--r--tests/scenes/shadows/shadow_on_custommaterial_simplified.uip48
-rw-r--r--tests/scenes/shadows/shadow_on_custommaterial_simplified_one_light_only.uip42
-rw-r--r--tests/scenes/shadows/shadows_nonshadowlights_mixed.uip43
-rw-r--r--tests/scenes/shadows/shadows_nonshadowlights_mixed_custommaterial.uip46
6 files changed, 423 insertions, 0 deletions
diff --git a/tests/scenes/shadows/materials/porcelain.material b/tests/scenes/shadows/materials/porcelain.material
new file mode 100644
index 0000000..b21cda7
--- /dev/null
+++ b/tests/scenes/shadows/materials/porcelain.material
@@ -0,0 +1,181 @@
+<Material name="porcelain" version="1.0">
+ <MetaData >
+ <Property formalName="Environment Map" name="uEnvironmentTexture" description="Environment texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="environment" default="./maps/materials/spherical_checker.png" category="Material"/>
+ <Property formalName="Enable Environment" name="uEnvironmentMappingEnabled" description="Enable environment mapping" type="Boolean" default="True" category="Material"/>
+ <Property formalName="Baked Shadow Map" name="uBakedShadowTexture" description="Baked shadow texture for the material" type="Texture" filter="linear" minfilter="linearMipmapLinear" clamp="repeat" usage="shadow" default="./maps/materials/shadow.png" category="Material"/>
+ <Property formalName="Shadow Mapping" name="uShadowMappingEnabled" description="Enable shadow mapping" type="Boolean" default="False" category="Material"/>
+ <Property formalName="Index of Refraction" name="material_ior" type="Float" default="1.500000" description="Index of refraction of the material" category="Material"/>
+ <Property formalName="Glossiness" name="glossy_weight" type="Float" min="0.000000" max="1.000000" default="1.000000" description="Strength of glossy reflection" category="Material"/>
+ <Property formalName="Roughness" name="roughness" type="Float" min="0.000000" max="1.000000" default="0.150000" description="Roughness of the material.\n0 = fully specular\n1 = fully diffuse" category="Material"/>
+ <Property formalName="Porcelain Color" name="porcelain_color" type="Color" default="0.92 0.92 0.92" description="Color of the material" category="Material"/>
+ </MetaData>
+ <Shaders type="GLSL" version="330">
+ <Shader>
+ <Shared> </Shared>
+<VertexShader>
+ </VertexShader>
+ <FragmentShader>
+
+// add enum defines
+#define scatter_reflect 0
+#define scatter_transmit 1
+#define scatter_reflect_transmit 2
+
+#define QT3DS_ENABLE_UV0 1
+#define QT3DS_ENABLE_WORLD_POSITION 1
+#define QT3DS_ENABLE_TEXTAN 1
+#define QT3DS_ENABLE_BINORMAL 0
+
+#include "vertexFragmentBase.glsllib"
+
+// set shader output
+out vec4 fragColor;
+
+// add structure defines
+struct layer_result
+{
+ vec4 base;
+ vec4 layer;
+ mat3 tanFrame;
+};
+
+
+// temporary declarations
+ vec4 tmpShadowTerm;
+
+layer_result layers[1];
+
+#include "SSAOCustomMaterial.glsllib"
+#include "sampleLight.glsllib"
+#include "sampleProbe.glsllib"
+#include "sampleArea.glsllib"
+#include "square.glsllib"
+#include "calculateRoughness.glsllib"
+#include "evalBakedShadowMap.glsllib"
+#include "evalEnvironmentMap.glsllib"
+#include "luminance.glsllib"
+#include "microfacetBSDF.glsllib"
+#include "physGlossyBSDF.glsllib"
+#include "simpleGlossyBSDF.glsllib"
+#include "diffuseReflectionBSDF.glsllib"
+#include "fresnelLayer.glsllib"
+
+bool evalTwoSided()
+{
+ return( false );
+}
+
+vec3 computeFrontMaterialEmissive()
+{
+ return( vec3( 0, 0, 0 ) );
+}
+
+void computeFrontLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
+{
+#if QT3DS_ENABLE_CG_LIGHTING
+ layers[0].base += tmpShadowTerm * diffuseReflectionBSDF( normal, lightDir, viewDir, lightDiffuse, 0.000000 );
+ layers[0].layer += tmpShadowTerm * microfacetBSDF( layers[0].tanFrame, lightDir, viewDir, lightSpecular, materialIOR, roughness, roughness, scatter_reflect );
+
+#endif
+}
+
+void computeFrontAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
+{
+#if QT3DS_ENABLE_CG_LIGHTING
+ layers[0].base += tmpShadowTerm * lightDiffuse * sampleAreaDiffuse( layers[0].tanFrame, varWorldPos, lightIdx );
+ layers[0].layer += tmpShadowTerm * lightSpecular * sampleAreaGlossy( layers[0].tanFrame, varWorldPos, lightIdx, viewDir, roughness, roughness );
+
+#endif
+}
+
+void computeFrontLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
+{
+#if !QT3DS_ENABLE_LIGHT_PROBE
+ layers[0].base += tmpShadowTerm * diffuseReflectionBSDFEnvironment( normal, 0.000000 ) * aoFactor;
+ layers[0].layer += tmpShadowTerm * microfacetSampledBSDF( layers[0].tanFrame, viewDir, roughness, roughness, scatter_reflect );
+
+#else
+ layers[0].base += tmpShadowTerm * sampleDiffuse( layers[0].tanFrame ) * aoFactor;
+ layers[0].layer += tmpShadowTerm * sampleGlossyAniso( layers[0].tanFrame, viewDir, roughness, roughness );
+
+#endif
+}
+
+vec3 computeBackMaterialEmissive()
+{
+ return( vec3(0, 0, 0) );
+}
+
+void computeBackLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
+{
+#if QT3DS_ENABLE_CG_LIGHTING
+ layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
+#endif
+}
+
+void computeBackAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
+{
+#if QT3DS_ENABLE_CG_LIGHTING
+ layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
+#endif
+}
+
+void computeBackLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
+{
+#if !QT3DS_ENABLE_LIGHT_PROBE
+ layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
+#else
+ layers[0].base += vec4( 0.0, 0.0, 0.0, 1.0 );
+ layers[0].layer += vec4( 0.0, 0.0, 0.0, 1.0 );
+#endif
+}
+
+float computeIOR()
+{
+ return( false ? 1.0 : luminance( vec3( 1, 1, 1 ) ) );
+}
+
+float evalCutout()
+{
+ return( 1.000000 );
+}
+
+vec3 computeNormal()
+{
+ return( normal );
+}
+
+void computeTemporaries()
+{
+ tmpShadowTerm = evalBakedShadowMap( texCoord0 );
+}
+
+vec4 computeLayerWeights( in float alpha )
+{
+ vec4 color;
+ color = fresnelLayer( normal, vec3( material_ior ), glossy_weight, vec4( vec3( 1, 1, 1 ), 1.0).rgb, layers[0].layer, layers[0].base * vec4( porcelain_color, 1.0), alpha );
+ return color;
+}
+
+
+void initializeLayerVariables(void)
+{
+ // clear layers
+ layers[0].base = vec4(0.0, 0.0, 0.0, 1.0);
+ layers[0].layer = vec4(0.0, 0.0, 0.0, 1.0);
+ layers[0].tanFrame = orthoNormalize( mat3( tangent, cross(normal, tangent), normal ) );
+}
+
+ </FragmentShader>
+ </Shader>
+ </Shaders>
+<Passes >
+ <ShaderKey value="5"/>
+ <LayerKey count="1"/>
+ <Pass >
+ </Pass>
+</Passes>
+</Material>
diff --git a/tests/scenes/shadows/shadow_on_custommaterial.uip b/tests/scenes/shadows/shadow_on_custommaterial.uip
new file mode 100644
index 0000000..d290e69
--- /dev/null
+++ b/tests/scenes/shadows/shadow_on_custommaterial.uip
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<UIP version="4" >
+ <Project >
+ <ProjectSettings author="" company="" presentationWidth="1920" presentationHeight="1080" maintainAspect="False" >
+ <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
+ </ProjectSettings>
+ <Classes >
+ <CustomMaterial id="porcelain" name="porcelain" sourcepath="materials/porcelain.material" />
+ </Classes>
+ <Graph >
+ <Scene id="Scene" >
+ <Layer id="Layer" >
+ <Camera id="Camera" />
+ <Light id="Light" />
+ <Model id="Rectangle" >
+ <CustomMaterial id="Default" class="#porcelain" />
+ </Model>
+ <Model id="Cube" >
+ <CustomMaterial id="Default_001" class="#porcelain" />
+ </Model>
+ <Light id="Light2" />
+ <Model id="Cube2" >
+ <Material id="Default_002" name="Default" />
+ </Model>
+ <Model id="Cone" >
+ <Material id="Default_003" name="Default" />
+ </Model>
+ <Model id="Sphere" >
+ <Material id="Default_004" name="Default" />
+ </Model>
+ </Layer>
+ </Scene>
+ </Graph>
+ <Logic >
+ <State name="Master Slide" component="#Scene" >
+ <Add ref="#Layer" />
+ <Add ref="#Camera" position="0 300 -600" rotation="20 0 0" />
+ <State id="Scene-Slide1" name="Slide1" >
+ <Add ref="#Light" name="Light" brightness="100" castshadow="True" lightambient="0 0 0" lightdiffuse="0.666667 0 0" lightspecular="0.666667 0 0" lighttype="Point" position="0 203.135 0" rotation="0 0 0" shdwbias="0.001" shdwfactor="100" shdwfilter="1" shdwmapres="11" >
+ <AnimationTrack property="position.x" type="EaseInOut" >0 0 100 100 10 134.027 100 100</AnimationTrack>
+ <AnimationTrack property="position.y" type="EaseInOut" >0 203.135 100 100 10 332.749 100 100</AnimationTrack>
+ <AnimationTrack property="position.z" type="EaseInOut" >0 0 100 100 10 0 100 100</AnimationTrack>
+ </Add>
+ <Add ref="#Rectangle" name="Rectangle" rotation="90 0 0" scale="10 10 1" sourcepath="#Rectangle" />
+ <Add ref="#Default" name="Default" />
+ <Add ref="#Cube" name="Cube" position="-203.905 48.1771 0" sourcepath="#Cube" />
+ <Add ref="#Default_001" name="Default" />
+ <Add ref="#Light2" name="Light2" brightness="100" castshadow="True" lightdiffuse="0 0.666667 0" lightspecular="0 0.666667 0" lighttype="Point" position="0 219.345 0" rotation="0 0 0" shdwbias="0.001" shdwfactor="100" shdwfilter="1" shdwmapres="11" >
+ <AnimationTrack property="position.x" type="EaseInOut" >0 -195.913 100 100 10 236.863 100 100</AnimationTrack>
+ <AnimationTrack property="position.y" type="EaseInOut" >0 219.345 100 100 10 219.345 100 100</AnimationTrack>
+ <AnimationTrack property="position.z" type="EaseInOut" >0 0 100 100 10 -319.932 100 100</AnimationTrack>
+ </Add>
+ <Add ref="#Cube2" name="Cube2" position="191.482 50.5886 0" sourcepath="#Cube" />
+ <Add ref="#Default_002" />
+ <Add ref="#Cone" name="Cone" position="0 0 -274.247" sourcepath="#Cone" />
+ <Add ref="#Default_003" />
+ <Add ref="#Sphere" name="Sphere" position="0 49.2835 288.235" sourcepath="#Sphere" />
+ <Add ref="#Default_004" />
+ </State>
+ </State>
+ </Logic>
+ </Project>
+</UIP>
diff --git a/tests/scenes/shadows/shadow_on_custommaterial_simplified.uip b/tests/scenes/shadows/shadow_on_custommaterial_simplified.uip
new file mode 100644
index 0000000..821b13a
--- /dev/null
+++ b/tests/scenes/shadows/shadow_on_custommaterial_simplified.uip
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<UIP version="4" >
+ <Project >
+ <ProjectSettings author="" company="" presentationWidth="1920" presentationHeight="1080" maintainAspect="False" >
+ <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
+ </ProjectSettings>
+ <Classes >
+ <CustomMaterial id="porcelain" name="porcelain" sourcepath="materials/porcelain.material" />
+ </Classes>
+ <Graph >
+ <Scene id="Scene" >
+ <Layer id="Layer" >
+ <Camera id="Camera" />
+ <Light id="Light" />
+ <Model id="Rectangle" >
+ <CustomMaterial id="Default" class="#porcelain" />
+ </Model>
+ <Light id="Light2" />
+ <Model id="Cube2" >
+ <Material id="Default_002" name="Default" />
+ </Model>
+ </Layer>
+ </Scene>
+ </Graph>
+ <Logic >
+ <State name="Master Slide" component="#Scene" >
+ <Add ref="#Layer" />
+ <Add ref="#Camera" position="0 300 -600" rotation="20 0 0" />
+ <State id="Scene-Slide1" name="Slide1" >
+ <Add ref="#Light" name="Light" brightness="100" castshadow="True" lightambient="0 0 0" lightdiffuse="0.666667 0 0" lightspecular="0.666667 0 0" lighttype="Point" position="0 203.135 0" rotation="0 0 0" shdwbias="0.001" shdwfactor="100" shdwfilter="1" shdwmapres="11" >
+ <AnimationTrack property="position.x" type="EaseInOut" >0 0 100 100 10 134.027 100 100</AnimationTrack>
+ <AnimationTrack property="position.y" type="EaseInOut" >0 203.135 100 100 10 332.749 100 100</AnimationTrack>
+ <AnimationTrack property="position.z" type="EaseInOut" >0 0 100 100 10 0 100 100</AnimationTrack>
+ </Add>
+ <Add ref="#Rectangle" name="Rectangle" rotation="90 0 0" scale="10 10 1" sourcepath="#Rectangle" />
+ <Add ref="#Default" name="Default" />
+ <Add ref="#Light2" name="Light2" brightness="100" castshadow="True" lightdiffuse="0 0.666667 0" lightspecular="0 0.666667 0" lighttype="Point" position="0 219.345 0" rotation="0 0 0" shdwbias="0.001" shdwfactor="100" shdwfilter="1" shdwmapres="11" >
+ <AnimationTrack property="position.x" type="EaseInOut" >0 -195.913 100 100 10 236.863 100 100</AnimationTrack>
+ <AnimationTrack property="position.y" type="EaseInOut" >0 219.345 100 100 10 219.345 100 100</AnimationTrack>
+ <AnimationTrack property="position.z" type="EaseInOut" >0 0 100 100 10 -319.932 100 100</AnimationTrack>
+ </Add>
+ <Add ref="#Cube2" name="Cube2" position="191.482 50.5886 0" sourcepath="#Cube" />
+ <Add ref="#Default_002" />
+ </State>
+ </State>
+ </Logic>
+ </Project>
+</UIP>
diff --git a/tests/scenes/shadows/shadow_on_custommaterial_simplified_one_light_only.uip b/tests/scenes/shadows/shadow_on_custommaterial_simplified_one_light_only.uip
new file mode 100644
index 0000000..2f712eb
--- /dev/null
+++ b/tests/scenes/shadows/shadow_on_custommaterial_simplified_one_light_only.uip
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<UIP version="4" >
+ <Project >
+ <ProjectSettings author="" company="" presentationWidth="1920" presentationHeight="1080" maintainAspect="False" >
+ <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
+ </ProjectSettings>
+ <Classes >
+ <CustomMaterial id="porcelain" name="porcelain" sourcepath="materials/porcelain.material" />
+ </Classes>
+ <Graph >
+ <Scene id="Scene" >
+ <Layer id="Layer" >
+ <Camera id="Camera" />
+ <Light id="Light" />
+ <Model id="Rectangle" >
+ <CustomMaterial id="Default" class="#porcelain" />
+ </Model>
+ <Model id="Cube2" >
+ <Material id="Default_002" name="Default" />
+ </Model>
+ </Layer>
+ </Scene>
+ </Graph>
+ <Logic >
+ <State name="Master Slide" component="#Scene" >
+ <Add ref="#Layer" />
+ <Add ref="#Camera" position="0 300 -600" rotation="20 0 0" />
+ <State id="Scene-Slide1" name="Slide1" >
+ <Add ref="#Light" name="Light" brightness="100" castshadow="True" lightambient="0 0 0" lightdiffuse="0.666667 0 0" lightspecular="0.666667 0 0" lighttype="Point" position="0 203.135 0" rotation="0 0 0" shdwbias="0.001" shdwfactor="100" shdwfilter="1" shdwmapres="11" >
+ <AnimationTrack property="position.x" type="EaseInOut" >0 0 100 100 10 134.027 100 100</AnimationTrack>
+ <AnimationTrack property="position.y" type="EaseInOut" >0 203.135 100 100 10 332.749 100 100</AnimationTrack>
+ <AnimationTrack property="position.z" type="EaseInOut" >0 0 100 100 10 0 100 100</AnimationTrack>
+ </Add>
+ <Add ref="#Rectangle" name="Rectangle" rotation="90 0 0" scale="10 10 1" sourcepath="#Rectangle" />
+ <Add ref="#Default" name="Default" />
+ <Add ref="#Cube2" name="Cube2" position="191.482 50.5886 0" sourcepath="#Cube" />
+ <Add ref="#Default_002" />
+ </State>
+ </State>
+ </Logic>
+ </Project>
+</UIP>
diff --git a/tests/scenes/shadows/shadows_nonshadowlights_mixed.uip b/tests/scenes/shadows/shadows_nonshadowlights_mixed.uip
new file mode 100644
index 0000000..d4b2362
--- /dev/null
+++ b/tests/scenes/shadows/shadows_nonshadowlights_mixed.uip
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<UIP version="4" >
+ <Project >
+ <ProjectSettings author="" company="Eagle Jump" presentationWidth="800" presentationHeight="480" maintainAspect="False" >
+ <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
+ </ProjectSettings>
+ <Graph >
+ <Scene id="Scene" >
+ <Layer id="Layer" >
+ <Camera id="Camera" />
+ <Model id="Rectangle" >
+ <Material id="Material" />
+ </Model>
+ <Model id="Cylinder" >
+ <Material id="Material_001" />
+ </Model>
+ <Light id="shadowcaster" />
+ <Light id="noncaster" />
+ <Light id="shadowcaster2" />
+ </Layer>
+ </Scene>
+ </Graph>
+ <Logic >
+ <State name="Master Slide" component="#Scene" >
+ <Add ref="#Layer" />
+ <Add ref="#Camera" />
+ <State id="Scene-Slide1" name="Slide1" >
+ <Add ref="#Rectangle" name="Rectangle" position="-5.77344 -34.641 0" rotation="53.5 0 0" scale="6.30691 5.36799 1" sourcepath="#Rectangle" />
+ <Add ref="#Material" />
+ <Add ref="#Cylinder" name="Cylinder" position="26.809 49.9481 25.2529" rotation="-52.8354 30.8347 -4.94139" scale="1.16992 0.986966 1" sourcepath="#Cylinder" >
+ <AnimationTrack property="rotation.x" type="EaseInOut" >0 -52.8354 100 100 10 50 100 100</AnimationTrack>
+ <AnimationTrack property="rotation.y" type="EaseInOut" >0 30.8347 100 100 10 30.8347 100 100</AnimationTrack>
+ <AnimationTrack property="rotation.z" type="EaseInOut" >0 -4.94139 100 100 10 -4.94139 100 100</AnimationTrack>
+ </Add>
+ <Add ref="#Material_001" diffuse="0.501961 1 0.501961" />
+ <Add ref="#shadowcaster" name="shadowcaster" castshadow="True" lightdiffuse="1 0.662745 0.501961" lighttype="Point" position="392.861 235.972 3.46274" shdwbias="0" shdwfactor="31.9375" shdwfilter="27.8125" shdwmapfar="5000" shdwmapres="9" />
+ <Add ref="#noncaster" name="noncaster" lighttype="Point" position="294.449 -51.9615 0" />
+ <Add ref="#shadowcaster2" name="shadowcaster2" castshadow="True" lighttype="Point" position="511.618 70.4722 0" />
+ </State>
+ </State>
+ </Logic>
+ </Project>
+</UIP>
diff --git a/tests/scenes/shadows/shadows_nonshadowlights_mixed_custommaterial.uip b/tests/scenes/shadows/shadows_nonshadowlights_mixed_custommaterial.uip
new file mode 100644
index 0000000..e1f9452
--- /dev/null
+++ b/tests/scenes/shadows/shadows_nonshadowlights_mixed_custommaterial.uip
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<UIP version="4" >
+ <Project >
+ <ProjectSettings author="" company="Eagle Jump" presentationWidth="800" presentationHeight="480" maintainAspect="False" >
+ <CustomColors count="16" >#ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff #ffffff</CustomColors>
+ </ProjectSettings>
+ <Classes >
+ <CustomMaterial id="porcelain" name="porcelain" sourcepath="materials/porcelain.material" />
+ </Classes>
+ <Graph >
+ <Scene id="Scene" >
+ <Layer id="Layer" >
+ <Camera id="Camera" />
+ <Model id="Rectangle" >
+ <CustomMaterial id="Material" class="#porcelain" />
+ </Model>
+ <Model id="Cylinder" >
+ <Material id="Material_001" />
+ </Model>
+ <Light id="shadowcaster" />
+ <Light id="noncaster" />
+ <Light id="shadowcaster2" />
+ </Layer>
+ </Scene>
+ </Graph>
+ <Logic >
+ <State name="Master Slide" component="#Scene" >
+ <Add ref="#Layer" />
+ <Add ref="#Camera" />
+ <State id="Scene-Slide1" name="Slide1" >
+ <Add ref="#Rectangle" name="RectangleWithCustomMaterial" position="-5.77344 -34.641 0" rotation="53.5 0 0" scale="6.30691 5.36799 1" sourcepath="#Rectangle" />
+ <Add ref="#Material" name="Material" />
+ <Add ref="#Cylinder" name="Cylinder" position="26.809 49.9481 25.2529" rotation="-52.8354 30.8347 -4.94139" scale="1.16992 0.986966 1" sourcepath="#Cylinder" >
+ <AnimationTrack property="rotation.x" type="EaseInOut" >0 -52.8354 100 100 10 50 100 100</AnimationTrack>
+ <AnimationTrack property="rotation.y" type="EaseInOut" >0 30.8347 100 100 10 30.8347 100 100</AnimationTrack>
+ <AnimationTrack property="rotation.z" type="EaseInOut" >0 -4.94139 100 100 10 -4.94139 100 100</AnimationTrack>
+ </Add>
+ <Add ref="#Material_001" diffuse="0.501961 1 0.501961" />
+ <Add ref="#shadowcaster" name="shadowcaster" castshadow="True" lightdiffuse="1 0.662745 0.501961" lighttype="Point" position="392.861 235.972 3.46274" shdwbias="0" shdwfactor="31.9375" shdwfilter="27.8125" shdwmapfar="5000" shdwmapres="9" />
+ <Add ref="#noncaster" name="noncaster" lighttype="Point" position="294.449 -51.9615 0" />
+ <Add ref="#shadowcaster2" name="shadowcaster2" castshadow="True" lighttype="Point" position="511.618 70.4722 0" />
+ </State>
+ </State>
+ </Logic>
+ </Project>
+</UIP>