Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE.bat
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE.bat	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE.bat	(revision 1493)
@@ -0,0 +1,2 @@
+cd .\IBRTreesOGRE\bin\release\
+Demo_IndirectTexturing.exe
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/butterfly/butterfly_bones_animated.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/butterfly/butterfly_bones_animated.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/butterfly/butterfly_bones_animated.material	(revision 1493)
@@ -0,0 +1,467 @@
+
+material BUTT01
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0.0745098 0.00392157 0.0745098 1
+			specular 0.6 0.6 0.6 1 39.68
+		}
+	}
+}
+material BUTT02
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT03
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT04
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0.0745098 0.00392157 0.0745098 1
+			specular 0.6 0.6 0.6 1 39.68
+		}
+	}
+}
+material BUTT05
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture BUTTFACE.jpg
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material BUTT06
+{
+	technique
+	{
+		pass
+		{
+			alpha_rejection equal 255
+			cull_hardware none
+			cull_software none
+			texture_unit
+			{
+				texture BUTTWIFR.jpg
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material BUTT07
+{
+	technique
+	{
+		pass
+		{
+			
+			alpha_rejection equal 255
+			cull_hardware none
+			cull_software none
+			texture_unit
+			{
+				texture BUTTWIBA.jpg
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material BUTT08
+{
+	technique
+	{
+		pass
+		{
+			
+			alpha_rejection equal 255
+			cull_hardware none
+			cull_software none
+			texture_unit
+			{
+				texture BUTTWIBA.jpg
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+
+material BUTT09
+{
+	technique
+	{
+		pass
+		{
+			
+			alpha_rejection equal 255
+			cull_hardware none
+			cull_software none
+			texture_unit
+			{
+				texture BUTTWIFR.jpg
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material BUTT10
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT11
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT15
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT16
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT17
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT18
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT19
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT20
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT21
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT22
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT23
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT24
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT25
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT26
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT27
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT28
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT29
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT30
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT31
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT32
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT33
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT34
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT35
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT36
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT37
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTT38
+{
+	technique
+	{
+		pass
+		{
+			ambient 0 0 0 1
+			diffuse 0 0 0 1
+			specular 0.898039 0.898039 0.898039 1 52.48
+		}
+	}
+}
+material BUTTMAIN
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture BUTTBODY.jpg
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/butterfly/butterfly_bones_animated.skeleton.xml
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/butterfly/butterfly_bones_animated.skeleton.xml	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/butterfly/butterfly_bones_animated.skeleton.xml	(revision 1493)
@@ -0,0 +1,159 @@
+<skeleton>
+    <bones>
+        <bone id="0" name="joint1">
+            <position x="0.747474" y="3.77778" z="0.454545" />
+            <rotation angle="1.67969">
+                <axis x="0.326337" y="-0.888251" z="0.323286" />
+            </rotation>
+        </bone>
+        <bone id="1" name="joint2">
+            <position x="0" y="0" z="-12.6367" />
+            <rotation angle="0">
+                <axis x="1" y="0" z="0" />
+            </rotation>
+        </bone>
+        <bone id="2" name="joint3">
+            <position x="-0.544795" y="3.77778" z="0.454545" />
+            <rotation angle="3.62066">
+                <axis x="-0.671517" y="0.253259" z="-0.696365" />
+            </rotation>
+        </bone>
+        <bone id="3" name="joint4">
+            <position x="0" y="0" z="-13.0051" />
+            <rotation angle="0">
+                <axis x="1" y="0" z="0" />
+            </rotation>
+        </bone>
+        <bone id="4" name="joint5">
+            <position x="0.0909091" y="0" z="-4.63636" />
+            <rotation angle="3.14153">
+                <axis x="-1" y="9.52883e-012" z="3.13916e-007" />
+            </rotation>
+        </bone>
+        <bone id="5" name="joint6">
+            <position x="0" y="0" z="-7.54545" />
+            <rotation angle="0">
+                <axis x="1" y="0" z="0" />
+            </rotation>
+        </bone>
+    </bones>
+    <bonehierarchy>
+        <boneparent bone="joint2" parent="joint1" />
+        <boneparent bone="joint4" parent="joint3" />
+        <boneparent bone="joint6" parent="joint5" />
+    </bonehierarchy>
+    <animations>
+        <animation name="Fly" length="0.483333">
+            <tracks>
+                <track bone="joint1">
+                    <keyframes>
+                        <keyframe time="0">
+                            <translate x="-2.60065e-009" y="-5.19382e-008" z="3.37357e-009" />
+                            <rotate angle="0.349066">
+                                <axis x="0.999956" y="-0.00603625" z="-0.00719404" />
+                            </rotate>
+                        </keyframe>
+                        <keyframe time="0.15">
+                            <translate x="-2.88053e-009" y="-7.10935e-008" z="-1.94557e-008" />
+                            <rotate angle="1.22173">
+                                <axis x="-0.999956" y="0.00603625" z="0.00719404" />
+                            </rotate>
+                        </keyframe>
+                        <keyframe time="0.483333">
+                            <translate x="-1.52739e-008" y="-8.92808e-008" z="-1.52172e-007" />
+                            <rotate angle="0.349066">
+                                <axis x="0.999956" y="-0.00603624" z="-0.00719404" />
+                            </rotate>
+                        </keyframe>
+                    </keyframes>
+                </track>
+                <track bone="joint2">
+                    <keyframes>
+                        <keyframe time="0">
+                            <translate x="0" y="0" z="-0" />
+                            <rotate angle="0">
+                                <axis x="1" y="0" z="0" />
+                            </rotate>
+                        </keyframe>
+                        <keyframe time="0.483333">
+                            <translate x="0" y="0" z="-0" />
+                            <rotate angle="0">
+                                <axis x="1" y="0" z="0" />
+                            </rotate>
+                        </keyframe>
+                    </keyframes>
+                </track>
+                <track bone="joint3">
+                    <keyframes>
+                        <keyframe time="0">
+                            <translate x="9.42925e-009" y="-3.49344e-009" z="-4.6378e-008" />
+                            <rotate angle="0.349066">
+                                <axis x="-0.999338" y="0.0233707" z="-0.0278767" />
+                            </rotate>
+                        </keyframe>
+                        <keyframe time="0.15">
+                            <translate x="1.07844e-008" y="2.0424e-008" z="-7.49069e-008" />
+                            <rotate angle="1.22173">
+                                <axis x="0.999338" y="-0.0233707" z="0.0278767" />
+                            </rotate>
+                        </keyframe>
+                        <keyframe time="0.483333">
+                            <translate x="-6.19588e-010" y="3.93169e-008" z="-1.20952e-007" />
+                            <rotate angle="0.349066">
+                                <axis x="-0.999338" y="0.0233707" z="-0.0278767" />
+                            </rotate>
+                        </keyframe>
+                    </keyframes>
+                </track>
+                <track bone="joint4">
+                    <keyframes>
+                        <keyframe time="0">
+                            <translate x="0" y="0" z="-0" />
+                            <rotate angle="0">
+                                <axis x="1" y="0" z="0" />
+                            </rotate>
+                        </keyframe>
+                        <keyframe time="0.483333">
+                            <translate x="0" y="0" z="-0" />
+                            <rotate angle="0">
+                                <axis x="1" y="0" z="0" />
+                            </rotate>
+                        </keyframe>
+                    </keyframes>
+                </track>
+                <track bone="joint5">
+                    <keyframes>
+                        <keyframe time="0">
+                            <translate x="-2.31525e-009" y="-3.31363e-012" z="-5.70757e-008" />
+                            <rotate angle="0">
+                                <axis x="1" y="0" z="0" />
+                            </rotate>
+                        </keyframe>
+                        <keyframe time="0.483333">
+                            <translate x="-2.31525e-009" y="-7.57068e-012" z="-5.70757e-008" />
+                            <rotate angle="0">
+                                <axis x="1" y="0" z="0" />
+                            </rotate>
+                        </keyframe>
+                    </keyframes>
+                </track>
+                <track bone="joint6">
+                    <keyframes>
+                        <keyframe time="0">
+                            <translate x="0" y="0" z="-0" />
+                            <rotate angle="0">
+                                <axis x="1" y="0" z="0" />
+                            </rotate>
+                        </keyframe>
+                        <keyframe time="0.483333">
+                            <translate x="0" y="0" z="-0" />
+                            <rotate angle="0">
+                                <axis x="1" y="0" z="0" />
+                            </rotate>
+                        </keyframe>
+                    </keyframes>
+                </track>
+            </tracks>
+        </animation>
+    </animations>
+</skeleton>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/OffsetMapping.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/OffsetMapping.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/OffsetMapping.material	(revision 1493)
@@ -0,0 +1,127 @@
+// Bump map with Parallax offset vertex program, support for this is required 
+vertex_program Examples/OffsetMappingVP cg 
+{ 
+   source OffsetMapping.cg 
+   entry_point main_vp 
+   profiles vs_1_1 arbvp1 
+} 
+
+// Bump map with parallax fragment program 
+fragment_program Examples/OffsetMappingFP cg
+{ 
+   source OffsetMapping.cg
+   entry_point main_fp
+   profiles ps_2_0 arbfp1
+} 
+
+// Bump map with parallax fragment program 
+fragment_program Examples/OffsetMappingPS asm 
+{ 
+   source OffsetMapping_specular.asm 
+   // sorry, only for ps_1_4 and above:) 
+   syntax ps_1_4 
+} 
+
+
+material Examples/OffsetMapping/Specular 
+{ 
+
+  // This is the preferred technique which uses both vertex and 
+   // fragment programs, supports coloured lights 
+   technique 
+   { 
+      // do the lighting  and bump mapping with parallax pass 
+      // NB we don't do decal texture here because this is repeated per light 
+      pass 
+      { 
+       
+         // Vertex program reference 
+         vertex_program_ref Examples/OffsetMappingVP 
+         { 
+            param_named_auto lightPosition light_position_object_space 0 
+            param_named_auto eyePosition camera_position_object_space 
+            param_named_auto worldViewProj worldviewproj_matrix 
+         } 
+
+         // Fragment program 
+         fragment_program_ref Examples/OffsetMappingFP
+         { 
+            param_named_auto lightDiffuse light_diffuse_colour 0 
+            param_named_auto lightSpecular light_specular_colour 0 
+            // Parallax Height scale and bias 
+            param_named scaleBias float4 0.04 -0.02 1 0 
+         } 
+          
+         // Normal + height(alpha) map 
+         texture_unit 
+         { 
+            texture rockwall_NH.tga
+            tex_coord_set 0 
+         } 
+
+         // Base diffuse texture map 
+         texture_unit 
+         { 
+            texture rockwall.tga
+            tex_coord_set 1 
+         } 
+      } 
+   } 
+
+
+   // This is the preferred technique which uses both vertex and 
+   // fragment programs, supports coloured lights 
+   technique 
+   { 
+      // do the lighting  and bump mapping with parallax pass 
+      // NB we don't do decal texture here because this is repeated per light 
+      pass 
+      { 
+       
+         // Vertex program reference 
+         vertex_program_ref Examples/OffsetMappingVP 
+         { 
+            param_named_auto lightPosition light_position_object_space 0 
+            param_named_auto eyePosition camera_position_object_space 
+            param_named_auto worldViewProj worldviewproj_matrix 
+         } 
+
+         // Fragment program 
+         fragment_program_ref Examples/OffsetMappingPS 
+         { 
+            param_indexed_auto 0 light_diffuse_colour 0 
+            param_indexed_auto 1 light_specular_colour 0 
+            // Parallax Height scale and bias 
+            param_indexed 2 float4 0.04 -0.02 1 0 
+         } 
+          
+         // Normal + height(alpha) map 
+         texture_unit 
+         { 
+            texture rockwall_NH.tga
+            tex_coord_set 0 
+         } 
+
+         // Base diffuse texture map 
+         texture_unit 
+         { 
+            texture rockwall.tga
+            tex_coord_set 1 
+         } 
+      } 
+   } 
+   
+   // Simple no-shader fallback
+   technique 
+   { 
+      pass 
+      { 
+         // Base diffuse texture map 
+         texture_unit 
+         { 
+            texture rockwall.tga
+         } 
+	  }
+   }
+
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Example-DynTex.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Example-DynTex.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Example-DynTex.material	(revision 1493)
@@ -0,0 +1,86 @@
+
+material Examples/DynaTest
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture DynaTex 2d
+			}
+			depth_write off
+			scene_blend alpha_blend
+			lighting off
+		}
+	}
+}
+
+
+material Examples/DynaTest2
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture DynaTex 2d
+			}
+			diffuse 0.8 0.8 0.8
+			specular 0.7 0.7 0.7 40.0
+			ambient 0.5 0.5 0.5
+		}
+	}
+}
+
+material Examples/DynaTest3
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture DynaTex 2d
+			}
+			diffuse 0.2 0.8 0.8
+			specular 0.4 0.7 0.7 30.0
+			ambient 0.2 0.5 1.0
+			depth_write off
+			scene_blend alpha_blend
+		}
+	}
+}
+
+material Examples/DynaTest4
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture DynaTex 2d
+			}
+			diffuse 0.8 0.8 0.8
+			specular 0.7 0.7 0.4 20.0
+			ambient 1.0 0.5 0.2
+		}
+	}
+}
+
+material Examples/VTDarkStuff
+{
+	technique
+	{
+		pass
+		{
+			diffuse 0.0 0.0 0.0
+			ambient 0.1 0.1 0.15
+			cull_hardware none
+			lighting on
+		}
+		
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Examples.program
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Examples.program	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Examples.program	(revision 1493)
@@ -0,0 +1,39 @@
+//---------------------------------------------------
+// This file includes a number of basic GPU programs
+// for use in many materials. 
+//---------------------------------------------------
+
+
+// A really basic ambient pass program, support for one texture coodinate set
+vertex_program Ogre/BasicVertexPrograms/AmbientOneTexture cg
+{
+	source Example_Basic.cg
+	entry_point ambientOneTexture_vp
+	profiles vs_1_1 arbvp1
+}
+
+// Same as below, but for use when rendering texture shadows
+vertex_program Ogre/HardwareSkinningOneWeightShadowCaster cg
+{
+	source Example_Basic.cg
+	entry_point hardwareSkinningOneWeightCaster_vp
+	profiles vs_1_1 arbvp1
+	includes_skeletal_animation true
+}
+// Basic hardware skinning using one indexed weight per vertex
+vertex_program Ogre/HardwareSkinningOneWeight cg
+{
+   source Example_Basic.cg
+   entry_point hardwareSkinningOneWeight_vp
+   profiles vs_1_1 arbvp1
+   includes_skeletal_animation true   
+}
+// Basic hardware skinning using four indexed weights per vertex
+vertex_program Ogre/HardwareSkinningFourWeights cg
+{
+   source Example_Basic.cg
+   entry_point hardwareSkinningFourWeights_vp
+   profiles vs_1_1 arbvp1
+   includes_skeletal_animation true
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/gametools.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/gametools.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/gametools.material	(revision 1493)
@@ -0,0 +1,55 @@
+material gametoolsBlockCenter
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			//scene_blend alpha_blend
+			depth_check off
+
+			texture_unit
+			{
+				texture New_Ogre_Border_Center.png
+			}
+		}
+	}
+}
+
+material gametoolsVideoPage
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			//scene_blend alpha_blend
+			depth_check off
+
+			texture_unit
+			{
+				texture gametoolsVideoPage.png
+			}
+		}
+	}
+}
+
+material gametoolsDemoPage
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			//scene_blend alpha_blend
+			depth_check off
+
+			texture_unit
+			{
+				texture gametoolsDemoPage.png
+			}
+		}
+	}
+}
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Example-Water.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Example-Water.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Example-Water.material	(revision 1493)
@@ -0,0 +1,178 @@
+
+material Examples/Water0
+{
+	technique
+	{
+		pass
+		{
+			scene_blend colour_blend
+
+			texture_unit
+			{
+				texture Water01.jpg
+				env_map spherical
+				scroll_anim 0.01 0.01
+			}
+		}
+	}
+}
+material Examples/Water1
+{
+	technique
+	{
+		pass
+		{
+			scene_blend colour_blend
+
+			texture_unit
+			{
+				texture BeachStones.jpg
+				scale 0.25 0.25
+			}
+
+			texture_unit
+			{
+				texture Water01.jpg
+				env_map spherical
+				scroll_anim 0.01 0.01
+			}
+		}
+	}
+}
+material Examples/Water2
+{
+	technique
+	{
+		pass
+		{
+			scene_blend colour_blend
+
+			texture_unit
+			{
+				texture Water01.jpg
+				scroll_anim 0.01 0.01
+			}
+		}
+	}
+}
+material Examples/Water3
+{
+	technique
+	{
+		pass
+		{
+			scene_blend colour_blend
+
+			texture_unit
+			{
+				texture Water02.jpg
+				env_map spherical
+				scroll_anim 0.01 0.01
+				rotate_anim 0.03
+			}
+		}
+	}
+}
+material Examples/Water4
+{
+	technique
+	{
+		pass
+		{
+			cull_hardware none
+			cull_software none
+
+			texture_unit
+			{
+				texture Water02.jpg
+				env_map spherical
+				scroll_anim 0.01 0.01
+			}
+		}
+	}
+}
+material Examples/Water5
+{
+	technique
+	{
+		pass
+		{
+			cull_hardware none
+			cull_software none
+
+			texture_unit
+			{
+				texture BeachStones.jpg
+				scale 0.25 0.25
+			}
+
+			texture_unit
+			{
+				texture Water01.jpg
+				env_map spherical
+				scroll_anim 0.01 0.01
+			}
+		}
+	}
+}
+material Examples/Water6
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+
+			texture_unit
+			{
+				cubic_texture cubescene.jpg combinedUVW
+				tex_address_mode clamp
+				env_map cubic_reflection
+			}
+		}
+	}
+}
+material Examples/Water7
+{
+	technique
+	{
+		pass
+		{
+			cull_hardware none
+			cull_software none
+
+			texture_unit
+			{
+				texture BeachStones.jpg
+				scale 0.25 0.25
+			}
+
+			texture_unit
+			{
+				cubic_texture cubescene.jpg combinedUVW
+				tex_address_mode clamp
+				env_map cubic_reflection
+			}
+		}
+	}
+}
+material Examples/Water8
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			scene_blend add
+			cull_hardware none
+			cull_software none
+
+			texture_unit
+			{
+				cubic_texture cubescene.jpg combinedUVW
+				tex_address_mode clamp
+				env_map cubic_reflection
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Example.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Example.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Example.material	(revision 1493)
@@ -0,0 +1,635 @@
+
+material Examples/EnvMappedRustySteel
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture RustySteel.jpg
+			}
+
+			texture_unit
+			{
+				texture spheremap.png
+				colour_op_ex add src_texture src_current
+				colour_op_multipass_fallback one one
+				env_map spherical
+			}
+		}
+	}
+}
+material Examples/OgreLogo
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.8 0.8 0.8
+
+			texture_unit
+			{
+				texture ogrelogo.png
+			}
+		}
+	}
+}
+material Examples/DarkMaterial
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.1 0.1 0.1
+
+			texture_unit
+			{
+				texture BeachStones.jpg
+			}
+		}
+	}
+}
+material Examples/SpaceSkyBox
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+
+			texture_unit
+			{
+				cubic_texture stevecube.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+material Examples/SceneSkyBox1
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+
+			texture_unit
+			{
+				cubic_texture cubemap_fr.jpg cubemap_bk.jpg cubemap_lf.jpg cubemap_rt.jpg cubemap_up.jpg cubemap_dn.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+material Examples/SceneCubeMap1
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+
+			texture_unit
+			{
+				cubic_texture cubemap.jpg combinedUVW
+				tex_address_mode clamp
+				env_map cubic_reflection
+			}
+		}
+	}
+}
+material Examples/SceneSkyBox2
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+
+			texture_unit
+			{
+				cubic_texture cubescene_fr.jpg cubescene_bk.jpg cubescene_lf.jpg cubescene_rt.jpg cubescene_up.jpg cubescene_dn.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+material Examples/SceneCubeMap2
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+
+			texture_unit
+			{
+				cubic_texture cubescene.jpg combinedUVW
+				tex_address_mode clamp
+				env_map cubic_reflection
+			}
+		}
+	}
+}
+
+material Examples/CloudyNoonSkyBox
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+
+			texture_unit
+			{
+				cubic_texture cloudy_noon.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+
+material Examples/StormySkyBox
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+
+			texture_unit
+			{
+				cubic_texture stormy.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+
+material Examples/MorningSkyBox
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+
+			texture_unit
+			{
+				cubic_texture morning.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+
+material Examples/EveningSkyBox
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+
+			texture_unit
+			{
+				cubic_texture evening.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+
+material Examples/CloudySky
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+
+			texture_unit
+			{
+				texture clouds.jpg
+				scroll_anim 0.15 0
+			}
+		}
+	}
+}
+material Examples/RustySteel
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture RustySteel.jpg
+			}
+		}
+	}
+}
+material Examples/Chrome
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture Chrome.jpg
+				env_map spherical
+			}
+		}
+	}
+}
+material Examples/SpaceSkyPlane
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+			fog_override true none
+
+			texture_unit
+			{
+				texture spacesky.jpg
+			}
+		}
+	}
+}
+material Examples/TextureEffect1
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.75 0.75 0.75
+			cull_hardware none
+			cull_software none
+
+			texture_unit
+			{
+				texture BumpyMetal.jpg
+				rotate_anim 0.2
+				wave_xform scale_x sine 1 0.1 0 5
+				wave_xform scale_y sine 0.5 0.2 0.5 3
+			}
+		}
+	}
+}
+material Examples/TextureEffect2
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture Water02.jpg
+				scroll_anim 0.5 0
+			}
+		}
+	}
+}
+material Examples/TextureEffect3
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.7 0.7 0.7
+			cull_hardware none
+			cull_software none
+
+			texture_unit
+			{
+				texture Water01.jpg
+				scroll_anim -0.25 0.1
+			}
+
+			texture_unit
+			{
+				texture Water01.jpg
+				colour_op_ex add src_texture src_current
+				colour_op_multipass_fallback one one
+				scroll_anim -0.1 0.25
+			}
+		}
+	}
+}
+material Examples/TextureEffect4
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.3 0.3 0.3
+			scene_blend colour_blend
+			cull_hardware none
+			cull_software none
+
+			texture_unit
+			{
+				texture Water02.jpg
+				scroll_anim 0.01 0.01
+			}
+		}
+	}
+}
+material Examples/BumpyMetal
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.75 0.75 0.75
+			cull_hardware none
+			cull_software none
+
+			texture_unit
+			{
+				texture BumpyMetal.jpg
+			}
+		}
+	}
+}
+material Examples/TransparentTest
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.2 0.2 0.2
+			scene_blend add
+			depth_write off
+
+			texture_unit
+			{
+				texture Water01.jpg
+				scroll_anim 0.25 0
+			}
+
+			texture_unit
+			{
+				texture Water01.jpg
+				wave_xform scroll_y sine 0 0.1 0 0.5
+			}
+		}
+	}
+}
+material Examples/Flare
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			scene_blend add
+			depth_write off
+
+			texture_unit
+			{
+				texture flare.png
+			}
+		}
+	}
+}
+material Examples/Flare2
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			scene_blend add
+			depth_write off
+
+			texture_unit
+			{
+				texture flaretrail.png
+			}
+		}
+	}
+}
+
+material Examples/Droplet
+{
+	technique
+	{
+		pass
+		{
+			scene_blend colour_blend
+			depth_write off
+
+			texture_unit
+			{
+				texture basic_droplet.png
+			}
+		}
+	}
+}
+material Examples/Hilite/Yellow
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture dkyellow.png
+			}
+		}
+	}
+}
+material Examples/Rocky
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.2 0.2 0.2
+
+			texture_unit
+			{
+				texture egyptrockyfull.jpg
+			}
+		}
+	}
+}
+material Examples/10PointBlock
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture 10points.png
+			}
+		}
+	}
+}
+material Material__25
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture texmap2.jpg
+			}
+		}
+	}
+}
+material 2 - Default
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture MtlPlat2.jpg
+			}
+		}
+	}
+}
+material Material #8
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture BODY.jpg
+			}
+		}
+	}
+}
+material Material #3
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture HEAD4.jpg
+			}
+		}
+	}
+}
+material Material #9
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture LEGS.jpg
+			}
+		}
+	}
+}
+
+material Examples/Fish
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture steelhead.png
+			}
+		}
+	}
+}
+material Examples/Ninja
+{
+	technique
+	{
+		pass
+		{
+		
+			texture_unit
+			{
+				texture nskingr.jpg
+			}
+		}
+	}
+}
+
+material Examples/Robot
+{
+	// Hardware skinning technique
+	technique
+	{
+		pass
+		{
+			vertex_program_ref Ogre/HardwareSkinningOneWeight
+			{
+				param_named_auto worldMatrix3x4Array[0] world_matrix_array_3x4
+				param_named_auto viewProjectionMatrix viewproj_matrix
+				param_named_auto lightPos[0] light_position 0
+				param_named_auto lightPos[1] light_position 1
+				param_named_auto lightDiffuseColour[0] light_diffuse_colour 0
+				param_named_auto lightDiffuseColour[1] light_diffuse_colour 1
+				param_named_auto ambient ambient_light_colour
+			
+			}
+			// alternate shadow caster program
+			shadow_caster_vertex_program_ref Ogre/HardwareSkinningOneWeightShadowCaster
+			{
+				param_named_auto worldMatrix3x4Array[0] world_matrix_array_3x4
+				param_named_auto viewProjectionMatrix viewproj_matrix
+				param_named_auto ambient ambient_light_colour
+			
+			}
+
+			texture_unit
+			{
+				texture r2skin.jpg
+			}
+		}
+	}
+
+	// Software blending technique
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture r2skin.jpg
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/grass.material.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/grass.material.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/grass.material.bak	(revision 1493)
@@ -0,0 +1,75 @@
+
+material Examples/GrassFloor
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture grass2.tga
+				scale 0.5 0.5
+			}
+		}
+	}
+}
+
+material Examples/GrassBlades
+{
+	lod_distances 800
+
+	technique
+    {
+		lod_index 0
+        pass
+        {
+			alpha_rejection greater 150 
+			scene_blend alpha_blend
+			depth_write off
+		    cull_hardware none
+            cull_software none
+
+            texture_unit
+            {  
+				texture little-grass.tga
+				//filtering trilinear
+				filtering none
+            }
+        }
+    } 
+	
+	
+	technique
+    {
+		lod_index 1
+        pass
+        {
+			alpha_rejection greater 150 
+			scene_blend alpha_blend
+			depth_write off
+		    cull_hardware none
+            cull_software none
+
+            texture_unit
+            {  
+				texture little-grass.tga
+				filtering none
+            }
+        }
+    } 
+}
+
+material Examples/Rockwall
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture rockwall.tga
+			}
+		}
+	}
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Ogre.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Ogre.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Ogre.material	(revision 1493)
@@ -0,0 +1,119 @@
+
+material Ogre/Earring
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.5 0.5 0
+			diffuse 1 1 0
+
+			texture_unit
+			{
+				texture spheremap.png
+				colour_op_ex add src_texture src_current
+				colour_op_multipass_fallback one one
+				env_map spherical
+			}
+		}
+	}
+}
+material Ogre/Skin
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.7 0.7 0.7
+			cull_hardware none
+
+			texture_unit
+			{
+				texture GreenSkin.jpg
+				tex_address_mode mirror
+			}
+		}
+	}
+}
+material Ogre/Tusks
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.5 0.5 0.4
+			diffuse 1 1 0.8
+
+			texture_unit
+			{
+				texture dirt01.jpg
+				colour_op_ex add src_texture src_current
+				colour_op_multipass_fallback one one
+			}
+		}
+	}
+}
+material Ogre/Eyes
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture WeirdEye.png
+			}
+		}
+	}
+}
+material Cursor/default
+{
+	technique
+	{
+		pass
+		{
+			scene_blend alpha_blend
+
+			texture_unit
+			{
+				texture cursor.png
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+material Core/StatsBlockBorder/Down
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			scene_blend alpha_blend
+			depth_check off
+
+			texture_unit
+			{
+				texture ogreborder.png
+			}
+		}
+	}
+}
+material Core/StatsBlockBorder/Up
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			scene_blend alpha_blend
+			depth_check off
+
+			texture_unit
+			{
+				texture ogreborderUp.png
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/RZR-002.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/RZR-002.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/RZR-002.material	(revision 1493)
@@ -0,0 +1,15 @@
+
+material RZR-002
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture RZR-002.png
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/smoke.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/smoke.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/smoke.material	(revision 1493)
@@ -0,0 +1,19 @@
+
+material Examples/Smoke
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			scene_blend alpha_blend
+			depth_write off
+
+			texture_unit
+			{
+				texture smoke.png
+				tex_address_mode clamp
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/grass.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/grass.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/grass.material	(revision 1493)
@@ -0,0 +1,73 @@
+
+material Examples/GrassFloor
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture grass2.tga
+				scale 0.5 0.5
+			}
+		}
+	}
+}
+
+material Examples/GrassBlades
+{
+	lod_distances 800
+
+	technique
+    {
+		lod_index 0
+        pass
+        {
+			alpha_rejection greater 150 
+			scene_blend alpha_blend
+		    cull_hardware none
+            cull_software none
+
+            texture_unit
+            {  
+				texture little-grass.tga
+				//filtering trilinear
+				filtering none
+            }
+        }
+    } 
+	
+	
+	technique
+    {
+		lod_index 1
+        pass
+        {
+			alpha_rejection greater 150 
+			scene_blend alpha_blend
+		    cull_hardware none
+            cull_software none
+
+            texture_unit
+            {  
+				texture little-grass.tga
+				filtering none
+            }
+        }
+    } 
+}
+
+material Examples/Rockwall
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture rockwall.tga
+			}
+		}
+	}
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Examples-Advanced.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Examples-Advanced.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/scripts/Examples-Advanced.material	(revision 1493)
@@ -0,0 +1,1131 @@
+// -------------------------------
+// Cel Shading Section
+// -------------------------------
+vertex_program Ogre/CelShadingVP cg
+{
+	source Example_CelShading.cg
+	entry_point main_vp
+	profiles vs_1_1 arbvp1
+
+	default_params
+	{
+		param_named_auto lightPosition light_position_object_space 0
+		param_named_auto eyePosition camera_position_object_space
+		param_named_auto worldViewProj worldviewproj_matrix
+		param_named shininess float 10 
+	}
+}
+
+fragment_program Ogre/CelShadingFP cg
+{
+	source Example_CelShading.cg
+	entry_point main_fp
+	profiles ps_1_1 arbfp1 fp20
+}
+
+
+material Examples/CelShading
+{
+	technique
+	{
+		pass
+		{
+			vertex_program_ref Ogre/CelShadingVP
+			{
+				// map shininess from custom renderable param 1
+				param_named_auto shininess custom 1
+			}
+			fragment_program_ref Ogre/CelShadingFP
+			{
+				// map diffuse from custom renderable param 2
+				param_named_auto diffuse custom 2
+				// map specular from custom renderable param 2
+				param_named_auto specular custom 3
+			}
+			texture_unit
+			{
+				texture cel_shading_diffuse.png 1d
+				tex_address_mode clamp
+				filtering none
+			}
+			texture_unit
+			{
+				texture cel_shading_specular.png 1d
+				tex_address_mode clamp
+				filtering none
+				tex_coord_set 1
+			}
+			texture_unit
+			{
+				texture cel_shading_edge.png 1d
+				tex_address_mode clamp
+				filtering none
+				tex_coord_set 2
+			}
+		}
+	}
+	
+}
+
+
+
+//------------------------
+// Bump mapping section
+//------------------------
+
+// Bump map vertex program, support for this is required
+vertex_program Examples/BumpMapVP cg
+{
+	source Example_BumpMapping.cg
+	entry_point main_vp
+	profiles vs_1_1 arbvp1
+}
+
+// Bump map fragment program, support for this is optional
+fragment_program Examples/BumpMapFP cg
+{
+	source Example_BumpMapping.cg
+	entry_point main_fp
+	profiles ps_1_1 arbfp1 fp20
+}
+
+// Bump map with specular vertex program, support for this is required
+vertex_program Examples/BumpMapVPSpecular cg
+{
+	source Example_BumpMapping.cg
+	entry_point specular_vp
+	profiles vs_1_1 arbvp1
+}
+
+// Bump map fragment program, support for this is optional
+fragment_program Examples/BumpMapFPSpecular cg
+{
+	source Example_BumpMapping.cg
+	entry_point specular_fp
+	profiles ps_1_1 arbfp1 fp20
+}
+
+// Single light material, less passes (one pass on a 4-unit card)
+material Examples/BumpMapping/SingleLight
+{
+	// Preferred technique, uses vertex and fragment programs
+	// to support a single coloured light
+	technique
+	{
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVP
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+
+			// Fragment program
+			fragment_program_ref Examples/BumpMapFP
+			{
+				param_named_auto lightDiffuse light_diffuse_colour 0 
+			}
+			
+			// Base bump map
+			texture_unit
+			{
+				texture NMBumpsOut.png
+				colour_op replace
+			}
+			// Normalisation cube map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+			}
+			// Decal
+			texture_unit
+			{
+				texture RustySteel.jpg
+			}
+		}
+	}
+	// Fallback technique, uses vertex program but only fixed-function
+	// fragment shading, which does not support coloured light
+	technique
+	{
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVP
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+
+			// Base bump map
+			texture_unit
+			{
+				texture NMBumpsOut.png
+				colour_op replace
+			}
+			// Normalisation cube map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+				colour_op_ex dotproduct src_texture src_current
+				colour_op_multipass_fallback dest_colour zero
+			}
+			// Decal
+			texture_unit
+			{
+				texture RustySteel.jpg
+			}
+		}
+	}
+}
+
+// Any number of lights, diffuse
+material Examples/BumpMapping/MultiLight
+{
+
+	// This is the preferred technique which uses both vertex and
+	// fragment programs, supports coloured lights
+	technique
+	{
+		// Base ambient pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 1 1 1
+			diffuse 0 0 0 
+			specular 0 0 0 0 
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named_auto ambient ambient_light_colour
+			}
+			
+		}
+		// Now do the lighting pass
+		// NB we don't do decal texture here because this is repeated per light
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			
+			// do this for each light
+			iteration once_per_light
+
+		
+			scene_blend add
+
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVP
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+
+			// Fragment program
+			fragment_program_ref Examples/BumpMapFP
+			{
+				param_named_auto lightDiffuse light_diffuse_colour 0 
+			}
+			
+			// Base bump map
+			texture_unit
+			{
+				texture NMBumpsOut.png
+				colour_op replace
+			}
+			// Normalisation cube map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+			}
+		}
+		
+		// Decal pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			lighting off
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named ambient float4 1 1 1 1
+			}
+			scene_blend dest_colour zero
+			texture_unit
+			{
+				texture RustedMetal.jpg 
+			}
+			
+		}
+	}
+
+	// This is the fallback which cards which don't have fragment program 
+	// support will use
+	// Note that it still requires vertex program support
+	technique
+	{
+		// Base ambient pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 1 1 1
+			diffuse 0 0 0 
+			specular 0 0 0 0
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named_auto ambient ambient_light_colour
+			}
+			
+		}
+		// Now do the lighting pass
+		// NB we don't do decal texture here because this is repeated per light
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			// do this for each light
+			iteration once_per_light
+
+		
+			scene_blend add
+
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVP
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+			
+			// Base bump map
+			texture_unit
+			{
+				texture NMBumpsOut.png
+				colour_op replace
+			}
+			// Normalisation cube map, with dot product on bump map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+				colour_op_ex dotproduct src_texture src_current
+				colour_op_multipass_fallback dest_colour zero
+			}
+		}
+		
+		// Decal pass
+		pass
+		{
+			lighting off
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named ambient float4 1 1 1 1
+			}
+			scene_blend dest_colour zero
+			texture_unit
+			{
+				texture RustedMetal.jpg 
+			}
+			
+		}
+
+	}
+}
+
+// Any number of lights, diffuse and specular
+material Examples/BumpMapping/MultiLightSpecular
+{
+
+	// This is the preferred technique which uses both vertex and
+	// fragment programs, supports coloured lights
+	technique
+	{
+		// Base ambient pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 1 1 1
+			diffuse 0 0 0 
+			specular 0 0 0 0
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named_auto ambient ambient_light_colour
+			}
+			
+		}
+		// Now do the lighting pass
+		// NB we don't do decal texture here because this is repeated per light
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			// do this for each light
+			iteration once_per_light
+
+		
+			scene_blend add
+
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVPSpecular
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto eyePosition camera_position_object_space
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+
+			// Fragment program
+			fragment_program_ref Examples/BumpMapFPSpecular
+			{
+				param_named_auto lightDiffuse light_diffuse_colour 0 
+				param_named_auto lightSpecular light_specular_colour 0
+			}
+			
+			// Base bump map
+			texture_unit
+			{
+				texture NMBumpsOut.png
+				colour_op replace
+			}
+			// Normalisation cube map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+			}
+			// Normalisation cube map #2
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 2
+				tex_address_mode clamp
+			}
+		}
+		
+		// Decal pass
+		pass
+		{
+			lighting off
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named ambient float4 1 1 1 1
+			}
+			scene_blend dest_colour zero
+			texture_unit
+			{
+				texture RustedMetal.jpg 
+			}
+			
+		}
+	}
+
+	// This is the fallback which cards which don't have fragment program 
+	// support will use, NB does not support specular colour
+	// Note that it still requires vertex program support
+	technique
+	{
+		// Base ambient pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 1 1 1
+			diffuse 0 0 0 
+			specular 0 0 0 0
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named_auto ambient ambient_light_colour
+			}
+			
+		}
+		// Now do the lighting pass
+		// NB we don't do decal texture here because this is repeated per light
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			// do this for each light
+			iteration once_per_light
+
+		
+			scene_blend add
+
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVP
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+			
+			// Base bump map
+			texture_unit
+			{
+				texture NMBumpsOut.png
+				colour_op replace
+			}
+			// Normalisation cube map, with dot product on bump map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+				colour_op_ex dotproduct src_texture src_current
+				colour_op_multipass_fallback dest_colour zero
+			}
+		}
+		
+		// Decal pass
+		pass
+		{
+			lighting off
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named ambient float4 1 1 1 1
+			}
+			scene_blend dest_colour zero
+			texture_unit
+			{
+				texture RustedMetal.jpg 
+			}
+			
+		}
+
+	}
+}
+
+//---------------------------
+// Projective texture section
+//---------------------------
+
+
+vertex_program Examples/TexProjectionVP cg
+{
+	source Example_Projection.cg
+	entry_point generalPurposeProjection_vp
+	profiles vs_1_1 arbvp1
+}
+
+fragment_program Examples/TexProjectionFP cg
+{
+	source Example_Projection.cg
+	entry_point generalPurposeProjection_fp
+	// sorry, ps_1_1 can't do this, fp20 can though
+	profiles ps_2_0 arbfp1 fp20
+}
+
+material Examples/GeneralTexProjection
+{
+	technique
+	{
+		pass 
+		{
+			
+			vertex_program_ref Examples/TexProjectionVP
+			{
+				param_named_auto worldViewProjMatrix worldviewproj_matrix
+				param_named_auto worldMatrix world_matrix
+				// You'll need to update the tex projection, I suggest using
+				// the Frustum class
+				//param_named_auto texWorldViewProj worldviewproj_matrix
+			}
+			fragment_program_ref Examples/TexProjectionFP
+			{
+				// no params
+			}
+			texture_unit
+			{
+				// Project the OGRE logo
+				texture ogrelogo.png
+				tex_address_mode clamp
+			}
+		}
+		
+			
+	}
+    
+}
+
+//----------------------------
+// Distortion effects
+//----------------------------
+
+vertex_program Examples/FresnelRefractReflectVP cg
+{
+	source Example_Fresnel.cg
+	entry_point main_vp
+	profiles vs_1_1 arbvp1
+}
+
+fragment_program Examples/FresnelRefractReflectFP cg
+{
+	source Example_Fresnel.cg
+	entry_point main_fp
+	// sorry, ps_1_1 and fp20 can't do this
+	profiles ps_2_0 arbfp1
+}
+
+fragment_program Examples/FresnelRefractReflectPS asm
+{
+	source Example_FresnelPS.asm
+	// sorry, only for ps_1_4 :)
+	syntax ps_1_4
+
+}
+
+material Examples/FresnelReflectionRefraction
+{
+	// ps_2_0 / arbfp1
+	technique
+	{
+		pass 
+		{
+			
+			vertex_program_ref Examples/FresnelRefractReflectVP
+			{
+				param_named_auto worldViewProjMatrix worldviewproj_matrix
+				param_named_auto eyePosition camera_position_object_space
+				param_named fresnelBias float -0.3 
+				param_named fresnelScale float 1.4 
+				param_named fresnelPower float 8  
+				param_named_auto timeVal time 0.05
+				param_named scroll float 1  
+				param_named scale float 4 
+				param_named noise float 1 
+				// scroll and noisePos will need updating per frame
+			}
+			fragment_program_ref Examples/FresnelRefractReflectFP
+			{
+				param_named distortionRange float 0.025 
+				param_named tintColour float4 0 0 0 1
+			}
+			// Noise
+			texture_unit
+			{
+				// Perlin noise volume
+				texture perlinvolume.dds 3d
+				// min / mag filtering, no mip
+				filtering linear linear none
+			}
+			// Reflection
+			texture_unit
+			{
+				// Will be filled in at runtime
+				texture Reflection
+				tex_address_mode clamp
+				// needed by ps.1.4
+				tex_coord_set 1
+			}
+			// Refraction
+			texture_unit
+			{
+				// Will be filled in at runtime
+				texture Refraction
+				tex_address_mode clamp
+				// needed by ps.1.4
+				tex_coord_set 2
+			}
+		}
+		
+			
+	}
+
+	// ATI 8500 +
+	technique
+	{
+		pass
+		{
+			vertex_program_ref Examples/FresnelRefractReflectVP
+			{
+				param_named_auto worldViewProjMatrix worldviewproj_matrix
+				param_named_auto eyePosition camera_position_object_space
+				param_named fresnelBias float -0.3
+				param_named fresnelScale float 1.4
+				param_named fresnelPower float 8
+				param_named_auto timeVal time 0.05
+				param_named scroll float 1 
+				param_named scale float 4 
+				param_named noise float 1
+				// scroll and noisePos will need updating per frame
+			}
+
+			// for ATI RADEON 8500 - 9200
+			fragment_program_ref Examples/FresnelRefractReflectPS
+			{
+				// distortionRange
+				param_indexed 0  float 0.025  
+				// tintColour
+				param_indexed 1  float4 0.05 0.12 0.15 1
+			}
+
+			// Noise
+			texture_unit
+			{
+				// Perlin noise volume
+				texture perlinvolume.dds 3d
+				// min / mag filtering, no mip
+				filtering linear linear none
+			}
+			// Reflection
+			texture_unit
+			{
+				// Will be filled in at runtime
+				texture Reflection
+				tex_address_mode clamp
+				// needed by ps.1.4
+				tex_coord_set 1
+			}
+			// Refraction
+			texture_unit
+			{
+				// Will be filled in at runtime
+				texture Refraction
+				tex_address_mode clamp
+				// needed by ps.1.4
+				tex_coord_set 2
+			}
+		}
+	}    
+}
+
+// Normal-mapped Athene statue
+material Examples/Athene/NormalMapped
+{
+
+	// This is the preferred technique which uses both vertex and
+	// fragment programs, supports coloured lights
+	technique
+	{
+		// Base ambient pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 1 1 1
+			diffuse 0 0 0 
+			specular 0 0 0 0 
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named_auto ambient ambient_light_colour
+			}
+			
+		}
+		// Now do the lighting pass
+		// NB we don't do decal texture here because this is repeated per light
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			
+			// do this for each light
+			iteration once_per_light
+
+		
+			scene_blend add
+
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVP
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+
+			// Fragment program
+			fragment_program_ref Examples/BumpMapFP
+			{
+				param_named_auto lightDiffuse light_diffuse_colour 0 
+			}
+			
+			// Base bump map
+			texture_unit
+			{
+				texture atheneNormalMap.png
+				colour_op replace
+			}
+			// Normalisation cube map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+			}
+		}
+		
+		// Decal pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			lighting off
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named ambient float4 1 1 1 1
+			}
+			scene_blend dest_colour zero
+			texture_unit
+			{
+				texture egyptrockyfull.jpg 
+			}
+			
+		}
+	}
+
+	// This is the fallback which cards which don't have fragment program 
+	// support will use
+	// Note that it still requires vertex program support
+	technique
+	{
+		// Base ambient pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 1 1 1
+			diffuse 0 0 0 
+			specular 0 0 0 0
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named_auto ambient ambient_light_colour
+			}
+			
+		}
+		// Now do the lighting pass
+		// NB we don't do decal texture here because this is repeated per light
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			// do this for each light
+			iteration once_per_light
+
+		
+			scene_blend add
+
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVP
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+			
+			// Base bump map
+			texture_unit
+			{
+				texture atheneNormalMap.png
+				colour_op replace
+			}
+			// Normalisation cube map, with dot product on bump map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+				colour_op_ex dotproduct src_texture src_current
+				colour_op_multipass_fallback dest_colour zero
+			}
+		}
+		
+		// Decal pass
+		pass
+		{
+			lighting off
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named ambient float4 1 1 1 1
+			}
+			scene_blend dest_colour zero
+			texture_unit
+			{
+				texture egyptrockyfull.jpg
+			}
+			
+		}
+
+	}
+}
+
+// Basic Athene statue
+material Examples/Athene/Basic
+{
+
+	technique
+	{
+		pass
+		{
+			ambient 0.3 0.3 0.3
+			diffuse 1.0 1.0 0.9
+
+			texture_unit
+			{
+				texture egyptrockyfull.jpg 
+			}
+			
+		}
+	}
+}
+
+
+// Any number of lights, diffuse and specular
+material Examples/Athene/NormalMappedSpecular
+{
+
+	// This is the preferred technique which uses both vertex and
+	// fragment programs, supports coloured lights
+	technique
+	{
+		// Base ambient pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 1 1 1
+			diffuse 0 0 0 
+			specular 0 0 0 0
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named_auto ambient ambient_light_colour
+			}
+			
+		}
+		// Now do the lighting pass
+		// NB we don't do decal texture here because this is repeated per light
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			// do this for each light
+			iteration once_per_light
+
+		
+			scene_blend add
+
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVPSpecular
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto eyePosition camera_position_object_space
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+
+			// Fragment program
+			fragment_program_ref Examples/BumpMapFPSpecular
+			{
+				param_named_auto lightDiffuse light_diffuse_colour 0 
+				param_named_auto lightSpecular light_specular_colour 0
+			}
+			
+			// Base bump map
+			texture_unit
+			{
+				texture atheneNormalMap.png
+				colour_op replace
+			}
+			// Normalisation cube map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+			}
+			// Normalisation cube map #2
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 2
+				tex_address_mode clamp
+			}
+		}
+		
+		// Decal pass
+		pass
+		{
+			lighting off
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named ambient float4 1 1 1 1
+			}
+			scene_blend dest_colour zero
+			texture_unit
+			{
+				texture egyptrockyfull.jpg 
+			}
+			
+		}
+	}
+
+	// This is the fallback which cards which don't have fragment program 
+	// support will use, NB does not support specular colour
+	// Note that it still requires vertex program support
+	technique
+	{
+		// Base ambient pass
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 1 1 1
+			diffuse 0 0 0 
+			specular 0 0 0 0
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named_auto ambient ambient_light_colour
+			}
+			
+		}
+		// Now do the lighting pass
+		// NB we don't do decal texture here because this is repeated per light
+		pass
+		{
+			// base colours, not needed for rendering, but as information
+			// to lighting pass categorisation routine
+			ambient 0 0 0 
+			// do this for each light
+			iteration once_per_light
+
+		
+			scene_blend add
+
+			// Vertex program reference
+			vertex_program_ref Examples/BumpMapVP
+			{
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto worldViewProj worldviewproj_matrix
+			}
+			
+			// Base bump map
+			texture_unit
+			{
+				texture atheneNormalMap.png
+				colour_op replace
+			}
+			// Normalisation cube map, with dot product on bump map
+			texture_unit
+			{
+				cubic_texture nm.png combinedUVW
+				tex_coord_set 1
+				tex_address_mode clamp
+				colour_op_ex dotproduct src_texture src_current
+				colour_op_multipass_fallback dest_colour zero
+			}
+		}
+		
+		// Decal pass
+		pass
+		{
+			lighting off
+			// Really basic vertex program
+			// NB we don't use fixed function here because GL does not like
+			// mixing fixed function and vertex programs, depth fighting can
+			// be an issue
+			vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTexture
+			{
+				param_named_auto worldViewProj worldviewproj_matrix
+				param_named ambient float4 1 1 1 1
+			}
+			scene_blend dest_colour zero
+			texture_unit
+			{
+				texture egyptrockyfull.jpg 
+			}
+			
+		}
+
+	}
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_Projection.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_Projection.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_Projection.cg	(revision 1493)
@@ -0,0 +1,28 @@
+
+void generalPurposeProjection_vp(
+		float4 pos			: POSITION,
+		
+		out float4 oPos		: POSITION,
+		out float4 texCoord : TEXCOORD0,
+
+		uniform float4x4 worldViewProjMatrix,
+		uniform float4x4 worldMatrix,
+		uniform float4x4 texViewProjMatrix)
+{
+	oPos = mul(worldViewProjMatrix, pos);
+	// multiply position by world matrix, then by projective view/proj
+	float4 newpos = mul(worldMatrix, pos);
+	texCoord = mul(texViewProjMatrix, newpos);
+	
+}
+
+void generalPurposeProjection_fp(
+		float4 texCoord		: TEXCOORD0,
+		out float4 col		: COLOR,
+		uniform sampler2D texMap)
+{
+	col = tex2Dproj(texMap, texCoord);
+
+}
+		
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/OffsetMapping_specular.asm
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/OffsetMapping_specular.asm	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/OffsetMapping_specular.asm	(revision 1493)
@@ -0,0 +1,44 @@
+// Pixel Shader for doing bump mapping with parallax plus diffuse and specular lighting by nfz 
+
+// uv               TEXCOORD0 
+// lightDir            TEXCOORD1 
+// eyeDir            TEXCOORD2 
+// half               TEXCOORD3 
+
+// lightDiffuse         c0 
+// lightSpecular      c1 
+// Parallax scale and bias c2 
+// normal/height map   texunit 0 - height map in alpha channel 
+// diffuse texture      texunit 1 
+
+ps.1.4 
+
+
+texld r0, t0               // get height 
+texcrd r2.xyz, t0            // get uv coordinates 
+texcrd r3.xyz, t2            // get eyedir vector 
+
+
+mad r0.xyz, r0.a, c2.x, c2.y   // displacement = height * scale + bias 
+mad r2.xyz, r3, r0, r2         // newtexcoord = eyedir * displacement + uv 
+
+phase 
+
+texld r0, r2.xyz            // get normal N using newtexcoord 
+texld r1, r2.xyz            // get diffuse texture using newtexcoord 
+texcrd r4.xyz, t1            // get lightdir vector 
+texcrd r5.xyz, t3            // get half angle vector 
+
+dp3_sat r5.rgb, r0_bx2, r5         // N dot H - spec calc 
+dp3_sat r4.rgb, r0_bx2, r4         // N dot L - diffuse calc 
++ mul r5.a, r5.r, r5.r 
+mul r0.rgb, r4, r1            // colour = diffusetex * N dot L 
++ mul r5.a, r5.a, r5.a 
+
+mul r5.rgb, r5.a, r5.a          
+mul r5.rgb, r5, r5          
+mul r5.rgb, r5, r5          
+mul r5.rgb, r5, c1            // specular = (N dot H)^32 * specularlight 
+
+mad r0.rgb, r0, c0, r5         // colour = diffusetex * (N dot L)* diffuselight + specular 
++ mov r0.a, c2.b 
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_Fresnel.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_Fresnel.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_Fresnel.cg	(revision 1493)
@@ -0,0 +1,73 @@
+// Vertex program for fresnel reflections / refractions
+void main_vp(
+		float4 pos			: POSITION,
+		float4 normal		: NORMAL,
+		float2 tex			: TEXCOORD0,
+		
+		out float4 oPos		: POSITION,
+		out float fresnel   : COLOR,
+		out float3 noiseCoord : TEXCOORD0,
+		out float4 projectionCoord : TEXCOORD1,
+
+		uniform float4x4 worldViewProjMatrix,
+		uniform float3 eyePosition, // object space
+		uniform float fresnelBias,
+		uniform float fresnelScale,
+		uniform float fresnelPower,
+		uniform float timeVal,
+		uniform float scale,  // the amount to scale the noise texture by
+		uniform float scroll, // the amount by which to scroll the noise
+		uniform float noise  // the noise perturb as a factor of the  time
+		)
+{
+	oPos = mul(worldViewProjMatrix, pos);
+	// Projective texture coordinates, adjust for mapping
+	float4x4 scalemat = float4x4(0.5,   0,   0, 0.5, 
+	                               0,-0.5,   0, 0.5,
+								   0,   0, 0.5, 0.5,
+								   0,   0,   0,   1);
+	projectionCoord = mul(scalemat, oPos);
+	// Noise map coords
+	noiseCoord.xy = (tex + (timeVal * scroll)) * scale;
+	noiseCoord.z = noise * timeVal;
+
+	// calc fresnel factor (reflection coefficient)
+	float3 eyeDir = normalize(pos.xyz - eyePosition);
+	fresnel = fresnelBias + fresnelScale * pow(1 + dot(eyeDir, normal), fresnelPower);
+	
+}
+
+// Fragment program for distorting a texture using a 3D noise texture
+void main_fp(
+		float fresnel				: COLOR,
+		float3 noiseCoord			: TEXCOORD0,
+		float4 projectionCoord		: TEXCOORD1,
+		
+		out float4 col		: COLOR,
+		
+		uniform float distortionRange,
+		uniform float4 tintColour,
+		uniform sampler3D noiseMap,
+		uniform sampler2D reflectMap,
+		uniform sampler2D refractMap
+		)
+{
+	// Randomly chosen offset for y noise sample
+	float3 yoffset = float3(0.31, 0.58, 0.23);
+	float2 distort;
+	// Sample the noise texture at 2 places
+	distort.x = tex3D(noiseMap, noiseCoord).x;
+	distort.y = tex3D(noiseMap, noiseCoord + yoffset).x;
+	// Scale the distortion from [0,1] to [-range,range]
+	distort = (distort * 2 - 1) * distortionRange;
+
+	// Do the tex projection manually so we can distort _after_
+	float2 final = projectionCoord.xy / projectionCoord.w;
+	final += distort;
+	
+	float4 reflectionColour = tex2D(reflectMap, final);
+	float4 refractionColour = tex2D(refractMap, final) + tintColour;
+	col = lerp(refractionColour, reflectionColour, fresnel);
+
+
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_BumpMapping.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_BumpMapping.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_BumpMapping.cg	(revision 1493)
@@ -0,0 +1,154 @@
+// General functions
+
+// Expand a range-compressed vector
+float3 expand(float3 v)
+{
+	return (v - 0.5) * 2;
+}
+
+
+/* Bump mapping vertex program
+   In this program, we want to calculate the tangent space light vector
+   on a per-vertex level which will get passed to the fragment program,
+   or to the fixed function dot3 operation, to produce the per-pixel
+   lighting effect. 
+*/
+void main_vp(float4 position	: POSITION,
+			 float3 normal		: NORMAL,
+			 float2 uv			: TEXCOORD0,
+			 float3 tangent     : TEXCOORD1,
+			 // outputs
+			 out float4 oPosition    : POSITION,
+			 out float2 oUv			 : TEXCOORD0,
+			 out float3 oTSLightDir	 : TEXCOORD1,
+			 // parameters
+			 uniform float4 lightPosition, // object space
+			 uniform float4x4 worldViewProj)
+{
+	// calculate output position
+	oPosition = mul(worldViewProj, position);
+
+	// pass the main uvs straight through unchanged
+	oUv = uv;
+
+	// calculate tangent space light vector
+	// Get object space light direction
+	float3 lightDir = normalize(lightPosition.xyz -  (position * lightPosition.w));
+
+	// Calculate the binormal (NB we assume both normal and tangent are
+	// already normalised)
+	// NB looks like nvidia cross params are BACKWARDS to what you'd expect
+	// this equates to NxT, not TxN
+	float3 binormal = cross(tangent, normal);
+	
+	// Form a rotation matrix out of the vectors
+	float3x3 rotation = float3x3(tangent, binormal, normal);
+	
+	// Transform the light vector according to this matrix
+	oTSLightDir = normalize(mul(rotation, lightDir));
+	
+	
+}
+
+void main_fp( float2 uv			: TEXCOORD0,
+			  float3 TSlightDir : TEXCOORD1,
+
+			  out float4 colour	: COLOR,
+
+			  uniform float4 lightDiffuse,
+			  uniform sampler2D   normalMap,
+			  uniform samplerCUBE normalCubeMap)
+{
+	// retrieve normalised light vector, expand from range-compressed
+	float3 lightVec = expand(texCUBE(normalCubeMap, TSlightDir).xyz);
+
+	// get bump map vector, again expand from range-compressed
+	float3 bumpVec = expand(tex2D(normalMap, uv).xyz);
+
+	// Calculate dot product
+	colour = lightDiffuse * dot(bumpVec, lightVec);
+	
+}
+
+/* Vertex program which includes specular component */
+void specular_vp(float4 position	: POSITION,
+			 	 float3 normal		: NORMAL,
+			 	 float2 uv			: TEXCOORD0,
+			 	 float3 tangent     : TEXCOORD1,
+			 	 // outputs
+			 	 out float4 oPosition    : POSITION,
+			 	 out float2 oUv			 : TEXCOORD0,
+			 	 out float3 oTSLightDir	 : TEXCOORD1,
+				 out float3 oTSHalfAngle : TEXCOORD2,
+			 	 // parameters
+				 uniform float4 lightPosition, // object space
+			 	 uniform float3 eyePosition,   // object space
+			 	 uniform float4x4 worldViewProj)
+{
+	// calculate output position
+	oPosition = mul(worldViewProj, position);
+
+	// pass the main uvs straight through unchanged
+	oUv = uv;
+
+	// calculate tangent space light vector
+	// Get object space light direction
+	float3 lightDir = normalize(lightPosition.xyz -  (position * lightPosition.w));
+
+	// Calculate the binormal (NB we assume both normal and tangent are
+	// already normalised)
+	// NB looks like nvidia cross params are BACKWARDS to what you'd expect
+	// this equates to NxT, not TxN
+	float3 binormal = cross(tangent, normal);
+	
+	// Form a rotation matrix out of the vectors
+	float3x3 rotation = float3x3(tangent, binormal, normal);
+	
+	// Transform the light vector according to this matrix
+	oTSLightDir = normalize(mul(rotation, lightDir));
+
+	// Calculate half-angle in tangent space
+	float3 eyeDir = eyePosition - position.xyz;
+	float3 halfAngle = normalize(eyeDir + lightDir);
+	oTSHalfAngle = mul(rotation, halfAngle);
+	
+	
+}
+
+/* Fragment program which supports specular component */
+void specular_fp( float2 uv			: TEXCOORD0,
+			  float3 TSlightDir : TEXCOORD1,
+			  float3 TShalfAngle: TEXCOORD2,
+
+			  out float4 colour	: COLOR,
+
+			  uniform float4 lightDiffuse,
+			  uniform float4 lightSpecular,
+			  uniform sampler2D   normalMap,
+			  uniform samplerCUBE normalCubeMap, 
+			  uniform samplerCUBE normalCubeMap2) // we need this second binding to be compatible with ps_1_1, ps_2_0 could reuse the other
+{
+	// retrieve normalised light vector, expand from range-compressed
+	float3 lightVec = expand(texCUBE(normalCubeMap, TSlightDir).xyz);
+
+	// retrieve half angle and normalise through cube map
+	float3 halfAngle = expand(texCUBE(normalCubeMap2, TShalfAngle).xyz);
+
+	// get bump map vector, again expand from range-compressed
+	float3 bumpVec = expand(tex2D(normalMap, uv).xyz);
+
+	// Pre-raise the specular exponent to the eight power
+	// Note we have no 'pow' function in basic fragment programs, if we were willing to accept compatibility
+	// with ps_2_0 / arbfp1 and above, we could have a variable shininess parameter
+	// This is equivalent to 
+	float specFactor = dot(bumpVec, halfAngle);
+	for (int i = 0; i < 3; ++i)
+		specFactor *= specFactor;
+	
+
+	// Calculate dot product for diffuse
+	colour = (lightDiffuse * saturate(dot(bumpVec, lightVec))) + 
+			(lightSpecular * specFactor);
+	
+}
+			 
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_Basic.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_Basic.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_Basic.cg	(revision 1493)
@@ -0,0 +1,140 @@
+/*
+  Basic ambient lighting vertex program
+*/
+void ambientOneTexture_vp(float4 position : POSITION,
+						  float2 uv		  : TEXCOORD0,
+						  
+						  out float4 oPosition : POSITION,
+						  out float2 oUv	   : TEXCOORD0,
+						  out float4 colour    : COLOR,
+
+						  uniform float4x4 worldViewProj,
+						  uniform float4 ambient)
+{
+	oPosition = mul(worldViewProj, position);
+	oUv = uv;
+	colour = ambient;
+}
+
+/*
+  Single-weight-per-vertex hardware skinning, 2 lights
+  The trouble with vertex programs is they're not general purpose, but
+  fixed function hardware skinning is very poorly supported
+*/
+void hardwareSkinningOneWeight_vp(
+	float4 position : POSITION,
+	float3 normal   : NORMAL,
+	float2 uv       : TEXCOORD0,
+	float  blendIdx : BLENDINDICES,
+	
+
+	out float4 oPosition : POSITION,
+	out float2 oUv       : TEXCOORD0,
+	out float4 colour           : COLOR,
+	// Support up to 24 bones of float3x4
+	// vs_1_1 only supports 96 params so more than this is not feasible
+	uniform float3x4   worldMatrix3x4Array[24],
+	uniform float4x4 viewProjectionMatrix,
+	uniform float4   lightPos[2],
+	uniform float4   lightDiffuseColour[2],
+	uniform float4   ambient)
+{
+	// transform by indexed matrix
+	float4 blendPos = float4(mul(worldMatrix3x4Array[blendIdx], position).xyz, 1.0);
+	// view / projection
+	oPosition = mul(viewProjectionMatrix, blendPos);
+	// transform normal
+	float3 norm = mul((float3x3)worldMatrix3x4Array[blendIdx], normal);
+	// Lighting - support point and directional
+	float3 lightDir0 = 	normalize(
+		lightPos[0].xyz -  (blendPos.xyz * lightPos[0].w));
+	float3 lightDir1 = 	normalize(
+		lightPos[1].xyz -  (blendPos.xyz * lightPos[1].w));
+
+	oUv = uv;
+	colour = ambient + 
+		(saturate(dot(lightDir0, norm)) * lightDiffuseColour[0]) + 
+		(saturate(dot(lightDir1, norm)) * lightDiffuseColour[1]);
+	
+}	
+
+/*
+  Single-weight-per-vertex hardware skinning, shadow-caster pass
+*/
+void hardwareSkinningOneWeightCaster_vp(
+	float4 position : POSITION,
+	float3 normal   : NORMAL,
+	float  blendIdx : BLENDINDICES,
+	
+
+	out float4 oPosition : POSITION,
+	out float4 colour    : COLOR,
+	// Support up to 24 bones of float3x4
+	// vs_1_1 only supports 96 params so more than this is not feasible
+	uniform float3x4   worldMatrix3x4Array[24],
+	uniform float4x4 viewProjectionMatrix,
+	uniform float4   ambient)
+{
+	// transform by indexed matrix
+	float4 blendPos = float4(mul(worldMatrix3x4Array[blendIdx], position).xyz, 1.0);
+	// view / projection
+	oPosition = mul(viewProjectionMatrix, blendPos);
+	
+	colour = ambient;
+	
+}	
+
+/*
+  Four-weight-per-vertex hardware skinning, 2 lights
+  The trouble with vertex programs is they're not general purpose, but
+  fixed function hardware skinning is very poorly supported
+*/
+void hardwareSkinningFourWeights_vp(
+	float4 position : POSITION,
+	float3 normal   : NORMAL,
+	float2 uv       : TEXCOORD0,
+	float4 blendIdx : BLENDINDICES,
+	float4 blendWgt : BLENDWEIGHT,
+	
+
+	out float4 oPosition : POSITION,
+	out float2 oUv       : TEXCOORD0,
+	out float4 colour           : COLOR,
+	// Support up to 24 bones of float3x4
+	// vs_1_1 only supports 96 params so more than this is not feasible
+	uniform float3x4   worldMatrix3x4Array[24],
+	uniform float4x4 viewProjectionMatrix,
+	uniform float4   lightPos[2],
+	uniform float4   lightDiffuseColour[2],
+	uniform float4   ambient)
+{
+	// transform by indexed matrix
+	float4 blendPos = float4(0,0,0,0);
+	int i;
+	for (i = 0; i < 4; ++i)
+	{
+		blendPos += float4(mul(worldMatrix3x4Array[blendIdx[i]], position).xyz, 1.0) * blendWgt[i];
+	}
+	// view / projection
+	oPosition = mul(viewProjectionMatrix, blendPos);
+	// transform normal
+	float3 norm = float3(0,0,0);
+	for (i = 0; i < 4; ++i)
+	{
+		norm += mul((float3x3)worldMatrix3x4Array[blendIdx[i]], normal) * 
+		blendWgt[i];
+	}
+	norm = normalize(norm);
+	// Lighting - support point and directional
+	float3 lightDir0 = 	normalize(
+		lightPos[0].xyz -  (blendPos.xyz * lightPos[0].w));
+	float3 lightDir1 = 	normalize(
+		lightPos[1].xyz -  (blendPos.xyz * lightPos[1].w));
+
+	
+	oUv = uv;
+	colour = ambient + 
+		(saturate(dot(lightDir0, norm)) * lightDiffuseColour[0]) + 
+		(saturate(dot(lightDir1, norm)) * lightDiffuseColour[1]);
+	
+}	
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_CelShading.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_CelShading.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_CelShading.cg	(revision 1493)
@@ -0,0 +1,63 @@
+
+/* Cel shading vertex program for single-pass rendering
+   In this program, we want to calculate the diffuse and specular
+   ramp components, and the edge factor (for doing simple outlining)
+   For the outlining to look good, we need a pretty well curved model.
+*/
+void main_vp(float4 position	: POSITION,
+			 float3 normal		: NORMAL,
+			 // outputs
+			 out float4 oPosition : POSITION,
+			 out float  diffuse		 : TEXCOORD0,
+			 out float  specular	 : TEXCOORD1,
+			 out float  edge		 : TEXCOORD2,
+			 // parameters
+			 uniform float3 lightPosition, // object space
+			 uniform float3 eyePosition,   // object space
+			 uniform float4  shininess,
+			 uniform float4x4 worldViewProj)
+{
+	// calculate output position
+	oPosition = mul(worldViewProj, position);
+
+	// calculate light vector
+	float3 N = normalize(normal);
+	float3 L = normalize(lightPosition - position.xyz);
+	
+	// Calculate diffuse component
+	diffuse = max(dot(N, L) , 0);
+
+	// Calculate specular component
+	float3 E = normalize(eyePosition - position.xyz);
+	float3 H = normalize(L + E);
+	specular = pow(max(dot(N, H), 0), shininess);
+	// Mask off specular if diffuse is 0
+	if (diffuse == 0) specular = 0;
+
+	// Edge detection, dot eye and normal vectors
+	edge = max(dot(N, E), 0);
+}
+
+void main_fp(float diffuseIn 	: TEXCOORD0,
+			 float specularIn	: TEXCOORD1,
+			 float edge		: TEXCOORD2,
+			 
+			 out float4 colour	: COLOR,
+			 
+			 uniform float4 diffuse,
+			 uniform float4 specular,
+			 
+			 uniform sampler1D diffuseRamp,
+			 uniform sampler1D specularRamp,
+			 uniform sampler1D edgeRamp)
+{
+	// Step functions from textures
+	diffuseIn = tex1D(diffuseRamp, diffuseIn).x;
+	specularIn = tex1D(specularRamp, specularIn).x;
+	edge = tex1D(edgeRamp, edge).x;
+
+	colour = edge * ((diffuse * diffuseIn) + 
+					(specular * specularIn));
+}
+			 
+			 
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Grass.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Grass.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Grass.cg	(revision 1493)
@@ -0,0 +1,30 @@
+// Vertex program to wave some grass about
+// Simplistic, assumes base of the grass at 0
+void grass_vp(float4 position : POSITION,
+			  float3 normal   : NORMAL,
+			  float2 uv		  : TEXCOORD0,
+			  out float4 oPosition : POSITION,
+			  out float2 oUv	   : TEXCOORD0,
+			  out float4 colour    : COLOR,
+
+			  uniform float4x4 worldViewProj,
+			  uniform float4 ambient,
+			  uniform float4 objSpaceLight,
+			  uniform float4 lightColour,
+			  uniform float4 offset)
+{
+	float4 mypos = position;
+	//offset = float4(0.5, 0, 0, 0);
+	mypos = mypos + offset * mypos.yyyy;
+	oPosition = mul(worldViewProj, mypos);
+
+	oUv = uv;
+	// get vertex light direction (support directional and point)
+	float3 light = normalize(
+		objSpaceLight.xyz -  (position.xyz * objSpaceLight.w));
+	float diffuseFactor = max(dot(normal, light), 0);
+	
+	
+	colour = ambient + diffuseFactor * lightColour;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/OffsetMapping.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/OffsetMapping.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/OffsetMapping.cg	(revision 1493)
@@ -0,0 +1,95 @@
+/* Bump mapping with Parallax offset vertex program 
+   In this program, we want to calculate the tangent space light end eye vectors 
+   which will get passed to the fragment program to produce the per-pixel bump map 
+   with parallax offset effect. 
+*/ 
+
+/* Vertex program that moves light and eye vectors into texture tangent space at vertex */ 
+
+void main_vp(float4 position   : POSITION, 
+              float3 normal      : NORMAL, 
+              float2 uv         : TEXCOORD0, 
+              float3 tangent     : TEXCOORD1, 
+              // outputs 
+              out float4 oPosition    : POSITION, 
+              out float2 oUv          : TEXCOORD0, 
+              out float3 oLightDir    : TEXCOORD1, // tangent space 
+             out float3 oEyeDir       : TEXCOORD2, // tangent space 
+             out float3 oHalfAngle    : TEXCOORD3, // 
+              // parameters 
+              uniform float4 lightPosition, // object space 
+              uniform float3 eyePosition,   // object space 
+              uniform float4x4 worldViewProj) 
+{  
+   // calculate output position 
+   oPosition = mul(worldViewProj, position); 
+
+   // pass the main uvs straight through unchanged 
+   oUv = uv; 
+
+   // calculate tangent space light vector 
+   // Get object space light direction 
+   float3 lightDir = normalize(lightPosition.xyz -  (position * lightPosition.w));
+   float3 eyeDir = eyePosition - position.xyz; 
+    
+   // Calculate the binormal (NB we assume both normal and tangent are 
+   // already normalised) 
+   // NB looks like nvidia cross params are BACKWARDS to what you'd expect 
+   // this equates to NxT, not TxN 
+   float3 binormal = cross(tangent, normal); 
+    
+   // Form a rotation matrix out of the vectors 
+   float3x3 rotation = float3x3(tangent, binormal, normal); 
+    
+   // Transform the light vector according to this matrix 
+   lightDir = normalize(mul(rotation, lightDir)); 
+   eyeDir = normalize(mul(rotation, eyeDir)); 
+
+   oLightDir = lightDir; 
+   oEyeDir = eyeDir; 
+   oHalfAngle = normalize(eyeDir + lightDir); 
+}
+
+// General functions
+
+// Expand a range-compressed vector
+float3 expand(float3 v)
+{
+	return (v - 0.5) * 2;
+}
+
+void main_fp(float2 uv : TEXCOORD0,
+	float3 lightDir : TEXCOORD1,
+	float3 eyeDir : TEXCOORD2,
+	float3 halfAngle : TEXCOORD3,
+	uniform float3 lightDiffuse,
+	uniform float3 lightSpecular,
+	uniform float4 scaleBias,
+	uniform sampler2D normalHeightMap,
+	uniform sampler2D diffuseMap,
+	out float4 oColor : COLOR)
+{
+	// get the height using the tex coords
+	float height = tex2D(normalHeightMap, uv).a;
+
+	// scale and bias factors	
+	float scale = scaleBias.x;
+	float bias = scaleBias.y;
+
+	// calculate displacement	
+	float displacement = (height * scale) + bias;
+	
+	float3 uv2 = float3(uv, 1);
+	
+	// calculate the new tex coord to use for normal and diffuse
+	float2 newTexCoord = ((eyeDir * displacement) + uv2).xy;
+	
+	// get the new normal and diffuse values
+	float3 normal = expand(tex2D(normalHeightMap, newTexCoord).xyz);
+	float3 diffuse = tex2D(diffuseMap, newTexCoord).xyz;
+	
+	float3 specular = pow(saturate(dot(normal, halfAngle)), 32) * lightSpecular;
+	float3 col = diffuse * saturate(dot(normal, lightDir)) * lightDiffuse + specular;
+		
+	oColor = float4(col, 1);
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_FresnelPS.asm
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_FresnelPS.asm	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/materials/programs/Example_FresnelPS.asm	(revision 1493)
@@ -0,0 +1,72 @@
+ps.1.4
+  // conversion from Cg generated ARB_fragment_program to ps.1.4 by NFZ
+  // command line args: -profile arbfp1 -entry main_fp
+  // program main_fp
+  // c0 : distortionRange
+  // c1 : tintColour
+  // testure 0 : noiseMap
+  // texture 1 : reflectMap
+  // texture 2 : refractMap
+  // v0.x : fresnel 
+  // t0.xyz : noiseCoord
+  // t1.xyw : projectionCoord 
+
+def c2, 2, 1, 0, 0
+
+  // Cg:	distort.x = tex3D(noiseMap, noiseCoord).x;
+  // arbfp1:	TEX R0.x, fragment.texcoord[0], texture[0], 3D;
+  // sample noise map using noiseCoord in TEX unit 0 
+
+texld r0, t0.xyz
+
+  // get projected texture coordinates from TEX coord 1
+  // will be used in phase 2
+
+texcrd r1.xy, t1_dw.xyw
+mov r1.z, c2.y
+
+  // Cg:	distort.y = tex3D(noiseMap, noiseCoord + yoffset).x;
+  // arbfp1:	ADD R1.xyz, fragment.texcoord[0], c1;
+  // arbfp1:	TEX R1.x, R1, texture[0], 3D;
+  // arbfp1:	MOV R0.y, R1.x;
+
+  // Cg:	distort = (distort * 2 - 1) * distortionRange;
+  // arbfp1:	MAD R0.xy, R0, c0.x, -c0.y;
+  // arbfp1:	MUL R0.xy, R0, u0.x;
+  // (distort * 2 - 1) same as 2*(distort -.5) so use _bx2
+
+
+  // Cg:	final = projectionCoord.xy / projectionCoord.w;
+  // Cg:	final += distort;
+  // arbfp1:	RCP R0.w, fragment.texcoord[1].w;
+  // arbfp1:	MAD R0.xy, fragment.texcoord[1], R0.w, R0;
+  // 	final = (distort *  projectionCoord.w) + projectionCoord.xy
+  // for ps.1.4 have to re-arrange things a bit to perturb projected texture coordinates
+
+mad r0.xyz, r0_bx2, c0.x, r1
+
+phase
+
+  // do dependant texture reads
+  // Cg:	reflectionColour = tex2D(reflectMap, final);
+  // arbfp1:	TEX R0, R0, texture[1], 2D;
+  // sampe reflectMap using dependant read : texunit 1 
+
+texld r1, r0.xyz
+
+  // Cg:	refractionColour = tex2D(refractMap, final) + tintColour;
+  // arbfp1:	TEX R1, R0, texture[2], 2D;
+  // sample refractMap : texunit 2 
+
+texld r2, r0.xyz
+
+  // adding tintColour that is in global c1
+  // arbfp1:	ADD R1, R1, u1;
+
+add r2, r2, c1
+
+  // Cg:	col = lerp(refractionColour, reflectionColour, fresnel);
+  // arbfp1:	ADD R0, R0, -R1;
+  // arbfp1:	MAD result.color, fragment.color.primary.x, R0, R1;
+
+lrp r0, v0.x, r1, r2
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/particle/smoke.particle
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/particle/smoke.particle	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/particle/smoke.particle	(revision 1493)
@@ -0,0 +1,42 @@
+// Example particle systems
+
+// smoke
+Examples/Smoke
+{
+    	material        	Examples/Smoke
+    	particle_width  	55
+    	particle_height 	55
+    	cull_each       	true
+    	quota           	500
+    	billboard_type  	point
+    
+    	// Area emitter
+    	emitter Point
+    	{
+		angle               		11
+        	emission_rate       		15
+        	time_to_live        		4
+        	direction           		0 1 0
+        	velocity_min        		150
+        	velocity_max        		240    	
+	}
+
+	affector ColourImage
+	{
+		image		smokecolors.png
+	}
+
+   	affector Rotator
+   	{
+        	rotation_range_start  		0
+        	rotation_range_end   	 	360
+        	rotation_speed_range_start  	-60
+        	rotation_speed_range_end    	200
+   	}
+
+   	affector Scaler
+   	{
+       	rate 	100
+   	}
+
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/particle/Example-Water.particle
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/particle/Example-Water.particle	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/particle/Example-Water.particle	(revision 1493)
@@ -0,0 +1,35 @@
+Examples/Water/Rain
+{
+    material        Examples/Droplet
+    particle_width  100
+    particle_height 300
+    cull_each       true
+    quota           100
+    // Make common direction straight down (faster than self oriented)
+    billboard_type  oriented_common
+    common_direction 0 -1 0
+    
+    // Area emitter
+    emitter Box
+    {
+        angle           0
+        emission_rate   20
+        time_to_live    5
+        direction       0 -1 0
+        velocity    	1000
+        colour_range_start  0.3 1 0.3
+        colour_range_end    0.7 1 0.7
+        width           3000
+        height          3000
+        depth           0
+    }
+
+    // Gravity
+    affector LinearForce
+    {
+        force_vector      0 -1000 0
+        force_application add
+    }
+
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/particle/Example.particle
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/particle/Example.particle	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/particle/Example.particle	(revision 1493)
@@ -0,0 +1,183 @@
+// Example particle systems
+
+// Exudes greeny particles which float upwards
+Examples/GreenyNimbus
+{
+    material        Examples/Flare
+    particle_width  30
+    particle_height 30
+    cull_each       false
+    quota           10000
+    billboard_type  point
+    
+    // Area emitter
+    emitter Box
+    {
+        angle           30
+        emission_rate   30
+        time_to_live    5
+        direction       0 1 0
+        velocity    	0
+        colour_range_start  1 1 0
+        colour_range_end    0.3 1 0.3
+        width           60
+        height          60
+        depth           60
+    }
+
+    // Make em float upwards
+    affector LinearForce
+    {
+        force_vector      0 100 0
+        force_application add
+    }
+
+    // Fader
+    affector ColourFader
+    {
+        red -0.25
+        green -0.25
+        blue -0.25
+    }
+
+
+}
+
+// A sparkly purple fountain
+Examples/PurpleFountain
+{
+    material        Examples/Flare2
+    particle_width  20
+    particle_height 20
+    cull_each       false
+    quota           10000
+    billboard_type  oriented_self
+    
+    // Area emitter
+    emitter Point
+    {
+        angle           15
+        emission_rate   75
+        time_to_live    3
+        direction       0 1 0
+        velocity_min    250
+        velocity_max    300
+        colour_range_start  0 0 0
+        colour_range_end    1 1 1
+    }
+
+    // Gravity
+    affector LinearForce
+    {
+        force_vector      0 -100 0
+        force_application add
+    }
+
+    // Fader
+    affector ColourFader
+    {
+        red -0.25
+        green -0.25
+        blue -0.25
+    }
+}
+
+
+// A downpour
+Examples/Rain
+{
+    material        Examples/Droplet
+    particle_width  20
+    particle_height 100
+    cull_each       true
+    quota           10000
+    // Make common direction straight down (faster than self oriented)
+    billboard_type  oriented_common
+    common_direction 0 -1 0
+    
+    // Area emitter
+    emitter Box
+    {
+        angle           0
+        emission_rate   100
+        time_to_live    5
+        direction       0 -1 0
+        velocity    	50
+        colour_range_start  0.3 1 0.3
+        colour_range_end    0.7 1 0.7
+        width           1000
+        height          1000
+        depth           0
+    }
+
+    // Gravity
+    affector LinearForce
+    {
+        force_vector      0 -200 0
+        force_application add
+    }
+
+}
+
+// A jet engine (of sorts)
+Examples/JetEngine1
+{
+	material 		Examples/Flare
+	particle_width 	25
+	particle_height	25
+	cull_each		false
+	quota			200
+	billboard_type	point
+
+	emitter Point
+	{
+		angle 5
+		emission_rate 100
+        time_to_live    1
+        direction       0 -1 0
+        velocity_min    250
+        velocity_max    300
+        colour_range_start  1 1 0.5
+        colour_range_end    1 0.8 0.3
+		
+	}
+	affector ColourFader
+	{
+		red -0.25
+		green -1
+		blue -1
+	}
+	
+}
+Examples/JetEngine2
+{
+	material 		Examples/Flare
+	particle_width 	15
+	particle_height	15
+	cull_each		false
+	quota			200
+	billboard_type	point
+
+	emitter Point
+	{
+		angle 3
+		emission_rate 100
+        time_to_live    1
+        direction       0 -1 0
+        velocity_min    350
+        velocity_max    400
+        colour_range_start  0.5 1 1
+        colour_range_end    0.3 0.8 1
+		
+	}
+	affector ColourFader
+	{
+		red -1
+		green -1
+		blue -0.5
+	}
+	
+}
+
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/GUILayout.xsd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/GUILayout.xsd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/GUILayout.xsd	(revision 1493)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+
+	<xsd:element name="GUILayout" type="GUILayoutType"/>
+	
+	<xsd:complexType name="GUILayoutType">
+		<xsd:sequence>
+			<xsd:element name="Window" type="WindowType" />
+		</xsd:sequence>
+		<xsd:attribute name="Parent" type="xsd:string" use="optional" default=""/>
+	</xsd:complexType>
+	
+	<xsd:complexType name="WindowType">
+		<xsd:sequence>
+			<xsd:element name="LayoutImport" type="LayoutImportType"  minOccurs="0" maxOccurs="unbounded" />
+			<xsd:element name="Property" type="PropertyType"  minOccurs="0" maxOccurs="unbounded" />
+			<xsd:element name="Event" type="EventType"  minOccurs="0" maxOccurs="unbounded" />
+			<xsd:element name="Window" type="WindowType"  minOccurs="0" maxOccurs="unbounded" />
+			<xsd:element name="Property" type="PropertyType"  minOccurs="0" maxOccurs="unbounded" />
+		</xsd:sequence>
+		<xsd:attribute name="Type" type="xsd:string" use="required"/>
+		<xsd:attribute name="Name" type="xsd:string" use="required"/>
+	</xsd:complexType>
+
+	<xsd:complexType name="PropertyType">
+		<xsd:attribute name="Name" type="xsd:string" use="required"/>
+		<xsd:attribute name="Value" type="xsd:string" use="required"/>
+	</xsd:complexType>
+
+	<xsd:complexType name="LayoutImportType">
+		<xsd:attribute name="Filename" type="xsd:string" use="required"/>
+		<xsd:attribute name="Prefix" type="xsd:string" use="optional" default="" />
+		<xsd:attribute name="ResourceGroup" type="xsd:string" use="optional"  default="" />
+	</xsd:complexType>
+
+	<xsd:complexType name="EventType">
+		<xsd:attribute name="Name" type="xsd:string" use="required"/>
+		<xsd:attribute name="Function" type="xsd:string" use="required"/>
+	</xsd:complexType>
+
+</xsd:schema>
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/TaharezLook.imageset
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/TaharezLook.imageset	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/TaharezLook.imageset	(revision 1493)
@@ -0,0 +1,200 @@
+<?xml version="1.0" ?>
+<Imageset Name="TaharezLook" Imagefile="TaharezLook.tga" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true">
+	<Image Name="ClientBrush" XPos="2" YPos="2" Width="64" Height="64" />
+	<Image Name="WindowLeftEdge" XPos="6" YPos="95" Width="1" Height="22" XOffset="4" />
+	<Image Name="WindowRightEdge" XPos="34" YPos="95" Width="1" Height="22" XOffset="-5" />
+	<Image Name="WindowTopEdge" XPos="9" YPos="68" Width="23" Height="1" />
+	<Image Name="WindowBottomEdge" XPos="9" YPos="143" Width="23" Height="1" />
+	<Image Name="WindowTopLeft" XPos="2" YPos="68" Width="5" Height="24" />
+	<Image Name="WindowTopRight" XPos="34" YPos="68" Width="5" Height="24" />
+	<Image Name="WindowBottomLeft" XPos="2" YPos="120" Width="5" Height="24" />
+	<Image Name="WindowBottomRight" XPos="34" YPos="120" Width="5" Height="24" />
+	<Image Name="ButtonLeftNormal" XPos="68" YPos="20" Width="12" Height="16" />
+	<Image Name="ButtonMiddleNormal" XPos="82" YPos="20" Width="12" Height="16" />
+	<Image Name="ButtonRightNormal" XPos="96" YPos="20" Width="12" Height="16" />
+	<Image Name="ButtonLeftPushed" XPos="68" YPos="38" Width="12" Height="16" />
+	<Image Name="ButtonMiddlePushed" XPos="82" YPos="38" Width="12" Height="16" />
+	<Image Name="ButtonRightPushed" XPos="96" YPos="38" Width="12" Height="16" />
+	<Image Name="ButtonLeftHighlight" XPos="68" YPos="56" Width="12" Height="16" />
+	<Image Name="ButtonMiddleHighlight" XPos="82" YPos="56" Width="12" Height="16" />
+	<Image Name="ButtonRightHighlight" XPos="96" YPos="56" Width="12" Height="16" />
+	<Image Name="CheckboxNormal" XPos="110" YPos="2" Width="12" Height="12" />
+	<Image Name="CheckboxHover" XPos="110" YPos="30" Width="12" Height="12" />
+	<Image Name="CheckboxMark" XPos="110" YPos="16" Width="12" Height="12" />
+	<Image Name="RadioButtonNormal" XPos="124" YPos="2" Width="12" Height="12" />
+	<Image Name="RadioButtonHover" XPos="124" YPos="30" Width="12" Height="12" />
+	<Image Name="RadioButtonMark" XPos="124" YPos="16" Width="12" Height="12" />
+	<Image Name="TitlebarLeft" XPos="68" YPos="2" Width="8" Height="16" />
+	<Image Name="TitlebarMiddle" XPos="78" YPos="2" Width="8" Height="16" />
+	<Image Name="TitlebarRight" XPos="88" YPos="2" Width="8" Height="16" />
+	<Image Name="NewTitlebarLeft" XPos="61" YPos="127" Width="13" Height="16" />
+	<Image Name="NewTitlebarMiddle" XPos="77" YPos="127" Width="12" Height="16" />
+	<Image Name="NewTitlebarRight" XPos="92" YPos="127" Width="12" Height="16" />
+	<Image Name="SysAreaMiddle" XPos="107" YPos="127" Width="12" Height="16" />
+	<Image Name="SysAreaRight" XPos="122" YPos="127" Width="13" Height="16" />
+	<Image Name="StaticLeft" XPos="41" YPos="89" Width="6" Height="6" />
+	<Image Name="StaticRight" XPos="63" YPos="89" Width="6" Height="6" />
+	<Image Name="StaticTop" XPos="52" YPos="78" Width="6" Height="6" />
+	<Image Name="StaticBottom" XPos="52" YPos="100" Width="6" Height="6" />
+	<Image Name="StaticTopLeft" XPos="41" YPos="78" Width="6" Height="6" />
+	<Image Name="StaticTopRight" XPos="63" YPos="78" Width="6" Height="6" />
+	<Image Name="StaticBottomLeft" XPos="41" YPos="100" Width="6" Height="6" />
+	<Image Name="StaticBottomRight" XPos="63" YPos="100" Width="6" Height="6" />
+	<Image Name="StaticBackdrop" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="ProgressBarLeft" XPos="71" YPos="74" Width="7" Height="12" />
+	<Image Name="ProgressBarMiddle" XPos="80" YPos="74" Width="6" Height="12" />
+	<Image Name="ProgressBarRight" XPos="88" YPos="74" Width="6" Height="12" />
+	<Image Name="ProgressBarDimSegment" XPos="96" YPos="74" Width="8" Height="12" />
+	<Image Name="ProgressBarLitSegment" XPos="106" YPos="74" Width="8" Height="12" />
+	<Image Name="EditBoxLeft" XPos="41" YPos="108" Width="4" Height="18" />
+	<Image Name="EditBoxMiddle" XPos="47" YPos="108" Width="4" Height="18" />
+	<Image Name="EditBoxRight" XPos="53" YPos="108" Width="4" Height="18" />
+	<Image Name="EditBoxCarat" XPos="60" YPos="108" Width="4" Height="18" />
+	<Image Name="TextSelectionBrush" XPos="8" YPos="70" Width="16" Height="16" />
+	<Image Name="VertScrollTop" XPos="182" YPos="2" Width="20" Height="8" />
+	<Image Name="VertScrollMiddle" XPos="182" YPos="12" Width="20" Height="8" />
+	<Image Name="VertScrollBottom" XPos="182" YPos="22" Width="20" Height="8" />
+	<Image Name="VertScrollBarSegment" XPos="206" YPos="2" Width="4" Height="10" />
+	<Image Name="VertScrollThumbNormal" XPos="214" YPos="2" Width="8" Height="24" />
+	<Image Name="VertScrollThumbHover" XPos="224" YPos="2" Width="8" Height="24" />
+	<Image Name="VertScrollUpNormal" XPos="196" YPos="32" Width="12" Height="12" />
+	<Image Name="VertScrollDownNormal" XPos="182" YPos="32" Width="12" Height="12" />
+	<Image Name="VertScrollUpHover" XPos="196" YPos="46" Width="12" Height="12" />
+	<Image Name="VertScrollDownHover" XPos="182" YPos="46" Width="12" Height="12" />
+	<Image Name="MiniVertScrollBarSegment" XPos="207" YPos="60" Width="4" Height="10" />
+	<Image Name="MiniVertScrollThumbNormal" XPos="214" YPos="59" Width="7" Height="22" />
+	<Image Name="MiniVertScrollThumbTopNormal" XPos="214" YPos="59" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbMiddleNormal" XPos="214" YPos="65" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbBottomNormal" XPos="214" YPos="76" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbTopHover" XPos="223" YPos="59" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbMiddleHover" XPos="223" YPos="65" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbBottomHover" XPos="223" YPos="76" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbHover" XPos="223" YPos="59" Width="7" Height="22" />
+	<Image Name="MiniVertScrollUpNormal" XPos="194" YPos="60" Width="10" Height="9" />
+	<Image Name="MiniVertScrollDownNormal" XPos="182" YPos="59" Width="10" Height="9" />
+	<Image Name="MiniVertScrollUpHover" XPos="194" YPos="70" Width="10" Height="9" />
+	<Image Name="MiniVertScrollDownHover" XPos="182" YPos="69" Width="10" Height="9" />
+	<Image Name="VertSliderBody" XPos="234" YPos="2" Width="9" Height="48" />
+	<Image Name="VertSliderThumbNormal" XPos="217" YPos="28" Width="15" Height="6" />
+	<Image Name="VertSliderThumbHover" XPos="217" YPos="36" Width="15" Height="6" />
+	<Image Name="MiniHorzScrollBarSegment" XPos="244" YPos="80" Width="10" Height="4" />
+	<Image Name="MiniHorzScrollThumbNormal" XPos="233" YPos="87" Width="22" Height="7" />
+	<Image Name="MiniHorzScrollThumbLeftNormal" XPos="233" YPos="87" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbMiddleNormal" XPos="239" YPos="87" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbRightNormal" XPos="250" YPos="87" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbHover" XPos="233" YPos="96" Width="22" Height="7" />
+	<Image Name="MiniHorzScrollThumbLeftHover" XPos="233" YPos="96" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbMiddleHover" XPos="239" YPos="96" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbRightHover" XPos="250" YPos="96" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollLeftNormal" XPos="246" YPos="55" Width="9" Height="10" />
+	<Image Name="MiniHorzScrollRightNormal" XPos="245" YPos="67" Width="9" Height="10" />
+	<Image Name="MiniHorzScrollLeftHover" XPos="236" YPos="55" Width="9" Height="10" />
+	<Image Name="MiniHorzScrollRightHover" XPos="235" YPos="67" Width="9" Height="10" />
+	<Image Name="ListboxLeft" XPos="41" YPos="89" Width="7" Height="6" />
+	<Image Name="ListboxRight" XPos="62" YPos="89" Width="7" Height="6" />
+	<Image Name="ListboxTop" XPos="52" YPos="78" Width="6" Height="7" />
+	<Image Name="ListboxBottom" XPos="52" YPos="99" Width="6" Height="7" />
+	<Image Name="ListboxTopLeft" XPos="41" YPos="78" Width="7" Height="7" />
+	<Image Name="ListboxTopRight" XPos="62" YPos="78" Width="7" Height="7" />
+	<Image Name="ListboxBottomLeft" XPos="41" YPos="99" Width="7" Height="7" />
+	<Image Name="ListboxBottomRight" XPos="62" YPos="99" Width="7" Height="7" />
+	<Image Name="ListboxBackdrop" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="ListboxSelectionBrush" XPos="8" YPos="70" Width="16" Height="16" />
+	<Image Name="ComboboxEditLeft" XPos="138" YPos="2" Width="8" Height="16" />
+	<Image Name="ComboboxEditMiddle" XPos="148" YPos="2" Width="8" Height="16" />
+	<Image Name="ComboboxListButtonNormal" XPos="158" YPos="2" Width="16" Height="16" />
+	<Image Name="ComboboxListButtonHover" XPos="158" YPos="20" Width="16" Height="16" />
+	<Image Name="ComboboxListLeft" XPos="138" YPos="48" Width="8" Height="8" />
+	<Image Name="ComboboxListRight" XPos="158" YPos="48" Width="8" Height="8" />
+	<Image Name="ComboboxListTop" XPos="148" YPos="48" Width="8" Height="8" />
+	<Image Name="ComboboxListBottom" XPos="148" YPos="58" Width="8" Height="8" />
+	<Image Name="ComboboxListTopLeft" XPos="138" YPos="38" Width="8" Height="8" />
+	<Image Name="ComboboxListTopRight" XPos="158" YPos="38" Width="8" Height="8" />
+	<Image Name="ComboboxListBottomLeft" XPos="138" YPos="58" Width="8" Height="8" />
+	<Image Name="ComboboxListBottomRight" XPos="158" YPos="58" Width="8" Height="8" />
+	<Image Name="ComboboxListBackdrop" XPos="148" YPos="48" Width="8" Height="8" />
+	<Image Name="ComboboxSelectionBrush" XPos="8" YPos="70" Width="16" Height="16" />
+	<Image Name="ComboboxDividerLeft" XPos="138" YPos="68" Width="14" Height="1" />
+	<Image Name="ComboboxDividerMiddle" XPos="154" YPos="68" Width="8" Height="1" />
+	<Image Name="ComboboxDividerRight" XPos="164" YPos="68" Width="14" Height="1" />
+	<Image Name="HeaderBarBackdropNormal" XPos="230" YPos="163" Width="10" Height="12" />
+	<Image Name="HeaderBarBackdropHover" XPos="230" YPos="163" Width="10" Height="12" />
+	<Image Name="HeaderBarSplitterNormal" XPos="225" YPos="92" Width="3" Height="16" />
+	<Image Name="HeaderBarSplitterHover" XPos="200" YPos="92" Width="3" Height="16" />
+	<Image Name="HeaderBarSortUp" XPos="233" YPos="178" Width="8" Height="8" />
+	<Image Name="HeaderBarSortDown" XPos="244" YPos="178" Width="8" Height="8" />
+	<Image Name="MultiListLeft" XPos="170" YPos="92" Width="7" Height="6" />
+	<Image Name="MultiListRight" XPos="191" YPos="92" Width="7" Height="6" />
+	<Image Name="MultiListTop" XPos="181" YPos="81" Width="6" Height="7" />
+	<Image Name="MultiListBottom" XPos="181" YPos="102" Width="6" Height="7" />
+	<Image Name="MultiListTopLeft" XPos="170" YPos="81" Width="7" Height="7" />
+	<Image Name="MultiListTopRight" XPos="191" YPos="81" Width="7" Height="7" />
+	<Image Name="MultiListBottomLeft" XPos="170" YPos="102" Width="7" Height="7" />
+	<Image Name="MultiListBottomRight" XPos="191" YPos="102" Width="7" Height="7" />
+	<Image Name="MultiListBackdrop" XPos="181" YPos="92" Width="6" Height="6" />
+	<Image Name="MultiListSelectionBrush" XPos="9" YPos="71" Width="14" Height="14" />
+	<Image Name="AltProgressLeft" XPos="71" YPos="88" Width="8" Height="12" />
+	<Image Name="AltProgressMiddle" XPos="81" YPos="88" Width="8" Height="12" />
+	<Image Name="AltProgressRight" XPos="91" YPos="88" Width="8" Height="12" />
+	<Image Name="AltProgressQuarter" XPos="102" YPos="89" Width="3" Height="4" />
+	<Image Name="AltProgressHalf" XPos="109" YPos="89" Width="4" Height="5" />
+	<Image Name="AltProgressLight1" XPos="100" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight2" XPos="106" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight3" XPos="112" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight4" XPos="118" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight5" XPos="124" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight6" XPos="130" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight7" XPos="136" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight8" XPos="142" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight9" XPos="148" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight10" XPos="154" YPos="97" Width="4" Height="8" />
+	<Image Name="CloseButtonNormal" XPos="41" YPos="128" Width="16" Height="16" />
+	<Image Name="CloseButtonHover" XPos="41" YPos="146" Width="16" Height="16" />
+	<Image Name="CloseButtonPressed" XPos="41" YPos="164" Width="16" Height="16" />
+	<Image Name="NewCloseButtonNormal" XPos="90" YPos="146" Width="10" Height="10" />
+	<Image Name="NewCloseButtonHover" XPos="90" YPos="146" Width="10" Height="10" />
+	<Image Name="NewCloseButtonPressed" XPos="90" YPos="146" Width="10" Height="10" />
+	<Image Name="MultiLineEditboxLeft" XPos="41" YPos="89" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxRight" XPos="63" YPos="89" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxTop" XPos="52" YPos="78" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxBottom" XPos="52" YPos="100" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxTopLeft" XPos="41" YPos="78" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxTopRight" XPos="63" YPos="78" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxBottomLeft" XPos="41" YPos="100" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxBottomRight" XPos="63" YPos="100" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxBackdrop" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxSelectionBrush" XPos="9" YPos="71" Width="14" Height="14" />
+	<Image Name="MouseTarget" XPos="182" YPos="127" Width="17" Height="17" XOffset="-8" YOffset="-8" />
+	<Image Name="MouseArrow" XPos="138" YPos="127" Width="31" Height="25" XOffset="0" YOffset="0" />
+	<Image Name="MouseMoveCursor" XPos="201" YPos="127" Width="18" Height="18" XOffset="-8" YOffset="-8" />
+	<Image Name="MouseNoSoCursor" XPos="221" YPos="127" Width="8" Height="18" XOffset="-3" YOffset="-8" />
+	<Image Name="MouseEsWeCursor" XPos="182" YPos="150" Width="18" Height="8" XOffset="-8" YOffset="-3" />
+	<Image Name="MouseNeSwCursor" XPos="201" YPos="147" Width="14" Height="14" XOffset="-7" YOffset="-7" />
+	<Image Name="MouseNwSeCursor" XPos="230" YPos="126" Width="14" Height="14" XOffset="-7" YOffset="-7" />
+	<Image Name="MouseTextBar" XPos="173" YPos="127" Width="7" Height="18" XOffset="-2" YOffset="-9" />
+	<Image Name="TabControlButtonPaneFiller" XPos="197" YPos="201" Width="7" Height="1" />
+	<Image Name="TabPaneLeft" XPos="41" YPos="89" Width="7" Height="6" />
+	<Image Name="TabPaneRight" XPos="62" YPos="89" Width="7" Height="6" />
+	<Image Name="TabPaneLower" XPos="52" YPos="99" Width="6" Height="7" />
+	<Image Name="TabPaneLowerLeft" XPos="41" YPos="99" Width="7" Height="7" />
+	<Image Name="TabPaneLowerRight" XPos="62" YPos="99" Width="7" Height="7" />
+	<Image Name="TabPaneMiddle" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="TabButtonLeftNormal" XPos="41" YPos="89" Width="7" Height="6" />
+	<Image Name="TabButtonRightNormal" XPos="62" YPos="89" Width="7" Height="6" />
+	<Image Name="TabButtonUpperNormal" XPos="52" YPos="78" Width="6" Height="7" />
+	<Image Name="TabButtonLowerNormal" XPos="52" YPos="99" Width="6" Height="7" />
+	<Image Name="TabButtonUpperLeftNormal" XPos="41" YPos="78" Width="7" Height="7" />
+	<Image Name="TabButtonUpperRightNormal" XPos="62" YPos="78" Width="7" Height="7" />
+	<Image Name="TabButtonLowerLeftNormal" XPos="41" YPos="99" Width="7" Height="7" />
+	<Image Name="TabButtonLowerRightNormal" XPos="187" YPos="195" Width="7" Height="7" />
+	<Image Name="TabButtonMiddleNormal" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="TabButtonLeftSelected" XPos="41" YPos="89" Width="7" Height="6" />
+	<Image Name="TabButtonRightSelected" XPos="62" YPos="89" Width="7" Height="6" />
+	<Image Name="TabButtonUpperSelected" XPos="52" YPos="78" Width="6" Height="7" />
+	<Image Name="TabButtonLowerSelected" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="TabButtonUpperLeftSelected" XPos="41" YPos="78" Width="7" Height="7" />
+	<Image Name="TabButtonUpperRightSelected" XPos="62" YPos="78" Width="7" Height="7" />
+	<Image Name="TabButtonLowerLeftSelected" XPos="41" YPos="99" Width="7" Height="7" />
+	<Image Name="TabButtonLowerRightSelected" XPos="62" YPos="99" Width="7" Height="7" />
+	<Image Name="TabButtonMiddleSelected" XPos="52" YPos="89" Width="6" Height="6" />
+</Imageset>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/cegui8.layout
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/cegui8.layout	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/cegui8.layout	(revision 1493)
@@ -0,0 +1,130 @@
+<?xml version="1.0" ?>
+<!-- Layout file from CEGUI Demo8 -->
+<GUILayout>
+<Window Type="DefaultGUISheet" Name="demo_root">
+
+	<Window Type="DefaultGUISheet" Name="Demo8">
+
+		<Property Name="RelativeMaxSize" Value="w:1 h:2" />
+		<Property Name="Size" Value="w:1 h:2" />
+
+		<Window Type="TaharezLook/VerticalScrollbar" Name="Demo8/ViewScroll">
+			<Property Name="Position" Value="x:0.0 y:0.0" />
+			<Property Name="Size" Value="w:0.03 h:0.75" />
+			<Property Name="DocumentSize" Value="2" />
+			<Property Name="PageSize" Value="1" />
+			<Property Name="StepSize" Value="0.01" />
+			<Property Name="OverlapSize" Value="0.5" />
+		</Window>
+
+        <Window Type="TaharezLook/FrameWindow" Name="Demo8/Window1">
+			<Property Name="Position" Value="x:0.05 y:0.1" />
+			<Property Name="RelativeMaxSize" Value="w:0.5 h:1" />
+			<Property Name="AbsoluteMinSize" Value="w:128 h:128" />
+			<Property Name="Size" Value="w:0.4 h:0.35" />
+			<Property Name="Text" Value="Demo 8 - Listbox Demo" />
+
+			<Window Type="TaharezLook/Listbox" Name="Demo8/Window1/Listbox">
+				<Property Name="Position" Value="x:0.05 y:0.1" />
+				<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+				<Property Name="Size" Value="w:0.9 h:0.33" />
+			</Window>
+
+			<Window Type="TaharezLook/StaticText" Name="Demo8/Window1/Controls">
+				<Property Name="Position" Value="x:0.05 y:0.45" />
+				<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+				<Property Name="Size" Value="w:0.9 h:0.5" />
+
+                <Window Type="TaharezLook/HorizontalScrollbar" Name="Demo8/Window1/Controls/Red">
+					<Property Name="Position" Value="x:0.05 y:0.05" />
+					<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+					<Property Name="Size" Value="w:0.9 h:0.06" />
+					<Property Name="DocumentSize" Value="255" />
+					<Property Name="PageSize" Value="16" />
+					<Property Name="StepSize" Value="1" />
+					<Property Name="OverlapSize" Value="1" />
+				</Window>
+
+                <Window Type="TaharezLook/HorizontalScrollbar" Name="Demo8/Window1/Controls/Green">
+					<Property Name="Position" Value="x:0.05 y:0.12" />
+					<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+					<Property Name="Size" Value="w:0.9 h:0.06" />
+					<Property Name="DocumentSize" Value="256" />
+					<Property Name="PageSize" Value="16" />
+					<Property Name="StepSize" Value="1" />
+					<Property Name="OverlapSize" Value="1" />
+				</Window>
+
+                <Window Type="TaharezLook/HorizontalScrollbar" Name="Demo8/Window1/Controls/Blue">
+					<Property Name="Position" Value="x:0.05 y:0.19" />
+					<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+					<Property Name="Size" Value="w:0.9 h:0.06" />
+					<Property Name="DocumentSize" Value="255" />
+					<Property Name="PageSize" Value="16" />
+					<Property Name="StepSize" Value="1" />
+					<Property Name="OverlapSize" Value="1" />
+				</Window>
+
+				<Window Type="TaharezLook/StaticImage" Name="Demo8/Window1/Controls/ColourSample">
+					<Property Name="Position" Value="x:0.05 y:0.26" />
+					<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+					<Property Name="Size" Value="w:0.9 h:0.1" />
+					<Property Name="Image" Value="set:TaharezLook image:ListboxSelectionBrush" />
+					<Property Name="ImageColours" Value="tl:0 tr:0 bl:0 br:0" />
+				</Window>
+
+				<Window Type="TaharezLook/Editbox" Name="Demo8/Window1/Controls/Editbox">
+					<Property Name="Position" Value="x:0.05 y:0.38" />
+					<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+					<Property Name="Size" Value="w:0.6 h:0.15" />
+				</Window>
+
+                <Window Type="TaharezLook/Button" Name="Demo8/Window1/Controls/Add">
+					<Property Name="Position" Value="x:0.68 y:0.38" />
+					<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+					<Property Name="Size" Value="w:0.3 h:0.15" />
+					<Property Name="Text" Value="Add" />
+				</Window>
+
+                <Window Type="TaharezLook/StaticText" Name="Demo8/Window1/Controls/ins1">
+					<Property Name="Position" Value="x:0.05 y:0.55" />
+					<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+					<Property Name="Size" Value="w:0.9 h:0.4" />
+					<Property Name="HorzFormatting" Value="WordWrapCentred" />
+					<Property Name="Text" Value="Use this panel to add items.  The scrollbars change the selection colour." />
+				</Window>
+
+			</Window>
+			
+		</Window>
+
+        <Window Type="TaharezLook/FrameWindow" Name="Demo8/Window2">
+			<Property Name="Position" Value="x:0.55 y:0.1" />
+			<Property Name="RelativeMaxSize" Value="w:0.5 h:1" />
+			<Property Name="AbsoluteMinSize" Value="w:128 h:128" />
+			<Property Name="Size" Value="w:0.4 h:0.3" />
+			<Property Name="Text" Value="Demo 8 - Information Window" />
+
+            <Window Type="TaharezLook/StaticText" Name="Demo8/Window2/Info">
+				<Property Name="Position" Value="x:0.05 y:0.1" />
+				<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+				<Property Name="Size" Value="w:0.9 h:0.3" />
+				<Property Name="HorzFormatting" Value="WordWrapCentred" />
+				<Property Name="Text" Value="The panel below gives some information about the item under the mouse." />
+			</Window>
+	
+            <Window Type="TaharezLook/StaticText" Name="Demo8/Window2/Tips">
+				<Property Name="Position" Value="x:0.05 y:0.5" />
+				<Property Name="RelativeMaxSize" Value="w:1 h:1" />
+				<Property Name="Size" Value="w:0.9 h:0.4" />
+				<Property Name="HorzFormatting" Value="WordWrapCentred" />
+			</Window>
+
+		</Window>
+
+
+	</Window>
+
+</Window>
+
+</GUILayout>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/Font.xsd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/Font.xsd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/Font.xsd	(revision 1493)
@@ -0,0 +1,49 @@
+<?xml version="1.0" ?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+	<xsd:element name="Font" type="FontType" />
+
+	<xsd:complexType name="FontType">
+		<xsd:sequence>
+			<xsd:element name="Mapping" type="MapType" maxOccurs="unbounded" minOccurs="0" />
+			<xsd:element name="GlyphSet" type="GlyphSetType" maxOccurs="unbounded" minOccurs="0" />
+			<xsd:element name="GlyphRange" type="GlyphRangeType" maxOccurs="unbounded" minOccurs="0" />
+			<xsd:element name="Glyph" type="GlyphType" maxOccurs="unbounded" minOccurs="0" />
+		</xsd:sequence>
+		<xsd:attributeGroup ref="FontAttrs" />
+	</xsd:complexType>
+	<xsd:complexType name="MapType">
+		<xsd:attribute name="Codepoint" type="xsd:nonNegativeInteger" use="required" />
+		<xsd:attribute name="Image" type="xsd:string" use="required" />
+		<xsd:attribute name="HorzAdvance" type="xsd:integer" use="optional" default="-1" />
+	</xsd:complexType>
+	<xsd:complexType name="GlyphType">
+		<xsd:attribute name="Codepoint" type="xsd:nonNegativeInteger" use="required" />
+	</xsd:complexType>
+	<xsd:complexType name="GlyphRangeType">
+		<xsd:attribute name="StartCodepoint" type="xsd:nonNegativeInteger" use="required" />
+		<xsd:attribute name="EndCodepoint" type="xsd:nonNegativeInteger" use="required" />
+	</xsd:complexType>
+	<xsd:complexType name="GlyphSetType">
+		<xsd:attribute name="Glyphs" type="xsd:string" use="required" />
+	</xsd:complexType>
+	<xsd:attributeGroup name="FontAttrs">
+		<xsd:attribute name="Name" type="xsd:string" use="required" />
+		<xsd:attribute name="Filename" type="xsd:string" use="required" />
+		<xsd:attribute name="ResourceGroup" type="xsd:string" use="optional"  default="" />
+		<xsd:attribute name="Type" use="required">
+			<xsd:simpleType>
+				<xsd:restriction base="xsd:string">
+					<xsd:enumeration value="Dynamic" />
+					<xsd:enumeration value="Static" />
+				</xsd:restriction>
+			</xsd:simpleType>
+		</xsd:attribute>
+		<xsd:attribute name="Size" type="xsd:nonNegativeInteger" use="optional" default="12" />
+		<xsd:attribute name="FirstCodepoint" type="xsd:nonNegativeInteger" use="optional" default="32" />
+		<xsd:attribute name="LastCodepoint" type="xsd:nonNegativeInteger" use="optional" default="127" />
+		<xsd:attribute name="NativeHorzRes" type="xsd:nonNegativeInteger" use="optional" default="640" />
+		<xsd:attribute name="NativeVertRes" type="xsd:nonNegativeInteger" use="optional" default="480" />
+		<xsd:attribute name="AutoScaled" type="xsd:boolean" use="optional" default="false" />
+		<xsd:attribute name="AntiAlias" type="xsd:boolean" use="optional" default="true" />
+	</xsd:attributeGroup>
+</xsd:schema>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/GUIScheme.xsd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/GUIScheme.xsd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/GUIScheme.xsd	(revision 1493)
@@ -0,0 +1,31 @@
+<?xml version="1.0" ?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+	<xsd:element name="GUIScheme" type="SchemeType" />
+	<xsd:complexType name="SchemeType">
+		<xsd:sequence>
+			<xsd:element name="Imageset" type="NamedDataType" minOccurs="0" maxOccurs="unbounded" />
+			<xsd:element name="Font" type="NamedDataType" minOccurs="0" maxOccurs="unbounded" />
+			<xsd:element name="WindowSet" type="WindowSetType" minOccurs="0" maxOccurs="unbounded" />
+			<xsd:element name="WindowAlias" type="WindowAliasType" minOccurs="0" maxOccurs="unbounded" />
+		</xsd:sequence>
+		<xsd:attribute name="Name" type="xsd:string" use="required" />
+	</xsd:complexType>
+	<xsd:complexType name="WindowSetType">
+		<xsd:sequence>
+			<xsd:element name="WindowFactory" type="WindowFactoryType" maxOccurs="unbounded" />
+		</xsd:sequence>
+		<xsd:attribute name="Filename" type="xsd:string" use="required" />
+	</xsd:complexType>
+	<xsd:complexType name="NamedDataType">
+		<xsd:attribute name="Name" type="xsd:string" use="required" />
+		<xsd:attribute name="Filename" type="xsd:string" use="required" />
+		<xsd:attribute name="ResourceGroup" type="xsd:string" use="optional"  default="" />
+	</xsd:complexType>
+	<xsd:complexType name="WindowFactoryType">
+		<xsd:attribute name="Name" type="xsd:string" use="required" />
+	</xsd:complexType>
+	<xsd:complexType name="WindowAliasType">
+		<xsd:attribute name="Alias" type="xsd:string" use="required" />
+		<xsd:attribute name="Target" type="xsd:string" use="required" />
+	</xsd:complexType>
+</xsd:schema>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/TaharezLook.scheme
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/TaharezLook.scheme	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/TaharezLook.scheme	(revision 1493)
@@ -0,0 +1,38 @@
+<?xml version="1.0" ?>
+<GUIScheme Name="TaharezLook">
+	<Imageset Name="TaharezLook" Filename="TaharezLook.imageset" />
+	<Font Name="Tahoma-12" Filename="tahoma-12.font" />
+	<WindowSet Filename="CEGUITaharezLook">
+		<WindowFactory Name="TaharezLook/AlternateProgressBar" />
+		<WindowFactory Name="TaharezLook/Button" />
+		<WindowFactory Name="TaharezLook/Checkbox" />
+		<WindowFactory Name="TaharezLook/CloseButton" />
+		<WindowFactory Name="TaharezLook/Combobox" />
+		<WindowFactory Name="TaharezLook/ComboDropList" />
+		<WindowFactory Name="TaharezLook/ComboEditbox" />
+		<WindowFactory Name="TaharezLook/Editbox" />
+		<WindowFactory Name="TaharezLook/FrameWindow" />
+		<WindowFactory Name="TaharezLook/LargeVerticalScrollbar" />
+		<WindowFactory Name="TaharezLook/LargeVerticalScrollbarThumb" />
+		<WindowFactory Name="TaharezLook/Listbox" />
+		<WindowFactory Name="TaharezLook/ListHeader" />
+		<WindowFactory Name="TaharezLook/ListHeaderSegment" />
+		<WindowFactory Name="TaharezLook/HorizontalScrollbar" />
+		<WindowFactory Name="TaharezLook/HorizontalScrollbarThumb" />
+		<WindowFactory Name="TaharezLook/MultiColumnList" />
+		<WindowFactory Name="TaharezLook/MultiLineEditbox" />
+		<WindowFactory Name="TaharezLook/ProgressBar" />
+		<WindowFactory Name="TaharezLook/RadioButton" />
+		<WindowFactory Name="TaharezLook/Slider" />
+		<WindowFactory Name="TaharezLook/SliderThumb" />
+		<WindowFactory Name="TaharezLook/StaticImage" />
+		<WindowFactory Name="TaharezLook/StaticText" />
+		<WindowFactory Name="TaharezLook/TabButton" />
+		<WindowFactory Name="TaharezLook/TabControl" />
+		<WindowFactory Name="TaharezLook/TabPane" />
+		<WindowFactory Name="TaharezLook/Titlebar" />
+		<WindowFactory Name="TaharezLook/VerticalScrollbar" />
+		<WindowFactory Name="TaharezLook/VerticalScrollbarThumb" />
+		<WindowFactory Name="TaharezLook/VUMeter" />
+	</WindowSet>
+</GUIScheme>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/Imageset.xsd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/Imageset.xsd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/Imageset.xsd	(revision 1493)
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+
+	<xsd:element name="Imageset" type="ImagesetType"/>
+	
+	<xsd:complexType name="ImagesetType">
+		<xsd:sequence>
+			<xsd:element name="Image" type="ImageType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+		<xsd:attribute name="Imagefile" type="xsd:string" use="required"/>
+		<xsd:attribute name="ResourceGroup" type="xsd:string" use="optional"  default="" />
+		<xsd:attribute name="Name" type="xsd:string" use="required"/>
+		<xsd:attribute name="NativeHorzRes" type="xsd:nonNegativeInteger" use="optional" default="640" />
+		<xsd:attribute name="NativeVertRes" type="xsd:nonNegativeInteger" use="optional" default="480" />
+		<xsd:attribute name="AutoScaled" type="xsd:boolean" use="optional" default="false" />
+	</xsd:complexType>
+	
+	<xsd:complexType name="ImageType">
+		<xsd:attribute name="Name" type="xsd:string" use="required"/>
+		<xsd:attribute name="XPos" type="xsd:nonNegativeInteger" use="required"/>
+		<xsd:attribute name="YPos" type="xsd:nonNegativeInteger" use="required"/>
+		<xsd:attribute name="Width" type="xsd:nonNegativeInteger" use="required"/>
+		<xsd:attribute name="Height" type="xsd:nonNegativeInteger" use="required"/>
+		<xsd:attribute name="XOffset" type="xsd:integer" use="optional" default="0"/>
+		<xsd:attribute name="YOffset" type="xsd:integer" use="optional" default="0"/>						
+	</xsd:complexType>
+
+</xsd:schema>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/ogregui.layout
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/ogregui.layout	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/ogregui.layout	(revision 1493)
@@ -0,0 +1,79 @@
+<?xml version="1.0" ?>
+<GUILayout>
+<Window Type="DefaultGUISheet" Name="root">
+    <Window Type="DefaultGUISheet" Name="OgreGuiDemo">
+		<Property Name="Size" Value="w:0.25 h:1" />
+
+        <Window Type="TaharezLook/TabControl" Name="OgreGuiDemo/TabCtrl">
+            <Property Name="Position" Value="x:0.0 y:0.0" />
+            <Property Name="Size" Value="w:1 h:0.5" />
+
+            <Window Type="DefaultGUISheet" Name="OgreGuiDemo/TabCtrl/Page1">
+                <Property Name="Text" Value="File" />
+                <Window Type="TaharezLook/Button" Name="OgreGuiDemo/TabCtrl/Page1/NewButton">
+                    <Property Name="Position" Value="x:0.1 y:0.1" />
+                    <Property Name="Size" Value="w:0.8 h:0.07" />
+                    <Property Name="Text" Value="New" />
+                </Window>
+                <Window Type="TaharezLook/Button" Name="OgreGuiDemo/TabCtrl/Page1/LoadButton">
+                    <Property Name="Position" Value="x:0.1 y:0.2" />
+                    <Property Name="Size" Value="w:0.8 h:0.07" />
+                    <Property Name="Text" Value="Load Test Layout" />
+                </Window>
+                <Window Type="TaharezLook/Button" Name="OgreGuiDemo/TabCtrl/Page1/QuitButton">
+                    <Property Name="Position" Value="x:0.1 y:0.3" />
+                    <Property Name="Size" Value="w:0.8 h:0.07" />
+                    <Property Name="Text" Value="Quit" />
+                </Window>
+            </Window>
+            <Window Type="DefaultGUISheet" Name="OgreGuiDemo/TabCtrl/Page2">
+                <Property Name="Text" Value="Objects" />
+                <Window Type="TaharezLook/Combobox" Name="OgreGuiDemo/TabCtrl/Page2/ObjectTypeList">
+                    <Property Name="Position" Value="x:0.1 y:0.1" />
+                    <Property Name="Size" Value="w:0.8 h:0.5" />
+                    <Property Name="Text" Value="Select Type" />
+                    <Property Name="ClippedByParent" Value="false" />
+                    <Property Name="ReadOnly" Value="true" />
+                </Window>
+            </Window>
+        </Window>
+        <!--<Window Type="TaharezLook/FrameWindow" Name="OgreGuiDemo/WindowPropertiesWindow">
+            <Property Name="Size" Value="w:1 h:0.3" />
+            <Property Name="Position" Value="x:0 y:0.52" />
+            <Property Name="TitlebarEnabled" Value="false" />
+            <Property Name="CloseButtonEnabled" Value="false" />
+            <Property Name="Visible" Value="false" />
+            <Property Name="Text" Value="Editor Window" />
+            <Window Type="TaharezLook/StaticText" Name="OgreGuiDemo/WindowProperties/NameText">
+                <Property Name="Position" Value="x:0.05 y:0.2" />
+                <Property Name="Size" Value="w:0.9 h:0.4" />
+                <Property Name="Text" Value="Name:" />
+            </Window>
+
+            <Window Type="TaharezLook/Button" Name="OgreGuiDemo/WindowPropertiesWindow/OKButton">
+                <Property Name="Position" Value="x:0.15 y:0.8" />
+                <Property Name="Size" Value="w:0.3 h:0.1" />
+                <Property Name="Text" Value="OK" />
+            </Window>
+            <Window Type="TaharezLook/Button" Name="OgreGuiDemo/WindowPropertiesWindow/CancelButton">
+                <Property Name="Position" Value="x:0.55 y:0.8" />
+                <Property Name="Size" Value="w:0.3 h:0.1" />
+                <Property Name="Text" Value="Cancel" />
+            </Window>
+        </Window>-->
+	</Window>
+    <Window Type="DefaultGUISheet" Name="OgreGuiDemo2">
+		<Property Name="Size" Value="w:0.75 h:1" />
+		<Property Name="Position" Value="x:0.25 y:0" />
+        <Window Type="TaharezLook/FrameWindow" Name="OgreGuiDemo2/MainWindow">
+            <Property Name="Size" Value="w:1 h:1" />
+            <Property Name="Position" Value="x:0 y:0" />
+            <Property Name="DragMovingEnabled" Value="false" />
+            <Property Name="RollUpEnabled" Value="false" />
+            <Property Name="CloseButtonEnabled" Value="false" />
+            <Property Name="Text" Value="Editor Window" />
+        </Window>
+    </Window>
+</Window>
+
+</GUILayout>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/tahoma-12.font
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/tahoma-12.font	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/gui/tahoma-12.font	(revision 1493)
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+
+<Font Name="Tahoma-12" Filename="tahoma.ttf" Type="Dynamic" Size="12" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true"/>
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Example-CubeMapping.overlay
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Example-CubeMapping.overlay	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Example-CubeMapping.overlay	(revision 1493)
@@ -0,0 +1,139 @@
+Example/CubeMappingOverlay
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(Core/CubeMappingPanel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 5 
+		top 5
+		width 250
+		height 130
+		material Core/StatsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+		element TextArea(Example/CubeMapping/Displacement)
+		{
+			metrics_mode pixels
+			left 5
+			top 5
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [1/2] Displacement:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/CubeMapping/Density)
+		{
+			metrics_mode pixels
+			left 5
+			top 20
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [3/4] Noise density:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/CubeMapping/TimeDensity)
+		{
+			metrics_mode pixels
+			left 5
+			top 35
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [5/6] Time density:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+
+		element TextArea(Example/CubeMapping/Noise)
+		{
+			metrics_mode pixels
+			left 5
+			top 50
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [N] Noise: _not_set_
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/CubeMapping/Material)
+		{
+			metrics_mode pixels
+			left 5
+			top 65
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [M] Material: *UNIMPLEMENTED*
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/CubeMapping/Object)
+		{
+			metrics_mode pixels
+			left 5
+			top 80
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [O] Object:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/CubeMapping/CubeMap)
+		{
+			metrics_mode pixels
+			left 5
+			top 95
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [C] CubeMap:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		
+		element TextArea(Example/CubeMapping/Random)
+		{
+			metrics_mode pixels
+			left 5
+			top 110
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [SPACE] Go random!
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Example-DynTex.overlay
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Example-DynTex.overlay	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Example-DynTex.overlay	(revision 1493)
@@ -0,0 +1,194 @@
+Example/DynTexOverlay
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(Core/DynTexPanel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 5 
+		top 5
+		width 200
+		height 100
+		material Core/StatsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+		element TextArea(Example/DynTex/Note)
+		{
+			metrics_mode pixels
+			left 5
+			top 5
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Reaction parameters
+			colour_top 0.7 0.9 0.7
+			colour_bottom 0.5 0.7 0.5
+		}
+
+		element TextArea(Example/DynTex/Param_K)
+		{
+			metrics_mode pixels
+			left 5
+			top 20
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [1/2]K:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/DynTex/Param_F)
+		{
+			metrics_mode pixels
+			left 5
+			top 35
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [3/4]F:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/DynTex/Param_A0)
+		{
+			metrics_mode pixels
+			left 5
+			top 50
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [5/6]Diffusion 1:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/DynTex/Param_A1)
+		{
+			metrics_mode pixels
+			left 5
+			top 65
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [7/8]Diffusion 2:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/DynTex/Zero)
+		{
+			metrics_mode pixels
+			left 5
+			top 80
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [0]Reset initial conditions
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+
+	}
+}
+Example/VolTexOverlay
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(Example/VolTexPanel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 5 
+		top 5
+		width 200
+		height 70
+		material Core/StatsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+		element TextArea(Example/VolTex/Note)
+		{
+			metrics_mode pixels
+			left 5
+			top 5
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Julia parameters
+			colour_top 0.7 0.9 0.7
+			colour_bottom 0.5 0.7 0.5
+		}
+
+		element TextArea(Example/VolTex/Param_real)
+		{
+			metrics_mode pixels
+			left 5
+			top 20
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [1/2]real:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/VolTex/Param_imag)
+		{
+			metrics_mode pixels
+			left 5
+			top 35
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [3/4]imag:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/VolTex/Param_theta)
+		{
+			metrics_mode pixels
+			left 5
+			top 50
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [5/6]theta:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/DP3.overlay
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/DP3.overlay	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/DP3.overlay	(revision 1493)
@@ -0,0 +1,105 @@
+Example/DP3Overlay
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(Core/DP3Panel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 5 
+		top 5
+		width 500
+		height 70
+		material Core/StatsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+		element TextArea(Example/DP3/Light)
+		{
+			metrics_mode pixels
+			left 5
+			top 5
+			width 180
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [1,2,3] toggle lights
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/DP3/Object)
+		{
+			metrics_mode pixels
+			left 5
+			top 20
+			width 180
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [O] change objects
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(Example/DP3/ObjectInfo)
+		{
+			metrics_mode pixels
+			left 155
+			top 20
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Current:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/DP3/Materials)
+		{
+			metrics_mode pixels
+			left 5
+			top 35
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [M] Change material
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(Example/DP3/MaterialInfo)
+		{
+			metrics_mode pixels
+			left 155
+			top 35
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Current:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(Example/DP3/Info)
+		{
+			metrics_mode pixels
+			left 5
+			top 50
+			width 250
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/gametools.overlay.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/gametools.overlay.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/gametools.overlay.bak	(revision 1493)
@@ -0,0 +1,38 @@
+gametoolsMain
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(gametoolsPanel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 0 
+		top 0
+		width 1024
+		height 768
+		material gametoolsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+		element Panel(gametoolsVideoPage)
+		{
+			metrics_mode pixels
+			left 0
+			top 0
+			width 1024
+			height 768
+			material gametoolsVideoPage
+		}
+
+		
+		 
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Shadows.overlay
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Shadows.overlay	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Shadows.overlay	(revision 1493)
@@ -0,0 +1,92 @@
+Example/ShadowsOverlay
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(Core/ShadowsPanel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 5 
+		top 5
+		width 500
+		height 55
+		material Core/StatsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+
+		element TextArea(Example/Shadows/ShadowTechnique)
+		{
+			metrics_mode pixels
+			left 5
+			top 5
+			width 180
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [O] Shadow Technique
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(Example/Shadows/ShadowTechniqueInfo)
+		{
+			metrics_mode pixels
+			left 155
+			top 5
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Current:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/Shadows/Materials)
+		{
+			metrics_mode pixels
+			left 5
+			top 20
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [M] Athene Material
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(Example/Shadows/MaterialInfo)
+		{
+			metrics_mode pixels
+			left 155
+			top 20
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Current:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(Example/Shadows/Info)
+		{
+			metrics_mode pixels
+			left 5
+			top 35
+			width 250
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/BasicOgreGuiTemplates.inc
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/BasicOgreGuiTemplates.inc	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/BasicOgreGuiTemplates.inc	(revision 1493)
@@ -0,0 +1,47 @@
+// Ogre overlay scripts
+template container BorderPanel(SS/Templates/BasicBorderPanel)
+{
+	left 0
+	top 0
+	width 1
+	height 1
+	material Core/StatsBlockCenter
+    	border_size 0.06 0.06 0.06665 0.06665
+    	border_material Core/StatsBlockBorder
+    	border_topleft_uv     0.0000 0.0000 0.1914 0.2031
+	border_top_uv         0.1914 0.0000 0.8086 0.2031
+	border_topright_uv    0.8086 0.0000 1.0000 0.2031
+	border_left_uv        0.0000 0.2031 0.1914 0.7852
+	border_right_uv       0.8086 0.2031 1.0000 0.7852
+	border_bottomleft_uv  0.0000 0.7852 0.1914 1.0000
+        border_bottom_uv      0.1914 0.7852 0.8086 1.0000
+	border_bottomright_uv 0.8086 0.7852 1.0000 1.0000
+}
+
+template container BorderPanel(SS/Templates/BasicSmallBorderPanel) : SS/Templates/BasicBorderPanel
+{
+    border_size 0.04 0.04 0.04665 0.04665
+}
+
+
+template element TextArea(SS/Templates/BasicText)
+{
+	font_name Ogre
+	char_height 0.08
+	colour_top 1 1 0
+	colour_bottom 1 0.2 0.2
+	left 0.03
+	top 0.02
+	width 0.12
+	height 0.09
+}
+
+template container Panel(SS/Templates/BasicPanel)
+{
+	left 0 
+	top 0
+	width 1
+	height 1
+	material Core/StatsBlockCenter
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/gametools.overlay
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/gametools.overlay	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/gametools.overlay	(revision 1493)
@@ -0,0 +1,39 @@
+gametoolsMain
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(gametoolsPanel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 0 
+		top 0
+		width 1024
+		height 768
+		material gametoolsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+		element Panel(gametoolsVideoPage)
+		{
+			metrics_mode pixels
+			left 0
+			top 0
+			width 512
+			height 512
+			material gametoolsVideoPage
+			//material gametoolsDemoPage
+		}
+
+		
+		 
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Example-Water.overlay
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Example-Water.overlay	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/overlays/Example-Water.overlay	(revision 1493)
@@ -0,0 +1,168 @@
+Example/WaterOverlay
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(Core/WaterPanel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 5 
+		top 5
+		width 400
+		height 87
+		material Core/StatsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+		    
+		element TextArea(Example/Water/Normals)
+		{
+			metrics_mode pixels
+			left 5
+			top 5
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [N]Normals:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/Water/Rain)
+		{
+			metrics_mode pixels
+			left 5
+			top 20
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [SPACE]Rain
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/Water/SkyBox)
+		{
+			metrics_mode pixels
+			left 5
+			top 35
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [B]SkyBox: 
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/Water/Depth)
+		{
+			metrics_mode pixels
+			left 5
+			top 50
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [U/J]Head depth:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/Water/Material)
+		{
+			metrics_mode pixels
+			left 5
+			top 65
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [M]Material:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/Water/Note)
+		{
+			metrics_mode pixels
+			left 200
+			top 5
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Careful with these values!
+			colour_top 0.7 0.9 0.7
+			colour_bottom 0.5 0.7 0.5
+		}
+
+		element TextArea(Example/Water/Param_C)
+		{
+			metrics_mode pixels
+			left 200
+			top 20
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [1/2]Ripple speed:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/Water/Param_D)
+		{
+			metrics_mode pixels
+			left 200
+			top 35
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [3/4]Distance:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/Water/Param_U)
+		{
+			metrics_mode pixels
+			left 200
+			top 50
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [5/6]Viscosity:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(Example/Water/Param_T)
+		{
+			metrics_mode pixels
+			left 200
+			top 65
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [7/8]Time period:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/farm/farm.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/farm/farm.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/farm/farm.material	(revision 1493)
@@ -0,0 +1,226 @@
+material floorplane
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.35 0.35 0.35 0.35
+			lighting on
+			texture_unit
+			{
+				texture terrain_texture.jpg
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+
+material D5002iro
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.35 0.35 0.35 0.35
+			diffuse 0.0 0.0 0.0 1
+			lighting on
+		}
+	}
+}
+material Material #43
+{
+	technique
+	{
+		pass
+		{
+			depth_bias 0.5
+			texture_unit
+			{
+				texture D5002WOO.JPG
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material Material #44
+{
+	technique
+	{
+		pass
+		{
+			depth_bias 0.5
+			texture_unit
+			{
+				texture D5002WOO.JPG
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material D5002L
+{
+	technique
+	{
+		pass
+		{
+			depth_bias 0.5
+			texture_unit
+			{
+				texture D5002B3NEW.JPG
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material D5002br4
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture D5002B4.JPG
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material D5002bla
+{
+	technique
+	{
+		pass
+		{
+
+			ambient 0 0 0 1
+			diffuse 0.0 0.0 0.0 1
+		}
+	}
+}
+material Material #45
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture D5002WO2.JPG
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material Material #46
+{
+	technique
+	{
+		pass
+		{
+	
+			ambient 0.40 0.15 0.04 0
+			diffuse 0.0 0.0 0.0 1
+		}
+	}
+}
+material Material #47
+{
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture D5002WO2.JPG
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material D5002gla
+{
+	technique
+	{
+		pass
+		{
+
+			ambient 1 1 1 0.5
+
+			scene_blend alpha_blend
+			texture_unit
+			{
+				texture glass.png
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material D5002br3
+{
+	technique
+	{
+		pass
+		{
+
+			ambient 0.35 0.35 0.35 0.35
+
+			depth_bias 0.9
+			texture_unit
+			{
+				texture D5002B3.JPG
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
+material D5002whi
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.7 0.7 0.55 1
+			diffuse 0.0 0.0 0.0 1 
+		}
+	}
+}
+material D5002whi1
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.7 0.7 0.55 1
+			diffuse 0.0 0.0 0.0 1
+		}
+	}
+}
+material D5002M
+{
+	technique
+	{
+		pass
+		{
+			depth_bias 0.5
+			texture_unit
+			{
+				texture D5002M.JPG
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/barrel/barrel.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/barrel/barrel.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/barrel/barrel.material	(revision 1493)
@@ -0,0 +1,26 @@
+
+material Material22
+{
+	technique
+	{
+		pass
+		{
+			ambient 0.117647 0.117647 0.117647 1
+		}
+	}
+}
+material Material11
+{
+	technique
+	{
+		pass
+		{
+			diffuse 0.654902 0.356863 0.192157 1
+
+			texture_unit
+			{
+				texture old_planks.jpg
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/fonts/sample.fontdef
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/fonts/sample.fontdef	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/fonts/sample.fontdef	(revision 1493)
@@ -0,0 +1,121 @@
+IronMaiden
+{
+	// Blame cearny for this one!
+	type 		truetype
+	source 		maiden.ttf
+	size 		48
+	resolution 	96
+}
+
+StarWars
+{
+	// Now this one I agree with ;)
+	// A Star Wars font :)
+	type 		truetype
+	source 		solo5.ttf
+	size 		16
+	resolution 	96
+}
+
+Ogre
+{
+	type	image
+	source 	font_matisse_itc.png
+
+glyph	!	0.0898438	0.125	0.0976563	0.1875
+glyph	 	0.152344	0.125	0.160156	0.1875
+glyph	#	0.205078	0.125	0.232422	0.1875
+glyph	$	0.273438	0.125	0.289063	0.1875
+glyph	%	0.330078	0.125	0.357422	0.1875
+glyph	&	0.396484	0.125	0.416016	0.1875
+glyph	'	0.464844	0.125	0.472656	0.1875
+glyph	(	0.523438	0.125	0.539063	0.1875
+glyph	)	0.585938	0.125	0.601563	0.1875
+glyph	*	0.650391	0.125	0.662109	0.1875
+glyph	+	0.705078	0.125	0.732422	0.1875
+glyph	,	0.777344	0.125	0.785156	0.1875
+glyph	-	0.835938	0.125	0.851563	0.1875
+glyph	.	0.902344	0.125	0.910156	0.1875
+glyph	/	0.957031	0.125	0.980469	0.1875
+glyph	0	0.0195313	0.1875	0.0429688	0.25
+glyph	1	0.0859375	0.1875	0.101563	0.25
+glyph	2	0.146484	0.1875	0.166016	0.25
+glyph	3	0.210938	0.1875	0.226563	0.25
+glyph	4	0.271484	0.1875	0.291016	0.25
+glyph	5	0.333984	0.1875	0.353516	0.25
+glyph	6	0.396484	0.1875	0.416016	0.25
+glyph	7	0.458984	0.1875	0.478516	0.25
+glyph	8	0.521484	0.1875	0.541016	0.25
+glyph	9	0.583984	0.1875	0.603516	0.25
+glyph	:	0.652344	0.1875	0.660156	0.25
+glyph	;	0.714844	0.1875	0.722656	0.25
+glyph	<	0.771484	0.1875	0.791016	0.25
+glyph	=	0.832031	0.1875	0.855469	0.25
+glyph	>	0.896484	0.1875	0.916016	0.25
+glyph	?	0.960938	0.1875	0.976563	0.25
+glyph	@	0.0195313	0.25	0.0429688	0.3125
+glyph	A	0.0839844	0.25	0.103516	0.3125
+glyph	B	0.146484	0.25	0.166016	0.3125
+glyph	C	0.210938	0.25	0.226563	0.3125
+glyph	D	0.271484	0.25	0.291016	0.3125
+glyph	E	0.335938	0.25	0.351563	0.3125
+glyph	F	0.396484	0.25	0.416016	0.3125
+glyph	G	0.458984	0.25	0.478516	0.3125
+glyph	H	0.521484	0.25	0.541016	0.3125
+glyph	I	0.589844	0.25	0.597656	0.3125
+glyph	J	0.646484	0.25	0.666016	0.3125
+glyph	K	0.705078	0.25	0.732422	0.3125
+glyph	L	0.771484	0.25	0.791016	0.3125
+glyph	M	0.824219	0.25	0.863281	0.3125
+glyph	N	0.892578	0.25	0.919922	0.3125
+glyph	O	0.958984	0.25	0.978516	0.3125
+glyph	P	0.0195313	0.3125	0.0429688	0.375
+glyph	Q	0.0820313	0.3125	0.105469	0.375
+glyph	R	0.144531	0.3125	0.167969	0.375
+glyph	S	0.210938	0.3125	0.226563	0.375
+glyph	T	0.269531	0.3125	0.292969	0.375
+glyph	U	0.333984	0.3125	0.353516	0.375
+glyph	V	0.396484	0.3125	0.416016	0.375
+glyph	W	0.453125	0.3125	0.484375	0.375
+glyph	X	0.517578	0.3125	0.544922	0.375
+glyph	Y	0.576172	0.3125	0.611328	0.375
+glyph	Z	0.646484	0.3125	0.666016	0.375
+glyph	[	0.708984	0.3125	0.728516	0.375
+glyph	\	0.767578	0.3125	0.794922	0.375
+glyph	]	0.833984	0.3125	0.853516	0.375
+glyph	^	0.896484	0.3125	0.916016	0.375
+glyph	_	0.957031	0.3125	0.980469	0.375
+glyph	`	0.0195313	0.375	0.0429688	0.4375
+glyph	a	0.0839844	0.375	0.103516	0.4375
+glyph	b	0.146484	0.375	0.166016	0.4375
+glyph	c	0.207031	0.375	0.230469	0.4375
+glyph	d	0.273438	0.375	0.289063	0.4375
+glyph	e	0.333984	0.375	0.353516	0.4375
+glyph	f	0.396484	0.375	0.416016	0.4375
+glyph	g	0.458984	0.375	0.478516	0.4375
+glyph	h	0.521484	0.375	0.541016	0.4375
+glyph	i	0.587891	0.375	0.599609	0.4375
+glyph	j	0.646484	0.375	0.666016	0.4375
+glyph	k	0.705078	0.375	0.732422	0.4375
+glyph	l	0.771484	0.375	0.791016	0.4375
+glyph	m	0.816406	0.375	0.871094	0.4375
+glyph	n	0.888672	0.375	0.923828	0.4375
+glyph	o	0.958984	0.375	0.978516	0.4375
+glyph	p	0.0195313	0.4375	0.0429688	0.5
+glyph	q	0.0839844	0.4375	0.103516	0.5
+glyph	r	0.146484	0.4375	0.166016	0.5
+glyph	s	0.208984	0.4375	0.228516	0.5
+glyph	t	0.271484	0.4375	0.291016	0.5
+glyph	u	0.332031	0.4375	0.355469	0.5
+glyph	v	0.386719	0.4375	0.425781	0.5
+glyph	w	0.445313	0.4375	0.492188	0.5
+glyph	x	0.521484	0.4375	0.541016	0.5
+glyph	y	0.583984	0.4375	0.603516	0.5
+glyph	z	0.646484	0.4375	0.666016	0.5
+glyph	{	0.710938	0.4375	0.726563	0.5
+glyph	|	0.773438	0.4375	0.789063	0.5
+glyph	}	0.835938	0.4375	0.851563	0.5
+glyph	~	0.884766	0.4375	0.927734	0.5
+
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_indirect_texturing_fp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_indirect_texturing_fp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_indirect_texturing_fp.shd	(revision 1493)
@@ -0,0 +1,19 @@
+float4 gambient;	
+sampler textureAlpha: register(s0);
+sampler leaf: register(s5);
+
+float4 main(float3 normal:    TEXCOORD0,  float3 lightVec : TEXCOORD1,   float4 texCoord:  TEXCOORD2,  float4 texCoordNormalized: TEXCOORD3) : COLOR
+{
+   float depth = length(lightVec.xyz);
+
+   if (tex2D(textureAlpha,texCoord).w > 0.0) 
+   {
+		
+	return float4(gambient.xyz,depth);		
+   }
+   else
+   {
+	discard;
+   }
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/dynamic_skybox.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/dynamic_skybox.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/dynamic_skybox.material	(revision 1493)
@@ -0,0 +1,123 @@
+vertex_program Ogre/DynamicSkyBox_VP cg
+{
+	source skybox_vp.cg
+	entry_point main_vp
+	profiles arbvp1 vs_2_0
+}
+
+fragment_program Ogre/DynamicSkyBox_FP cg
+{
+	source skybox_fp.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+fragment_program Ogre/DynamicSkyBoxTerrain_FP cg
+{
+	source terrain_fp.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+material Examples/Flare03
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			scene_blend add
+			depth_write off
+			fog_override true
+
+			texture_unit
+			{
+				texture flare03.png
+			}
+		}
+	}
+}
+
+material Examples/EveningSkyBoxNoSun
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+			//fog_override true
+
+			//vertex_program_ref Ogre/DynamicSkyBox_FP
+                        //{
+                        //         param_named_auto worldviewproj worldviewproj_matrix                              
+                        //}
+
+                        fragment_program_ref Ogre/DynamicSkyBox_FP
+                        {
+                                param_named_auto ambientlight ambient_light_colour
+                        }
+
+			texture_unit
+			{
+				cubic_texture evening_no_sun.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+
+material DynamicSkyBoxFloor
+{
+	technique
+	{
+		pass
+		{		
+			//vertex_program_ref Ogre/DynamicSkyBox_FP
+                        //{
+                        //         param_named_auto worldviewproj worldviewproj_matrix                              
+                        //}
+
+                        fragment_program_ref Ogre/DynamicSkyBoxTerrain_FP
+                        {
+                                param_named_auto ldiffuse light_diffuse_colour 0
+                        }
+
+			texture_unit
+			{
+				//texture grass2.tga
+				texture white.png
+			}
+		}
+	}
+}
+
+material Examples/SpaceSkyPlaneNight
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+			fog_override true none
+
+                        fragment_program_ref Ogre/DynamicSkyBox_FP
+                        {
+                                param_named ambientlight float4 1.0 1.0 1.0 1.0
+                        }
+
+			//texture_unit
+			//{
+			//	texture spacesky_night.jpg
+			//	//texture white.png
+			//}
+
+			texture_unit
+			{
+				texture spacesky_day.jpg
+				//texture white.png
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp_ATI_9700.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp_ATI_9700.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp_ATI_9700.shd	(revision 1493)
@@ -0,0 +1,67 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float3 lightVec : TEXCOORD1;
+   float3 viewVec: TEXCOORD2;
+   float4 shadowCrd: TEXCOORD3;
+   float2 texCoord:  TEXCOORD4;
+   float2 texCoordNormalized: TEXCOORD5;
+};
+
+float distanceScale;
+float4 lattenuation;
+float4 lightPosition;
+float4 lightDirection;
+float4 cameraPosition;
+float4 cameraDirection;
+float4x4 worldviewproj;
+float4x4 worldmatrix;
+float4x4 proj_matrix;
+float4x4 texAdjMatrix;
+float4x4 texMat;
+float time_0_X;
+
+VS_OUTPUT main_vp(
+      float4 position : POSITION,
+      float3 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+      float3 inTangent : TEXCOORD2,
+      float3 inBinormal : BINORMAL
+      )
+{
+
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+	float4 worldpos = mul(worldmatrix,position);
+	Out.normal = normal;
+	Out.lightVec = lightPosition.xyz - worldpos.xyz;
+	Out.viewVec = cameraPosition.xyz - position.xyz;
+	Out.texCoord = texCoord;
+	Out.texCoordNormalized = texCoordNormalized;
+	//float4x4 texMat = mul(texMat,worldmatrix);
+	//float4x4 texMat = mul(worldmatrix,texMat);	
+	//float4 sPos = mul(texMat,position);
+	
+	//float4 sPos = mul(mul(proj_matrix,worldmatrix),position);
+	float4 sPos = Out.Pos;
+        // Use projective texturing to map the position of each fragment
+	// to its corresponding texel in the shadow map.
+	sPos.z += 1.0;
+	//Out.shadowCrd.x = sPos.z + sPos.x;
+	//Out.shadowCrd.y = sPos.z - sPos.y;
+	//Out.shadowCrd.z = 0;
+	//Out.shadowCrd.w = sPos.z + sPos.z;
+	//Out.shadowCrd = sPos;
+	// Projective texture coordinates, adjust for mapping
+	float4x4 scalemat = float4x4(0.5,   0,      0,   0.5, 
+	                             0,     -0.5,   0,   0.5,
+				     0,      0,     0.5, 0.5,
+				     0,      0,     0,   1);
+	Out.shadowCrd = mul(scalemat,sPos);
+
+
+
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/ground_vp.txt
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/ground_vp.txt	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/ground_vp.txt	(revision 1493)
@@ -0,0 +1,81 @@
+float4x4 viewProjectionMatrix: register(c0);
+float4 lightPosition: register(c4);
+float4 view_position: register(c5);
+float4x4 proj_matrix: register(c6);
+float distanceScale: register(c10);
+float time_0_X: register(c11);
+float3 lookAt;
+float factor;
+
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float3 lightVec:  TEXCOORD1;
+   float3 viewVec:   TEXCOORD2;
+   float4 shadowCrd: TEXCOORD3;
+   float3 texCoord: TEXCOORD4;
+};
+
+VS_OUTPUT main(float4 Pos: POSITION, float3 normal: NORMAL, float3 texCoord: TEXCOORD0){
+   VS_OUTPUT Out;
+
+   // Animate the light position.
+   // Comment out this code to use a static light.
+   // In real applications this work is better done on
+   // the CPU as it's constant for the whole scene.
+   float3 lightPosition;
+   lightPosition.x = cos(1.321 * time_0_X);
+   lightPosition.z = sin(0.923 * time_0_X);
+   lightPosition.xz = 100 * normalize(lightPosition.xz);
+   lightPosition.y = 100;
+
+   // Flip, scale and translate our model to suit our scene
+   // In real applications, this work should normally be
+   // done at load time, alternatively if animation is desired,
+   // be altered by a world matrix.
+   normal = normal.xyz;
+
+   Out.Pos = mul(viewProjectionMatrix, Pos);  
+   // World-space lighting
+   Out.normal = normal;
+   Out.lightVec = distanceScale * (lightPosition - Pos.xyz);
+   Out.viewVec = view_position - Pos.xyz;
+   Out.texCoord = texCoord;
+
+   // Create view vectors for the light, looking at (0,0,0)
+   // In real applications this work is better done on
+   // the CPU as it's constant for the whole scene.
+   float3 dirZ = -normalize(lightPosition);
+   float3 up = float3(0.0,0.0,1.0);
+   float3 dirX = cross(up, dirZ);
+   float3 dirY = cross(dirZ, dirX);
+
+   // Transform into light's view space.
+   // In real applications we would be better off using a 4x4
+   // matrix instead, but for this shader it's cheaper to
+   // just transpose and rotate into light's view space.
+   float4 pos;
+   Pos.xyz -= lightPosition;
+   pos.x = dot(dirX, Pos);
+   pos.y = dot(dirY, Pos);
+   pos.z = dot(dirZ, Pos);
+   pos.w = 1;
+
+   // Project it. For this sample using the normal projection
+   // matrix suffices, however, real applications will typically
+   // use a separate projection matrix for each light depending
+   // on its properties such as FOV and range.
+   float4 sPos = mul(proj_matrix, pos);
+
+   // Use projective texturing to map the position of each fragment
+   // to its corresponding texel in the shadow map.
+   sPos.z += 10;
+   Out.shadowCrd.x = 0.5 * (sPos.z + sPos.x);
+   Out.shadowCrd.y = 0.5 * (sPos.z - sPos.y);
+   Out.shadowCrd.z = 0;
+   Out.shadowCrd.w = sPos.z;
+
+   return Out;
+}
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fpOld.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fpOld.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fpOld.shd	(revision 1493)
@@ -0,0 +1,24 @@
+sampler orderFrontBack: register(s0);
+sampler leaf: register(s1);
+float4 color;
+float4 ambientColour;
+
+float4 main(float4 lightvec: TEXCOORD2, float3 texCoord: TEXCOORD0, float3 texCoordNormalized: TEXCOORD1): COLOR
+{
+   // Output radial distance   
+   float depth;
+   depth = length(lightvec.xyz);
+  
+   float4 tempcolor;
+   //tempcolor = float4(depth,depth,depth,tex2D(orderFrontBack,texCoord).w);
+   tempcolor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 64.0) : 0.0; 
+   tempcolor = (tempcolor.w > 0.0) ? float4(depth,depth,depth,tempcolor.w) : 0.0;
+   float4 ocolor;
+   ocolor = tempcolor;
+   ocolor = float4(depth,depth,depth,tempcolor.w);
+   return ocolor;
+
+   //float value = (tempcolor.w > 0.0) ? depth : 0.0;
+   //return value;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.txt
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.txt	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.txt	(revision 1493)
@@ -0,0 +1,11 @@
+sampler ImpostorMap;
+float4 main(float3 lightVec: TEXCOORD0, float3 texCoord: TEXCOORD1) : COLOR {
+   // Output radial distance   
+   float alpha = tex2D(ImpostorMap, texCoord).z;
+   
+   float depth;
+   depth = length(lightVec);
+   //return length(lightVec);
+   return float4(length(lightVec),length(lightVec),alpha,alpha);
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_fp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_fp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_fp.shd	(revision 1493)
@@ -0,0 +1,129 @@
+
+//float4 main_fp(float2 texCoord: TEXCOORD0, float2 texCoordNormalized: TEXCOORD1) : COLOR
+//{
+//	// DirectX
+//	return float4((tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0);
+//}
+
+   /*
+   normal = normalize(normal);
+   // Radial distance
+   float depth = length(lightVec);
+   // Normalizes light vector
+   lightVec /= depth;
+
+   // Standard lighting
+   float odiffuse = saturate(dot(lightVec, normal));
+   float ospecular = pow(saturate(dot(reflect(-normalize(viewVec), normal), lightVec)), 16);
+
+   // The depth of the fragment closest to the light
+   float shadowMap = tex2Dproj(shadowMap, shadowCrd);
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(spotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMap + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   //float4 tempcolor = (tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0;
+   tempcolor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 4.0) : 0.0;
+   // green test
+   //tempcolor.xyz = float3(0.0,0.5,0.2);
+   // Look the different leaves orientations used...
+   //float4 tempcolor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).zw,1.0,1.0) : 0.0;
+
+   tempcolor = float4(lattenuation * (Ka*(gambient.xyz)) + (Kd*(odiffuse * tempcolor.xyz * ldiffuse)) + (Ks * (ospecular * lspecular)),tempcolor.w * 0.5);	   
+   //return float4((tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0); 
+   
+   //else
+   //{
+   //	tempcolor = float4(0.0,1.0,0.0,1.0);
+   //}
+   */
+   
+float4x4 worldmatrix;
+float tex_atlas_size;
+float scale_factor;
+float3 ldiffuse;
+float3 lspecular;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+sampler orderFrontBack: register(s0);
+sampler leaf: register(s1);
+sampler shadowMap: register(s2);
+sampler spotLight: register(s3);
+
+float shadowBias = 45.57;
+float backProjectionCut = 0.0;
+float4 main_fp(float reg: VFACE, float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 viewVec: TEXCOORD2, float4 shadowCrd: TEXCOORD3, float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5) : COLOR
+{
+   float4 tempcolor;
+   float4 ocolor;
+
+   normal = normalize(normal);
+   // Front and Back faces lighted
+   normal = (reg > 0.0) ? normal : -normal;
+
+   // Radial distance
+   float depth = length(lightVec);
+   // Normalizes light vector
+   lightVec /= depth;
+
+   // Standard lighting
+   float odiffuse = saturate(dot(lightVec, normal));
+   float ospecular = pow(saturate(dot(reflect(-normalize(viewVec), normal), lightVec)), 16);
+
+   // The depth of the fragment closest to the light
+   float shadowMap = tex2Dproj(shadowMap, shadowCrd);
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(spotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMap + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   //shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   tempcolor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 4.0) : 0.0;
+
+   
+   // green test
+   //tempcolor.xyz = float3(0.0,0.5,0.2);
+	
+   tempcolor = float4((Ka*(gambient.xyz)) + (Kd*(odiffuse * tempcolor.xyz * ldiffuse)) + (Ks * (ospecular * lspecular)),tempcolor.w);	   
+
+   // Look the different leaves orientations used...
+   //tempcolor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).zw,1.0,1.0) : 0.0;
+   // Check the AATexQuads of the leaves...
+   //tempcolor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).xy,1.0,1.0) : 0.0;
+   
+   // Shows each side the front and the back side...
+   //tempcolor = (reg > 0.0) ? float4(1.0,0.0,0.0,tempcolor.w) : float4(0.0,1.0,0.0,tempcolor.w);
+	
+   ocolor = tempcolor;
+   return  ocolor;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_directional_light_fp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_directional_light_fp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_directional_light_fp.shd	(revision 1493)
@@ -0,0 +1,129 @@
+
+//float4 main_fp(float2 texCoord: TEXCOORD0, float2 texCoordNormalized: TEXCOORD1) : COLOR
+//{
+//	// DirectX
+//	return float4((tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0);
+//}
+
+   /*
+   normal = normalize(normal);
+   // Radial distance
+   float depth = length(lightVec);
+   // Normalizes light vector
+   lightVec /= depth;
+
+   // Standard lighting
+   float lDiffuseAttenuation = saturate(dot(lightVec, normal));
+   float lSpecularAttenuation = pow(saturate(dot(reflect(-normalize(viewVec), normal), lightVec)), 16);
+
+   // The depth of the fragment closest to the light
+   float shadowMap = tex2Dproj(shadowMap, shadowCrd);
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(spotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMap + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   //float4 leafColor = (tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0;
+   leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 4.0) : 0.0;
+   // green test
+   //leafColor.xyz = float3(0.0,0.5,0.2);
+   // Look the different leaves orientations used...
+   //float4 leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).zw,1.0,1.0) : 0.0;
+
+   leafColor = float4(lattenuation * (Ka*(gambient.xyz)) + (Kd*(lDiffuseAttenuation * leafColor.xyz * lDiffuseColor)) + (Ks * (lSpecularAttenuation * lSpecularColor)),leafColor.w * 0.5);	   
+   //return float4((tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0); 
+   
+   //else
+   //{
+   //	leafColor = float4(0.0,1.0,0.0,1.0);
+   //}
+   */
+   
+float4x4 worldmatrix;
+float tex_atlas_size;
+float scale_factor;
+float3 lDiffuseColor;
+float3 lSpecularColor;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+sampler orderFrontBack: register(s0);
+sampler leaf: register(s1);
+sampler shadowMap: register(s2);
+sampler spotLight: register(s3);
+
+float shadowBias = 45.57;
+float backProjectionCut = 0.0;
+float4 main_fp(float reg: VFACE, float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 viewVec: TEXCOORD2, float4 shadowCrd: TEXCOORD3, float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5) : COLOR
+{
+   float4 leafColor;
+   float4 ocolor;
+
+   normal = normalize(normal);
+   // Front and Back faces lighted
+   normal = (reg > 0.0) ? normal : -normal;
+
+   // Radial distance
+   float depth = length(lightVec);
+   // Normalizes light vector
+   lightVec /= depth;
+
+   // Standard lighting
+   float lDiffuseAttenuation = saturate(dot(lightVec, normal));
+   float lSpecularAttenuation = pow(saturate(dot(reflect(-normalize(viewVec), normal), lightVec)), 16);
+
+   // The depth of the fragment closest to the light
+   float shadowMap = tex2Dproj(shadowMap, shadowCrd);
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(spotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMap + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   //shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 4.0) : 0.0;
+
+   
+   // green test
+   //leafColor.xyz = float3(0.0,0.5,0.2);
+	
+   leafColor = float4((Ka*(gambient.xyz)) + (Kd*(lDiffuseAttenuation * leafColor.xyz * lDiffuseColor)) + (Ks * (lSpecularAttenuation * lSpecularColor)),leafColor.w);	   
+
+   // Look the different leaves orientations used...
+   //leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).zw,1.0,1.0) : 0.0;
+   // Check the AATexQuads of the leaves...
+   //leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).xy,1.0,1.0) : 0.0;
+   
+   // Shows each side the front and the back side...
+   //leafColor = (reg > 0.0) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+	
+   ocolor = leafColor;
+   return  ocolor;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.cg.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.cg.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.cg.bak	(revision 1493)
@@ -0,0 +1,41 @@
+/*
+sampler ImpostorMap;
+float4 main(float3 lightVec: TEXCOORD0, float3 texCoord: TEXCOORD1) : COLOR {
+   // Output radial distance   
+   float alpha = tex2D(ImpostorMap, texCoord).z;
+   
+   float depth;
+   depth = length(lightVec);
+   //return length(lightVec);
+   return float4(depth,depth,depth,alpha);
+}
+*/
+
+float4 main(
+	    float4 lightvec: TEXCOORD2, 
+            float3 texCoord: TEXCOORD0, 
+	    float3 texCoordNormalized: TEXCOORD1,
+	    float4 color: COLOR0,
+	    uniform float nearDistance,
+	    uniform float farDistance,
+	    uniform sampler2D orderFrontBack,
+	    uniform sampler2D leaf): COLOR
+{
+   // Output radial distance   
+   float depth;
+   depth = length(lightvec.xyz);
+   
+   float4 tempcolor;
+   //tempcolor = float4(depth,depth,depth,tex2D(orderFrontBack,texCoord).w);
+   tempcolor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 64.0) : 0.0; 
+   tempcolor = (tempcolor.w > 0.0) ? float4(depth,depth,depth,tempcolor.w) : 0.0;
+   
+   float4 ocolor;
+   ocolor = tempcolor;
+
+   return ocolor;
+
+   //float value = (tempcolor.w > 0.0) ? depth : 0.0;
+   //return value;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_spotlight_fp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_spotlight_fp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_spotlight_fp.shd	(revision 1493)
@@ -0,0 +1,89 @@
+float4x4 worldmatrix;
+float scale_factor;
+float3 lDiffuseColor;
+float3 lSpecularColor;
+float4 lattenuation;
+float4 gambient;
+float exposure;
+float Ka;
+float Kd;
+float Ks;
+sampler leaf: register(s0);
+sampler shadowMap: register(s1);
+sampler spotLight: register(s2);
+sampler normalMap: register(s3);
+sampler obscuranceMap: register(s4);
+
+float shadowBias = 0.0;
+float backProjectionCut = 0.0;
+float4 main_fp(float reg: VFACE, float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 viewVec: TEXCOORD2, float4 shadowCrd: TEXCOORD3, 
+float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5,float4 lightVecNormalMapping: TEXCOORD6,float4 halfvec: TEXCOORD7) : COLOR
+{
+   float4 leafColor;
+   float4 ocolor;
+
+   // The normals are not correct if we change the orientation of the impostor tree
+   //----------------------------------------------------------------------------
+   // Using normalmap
+   //normal = tex2D(normalMap,texCoord);
+   // The values are from 0..255, so I should convert them from [0,255] to [0,1]
+   // and convert from [0,1] to [-1,1]
+   //normal = float3(1.0,1.0,1.0) - normal * 2.0;
+   //normal = mul(worldmatrix,normal);
+   //----------------------------------------------------------------------------
+   normal = normalize(normal);
+
+   // Front and Back faces lighted, not needed because we
+   // correct the orientation in the vertex program.
+   normal = (reg > 0.0) ? normal : -normal;
+
+   // Radial distance
+   //float depth = length(lightVec);
+   float depth = lightVec.z;
+   // Normalizes light vector
+   lightVec /= depth;
+
+   // Standard lighting
+   // Using the standard normals in Object-space
+   //float lDiffuseAttenuation = saturate(dot(lightVec,normal));
+   //float lSpecularAttenuation = pow(saturate(dot(reflect(-normalize(viewVec),normal),lightVec)),16);
+
+   // Using the normal_map in Tangent-space
+   float lDiffuseAttenuation = clamp(0.0,1.0,dot(normal,lightVecNormalMapping));
+   float lSpecularAttenuation = pow(clamp(0.0,1.0,dot(normal,halfvec)),16);
+
+   // The depth of the fragment closest to the light
+   float shadowMap = tex2Dproj(shadowMap, shadowCrd);
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(spotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMap + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   leafColor = tex2D(leaf,texCoord);
+   leafColor = float4((Ka*(gambient.xyz)) + (Kd*(lDiffuseAttenuation * leafColor.xyz * lDiffuseColor)) + (Ks * (lSpecularAttenuation * lSpecularColor) * shadow),leafColor.w);	   
+  
+   // Shows each side the front and the back side...
+   //leafColor = (reg > 0.0) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+   
+   // No lighting test...
+   leafColor = tex2D(leaf,texCoord);
+   //leafColor = float4(normal,leafColor.w);
+   //float4 obsColor = (reg < 0.0) ? float4(tex2D(obscuranceMap,texCoord).xxxw) : float4(tex2D(obscuranceMap,texCoord).yyyw);
+   //leafColor = float4((1.0 - exp(-exposure * (obsColor.xyz/obsColor.w))),leafColor.w);
+   
+   ocolor = leafColor;
+   return  ocolor;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.cg	(revision 1493)
@@ -0,0 +1,42 @@
+/*
+sampler ImpostorMap;
+float4 main(float3 lightVec: TEXCOORD0, float3 texCoord: TEXCOORD1) : COLOR {
+   // Output radial distance   
+   float alpha = tex2D(ImpostorMap, texCoord).z;
+   
+   float depth;
+   depth = length(lightVec);
+   //return length(lightVec);
+   return float4(depth,depth,depth,alpha);
+}
+*/
+
+float4 main(
+	    float4 lightvec: TEXCOORD2, 
+            float3 texCoord: TEXCOORD0, 
+	    float3 texCoordNormalized: TEXCOORD1,
+	    float4 color: COLOR0,
+	    uniform float nearDistance,
+	    uniform float farDistance,
+	    uniform sampler2D orderFrontBack,
+	    uniform sampler2D leaf): COLOR
+{
+   // Output radial distance   
+   float depth;
+   depth = length(lightvec.xyz);
+   
+   float4 tempcolor;
+   //tempcolor = float4(depth,depth,depth,tex2D(orderFrontBack,texCoord).w);
+   tempcolor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 64.0) : 0.0; 
+   tempcolor = (tempcolor.w > 0.0) ? float4(depth,depth,depth,tempcolor.w) : 0.0;
+   
+   float4 ocolor;
+   //ocolor = tempcolor;
+   ocolor = color;
+
+   return ocolor;
+
+   //float value = (tempcolor.w > 0.0) ? depth : 0.0;
+   //return value;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/test_terrain.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/test_terrain.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/test_terrain.material	(revision 1493)
@@ -0,0 +1,30 @@
+material test_terrain_shadow_receiver
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture grass2.tga
+				scale 0.2 0.2
+			}
+		}
+	}
+}
+
+material test_terrain
+{
+	technique
+	{
+		pass
+		{
+			//ambient 0.35 0.35 0.35 0.35
+			//depth_bias 3
+			texture_unit
+			{
+				texture grass2.tga
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_indirect_texturing_vp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_indirect_texturing_vp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_indirect_texturing_vp.shd	(revision 1493)
@@ -0,0 +1,31 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float3 lightVec : TEXCOORD1;
+   float2 texCoord:  TEXCOORD2;
+   float2 texCoordNormalized: TEXCOORD3;
+};
+
+float4x4 worldviewproj;
+float4x4 worldmatrix;
+float4x4 worldview;
+
+VS_OUTPUT main(
+      float4 position : POSITION,
+      float3 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+      float3 inTangent : TEXCOORD2,
+      float3 inBinormal : BINORMAL
+      )
+{
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj,position);
+	Out.normal = normal;
+	Out.lightVec = mul(worldview,position).xyz;
+	Out.texCoord = texCoord;
+	Out.texCoordNormalized = texCoordNormalized;
+
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_leaves_fp.txt
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_leaves_fp.txt	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_leaves_fp.txt	(revision 1493)
@@ -0,0 +1,73 @@
+float backProjectionCut: register(c2);
+float Ka: register(c3);
+float Kd: register(c4);
+float Ks: register(c5);
+float4 modelColor: register(c0);
+float shadowBias: register(c1);
+sampler ImpostorMap;
+sampler RotatedLeaf;
+sampler ShadowMap;
+sampler SpotLight;
+
+float4 main(float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 viewVec: TEXCOORD2, float4 shadowCrd: TEXCOORD3, float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5) : COLOR {
+   normal = normalize(normal);
+   // Radial distance
+   float depth = length(lightVec);
+   // Normalizes light vector
+   lightVec /= depth;
+
+   // Standard lighting
+   float diffuse = saturate(dot(lightVec, normal));
+   float specular = pow(saturate(dot(reflect(-normalize(viewVec), normal), lightVec)), 16);
+
+   // The depth of the fragment closest to the light
+   float shadowMap = tex2Dproj(ShadowMap, shadowCrd);
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(SpotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMap + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   //return Ka * modelColor + (Kd * diffuse * modelColor + Ks * specular) * shadow;
+   float4 ocolor;
+   //ocolor = Ka * modelColor + (Kd * diffuse * modelColor + Ks * specular) * shadow;
+   float4 tempcolor = tex2D(ImpostorMap,texCoord);
+   float3 green = float3(0.0,0.8,0.0);
+   //ocolor = float4(Ka * tempcolor.xyz + (Kd * diffuse * tempcolor.xyz + Ks * specular) * shadow,tempcolor.z);
+   ocolor = float4(Ka * green + (Kd * diffuse * green + Ks * specular) * shadow,tempcolor.z);
+   
+   float scale_factor = 48.0;
+   float tex_atlas_size = 256;
+   float4 vis = tex2D(ImpostorMap, texCoord); 
+   float index = vis.z;
+   if (vis.x >= 0.0)
+   {
+      float2 leafuv = (texCoordNormalized - vis.xy) * (tex_atlas_size/scale_factor);      
+      float divInt = floor(index/4.0);
+      float modInt = (index - (4.0 * divInt));
+      float col = divInt / 4.0;
+      float row = modInt / 4.0;
+      // Using the leaf atlas...
+      float2 leafuvr = float2(leafuv.x + row,leafuv.y + col); 
+      tempcolor = tex2D(RotatedLeaf, leafuvr);
+   }   
+   ocolor = tempcolor;
+      
+   return ocolor; 
+   //return ocolor = tempcolor; 
+}
+
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/overlay_shadow_map.overlay
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/overlay_shadow_map.overlay	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/overlay_shadow_map.overlay	(revision 1493)
@@ -0,0 +1,224 @@
+shadowMapMain
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(shadoMapPanel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 0 
+		top 0
+		width 128
+		height 128
+		material gametoolsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+		element Panel(shadoMapImage)
+		{
+			metrics_mode pixels
+			left 0
+			top 0
+			width 128
+			height 128
+			material shadoMapImage
+			//material gametoolsDemoPage
+		}
+
+		
+		 
+	}
+}
+
+
+lightOptions
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(lightPanel)
+	{
+		metrics_mode pixels
+		vert_align top
+		left 300 
+		top 0
+		width 340
+		height 200
+		material Core/StatsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+
+		element TextArea(LightSelectedKeys)
+		{
+			metrics_mode pixels
+			left 5
+			top 5
+			width 180
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [SPACE]
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(LightSelected)
+		{
+			metrics_mode pixels
+			left 5
+			top 20
+			width 180
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Light Selected:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(LightDiffuseColourKeys)
+		{
+			metrics_mode pixels
+			left 5
+			top 35
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [U,I,O]/[J,K,L]
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(LightDiffuseColour)
+		{
+			metrics_mode pixels
+			left 5
+			top 50
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Diffuse Col.:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(LightSpecularColourKeys)
+		{
+			metrics_mode pixels
+			left 5
+			top 65
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [1,2,3]/[4,5,6]
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(LightSpecularColour)
+		{
+			metrics_mode pixels
+			left 5
+			top 80
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Specular Col.:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(LightShadowColourKeys)
+		{
+			metrics_mode pixels
+			left 5
+			top 95
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [F1,F2,F3]/[F4,F5,F6]
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(LightShadowColour)
+		{
+			metrics_mode pixels
+			left 5
+			top 110
+			width 90
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Shadow Col.:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(AmbientLightKeys)
+		{
+			metrics_mode pixels
+			left 5
+			top 125
+			width 250
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [Z,X,C]/[V,B,N]
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(AmbientLight)
+		{
+			metrics_mode pixels
+			left 5
+			top 140
+			width 250
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Ambient Col.:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(ObscuranceExposureKeys)
+		{
+			metrics_mode pixels
+			left 5
+			top 155
+			width 250
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption [Q]/[E]
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+		element TextArea(ObscuranceExposure)
+		{
+			metrics_mode pixels
+			left 5
+			top 170
+			width 250
+			height 30
+			font_name TrebuchetMSBold
+			char_height 16
+			caption Obscurance Exposure:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vpOld.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vpOld.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vpOld.shd	(revision 1493)
@@ -0,0 +1,37 @@
+float4 ambientColour;
+float4 lightPosition;
+float distanceScale;
+float4x4 viewprojmatrix;
+float4x4 viewprojmatrix2;
+float4x4 worldmatrix;
+float time_0_X;
+//float4 ambient_light;
+
+
+struct VS_OUTPUT {
+   float4 Pos: POSITION;
+   float4 lightvec: TEXCOORD2;
+   float3 texCoord: TEXCOORD0;
+   float3 texCoordNormalized: TEXCOORD1;
+   float4 Color: COLOR0;
+};
+
+VS_OUTPUT main(float4 Pos: POSITION, float3 Norm: NORMAL, float3 texCoord: TEXCOORD0, float3 texCoordNormalized: TEXCOORD1)
+{
+   VS_OUTPUT Out;
+
+   // Project it. For this sample using the normal projection
+   // matrix suffices, however, real applications will typically
+   // use a separate projection matrix for each light depending
+   // on its properties such as FOV and range.  
+   float4 world_pos = mul(worldmatrix,Pos);
+   Out.Pos = mul(viewprojmatrix,world_pos);
+   Out.lightvec = lightPosition - world_pos;
+   Out.texCoord = texCoord;
+   Out.texCoordNormalized = texCoordNormalized;
+   Out.Color = float4(1.0,0.0,0.0,0.0);
+   
+   return Out;
+}
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_vp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_vp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_vp.shd	(revision 1493)
@@ -0,0 +1,69 @@
+float distanceScale;
+float4 lightPosition;
+float4 camera_pos;
+float4x4 worldviewproj;
+float4x4 proj_matrix;
+
+/*
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float3 lightVec : TEXCOORD1;
+   float3 viewVec:   TEXCOORD2;
+   float4 shadowCrd: TEXCOORD3;
+   float2 texCoord:  TEXCOORD4;
+   float2 texCoordNormalized: TEXCOORD5;
+};
+
+VS_OUTPUT main_vp(
+      float4 position : POSITION,
+      float4 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1)
+{
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+	// World-space lighting
+	Out.normal = normal;
+	Out.lightVec = distanceScale * (lightPosition - position.xyz);
+	Out.viewVec = camera_pos - position.xyz;
+	Out.texCoord = texCoord;
+	Out.texCoordNormalized = texCoordNormalized;
+
+	   // Project it. For this sample using the normal projection
+	   // matrix suffices, however, real applications will typically
+	   // use a separate projection matrix for each light depending
+	   // on its properties such as FOV and range.
+	   float4 sPos = mul(proj_matrix, Pos);
+
+	   // Use projective texturing to map the position of each fragment
+	   // to its corresponding texel in the shadow map.
+	   sPos.z += 10;
+	   Out.shadowCrd.x = 0.5 * (sPos.z + sPos.x);
+	   Out.shadowCrd.y = 0.5 * (sPos.z - sPos.y);
+	   Out.shadowCrd.z = 0;
+	   Out.shadowCrd.w = sPos.z;
+
+	   return Out;
+}
+*/
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float2 texCoord:    TEXCOORD0;
+   float2 texCoordNormalized : TEXCOORD1;
+};
+
+VS_OUTPUT main_vp(
+      float4 position : POSITION,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1)
+{
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+	Out.texCoord = texCoord;
+	Out.texCoordNormalized = texCoordNormalized;
+	 
+	   return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.cg.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.cg.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.cg.bak	(revision 1493)
@@ -0,0 +1,31 @@
+void main(float4 Pos: POSITION, 
+	       float3 Norm: NORMAL, 
+	       float3 texCoord: TEXCOORD0, 
+	       float3 texCoordNormalized: TEXCOORD1,
+	       uniform float4 lightPosition,
+	       uniform float4 float4 ambientColour,
+	       uniform float4x4 proj_matrix,
+	       uniform float4x4 worldmatrix,
+	       out float4 opos: POSITION,
+	       out float3 otexCoord: TEXCOORD0,
+	       out float3 otexCoordNormalized: TEXCOORD1,
+      	       out float4 olightvec: TEXCOORD2)
+{
+   // Project it. For this sample using the normal projection
+   // matrix suffices, however, real applications will typically
+   // use a separate projection matrix for each light depending
+   // on its properties such as FOV and range.  
+   float4 world_pos = mul(worldmatrix,Pos);
+   float4x4 matrixTest;
+   matrixTest[0] = float4(0.0,0.0,0.0,0.0);
+   matrixTest[1] = float4(0.0,0.0,0.0,0.0);
+   matrixTest[2] = float4(0.0,0.0,0.0,0.0);
+   matrixTest[3] = float4(0.0,0.0,0.0,0.0);
+   opos = float4(0.0,0.0,0.0,0.0);  //mul(matrixTest,world_pos);
+   //opos = mul(proj_matrix,world_pos);
+   olightvec = lightPosition - world_pos;
+   otexCoord = texCoord;
+   otexCoordNormalized = texCoordNormalized; 
+}
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/oldmaterial.txt
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/oldmaterial.txt	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/oldmaterial.txt	(revision 1493)
@@ -0,0 +1,116 @@
+/*
+material matLeavesPlane256Depth256_old01
+{
+	technique
+	{
+		pass
+		{
+			//alpha_rejection greater_equal 10			
+			alpha_rejection greater_equal 110
+			//scene_blend alpha_blend
+			//depth_write off
+			//depth_check off
+			cull_hardware none
+			cull_software none
+			lighting off
+
+                        //vertex_program_ref Ogre/tree_idtexturing_hlsl_VP
+			//vertex_program_ref Ogre/tree_idtexturing_directional_VP
+			vertex_program_ref Ogre/tree_idtexturing_spotlight_VP
+                        {			
+				 param_named_auto worldviewproj worldviewproj_matrix
+				 param_named_auto proj_matrix texture_viewproj_matrix
+				 param_named_auto camera_pos camera_position
+				 param_named distanceScale float 0.000004
+				 param_named_auto lightPosition light_position 0
+				 param_named_auto lightDirection light_direction 0
+				 //param_named_auto viewDirection view_direction 0
+ 				 //param_named_auto time_0_X time_0_x
+                        }
+
+                        fragment_program_ref Ogre/tree_idtexturing_hlsl_FP
+                        {
+				 //param_named_auto shininess custom 1
+				 // Param OpenGL
+				 //param_named scale_factor float 4.0
+				 // Param DirectX
+				 //param_named scale_factor float 64.0
+				 //param_named backProjectionCut float 45.57
+				 //param_named shadowBias float 0.0
+				 param_named_auto ldiffuse light_diffuse_colour 0
+				 param_named_auto lspecular light_specular_colour 0
+				 param_named_auto lattenuation light_attenuation 0
+				 param_named_auto gambient ambient_light_colour
+				 param_named Ka float 0.2
+				 param_named Kd float 1.0
+				 param_named Ks float 0.0
+                        }
+
+			texture_unit
+			{
+				//rotate 90.0
+				texture orderFrontBackAtlas.exr	
+				//texture orderFrontBackAtlas.png
+				
+				filtering point point none
+			}
+
+			//texture_unit
+			//{
+			//	//rotate 90.0
+			//	texture orderBackFrontAtlas.exr				
+			//	filtering point point none
+			//}
+
+			texture_unit
+			{				
+				//texture acer_saccarium_leaf_atlas_1024_16.png
+				//texture acer_saccarium_leaf_atlas04_scaled_16.png
+				texture white_leaf_atlas_rotated_90_16.png
+				//texture acer_saccarium_leaf_atlas04_scaled_rotated_90_16.png
+				//filtering point point none
+				filtering anisotropic
+				max_anisotropy 8
+				//filtering bilinear
+			}
+
+			texture_unit
+			{
+				texture Ogre/ShadowTexture0
+			}
+
+			texture_unit
+			{
+				texture spotlight.tga
+			}
+		}
+	}
+}
+*/
+
+
+
+//float4 main_fp(float2 texCoord: TEXCOORD0, float2 texCoordNormalized: TEXCOORD1) : COLOR
+//{
+//	// DirectX
+//	return float4((tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0);
+//}
+
+  
+float tex_atlas_size;
+float scale_factor;
+float3 ldiffuse;
+float3 lspecular;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+float reg : register(vFace);
+sampler orderFrontBack: register(s0);
+sampler leaf: register(s1);
+sampler shadowMap: register(s2);
+sampler spotLight: register(s3);
+
+float shadowBias = 45.57;
+float backProjectionCut = 0.0;
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_spotlight_vp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_spotlight_vp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_spotlight_vp.shd	(revision 1493)
@@ -0,0 +1,83 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float4 lightVec : TEXCOORD1;
+   float4 viewVec:   TEXCOORD2;
+   float4 shadowCrd: TEXCOORD3;
+   float2 texCoord:  TEXCOORD4;
+   float4 lightVecNM: TEXCOORD6;
+   float3 halfvec: TEXCOORD7;
+};
+
+float4 cameraDirection;
+float distanceScale;
+float4 lattenuation;
+float4 lightPosition;
+float4 lightDirection;
+float4 cameraPosition;
+float4x4 worldviewproj;
+float4x4 worldmatrix;
+float4x4 proj_matrix;
+float time_0_X;
+
+VS_OUTPUT main_vp(
+      float4 position : POSITION,
+      float3 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float3 inTangent : TEXCOORD1,
+      float3 inBinormal : BINORMAL
+      )
+{
+
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+
+	//------------------------------------------------------------
+	// World-space lighting
+	//------------------------------------------------------------
+	// world_pos,lightPosition,
+	float world_pos = mul(worldmatrix,position);
+
+	//if (dot(normal,cameraDirection) > 0.0)
+	//{
+	//	normal.xyz = -normal.xyz;
+	//}
+
+	Out.normal = normal;
+	Out.lightVec = lightPosition - world_pos;  // Used for shadow mapping
+	float dist = length(Out.lightVec.xyz);
+	Out.lightVecNM.xyz = -Out.lightVec.xyz / dist; // For shadow mapping we were using distanceScale
+	Out.lightVecNM.w = clamp(0.0,1.0,1.0 / (lattenuation.x + lattenuation.y * dist + lattenuation.z * dist * dist) );
+
+	// Debugging purpose...
+	normal = mul(worldmatrix,normal);
+	inTangent = mul(worldmatrix,inTangent);
+	inBinormal = mul(worldmatrix,inBinormal);
+
+	float3x3 tangentSpace;
+	// In Ogre3D the TAG BINORMAL and TANGENT are not used...
+	tangentSpace[0] = inTangent;
+	tangentSpace[1] = cross(inTangent,normal.xyz);
+	tangentSpace[2] = normal.xyz;
+
+	Out.viewVec = normalize(cameraPosition - world_pos);
+	
+	// Converted to Tangent-space
+	Out.halfvec = mul(tangentSpace,normalize(Out.lightVecNM.xyz+Out.viewVec.xyz));
+	Out.lightVecNM = float4(mul(tangentSpace,Out.lightVecNM.xyz),Out.lightVecNM.w);
+
+	Out.texCoord = texCoord;
+
+	//------------------------------------------------------------
+	// Light-space coordinates
+	//------------------------------------------------------------
+	float4 sPos = mul(proj_matrix, position);
+	sPos.z += 10;
+	Out.shadowCrd.x = 0.5 * (sPos.z + sPos.x);
+	Out.shadowCrd.y = 0.5 * (sPos.z - sPos.y);
+	Out.shadowCrd.z = 0;
+	Out.shadowCrd.w = sPos.z;
+
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp.cg	(revision 1493)
@@ -0,0 +1,112 @@
+/*
+void main_vp(
+      float4 position: POSITION,
+      float4 normal: NORMAL,
+      float2 texCoord : TEXCOORD0,
+
+      out float3 lightpos : TEXCOORD3,
+      out float3 eyePosition : TEXCOORD2,
+      out float4 oPosition: POSITION,
+      out float2 otexCoord : TEXCOORD0,
+      //out float3 otexPos : TEXCOORD1,
+      out float3 V : TEXCOORD1,
+      out float3 L : TEXCOORD4,
+      uniform float4 lightposition,		// world space
+      uniform float4 cameraposition,		// world space
+      uniform float3 camPosition : TEXCOORD2,   
+      uniform float3 lightposi : TEXCOORD3,
+      uniform float4x4 worldviewproj,
+      uniform float4x4 worldmatrix,
+      uniform float4x4 invworldmatrix,
+      uniform float4x4 viewmatrix,
+      uniform float4x4 projmatrix,
+      uniform float4x4 viewprojmatrix,
+      uniform float4x4 worldviewmatrix
+      )
+{
+	oPosition = mul(worldviewproj,position);
+	float4 pos = mul(worldviewmatrix,position);
+
+	//float4 campos = mul(viewmatrix,float4(camPosition,1.0));
+	float4 campos = mul(viewmatrix,cameraposition);
+	eyePosition = campos.xyz;
+	
+	float4 lightp = mul(viewmatrix,float4(lightposi,1.0));
+	//float4 lightp = mul(viewmatrix,lightposition);
+	lightpos = lightp.xyz;
+
+	V = -pos.xyz;
+	L = lightpos - pos.xyz;
+
+	otexCoord = texCoord;
+}
+*/
+/*
+void main_vp(
+      float4 position : POSITION,
+      float4 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+
+      out float4 oPosition : POSITION,
+      out float2 otexCoord : TEXCOORD0,
+      out float2 otexCoordNormalized : TEXCOORD1,
+      uniform float4x4 worldviewproj
+      )
+{
+	oPosition = mul(worldviewproj,position);
+	otexCoord = texCoord;
+	otexCoordNormalized = texCoordNormalized;
+}
+*/
+
+
+
+void main_vp(
+      float4 position : POSITION,
+      float4 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+
+      uniform float distanceScale,
+      uniform float4 lightPosition,
+      uniform float4 lightDirection,
+      uniform float4 camera_pos,
+      uniform float4x4 worldviewproj,
+      uniform float4x4 worldmatrix,
+      uniform float4x4 proj_matrix,
+      uniform float time_0_X,
+
+      out float4 opos:       POSITION,
+      out float3 onormal:    TEXCOORD0,
+      out float3 olightVec : TEXCOORD1,
+      out float3 oviewVec:   TEXCOORD2,
+      out float4 oshadowCrd: TEXCOORD3,
+      out float2 otexCoord:  TEXCOORD4,
+      out float2 otexCoordNormalized: TEXCOORD5
+      )
+{
+	opos = mul(worldviewproj, position);
+
+	//------------------------------------------------------------
+	// World-space lighting
+	//------------------------------------------------------------
+	onormal = normal;
+	//onormal = mul(worldmatrix,normal);
+	olightVec = distanceScale * (lightPosition - opos.xyz);
+	oviewVec = camera_pos - opos.xyz;
+	otexCoord = texCoord;
+	otexCoordNormalized = texCoordNormalized;
+
+	//------------------------------------------------------------
+	// Light-space coordinates
+	//------------------------------------------------------------
+	float4 sPos = mul(proj_matrix, position);
+	// Use projective texturing to map the position of each fragment
+	// to its corresponding texel in the shadow map.
+	sPos.z += 10;
+	oshadowCrd.x = 0.5 * (sPos.z + sPos.x);
+	oshadowCrd.y = 0.5 * (sPos.z - sPos.y);
+	oshadowCrd.z = 0;
+	oshadowCrd.w = sPos.z;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.cg	(revision 1493)
@@ -0,0 +1,31 @@
+void main(float4 Pos: POSITION, 
+	       float3 Norm: NORMAL, 
+	       float3 texCoord: TEXCOORD0, 
+	       float3 texCoordNormalized: TEXCOORD1,
+	       uniform float4 lightPosition,
+	       uniform float4 ambientColour,
+	       uniform float4x4 proj_matrix,
+	       uniform float4x4 worldmatrix,
+	       out float4 opos: POSITION,
+	       out float3 otexCoord: TEXCOORD0,
+	       out float3 otexCoordNormalized: TEXCOORD1,
+      	       out float4 olightvec: TEXCOORD2)
+{
+   // Project it. For this sample using the normal projection
+   // matrix suffices, however, real applications will typically
+   // use a separate projection matrix for each light depending
+   // on its properties such as FOV and range.  
+   float4 world_pos = mul(worldmatrix,Pos);
+   float4x4 matrixTest;
+   matrixTest[0] = float4(0.0,0.0,0.0,0.0);
+   matrixTest[1] = float4(0.0,0.0,0.0,0.0);
+   matrixTest[2] = float4(0.0,0.0,0.0,0.0);
+   matrixTest[3] = float4(0.0,0.0,0.0,0.0);
+   opos = float4(0.0,0.0,0.0,0.0);  //mul(matrixTest,world_pos);
+   //opos = mul(proj_matrix,world_pos);
+   olightvec = lightPosition - world_pos;
+   otexCoord = texCoord;
+   otexCoordNormalized = texCoordNormalized; 
+}
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/impostors_programs.program
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/impostors_programs.program	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/impostors_programs.program	(revision 1493)
@@ -0,0 +1,119 @@
+//vertex_program Ogre/treeVP cg
+//{
+//	source tree_vp.cg
+//	entry_point main_vp
+//	profiles arbvp1 vs_2_0
+//}
+
+//fragment_program Ogre/treeFP cg
+//{
+//	source tree_fp.cg
+//	entry_point main_fp
+//	profiles ps_2_0 arbfp1
+//
+//	default_params
+//	{
+//		param_named shininess float4
+//	}
+//}
+
+  	
+vertex_program Ogre/treeVP cg
+{
+	source tree_vp.cg
+	entry_point main_vp
+	profiles arbvp1 vs_2_0
+}
+
+fragment_program Ogre/treeFP cg
+{
+	source tree_fp.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+fragment_program Ogre/tree_hlsl_FP hlsl
+{
+	source tree_fp.shd
+	entry_point main_fp
+	//target ps_3_0 
+	target ps_2_0
+}
+
+vertex_program Ogre/RttTexVP2 cg
+{
+	source rtttex_vp.cg
+	entry_point main_vp
+	profiles arbvp1 vs_2_0
+}
+
+fragment_program Ogre/RttTexFP2 cg
+{
+	source rtttex_fp.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+vertex_program depth_shadow_mapping_hlsl_VP hlsl
+{
+	source depth_shadow_mapping_vp.shd
+	entry_point main
+	//target vs_3_0
+	target vs_2_0
+}
+
+fragment_program depth_shadow_mapping_hlsl_FP hlsl
+{
+	source depth_shadow_mapping_fp.shd
+	entry_point main
+	//target ps_3_0
+	target ps_2_0
+}
+
+vertex_program Ogre/tree_idtexturing_spotlight_hlsl_VP hlsl
+{
+	source tree_idtexturing_spotlight_vp.shd
+	entry_point main_vp
+	//target vs_3_0 
+	target vs_2_0
+}
+
+vertex_program Ogre/tree_idtexturing_spotlight_hlsl_VP_ATI_9700 hlsl
+{
+	source tree_idtexturing_spotlight_vp_ATI_9700.shd
+	entry_point main_vp
+	//target vs_3_0 
+	target vs_2_0
+}
+
+fragment_program Ogre/tree_idtexturing_spotlight_hlsl_FP hlsl
+{
+	source tree_idtexturing_spotlight_fp.shd
+	entry_point main_fp
+	target ps_3_0 
+	//target ps_2_0
+}
+
+fragment_program Ogre/tree_idtexturing_spotlight_hlsl_FP_ATI_9700 hlsl
+{
+	source tree_idtexturing_spotlight_fp_ATI_9700.shd
+	entry_point main_fp
+	//target ps_3_0 
+	target ps_2_0
+}
+
+vertex_program depth_shadow_mapping_indirect_texturing_hlsl_VP hlsl
+{
+	source depth_shadow_mapping_indirect_texturing_vp.shd
+	entry_point main
+	//target vs_3_0
+	target vs_2_0
+}
+
+fragment_program depth_shadow_mapping_indirect_texturing_hlsl_FP hlsl
+{
+	source depth_shadow_mapping_indirect_texturing_fp.shd
+	entry_point main
+	//target ps_3_0
+	target ps_2_0
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp.shd.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp.shd.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp.shd.bak	(revision 1493)
@@ -0,0 +1,121 @@
+float nearDistance;
+float farDistance;
+float tex_atlas_size;
+float scale_factor;
+float3 lDiffuseColor;
+float3 lSpecularColor;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+sampler orderFrontBack: register(s0);
+sampler leaf: register(s1);
+sampler shadowMap: register(s2);
+sampler spotLight: register(s3);
+sampler normalMap: register(s4);
+float shadowBias = 0.0;
+float backProjectionCut = 0.0;
+float4x4 worldmatrix;
+
+//float4 main_fp(float2 texCoord: TEXCOORD0, float2 texCoordNormalized: TEXCOORD1) : COLOR
+//{
+//	// DirectX
+//	return float4((tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0);
+//}
+
+float4 main_fp(float reg: VFACE, float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 viewVec: TEXCOORD2, float4 shadowCrd: TEXCOORD3,
+float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5,float4 lightVecNormalMapping: TEXCOORD6,float4 halfvec: TEXCOORD7) : COLOR
+{
+   float4 leafColor;
+   float4 ocolor;
+
+   // The normals are not correct if we change the orientation of the impostor tree
+   //----------------------------------------------------------------------------
+   // Using normalmap, the vertex normal is not used...
+   float2 coords = ((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 4.0;
+   normal = tex2D(normalMap,coords);
+   // The values are from 0..255, so I should convert them from [0,255] to [0,1]
+   // and convert from [0,1] to [-1,1]
+   normal = float3(1.0,1.0,1.0) - normal * 2.0;
+   //normal = mul(worldmatrix,normal);
+   //----------------------------------------------------------------------------
+   
+   normal = normalize(normal);
+   // Front and Back faces lighted
+   normal = (reg > 0.0) ? normal : -normal;
+
+   // Radial distance
+   float depth = length(lightVec.xyz);
+   
+   // Standard lighting
+   // Using the standard normals in Object-space
+   //float lDiffuseAttenuation = saturate(dot(lightVec,normal));
+   //float lSpecularAttenuation = pow(saturate(dot(reflect(-normalize(viewVec),normal),lightVec)),16);
+
+   // Using the normal_map in Tangent-space
+   float lDiffuseAttenuation = clamp(0.0,1.0,dot(normal,lightVecNormalMapping));
+   float lSpecularAttenuation = pow(clamp(0.0,1.0,dot(normal,halfvec)),16);
+
+   // The depth of the fragment closest to the light
+   float shadowMapValue = tex2Dproj(shadowMap, shadowCrd);
+
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(spotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMapValue + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   // green test
+   //leafColor.xyz = float3(0.0,0.5,0.2);
+   
+   leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? tex2D(leaf,coords) : 0.0;
+
+   
+   shadow = 0.2 - clamp(0.0,0.2,shadow);
+   leafColor = float4(leafColor.xyz - float3(shadow,shadow,shadow),leafColor.w);
+   //
+   //leafColor = (depth < 2000 && depth > 500) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+   //leafColor = (shadowMapValue * 1000.0 < 2000 && shadowMapValue * 1000.0 > 500.0) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+   //leafColor = (shadowMapValue * 1000.0 < depth) ? float4(leafColor.xyz * 0.5,leafColor.w) : float4(leafColor.xyz,leafColor.w);
+
+   //leafColor = float4((Ka*(gambient.xyz)) + (Kd*(lDiffuseAttenuation * leafColor.xyz * lDiffuseColor)) + (Ks * (lSpecularAttenuation * lSpecularColor)) ,leafColor.w);	   
+   //leafColor = float4((Ka*(gambient.xyz)) + (Kd*(lDiffuseAttenuation * leafColor.xyz * lDiffuseColor) - float3(shadow,shadow,shadow)) + (Ks * (lSpecularAttenuation * lSpecularColor)) ,leafColor.w);	   
+
+   // Look the different leaves orientations used...
+   //leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).zw,1.0,1.0) : 0.0;
+   // Check the AATexQuads of the leaves...
+   //leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).xy,1.0,1.0) : 0.0;
+   
+   // Shows each side the front and the back side...
+   //leafColor = (reg > 0.0) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+
+   //leafColor = float4(shadow,shadow,shadow,leafColor.w);	
+   leafColor = float4(depth,depth,depth,leafColor.w);	
+
+   // This proves that the depth is GREATER than the value of the shadow_map
+   // Without normalizing between the far and near planes distance...
+   //leafColor = ((shadowMapValue + shadowBias) > 30000.0) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+   // Normalizing between far and near planes distance...
+   //leafColor = ((shadowMapValue + shadowBias) > 0.5) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+      
+   //leafColor = float4((shadowMapValue + shadowBias),(shadowMapValue + shadowBias),(shadowMapValue + shadowBias),leafColor.w);
+   //leafColor = float4(leafColor.xyz * depth,leafColor.w);
+   //leafColor = float4(leafColor.xyz * depth,leafColor.w);
+   //leafColor = float4(normal,leafColor.w);
+   ocolor = leafColor;
+   return  ocolor;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_leaves_vp.txt
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_leaves_vp.txt	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_leaves_vp.txt	(revision 1493)
@@ -0,0 +1,77 @@
+float4x4 viewProjectionMatrix: register(c0);
+float4 lightPosition: register(c4);
+float4 view_position: register(c5);
+float4x4 proj_matrix: register(c6);
+float distanceScale: register(c10);
+float time_0_X: register(c11);
+float3 lookAt;
+float factor;
+
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float3 lightVec : TEXCOORD1;
+   float3 viewVec:   TEXCOORD2;
+   float4 shadowCrd: TEXCOORD3;
+   float3 texCoord:  TEXCOORD4;
+   float3 texCoordNormalized: TEXCOORD5;
+};
+
+VS_OUTPUT main(float4 Pos: POSITION, float3 normal: NORMAL, float3 texCoord: TEXCOORD0, float3 texCoordNormalized: TEXCOORD1){
+   VS_OUTPUT Out;
+
+   // Animate the light position.
+   // Comment out this code to use a static light.
+   // In real applications this work is better done on
+   // the CPU as it's constant for the whole scene.
+   float3 lightPosition;
+   lightPosition.x = cos(1.321 * time_0_X);
+   lightPosition.z = sin(0.923 * time_0_X);
+   lightPosition.xz = 100 * normalize(lightPosition.xz);
+   lightPosition.y = 100;
+
+   Out.Pos = mul(viewProjectionMatrix, Pos);
+   // World-space lighting
+   Out.normal = normal;
+   Out.lightVec = distanceScale * (lightPosition - Pos.xyz);
+   Out.viewVec = view_position - Pos.xyz;
+   Out.texCoord = texCoord;
+   Out.texCoordNormalized = texCoordNormalized;
+   
+   // Create view vectors for the light, looking at (0,0,0)
+   // In real applications this work is better done on
+   // the CPU as it's constant for the whole scene.
+   float3 dirZ = -normalize(lightPosition);
+   float3 up = float3(0.0,0.0,1.0);
+   float3 dirX = cross(up, dirZ);
+   float3 dirY = cross(dirZ, dirX);
+
+   // Transform into light's view space.
+   // In real applications we would be better off using a 4x4
+   // matrix instead, but for this shader it's cheaper to
+   // just transpose and rotate into light's view space.
+   float4 pos;
+   Pos.xyz -= lightPosition;
+   pos.x = dot(dirX, Pos);
+   pos.y = dot(dirY, Pos);
+   pos.z = dot(dirZ, Pos);
+   pos.w = 1;
+
+   // Project it. For this sample using the normal projection
+   // matrix suffices, however, real applications will typically
+   // use a separate projection matrix for each light depending
+   // on its properties such as FOV and range.
+   float4 sPos = mul(proj_matrix, pos);
+
+   // Use projective texturing to map the position of each fragment
+   // to its corresponding texel in the shadow map.
+   sPos.z += 10;
+   Out.shadowCrd.x = 0.5 * (sPos.z + sPos.x);
+   Out.shadowCrd.y = 0.5 * (sPos.z - sPos.y);
+   Out.shadowCrd.z = 0;
+   Out.shadowCrd.w = sPos.z;
+
+   return Out;
+}
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/terrain_fp.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/terrain_fp.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/terrain_fp.cg	(revision 1493)
@@ -0,0 +1,13 @@
+void main_fp(float2 texcoord 	: TEXCOORD1,
+             float4 texcoordproj: TEXCOORD0,
+	     out float4 colour	: COLOR,
+	     uniform sampler2D texture,
+	     uniform float4 ldiffuse)
+{
+	// green test
+	//float4 tempcolor= float4(0.0,0.7,0.2,1.0);
+	//colour = tex2D(texture,texcoord)*ldiffuse*tempcolor;
+	colour = tex2D(texture,texcoord.xy)*ldiffuse;
+}
+			 
+			 
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fpshd.old
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fpshd.old	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fpshd.old	(revision 1493)
@@ -0,0 +1,41 @@
+float shininess;
+float nearDistance;
+float farDistance;
+float tex_atlas_size;
+float scale_factor;
+float3 lDiffuseColor;
+float3 lSpecularColor;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+sampler orderFrontBack: register(s0);
+sampler leaf: register(s1);
+sampler shadowMap: register(s6);
+sampler spotLight: register(s2);
+sampler normalMap: register(s3);
+sampler ob_front_face: register(s4);
+sampler ob_back_face: register(s5);
+float shadowBias = 0.0;
+float backProjectionCut = 0.01;
+float exposure;
+float4x4 worldmatrix;
+
+//float4 main_fp(float2 texCoord: TEXCOORD0, float2 texCoordNormalized: TEXCOORD1) : COLOR
+//{
+//	// DirectX
+//	return float4((tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0);
+//}
+
+float4 main_fp(float reg: VFACE, float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float4 halfvec: TEXCOORD2, float4 shadowCrd: TEXCOORD3,
+//float4 main_fp(float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float4 halfvec: TEXCOORD2, float4 shadowCrd: TEXCOORD3,
+float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5,float4 lightVecNormalMapping: TEXCOORD6, float backside: TEXCOORD7) : COLOR
+{
+   float4 leafColor;
+   float4 ocolor;
+   leafColor = (tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,coords) : 1.0;
+   ocolor = leafColor;
+   return  ocolor;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp.shd	(revision 1493)
@@ -0,0 +1,195 @@
+float shininess;
+float nearDistance;
+float farDistance;
+float tex_atlas_size;
+float scale_factor;
+float3 lDiffuseColor;
+float3 lSpecularColor;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+sampler orderFrontBack: register(s0);
+sampler leaf: register(s1);
+sampler shadowMap: register(s6);
+sampler spotLight: register(s2);
+sampler normalMap: register(s3);
+sampler ob_front_face: register(s4);
+sampler ob_back_face: register(s5);
+float shadowBias = 0.0;
+float backProjectionCut = 0.01;
+float exposure;
+float4x4 worldmatrix;
+
+//float4 main_fp(float2 texCoord: TEXCOORD0, float2 texCoordNormalized: TEXCOORD1) : COLOR
+//{
+//	// DirectX
+//	return float4((tex2D(orderFrontBack, texCoord).w > 0.0) ? tex2D(leaf,((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + float2(0.0,0.0)) * 4.0) : 0.0);
+//}
+
+float4 main_fp(float reg: VFACE, float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float4 halfvec: TEXCOORD2, float4 shadowCrd: TEXCOORD3,
+//float4 main_fp(float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float4 halfvec: TEXCOORD2, float4 shadowCrd: TEXCOORD3,
+float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5,float4 lightVecNormalMapping: TEXCOORD6, float backside: TEXCOORD7) : COLOR
+{
+   float4 leafColor;
+   float4 ocolor;
+
+   // The normals are not correct if we change the orientation of the impostor tree
+   //----------------------------------------------------------------------------
+   // Using normalmap, the vertex normal is not used...
+   float2 coords = ((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 4.0;
+   //normal = tex2D(normalMap,coords);
+   // The values are from 0..255, so I should convert them from [0,255] to [0,1]
+   // and convert from [0,1] to [-1,1]
+   //normal = float3(1.0,1.0,1.0) - normal * 2.0;
+   //normal = mul(worldmatrix,normal);
+   //----------------------------------------------------------------------------
+   
+   normal = normalize(normal);
+   // Front and Back faces lighted, not needed because we
+   // correct the orientation in the vertex program.
+   //normal = (backside == 0.0) ? -normal : normal;
+   normal = (reg > 0.0) ? normal : -normal;
+
+   //float4 obsColor = (backside == 1.0) ? float4(tex2D(ob_front_face,texCoord).xyz,1.0) : float4(tex2D(ob_back_face,texCoord).xyz,1.0);
+   //float4 obsColor = (backside == 0.0) ? float4(tex2D(ob_front_face,texCoord).xyzw)
+   //float4 obsColor = (backside == 0.0) ? float4(tex2D(ob_front_face,texCoord).xxxw)  :  float4(tex2D(ob_front_face,texCoord).yyyw);
+   //float4 obsColor = (reg > 0.0) ? float4(tex2D(ob_front_face,texCoord).xxxw) : float4(tex2D(ob_front_face,texCoord).yyyw);
+
+   // Radial distance
+   float depth = length(lightVec.xyz);
+
+   // Standard lighting
+   // Using the standard normals in Object-space
+   lightVec = normalize(lightVec);
+
+   //float lDiffuseAttenuation = saturate(dot(lightVec,normal));
+   //float lSpecularAttenuation = pow(saturate(dot(reflect(-normalize(lightVecNormalMapping),normal),lightVec)),shininess);
+   float lDiffuseAttenuation = max(dot(lightVec,normal),0.0); 
+   float lSpecularAttenuation = pow(max(dot(reflect(-normalize(lightVecNormalMapping),normal),lightVec),0.0),shininess);
+
+
+
+   // Using the normal_map in Tangent-space
+   //float lDiffuseAttenuation = clamp(0.0,1.0,dot(normal,lightVecNormalMapping));
+   //float lSpecularAttenuation = pow(clamp(0.0,1.0,dot(normal,halfvec)),shininess);
+
+   // The depth of the fragment closest to the light
+   float4 shadowMapValue = tex2Dproj(shadowMap, shadowCrd).xyzw;
+
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(spotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMapValue.w + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   shadow *= spotLight + 0.8;
+   
+
+   // Shadow any light contribution except ambient
+   // green test
+   //leafColor.xyz = float3(0.0,0.5,0.2);
+   
+   leafColor = (tex2D(orderFrontBack,texCoord).w > 0.0) ? tex2D(leaf,coords) : 0.0;
+
+   
+   //shadow = 0.2 - clamp(0.0,0.2,shadow);
+   //leafColor = float4(leafColor.xyz - float3(shadow,shadow,shadow),leafColor.w);
+   //
+   //leafColor = (depth < 2000 && depth > 500) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+   //leafColor = (shadowMapValue * 1000.0 < 2000 && shadowMapValue * 1000.0 > 500.0) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+   //leafColor = (shadowMapValue * 1000.0 < depth) ? float4(leafColor.xyz * 0.5,leafColor.w) : float4(leafColor.xyz,leafColor.w);
+
+   //leafColor = float4((Ka*(obsColor.xyz * 0.005)) + (Kd*(lDiffuseAttenuation * leafColor.xyz * lDiffuseColor)) + (Ks * (lSpecularAttenuation * lSpecularColor)) ,leafColor.w);	   
+   //leafColor = float4((Ka*(gambient.xyz)) + (Kd*(lDiffuseAttenuation * leafColor.xyz * lDiffuseColor)) + (Ks * (lSpecularAttenuation * lSpecularColor)) ,leafColor.w);	   
+   //leafColor = float4((Ka*(gambient.xyz)) + (Kd*(lDiffuseAttenuation * leafColor.xyz * lDiffuseColor)) + float3(shadow,shadow,shadow)*0.2 + (Ks * (lSpecularAttenuation * lSpecularColor)) ,leafColor.w);	   
+   //leafColor = float4(obsColor.xyz * 0.005,leafColor.w);
+
+   // Look the different leaves orientations used...
+   //leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).zw,1.0,1.0) : 0.0;
+   // Check the AATexQuads of the leaves...
+   //leafColor = (tex2D(orderFrontBack, texCoord).x >= 0.0) ? float4(tex2D(orderFrontBack, texCoord).xy,1.0,1.0) : 0.0;
+   
+   // Shows each side the front and the back side...
+   //leafColor = (reg > 0.0) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+   
+   //leafColor = float4(leafColor.xyz*0.6 + ( leafColor.xyz ) * (shadow),leafColor.w);	
+   //leafColor = float4(color.xyz, 1.0) * (float4(intensity,1.0) * float4(aux.rgb / aux.a, 1.0) + shadow * float4(diffuse,0.0));
+   
+   //leafColor = float4(leafColor.xyz,leafColor.w) * float4(gambient.xyz * (1.0 - exp(-exposure * obsColor.xyz)), 1.0) + shadow * float4((Kd*leafColor.xyz*(lDiffuseAttenuation * lDiffuseColor)),0.0) +  float4(Ks * (lSpecularAttenuation * lSpecularColor),0.0);
+   //leafColor = float4(leafColor.xyz,leafColor.w) * float4(gambient.xyz, 1.0) + float4((shadow * Kd*leafColor.xyz*(lDiffuseAttenuation * lDiffuseColor)),0.0) +  float4(Ks * (lSpecularAttenuation * lSpecularColor),0.0);
+   //leafColor = float4(leafColor.xyz,leafColor.w) * float4(Ka * gambient.xyz, 1.0) + float4((Kd*leafColor.xyz*(lDiffuseColor)),0.0) +  float4(Ks * (lSpecularAttenuation * lSpecularColor),0.0);
+
+	
+   leafColor =  float4(0.0,0.0,0.0,leafColor.w)
+		+  float4(Ka * gambient.xyz * leafColor.xyz,0.0)
+		////+ float4(Kd * lDiffuseAttenuation * leafColor.xyz * lDiffuseColor,0.0); 
+   		+ float4(Kd * lDiffuseAttenuation * leafColor.xyz,0.0) 
+		//+ float4(Ks * lSpecularAttenuation * lSpecularColor,0.0);
+		+ float4(Ks * lSpecularAttenuation * leafColor.xyz,0.0);
+
+   //leafColor = float4(lDiffuseAttenuation.xxx,leafColor.w);
+   //leafColor.xyz = float4(float4(gambient.xyz * (1.0 - exp(-exposure * obsColor.xyz)), 0.0) + (float4((Kd*(lDiffuseAttenuation * lDiffuseColor)),0.0) +  float4(Ks * (lSpecularAttenuation * lSpecularColor),0.0)) * leafColor.xyzw).xyz;
+   
+   //leafColor = float4(leafColor.xyz,leafColor.w) * float4(gambient.xyz + (exp(-exposure * obsColor.xyz)), 1.0) + shadow * float4((Kd*leafColor.xyz*(lDiffuseAttenuation * lDiffuseColor)),0.0) +  float4(Ks * (lSpecularAttenuation * lSpecularColor),0.0);
+   //leafColor.xyz = gambient * ( 1.0 - (exp(-exposure * (obsColor.xyz/obsColor.w))) ) + ( 1.0 - (exp(-exposure * (obsColor.xyz/obsColor.w))) ) + leafColor.xyzw * (float4((Kd*(lDiffuseAttenuation * lDiffuseColor * leafColor.xyz)),0.0) +  float4(Ks * (lSpecularAttenuation * lSpecularColor),0.0));
+   //if (leafColor.w > 0)
+   //{
+   //	leafColor = float4(1.0 - (exp(-exposure * (obsColor.xyz/obsColor.w))),1.0);
+   //}
+   //else
+   //{
+   //	leafColor = float4(0.0,1.0,0.0,1.0);
+   //}
+   //leafColor = float4(1.0 - (exp(-exposure * (obsColor.xyz/obsColor.w))),1.0);
+   //leafColor = float4(1.0 - (exp(-exposure * (obsColor.xyz/obsColor.w))),leafColor.w);
+
+   //leafColor = float4(1.0 - (exp(-exposure * (obsColor.xyz/obsColor.w))),1.0);
+   //leafColor = float4(1.0 - (obsColor.xyz/obsColor.w) * 2.0, leafColor.w);
+   //depth = depth / 4000.0;
+   //depth = -depth;
+   //leafColor = float4(depth.xxx,leafColor.w);	
+   //leafColor = float4(shadowMapValue.www,leafColor.w);	
+   //leafColor = float4(shadow.xxx,leafColor.w);	
+
+   // This proves that the depth is GREATER than the value of the shadow_map
+   // Without normalizing between the far and near planes distance...
+   //leafColor = float4(float3(1.0,1.0,1.0)-s 
+   //leafColor = float4(shadow.xxx,leafColor.w);
+      
+   // Normalizing between far and near planes distance...
+   //leafColor = ((shadowMapValue + shadowBias) > 0.5) ? float4(1.0,0.0,0.0,leafColor.w) : float4(0.0,1.0,0.0,leafColor.w);
+      
+   //leafColor = float4(leafColor.xyz * depth,leafColor.w);
+   //leafColor = float4(leafColor.xyz * depth,leafColor.w);
+   //leafColor = float4(normal,leafColor.w);
+   
+
+   //leafColor = (tex2D(orderFrontBack,texCoord).w > 0.0) ? tex2D(leaf,coords) : 0.0;
+   // LIGHT DIRECTION DEBUG...
+   //if (lightVec.z > 0.5)
+   //{
+   //	leafColor = float4(1.0,0.0,0.0,leafColor.w);
+   //}
+   //else
+   //{
+   //	leafColor = float4(0.0,0.0,1.0,leafColor.w);
+   //}
+   // CAMERA DIRECTION DEBUG...
+   //leafColor = float4(lightVecNormalMapping.xyz,leafColor.w);
+   // AMBIENT DEGUB....
+   //leafColor = float4(Ka * gambient.xyz * leafColor.xyz,leafColor.w);
+   ocolor = leafColor;
+   return  ocolor;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_fp.shd	(revision 1493)
@@ -0,0 +1,16 @@
+float4 gambient;
+sampler textureAlpha: register(s0);
+
+float4 main(float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float4 shadowCrd: TEXCOORD2, float4 texCoord: TEXCOORD3) : COLOR
+{
+   float depth = length(lightVec.xyz);
+   if (tex2D(textureAlpha,texCoord).w > 0.0) 
+   {
+	return float4(gambient.xyz,depth);
+   }
+   else
+   {
+	discard;
+   }
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_fp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_fp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_fp.shd	(revision 1493)
@@ -0,0 +1,16 @@
+float4 gambient;
+sampler textureAlpha: register(s0);
+
+float4 main(float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float4 texCoord: TEXCOORD2) : COLOR
+{
+   float depth = length(lightVec.xyz);
+   if (tex2D(textureAlpha,texCoord).w > 0.0) 
+   {
+	return float4(gambient.xyz,depth);
+   }
+   else
+   {
+	discard;
+   }
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/help_shadow_mapping.txt
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/help_shadow_mapping.txt	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/help_shadow_mapping.txt	(revision 1493)
@@ -0,0 +1,108 @@
+<kandhalt> Hi everybody!
+<fp12> wow, I convert my file to have CR and it doesn't find my materials anymore...
+<kandhalt> I have some questions about shadow techniques in ogre3d
+<Sinbad> download for release build on Windows you get CRLF, download on Linux/OSX for release build and you get CR
+<kandhalt> I have different kind of objects in ogre3D
+<kandhalt> I have trees for example
+<kandhalt> the leaves are semitransparent planes
+<kandhalt> and the trunk a simple trunk mesh
+<Sinbad> kandhalt: texture shadows can deal with alpha, stencil shadows cannot
+<kandhalt> my question is that I want to use different  custom shaders in order to compute
+<kandhalt> the shadows for each kind of object
+<kandhalt> the problem that I see is that if I use the call setShadowTextureCasterMaterial
+<kandhalt> ALL the objects will use the same technique
+<Phantom-> Sinbad: I am wondering about the skybox orientation argument... Why isn't just the skybox scenenode rotated? at the moment all the six planes are rotated according to the orientation quaternion...
+<kandhalt> Sinbad: the problem is that I'm using a special kind of billboard clouds for the tree leaves
+<kandhalt> and I apply a different approach in order to have high resolution impostors in the shader
+<kandhalt> so the shader code is not the same that I use for generate the shadow of the trunk
+<kandhalt> that's why I ask if there is a way to specify different shadow techniques for each object
+<kandhalt> all of them will be texture shadows of course
+<kandhalt> but with some differences in the shader code
+<Soulim> Somebody said something like RenderToTexture? What is the function for that?
+<P__> Phantom-, skybox has no scenenode, or i'm wrong ?
+<Sinbad> kandhalt: you can set a shadow caster vertex shader per pass
+<-- DWORD se ha marchado (Read error: 110 (Connection timed out))
+<Sinbad> http://www.ogre3d.org/docs/manual/manual_20.html#SEC85
+<kandhalt> Sinbad, yes I know. but
+<kandhalt> for example
+<P__> Soulim, you can look at the RenderToTexture demo
+<Phantom-> P__: yes it has, I tried modifying the code to just rotating the scenenode
+<kandhalt> if I set the vertex shader code <---> for the shadow of the leaves
+<Soulim> P__ - oh yes, the ogre examples
+<P__> Phantom-, ok
+<-- dogzr se ha marchado ()
+<kandhalt> then this code won't be de one that I want to exec for generating the shadows of the trunk
+<Sinbad> Phantom-: can't remember - but it's the same thing ;)
+<kandhalt> I have different shaders
+<Sinbad> kandhalt: I know
+<kandhalt> Sinbad: what I mean is that if I set a material with this vertex shader for the shadow_map pass
+<-- Siroro se ha marchado (Read error: 110 (Connection timed out))
+<kandhalt> I can't have the other vertex shader for the other kind of object
+<Sinbad> hence why I said you can set a shadow vertex shader for each pass, per material thus have a different one for the trunk and the leaves
+<kandhalt> mmm... but I thought
+<Phantom-> Sinbad: yea I know it should be, but somehow when rotating with the current version, the planes of the skybox get dragged further and further appart from eachother... it's hard to explain. Changing ogres code to use the scenenode orientation fixed this
+<Phantom-> no idea why
+<-- Soulim se ha marchado ("Zzz")
+<kandhalt> that if I use a custom technique for the shadow mapping I have to define the
+<kandhalt> setShadowTextureCastMaterial
+<kandhalt> WITH the material that has the custom shadow vertex shader
+<kandhalt> isn't it?
+<Sinbad> you didn't read the notes in the API
+<Sinbad> Individual objects may also override the vertex program in
+<Sinbad> your default material if their materials include 
+<P__> good night
+<Sinbad> shadow_caster_vertex_program_ref shadow_receiver_vertex_program_ref
+<-- P__ se ha marchado ("Leaving")
+<Sinbad> entries, so if you use both make sure they are compatible.
+<Sinbad> thats in the setShadowTextureCasterMaterial API description
+<Sinbad> Phantom-: odd, well submit it as a patch then please :)
+<Phantom-> Sinbad: On my way. But first I will make a few more test to see if I am not doing something horribly wrong :)
+<Sinbad> hehe, always a good idea
+<kandhalt> Sinbad, ok I see. Everyobject can override  the vertex_program for the shadow_maps, so in the object material pass I will have two passes, one with the shadow_caster_vertex_program_ref, and a second pass with my rendering conf to draw the object?
+<kandhalt>  (so in the object material I will have two passes, one with the shadow_caster_vertex_program_ref, and a second pass with my rendering conf to draw the object?)
+<Sinbad> nono
+<Sinbad> the material for rendering to the screen is completely separate from the material used to render to the shadow texture
+<kandhalt> yes that's what I was trying to explain
+<kandhalt> at first
+<kandhalt> but
+<kandhalt> this separate material
+<kandhalt> must be the same for every object that will be a shadow caster?
+<kandhalt> (sorry for my bad english)
+<Sinbad> ah, I see where you're coming from
+<kandhalt> :)
+--> efkoj (i=efkoj@d5152052A.access.telenet.be) ha entrado en #ogre3d
+<Sinbad> ok, I guess this can look a little odd
+<efkoj> hello guys
+<Sinbad> but, the shadow_caster_vertex_program_ref is really just providing a linkage from the material used to render to the screen, to the material used to render the shadow texture
+<Sinbad> the latter is entirely created by OGRE, it isn't your material
+<Sinbad> but you can influence it
+<Sinbad> by telling it what vertex program to use when it renders an object that would otherwise be using your material
+<Sinbad> so, the shadow vertex program ref goes in your normal pass definition
+<Sinbad> and it won't ever get used in normal screen rendering
+<kandhalt> aaaaah
+<Sinbad> but will affect how the object is rendered to the shadow
+<kandhalt> now I understand
+<kandhalt> ok
+<kandhalt> nice
+<kandhalt> I thought that I should define the shadow_caster_vertex_program in the shadow caster material
+<kandhalt> ok
+<kandhalt> I can define this shadow_caster_vertex_program in each different kind of object material and
+<Sinbad> nope, you've got a global shadow caster material you can set, and then a vertex program that can be plugged into it per original material pass
+<kandhalt> will be sticked to the shadow_caster material
+<Sinbad> yes
+<Sinbad> which can either be the OGRE-created one or your custom one
+<kandhalt> nice
+<kandhalt> perfect
+<Sinbad> that's why the API makes a point about needing to make them compatible
+<kandhalt> that is not a problem ;)
+<Sinbad> cool
+<kandhalt> thanks
+<kandhalt> now I fully understand how it works
+<Sinbad> np - it was originally created to deal with hardware skinning but clearly works for any custom shaders
+<kandhalt> yes I'm using it in fact
+<kandhalt> but until today with only one kind of shadow caster objects
+<kandhalt> now I understand how to use it in general
+<kandhalt> thanks
+<Sinbad> you're welcome
+<kandhalt> It's noticeable that you played alot with this shadowing interface it's flexible
+<Sinbad> it caused me some serious headaches to deal with all the variations, but it got there in the end :)
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_fp.asm
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_fp.asm	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_fp.asm	(revision 1493)
@@ -0,0 +1,14 @@
+
+ps.3.0
+dcl vFace
+
+def c0, 0.0f, 1.0f, 0.0f, 0.0f	    // RGBA green
+def c1, 1.0f, 0.0f, 0.0f, 0.0f      // RGBA red
+
+if_gt vFace, c0.w
+	mov r0, c0
+else
+	mov r0, c1
+endif
+
+mov oC0, r0
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/skybox_fp.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/skybox_fp.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/skybox_fp.cg	(revision 1493)
@@ -0,0 +1,10 @@
+void main_fp(float2 texcoord 	: TEXCOORD0,
+	     out float4 colour	: COLOR,
+	     //uniform sampler2D texture_night,
+	     uniform sampler2D texture_day,
+	     uniform float4 ambientlight)
+{
+	colour =  tex2D(texture_day,texcoord)*ambientlight;
+}
+			 
+			 
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/shadoMapImage.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/shadoMapImage.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/shadoMapImage.material	(revision 1493)
@@ -0,0 +1,13 @@
+material shadoMapImage
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			cull_hardware none
+			cull_software none
+
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp_ATI_9700.shd.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp_ATI_9700.shd.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp_ATI_9700.shd.bak	(revision 1493)
@@ -0,0 +1,128 @@
+float3 cameraDirection;
+float shininess;
+float nearDistance;
+float farDistance;
+float tex_atlas_size;
+float scale_factor;
+float3 lDiffuseColor;
+float3 lSpecularColor;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+sampler orderFrontBack: register(s0);
+sampler leaf: register(s1);
+sampler shadowMap: register(s6);
+sampler spotLight: register(s2);
+sampler normalMap: register(s3);
+sampler ob_front_face: register(s4);
+sampler ob_back_face: register(s5);
+float shadowBias = 0.0;
+float backProjectionCut = 0.01;
+float exposure;
+float4x4 worldmatrix;
+
+float4 main_fp(float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 viewVec: TEXCOORD2, float4 shadowCrd: TEXCOORD3,
+float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5) : COLOR
+{
+   float4 leafColor;
+   float4 ocolor;
+
+   float2 coords = ((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 4.0;   
+   normal = normalize(normal);
+   float4 obsColor;
+   float depth = length(lightVec.xyz);
+   lightVec = normalize(lightVec);
+   viewVec = normalize(viewVec);
+   cameraDirection = normalize(-cameraDirection);
+   
+   if (dot(normal.xyz,cameraDirection.xyz) < 0.0)
+   //if (reg < 0.0)
+   {
+	  obsColor = float4(tex2D(ob_front_face,texCoord).xxxw);      
+	  //obsColor.xyz = obsColor.xyz / obsColor.w;
+      //if (tex2D(ob_front_face,texCoord).x == tex2D(ob_front_face,texCoord).y)
+      //{
+      //	obsColor = float4(1.0,0.0,0.0,1.0);
+	  //}
+	  //else
+	  //{
+	  //	obsColor = float4(0.0,0.0,1.0,1.0);	 
+	  //}  	  
+   }
+   else
+   {
+	 obsColor = float4(tex2D(ob_front_face,texCoord).yyyw);  
+	 //obsColor.xyz = obsColor.xyz / obsColor.w;	 
+     //if (tex2D(ob_front_face,texCoord).x == tex2D(ob_front_face,texCoord).y)
+     //{
+	 // 	obsColor = float4(1.0,1.0,0.0,1.0);
+	 //}
+	 //else
+	 //{
+	 // 	obsColor = float4(0.0,1.0,1.0,1.0);	 
+	 //}	 
+   }
+     
+   if (dot(normal.xyz,cameraDirection.xyz) < 0.0)
+   //if (reg < 0.0)
+   {
+     normal = -normal;     
+   }
+     
+   float lDiffuseAttenuation = max(dot(lightVec,normal),0.0); 
+   float lSpecularAttenuation = pow(max(dot(reflect(-normalize(viewVec),normal),lightVec),0.0),shininess);
+   float4 shadowMapValue = tex2Dproj(shadowMap,shadowCrd).xyzw;
+   float spotLight = tex2Dproj(spotLight,shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues.
+   float shadow = tex2Dproj(shadowMap, shadowCrd).w - 500 < (depth - 0.0) ? 0.1f : 1.0f;
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   //shadow *= spotLight;
+   
+   // Leaf lookup
+   leafColor = (tex2D(orderFrontBack,texCoord).w > 0.0) ? tex2D(leaf,coords + float2(-0.025,0.025)) : 0.0;
+   //leafColor = (tex2D(ob_front_face,texCoord*512).y > 0.0) ? tex2D(leaf,coords + float2(-0.025,0.025)) : 0.0;
+
+   leafColor =  float4(0.0,0.0,0.0,leafColor.w)
+   		+  float4(Ka * gambient.xyz * leafColor.xyz,0.0)
+   		////+ float4(Kd * lDiffuseAttenuation * leafColor.xyz * lDiffuseColor,0.0); 
+   		+ float4(Kd * lDiffuseAttenuation * leafColor.xyz * lDiffuseColor,0.0) 
+   		//+ float4(Ks * lSpecularAttenuation * lSpecularColor,0.0);
+   		+ float4(Ks * lSpecularAttenuation * leafColor.xyz * lSpecularColor,0.0);
+
+   // LIGHT DIRECTION DEBUG...
+   //if (lightVec.z > 0.5)
+   //{
+   //	leafColor = float4(1.0,0.0,0.0,leafColor.w);
+   //}
+   //else
+   //{
+   //	leafColor = float4(0.0,0.0,1.0,leafColor.w);
+   //}
+   // CAMERA DIRECTION DEBUG...
+   //leafColor = float4(lightVecNormalMapping.xyz,leafColor.w);
+   // AMBIENT DEGUB....
+   //leafColor = float4(Ka * gambient.xyz * leafColor.xyz,leafColor.w);
+   // DIFFUSE COLOUR DEBUG...
+   //leafColor  = float4(lDiffuseColor.xyz,leafColor.w);
+   // DIFFUSE COLOUR DEBUG...
+   //leafColor  = float4(Kd.xxx,leafColor.w);
+   // DIFFUSE 
+   //leafColor = float4(Kd * (lDiffuseAttenuation) * leafColor.xyz * lDiffuseColor,leafColor.w);
+   // SPECULAR
+   //leafColor = float4(Ks * (lSpecularAttenuation) * leafColor.xyz * lSpecularColor,leafColor.w);
+   // SHADOW
+   //leafColor = float4(shadow.xxx,leafColor.w);
+   //leafColor = float4((1.0 - exp(exposure * obsColor.xyz)),leafColor.w);
+   ocolor = leafColor;
+   return  ocolor;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_directional_vp.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_directional_vp.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_directional_vp.cg	(revision 1493)
@@ -0,0 +1,142 @@
+/*
+void main_vp(
+      float4 position: POSITION,
+      float4 normal: NORMAL,
+      float2 texCoord : TEXCOORD0,
+
+      out float3 lightpos : TEXCOORD3,
+      out float3 eyePosition : TEXCOORD2,
+      out float4 oPosition: POSITION,
+      out float2 otexCoord : TEXCOORD0,
+      //out float3 otexPos : TEXCOORD1,
+      out float3 V : TEXCOORD1,
+      out float3 L : TEXCOORD4,
+      uniform float4 lightposition,		// world space
+      uniform float4 cameraposition,		// world space
+      uniform float3 camPosition : TEXCOORD2,   
+      uniform float3 lightposi : TEXCOORD3,
+      uniform float4x4 worldviewproj,
+      uniform float4x4 worldmatrix,
+      uniform float4x4 invworldmatrix,
+      uniform float4x4 viewmatrix,
+      uniform float4x4 projmatrix,
+      uniform float4x4 viewprojmatrix,
+      uniform float4x4 worldviewmatrix
+      )
+{
+	oPosition = mul(worldviewproj,position);
+	float4 pos = mul(worldviewmatrix,position);
+
+	//float4 campos = mul(viewmatrix,float4(camPosition,1.0));
+	float4 campos = mul(viewmatrix,cameraposition);
+	eyePosition = campos.xyz;
+	
+	float4 lightp = mul(viewmatrix,float4(lightposi,1.0));
+	//float4 lightp = mul(viewmatrix,lightposition);
+	lightpos = lightp.xyz;
+
+	V = -pos.xyz;
+	L = lightpos - pos.xyz;
+
+	otexCoord = texCoord;
+}
+*/
+/*
+void main_vp(
+      float4 position : POSITION,
+      float4 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+
+      out float4 oPosition : POSITION,
+      out float2 otexCoord : TEXCOORD0,
+      out float2 otexCoordNormalized : TEXCOORD1,
+      uniform float4x4 worldviewproj
+      )
+{
+	oPosition = mul(worldviewproj,position);
+	otexCoord = texCoord;
+	otexCoordNormalized = texCoordNormalized;
+}
+*/
+
+
+
+
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float3 lightVec : TEXCOORD1;
+   float3 viewVec:   TEXCOORD2;
+   float4 shadowCrd: TEXCOORD3;
+   float2 texCoord:  TEXCOORD4;
+   float2 texCoordNormalized: TEXCOORD5;
+};
+
+void main_vp(
+      float4 position : POSITION,
+      float4 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+
+      uniform float distanceScale,
+      uniform float4 lightPosition,
+      uniform float4 lightDirection,
+      uniform float4 camera_pos,
+      uniform float4x4 worldviewproj,
+      uniform float4x4 proj_matrix,
+      uniform float time_0_X,
+
+      out float4 opos:       POSITION,
+      out float3 onormal:    TEXCOORD0,
+      out float3 olightVec : TEXCOORD1,
+      out float3 oviewVec:   TEXCOORD2,
+      out float4 oshadowCrd: TEXCOORD3,
+      out float2 otexCoord:  TEXCOORD4,
+      out float2 otexCoordNormalized: TEXCOORD5
+      )
+{
+	opos = mul(worldviewproj, position);
+	// World-space lighting
+	onormal = normal;
+	//olightVec = distanceScale * (lightPosition - position.xyz);
+	olightVec = distanceScale * -lightDirection;
+	oviewVec = camera_pos - position.xyz;
+	otexCoord = texCoord;
+	otexCoordNormalized = texCoordNormalized;
+
+	   // Create view vectors for the light, looking at (0,0,0)
+	   // In real applications this work is better done on
+	   // the CPU as it's constant for the whole scene.
+	   //float3 dirZ = -normalize(lightPosition);
+	   float3 dirZ = -normalize(lightDirection);
+	   float3 up = float3(0.0,0.0,1.0);
+	   float3 dirX = cross(up, dirZ);
+	   float3 dirY = cross(dirZ, dirX);
+
+	   // Transform into light's view space.
+	   // In real applications we would be better off using a 4x4
+	   // matrix instead, but for this shader it's cheaper to
+	   // just transpose and rotate into light's view space.
+	   float4 pos;
+	   //position.xyz -= lightPosition;
+	   position.xyz -= lightDirection;
+	   pos.x = dot(dirX, position);
+	   pos.y = dot(dirY, position);
+	   pos.z = dot(dirZ, position);
+	   pos.w = 1;
+
+	   // Project it. For this sample using the normal projection
+	   // matrix suffices, however, real applications will typically
+	   // use a separate projection matrix for each light depending
+	   // on its properties such as FOV and range.
+	   float4 sPos = mul(proj_matrix, pos);
+
+	   // Use projective texturing to map the position of each fragment
+	   // to its corresponding texel in the shadow map.
+	   sPos.z += 10;
+	   oshadowCrd.x = 0.5 * (sPos.z + sPos.x);
+	   oshadowCrd.y = 0.5 * (sPos.z - sPos.y);
+	   oshadowCrd.z = 0;
+	   oshadowCrd.w = sPos.z;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.shd.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.shd.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.shd.bak	(revision 1493)
@@ -0,0 +1,36 @@
+float4 ambientColour;
+float4 lightPosition;
+float distanceScale;
+float4x4 proj_matrix;
+float4x4 worldmatrix;
+float time_0_X;
+//float4 ambient_light;
+
+
+struct VS_OUTPUT {
+   float4 Pos: POSITION;
+   float  Depth: TEXCOORD2;
+   float3 texCoord: TEXCOORD0;
+   float3 texCoordNormalized: TEXCOORD1;
+   float4 Color: COLOR0;
+};
+
+VS_OUTPUT main(float4 Pos: POSITION, float3 Norm: NORMAL, float3 texCoord: TEXCOORD0, float3 texCoordNormalized: TEXCOORD1)
+{
+   VS_OUTPUT Out;
+
+   // Project it. For this sample using the normal projection
+   // matrix suffices, however, real applications will typically
+   // use a separate projection matrix for each light depending
+   // on its properties such as FOV and range.  
+   Out.Pos = mul(Pos, proj_matrix);
+   float4 world_pos = mul(Pos, worldmatrix);
+   Out.Depth = length(lightPosition.xyz -Pos.xyz);
+   Out.texCoord = texCoord;
+   Out.texCoordNormalized = texCoordNormalized;
+   Out.Color = float4(0.0,1.0,0.0,1.0);
+   
+   return Out;
+}
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp_ATI_9700.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp_ATI_9700.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_fp_ATI_9700.shd	(revision 1493)
@@ -0,0 +1,128 @@
+float3 cameraDirection;
+float shininess;
+float nearDistance;
+float farDistance;
+float tex_atlas_size;
+float scale_factor;
+float3 lDiffuseColor;
+float3 lSpecularColor;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+sampler orderFrontBack: register(s0);
+sampler leaf: register(s1);
+sampler shadowMap: register(s6);
+sampler spotLight: register(s2);
+sampler normalMap: register(s3);
+sampler ob_front_face: register(s4);
+sampler ob_back_face: register(s5);
+float shadowBias = 0.0;
+float backProjectionCut = 0.01;
+float exposure;
+float4x4 worldmatrix;
+
+float4 main_fp(float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 viewVec: TEXCOORD2, float4 shadowCrd: TEXCOORD3,
+float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5) : COLOR
+{
+   float4 leafColor;
+   float4 ocolor;
+
+   float2 coords = ((texCoordNormalized - tex2D(orderFrontBack, texCoord).xy) + tex2D(orderFrontBack, texCoord).zw) * 4.0;   
+   normal = normalize(normal);
+   float4 obsColor;
+   float depth = length(lightVec.xyz);
+   lightVec = normalize(lightVec);
+   viewVec = normalize(viewVec);
+   cameraDirection = normalize(-cameraDirection);
+   
+   if (dot(normal.xyz,cameraDirection.xyz) < 0.0)
+   //if (reg < 0.0)
+   {
+	  obsColor = float4(tex2D(ob_front_face,texCoord).xxxw);      
+	  //obsColor.xyz = obsColor.xyz / obsColor.w;
+      //if (tex2D(ob_front_face,texCoord).x == tex2D(ob_front_face,texCoord).y)
+      //{
+      //	obsColor = float4(1.0,0.0,0.0,1.0);
+	  //}
+	  //else
+	  //{
+	  //	obsColor = float4(0.0,0.0,1.0,1.0);	 
+	  //}  	  
+   }
+   else
+   {
+	 obsColor = float4(tex2D(ob_front_face,texCoord).yyyw);  
+	 //obsColor.xyz = obsColor.xyz / obsColor.w;	 
+     //if (tex2D(ob_front_face,texCoord).x == tex2D(ob_front_face,texCoord).y)
+     //{
+	 // 	obsColor = float4(1.0,1.0,0.0,1.0);
+	 //}
+	 //else
+	 //{
+	 // 	obsColor = float4(0.0,1.0,1.0,1.0);	 
+	 //}	 
+   }
+     
+   if (dot(normal.xyz,cameraDirection.xyz) < 0.0)
+   //if (reg < 0.0)
+   {
+     normal = -normal;     
+   }
+     
+   float lDiffuseAttenuation = max(dot(lightVec,normal),0.0); 
+   float lSpecularAttenuation = pow(max(dot(reflect(-normalize(viewVec),normal),lightVec),0.0),shininess);
+   float4 shadowMapValue = tex2Dproj(shadowMap,shadowCrd).xyzw;
+   float spotLight = tex2Dproj(spotLight,shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues.
+   float shadow = tex2Dproj(shadowMap, shadowCrd).w - 500 < (depth - 0.0) ? 0.1f : 1.0f;
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   //shadow *= spotLight;
+   
+   // Leaf lookup
+   leafColor = (tex2D(orderFrontBack,texCoord).w > 0.0) ? tex2D(leaf,coords + float2(-0.025,0.025)) : 0.0;
+   //leafColor = (tex2D(ob_front_face,texCoord*512).y > 0.0) ? tex2D(leaf,coords + float2(-0.025,0.025)) : 0.0;
+
+   leafColor =  float4(0.0,0.0,0.0,leafColor.w)
+   		+  float4(Ka * gambient.xyz * leafColor.xyz,0.0)
+   		////+ float4(Kd * lDiffuseAttenuation * leafColor.xyz * lDiffuseColor,0.0); 
+   		+ float4(Kd * lDiffuseAttenuation * leafColor.xyz * lDiffuseColor,0.0) 
+   		//+ float4(Ks * lSpecularAttenuation * lSpecularColor,0.0);
+   		+ float4(Ks * lSpecularAttenuation * leafColor.xyz * lSpecularColor,0.0);
+
+   // LIGHT DIRECTION DEBUG...
+   //if (lightVec.z > 0.5)
+   //{
+   //	leafColor = float4(1.0,0.0,0.0,leafColor.w);
+   //}
+   //else
+   //{
+   //	leafColor = float4(0.0,0.0,1.0,leafColor.w);
+   //}
+   // CAMERA DIRECTION DEBUG...
+   //leafColor = float4(lightVecNormalMapping.xyz,leafColor.w);
+   // AMBIENT DEGUB....
+   //leafColor = float4(Ka * gambient.xyz * leafColor.xyz,leafColor.w);
+   // DIFFUSE COLOUR DEBUG...
+   //leafColor  = float4(lDiffuseColor.xyz,leafColor.w);
+   // DIFFUSE COLOUR DEBUG...
+   //leafColor  = float4(Kd.xxx,leafColor.w);
+   // DIFFUSE 
+   //leafColor = float4(Kd * (lDiffuseAttenuation) * leafColor.xyz * lDiffuseColor,leafColor.w);
+   // SPECULAR
+   //leafColor = float4(Ks * (lSpecularAttenuation) * leafColor.xyz * lSpecularColor,leafColor.w);
+   // SHADOW
+   //leafColor = float4(shadow.xxx,leafColor.w);
+   leafColor = float4((1.0 - exp(exposure * obsColor.xyz)),leafColor.w);
+   ocolor = leafColor;
+   return  ocolor;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp.shd.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp.shd.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp.shd.bak	(revision 1493)
@@ -0,0 +1,90 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float4 lightVec : TEXCOORD1;
+   float4 viewVec:   TEXCOORD2;
+   float4 shadowCrd: TEXCOORD3;
+   float2 texCoord:  TEXCOORD4;
+   float2 texCoordNormalized: TEXCOORD5;
+   float4 lightVecNM: TEXCOORD6;
+   float3 halfvec: TEXCOORD7;
+};
+
+float distanceScale;
+float4 lattenuation;
+float4 lightPosition;
+float4 lightDirection;
+float4 cameraPosition;
+float4x4 worldviewproj;
+float4x4 worldmatrix;
+float4x4 proj_matrix;
+float time_0_X;
+
+VS_OUTPUT main_vp(
+      float4 position : POSITION,
+      float3 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+      float3 inTangent : TEXCOORD2,
+      float3 inBinormal : BINORMAL
+      )
+{
+
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+
+	//------------------------------------------------------------
+	// World-space lighting
+	//------------------------------------------------------------
+	// world_pos,lightPosition,
+	float world_pos = mul(worldmatrix,position);
+	Out.normal = normal;
+	Out.lightVec = lightPosition - world_pos;  // Used for shadow mapping
+	float dist = length(Out.lightVec.xyz);
+	Out.lightVecNM.xyz = -Out.lightVec.xyz / dist; // For shadow mapping we were using distanceScale
+	Out.lightVecNM.w = clamp(0.0,1.0,1.0 / (lattenuation.x + lattenuation.y * dist + lattenuation.z * dist * dist) );
+
+	// Debugging purpose...
+	normal = mul(worldmatrix,normal);
+	inTangent = mul(worldmatrix,inTangent);
+	inBinormal = mul(worldmatrix,inBinormal);
+
+	float3x3 tangentSpace;
+	// In Ogre3D the TAG BINORMAL and TANGENT are not used...
+	tangentSpace[0] = inTangent;
+	tangentSpace[1] = cross(inTangent,normal.xyz);
+	tangentSpace[2] = normal.xyz;
+
+	Out.viewVec = normalize(cameraPosition - world_pos);
+	
+	// Converted to Tangent-space
+	Out.halfvec = mul(tangentSpace,normalize(Out.lightVecNM.xyz+Out.viewVec.xyz));
+	Out.lightVecNM = float4(mul(tangentSpace,Out.lightVecNM.xyz),Out.lightVecNM.w);
+
+	Out.texCoord = texCoord;
+	Out.texCoordNormalized = texCoordNormalized;
+
+	//------------------------------------------------------------
+	// Light-space coordinates
+	//------------------------------------------------------------
+	float4 sPos = mul(proj_matrix, position);
+	//float4 sPos = mul(position,proj_matrix);
+	sPos.z += 10;
+	//Out.shadowCrd.x = 0.5 * (sPos.z + sPos.x);
+	//Out.shadowCrd.y = 0.5 * (sPos.z - sPos.y);
+	//Out.shadowCrd.z = 0;
+	//Out.shadowCrd.w = sPos.z;
+
+	//Out.shadowCrd.x = sPos.x;
+	//Out.shadowCrd.y = 1.0 - sPos.y;
+	//Out.shadowCrd.z = 0.0;
+	//Out.shadowCrd.w = sPos.z;
+
+	Out.shadowCrd.x = sPos.x;
+	Out.shadowCrd.y = 1.0 - sPos.y;
+	Out.shadowCrd.z = 0.0;
+	Out.shadowCrd.w = sPos.z;
+
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_fp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_fp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_fp.shd	(revision 1493)
@@ -0,0 +1,76 @@
+float4x4 worldmatrix;
+float scale_factor;
+float3 ldiffuse;
+float3 lspecular;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+sampler leaf: register(s0);
+sampler shadowMap: register(s1);
+sampler spotLight: register(s2);
+sampler normalMap: register(s3);
+
+float shadowBias = 45.57;
+float backProjectionCut = 0.0;
+float4 main_fp(float reg: VFACE, float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 viewVec: TEXCOORD2, float4 shadowCrd: TEXCOORD3, float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5) : COLOR
+{
+   float4 tempcolor;
+   float4 ocolor;
+
+   // The normals are not correct if we change the orientation of the impostor tree
+   //----------------------------------------------------------------------------
+   // Using normalmap
+   //normal = tex2D(normalMap,texCoord);
+   // If we have random orientations and not only 
+   // the original normal_map tree orientation
+   //normal = mul(worldmatrix,normal);
+   // The values are from 0..255, so I should convert them from [0,255] to [0,1]
+   // and convert from [0,1] to [-1,1]
+   //normal = float3(1.0,1.0,1.0) - normalize(normal) * 2.0;
+   //----------------------------------------------------------------------------
+
+   // Front and Back faces lighted
+   normal = (reg > 0.0) ? normal : -normal;
+
+   // Radial distance
+   float depth = length(lightVec);
+   // Normalizes light vector
+   lightVec /= depth;
+
+   // Standard lighting
+   float odiffuse = saturate(dot(lightVec, normal));
+   float ospecular = pow(saturate(dot(reflect(-normalize(viewVec), normal), lightVec)), 16);
+
+   // The depth of the fragment closest to the light
+   float shadowMap = tex2Dproj(shadowMap, shadowCrd);
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(spotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMap + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   tempcolor = tex2D(leaf,texCoord);
+   tempcolor = float4((Ka*(gambient.xyz)) + (Kd*(odiffuse * tempcolor.xyz * ldiffuse)) + (Ks * (ospecular * lspecular)),tempcolor.w);	   
+  
+   // Shows each side the front and the back side...
+   //tempcolor = (reg > 0.0) ? float4(1.0,0.0,0.0,tempcolor.w) : float4(0.0,1.0,0.0,tempcolor.w);
+   
+   // No lighting test...
+   //tempcolor = tex2D(leaf,texCoord);
+   ocolor = tempcolor;
+   return  ocolor;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/terrain_vp.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/terrain_vp.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/terrain_vp.cg	(revision 1493)
@@ -0,0 +1,19 @@
+void main_vp(
+      float4 position : POSITION,
+      float4 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordProjected : TEXCOORD1,
+
+      out float4 oPosition : POSITION,
+      out float2 otexCoord : TEXCOORD0,
+      out float2 otexCoordProjected : TEXCOORD1,
+
+      uniform float4x4 worldviewproj,
+      uniform float4x4 proj_matrix
+      )
+{
+	oPosition = mul(worldviewproj,position);
+	texCoordProjected = mul(proj_matrix,position);
+	otexCoordProjected = texCoordProjected;
+	otexCoord = texCoord;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/ground_fp.txt
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/ground_fp.txt	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/ground_fp.txt	(revision 1493)
@@ -0,0 +1,56 @@
+float backProjectionCut;
+float Ka;
+float Kd;
+float Ks;
+float4 platformColor;
+float shadowBias;
+sampler ShadowMapLeaves;
+sampler SpotLight;
+sampler PlataformMap;
+
+float4 main( float3 normal: TEXCOORD0, 
+             float3 lightVec: TEXCOORD1, 
+             float3 viewVec: TEXCOORD2, 
+             float4 shadowCrd: TEXCOORD3,
+             float3 texCoord: TEXCOORD4) : COLOR 
+{
+   normal = normalize(normal);
+   
+   // Radial distance
+   float depth = length(lightVec);
+   // Normalizes light vector
+   lightVec /= depth;
+
+   // Standard lighting
+   float diffuse = saturate(dot(lightVec, normal));
+   float specular = pow(saturate(dot(reflect(-normalize(viewVec), normal), lightVec)), 16);
+
+   // The depth of the fragment closest to the light
+   float fShadowMapLeaves = tex2Dproj(ShadowMapLeaves, shadowCrd).x;
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(SpotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues.
+   float shadow;
+   shadow = (depth < fShadowMapLeaves + shadowBias);
+  
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   //return Ka * platformColor + (Kd * diffuse * platformColor + Ks * specular) * shadow;
+   return Ka * tex2D(PlataformMap,texCoord) + (Kd * diffuse * platformColor + Ks * specular) * shadow;
+   
+}
+
+
+
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vpshd.old
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vpshd.old	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vpshd.old	(revision 1493)
@@ -0,0 +1,106 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float4 lightVec : TEXCOORD1;
+   float3 halfvec: TEXCOORD2;
+   float4 shadowCrd: TEXCOORD3;
+   float2 texCoord:  TEXCOORD4;
+   float2 texCoordNormalized: TEXCOORD5;
+   float4 lightVecNM: TEXCOORD6;
+   float backside: TEXCOORD7;
+};
+
+float distanceScale;
+float4 lattenuation;
+float4 lightPosition;
+float4 lightDirection;
+float4 cameraPosition;
+float4 cameraDirection;
+float4x4 worldviewproj;
+float4x4 worldmatrix;
+float4x4 proj_matrix;
+float time_0_X;
+
+VS_OUTPUT main_vp(
+      float4 position : POSITION,
+      float3 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+      float3 inTangent : TEXCOORD2,
+      float3 inBinormal : BINORMAL
+      )
+{
+
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+
+	//------------------------------------------------------------
+	// World-space lighting
+	//------------------------------------------------------------
+	// world_pos,lightPosition,
+	float4 world_pos = mul(worldmatrix,position);
+
+	Out.backside = 0.0;
+	normal = mul(worldmatrix,normal);
+	
+	if (dot(normal,cameraDirection) < 0.0)
+	{
+		//normal.xyz = -normal.xyz;
+		Out.backside = 1.0;
+	}
+
+
+	Out.normal = normal;
+	Out.lightVec = lightPosition - world_pos;  // Used for shadow mapping
+	//Out.lightVec = -lightDirection;
+	float dist = length(Out.lightVec.xyz);
+	Out.lightVecNM.xyz = -Out.lightVec.xyz / dist; // For shadow mapping we were using distanceScale
+	Out.lightVecNM.w = clamp(0.0,1.0,1.0 / (lattenuation.x + lattenuation.y * dist + lattenuation.z * dist * dist) );
+
+	// Debugging purpose...
+	normal = mul(worldmatrix,normal);
+	inTangent = mul(worldmatrix,inTangent);
+	inBinormal = mul(worldmatrix,inBinormal);
+
+	float3x3 tangentSpace;
+	// In Ogre3D the TAG BINORMAL and TANGENT are not used...
+	tangentSpace[0] = inTangent;
+	tangentSpace[1] = cross(inTangent,normal.xyz);
+	tangentSpace[2] = normal.xyz;
+
+	float4 oviewVec = normalize(cameraPosition - world_pos);
+	
+	// Converted to Tangent-space
+	Out.halfvec = mul(tangentSpace,normalize(Out.lightVecNM.xyz+oviewVec.xyz));
+	//Out.lightVecNM = float4(mul(tangentSpace,Out.lightVecNM.xyz),Out.lightVecNM.w);
+	Out.lightVecNM = oviewVec;
+
+	Out.texCoord = texCoord;
+	Out.texCoordNormalized = texCoordNormalized;
+
+	//------------------------------------------------------------
+	// Light-space coordinates
+	//------------------------------------------------------------
+	float4 sPos = mul(proj_matrix, position);
+	//float4 sPos = mul(position,proj_matrix);
+	//sPos.z += 10;
+	//Out.shadowCrd.x = 0.5 * (sPos.z + sPos.x);
+	//Out.shadowCrd.y = 0.5 * (sPos.z - sPos.y);
+	//Out.shadowCrd.z = 0;
+	//Out.shadowCrd.w = sPos.z;
+	
+	Out.shadowCrd = sPos;
+	
+	//Out.shadowCrd.x = sPos.x;
+	//Out.shadowCrd.y = 1.0 - sPos.y;
+	//Out.shadowCrd.z = 0.0;
+	//Out.shadowCrd.w = sPos.z;
+
+	//Out.shadowCrd.x = sPos.x;
+	//Out.shadowCrd.y = 1.0 - sPos.y;
+	//Out.shadowCrd.z = 0.0;
+	//Out.shadowCrd.w = sPos.z;
+
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_tree_leaves_vp.shd	(revision 1493)
@@ -0,0 +1,32 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float4 lightVec : TEXCOORD1;
+   float4 shadowCrd: TEXCOORD2;
+   float2 texCoord:  TEXCOORD3;
+};
+
+float4x4 worldviewproj;
+float4x4 worldmatrix;
+float4x4 proj_matrix;
+
+VS_OUTPUT main(
+      float4 position : POSITION,
+      float3 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+      float3 inTangent : TEXCOORD2,
+      float3 inBinormal : BINORMAL
+      )
+{
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+	Out.normal = mul(worldmatrix,normal);
+	Out.lightVec = Out.Pos;
+	normal = mul(worldmatrix,normal);
+	Out.texCoord = texCoord;
+	Out.shadowCrd = mul(proj_matrix, position);
+
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_idtexturing_spotlight_vp.shd	(revision 1493)
@@ -0,0 +1,70 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float4 lightVec : TEXCOORD1;
+   float3 halfvec: TEXCOORD2;
+   float4 shadowCrd: TEXCOORD3;
+   float2 texCoord:  TEXCOORD4;
+   float2 texCoordNormalized: TEXCOORD5;
+   float4 lightVecNM: TEXCOORD6;
+   float backside: TEXCOORD7;
+};
+
+float distanceScale;
+float4 lattenuation;
+float4 lightPosition;
+float4 lightDirection;
+float4 cameraPosition;
+float4 cameraDirection;
+float4x4 worldviewproj;
+float4x4 worldmatrix;
+float4x4 proj_matrix;
+float time_0_X;
+
+VS_OUTPUT main_vp(
+      float4 position : POSITION,
+      float3 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+      float3 inTangent : TEXCOORD2,
+      float3 inBinormal : BINORMAL
+      )
+{
+
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+	float4 world_pos = mul(worldmatrix,position);
+	Out.backside = 0.0;
+
+	// Thats why we compute the backside before converting
+	// the normal to world-space coordinates...
+	// cameraDirection is expressed in object space 
+	if (dot(normal,cameraDirection) < 0.0)
+	{
+		Out.backside = 1.0;
+	}
+	cameraDirection = mul(worldmatrix,cameraDirection);
+	normal = mul(worldmatrix,normal);
+	Out.normal = normal;
+	//Out.lightVec = lightPosition - world_pos;
+	Out.lightVec = lightDirection;
+	float dist = length(Out.lightVec.xyz);
+	Out.lightVecNM.xyz = -Out.lightVec.xyz / dist; // For shadow mapping we were using distanceScale
+	Out.lightVecNM.w = clamp(0.0,1.0,1.0 / (lattenuation.x + lattenuation.y * dist + lattenuation.z * dist * dist) );
+	normal = mul(worldmatrix,normal);
+	inTangent = mul(worldmatrix,inTangent);
+	inBinormal = mul(worldmatrix,inBinormal);
+	float3x3 tangentSpace;
+	tangentSpace[0] = inTangent;
+	tangentSpace[1] = cross(inTangent,normal.xyz);
+	tangentSpace[2] = normal.xyz;
+	float4 oviewVec = normalize(cameraPosition - world_pos);
+	Out.halfvec = mul(tangentSpace,normalize(Out.lightVecNM.xyz+oviewVec.xyz));
+	Out.lightVecNM = oviewVec;
+	Out.texCoord = texCoord;
+	Out.texCoordNormalized = texCoordNormalized;
+	Out.shadowCrd = mul(proj_matrix, position);
+
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_directional_light_fp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_directional_light_fp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/tree_directional_light_fp.shd	(revision 1493)
@@ -0,0 +1,76 @@
+float4x4 worldmatrix;
+float scale_factor;
+float3 ldiffuse;
+float3 lspecular;
+float3 lattenuation;
+float4 gambient;
+float Ka;
+float Kd;
+float Ks;
+sampler leaf: register(s0);
+sampler shadowMap: register(s1);
+sampler spotLight: register(s2);
+sampler normalMap: register(s3);
+
+float shadowBias = 45.57;
+float backProjectionCut = 0.0;
+float4 main_fp(float reg: VFACE, float3 normal: TEXCOORD0, float3 lightVec: TEXCOORD1, float3 viewVec: TEXCOORD2, float4 shadowCrd: TEXCOORD3, float4 texCoord: TEXCOORD4, float4 texCoordNormalized: TEXCOORD5) : COLOR
+{
+   float4 tempcolor;
+   float4 ocolor;
+
+   // The normals are not correct if we change the orientation of the impostor tree
+   //----------------------------------------------------------------------------
+   // Using normalmap
+   //normal = tex2D(normalMap,texCoord);
+   // If we have random orientations and not only 
+   // the original normal_map tree orientation
+   //normal = mul(worldmatrix,normal);
+   // The values are from 0..255, so I should convert them from [0,255] to [0,1]
+   // and convert from [0,1] to [-1,1]
+   //normal = float3(1.0,1.0,1.0) - normalize(normal) * 2.0;
+   //----------------------------------------------------------------------------
+
+   // Front and Back faces lighted
+   normal = (reg > 0.0) ? normal : -normal;
+
+   // Radial distance
+   float depth = length(lightVec);
+   // Normalizes light vector
+   lightVec /= depth;
+
+   // Standard lighting
+   float odiffuse = saturate(dot(lightVec, normal));
+   float ospecular = pow(saturate(dot(reflect(-normalize(viewVec), normal), lightVec)), 16);
+
+   // The depth of the fragment closest to the light
+   float shadowMap = tex2Dproj(shadowMap, shadowCrd);
+   // A spot image of the spotlight
+   float spotLight = tex2Dproj(spotLight, shadowCrd);
+   // If the depth is larger than the stored depth, this fragment
+   // is not the closest to the light, that is we are in shadow.
+   // Otherwise, we're lit. Add a bias to avoid precision issues
+   float shadow;
+   shadow = (depth < shadowMap + shadowBias);
+
+   // Cut back-projection, that is, make sure we don't lit
+   // anything behind the light. Theoretically, you should just
+   // cut at w = 0, but in practice you'll have to cut at a
+   // fairly high positive number to avoid precision issue when
+   // coordinates approaches zero. 
+   shadow *= (shadowCrd.w > backProjectionCut);
+   // Modulate with spotlight image
+   shadow *= spotLight;
+
+   // Shadow any light contribution except ambient
+   tempcolor = tex2D(leaf,texCoord);
+   tempcolor = float4((Ka*(gambient.xyz)) + (Kd*(odiffuse * tempcolor.xyz * ldiffuse)) + (Ks * (ospecular * lspecular)),tempcolor.w);	   
+  
+   // Shows each side the front and the back side...
+   //tempcolor = (reg > 0.0) ? float4(1.0,0.0,0.0,tempcolor.w) : float4(0.0,1.0,0.0,tempcolor.w);
+   
+   // No lighting test...
+   //tempcolor = tex2D(leaf,texCoord);
+   ocolor = tempcolor;
+   return  ocolor;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_vp.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_vp.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/depth_shadow_mapping_vp.shd	(revision 1493)
@@ -0,0 +1,29 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float3 normal:    TEXCOORD0;
+   float3 lightVec : TEXCOORD1;
+   float2 texCoord:  TEXCOORD2;
+};
+
+float4x4 worldviewproj;
+float4x4 worldmatrix;
+float4x4 worldview;
+
+VS_OUTPUT main(
+      float4 position : POSITION,
+      float3 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+      float3 inTangent : TEXCOORD2,
+      float3 inBinormal : BINORMAL
+      )
+{
+	VS_OUTPUT Out;
+	
+	Out.Pos = mul(worldviewproj,position);
+	Out.normal = normal;
+	Out.lightVec = mul(worldview,position).xyz;
+	Out.texCoord = texCoord;
+
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/skybox_vp.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/skybox_vp.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/oldgeneral/skybox_vp.cg	(revision 1493)
@@ -0,0 +1,14 @@
+void main_vp(
+      float4 position : POSITION,
+      float4 normal : NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float2 texCoordNormalized : TEXCOORD1,
+
+      out float4 oPosition : POSITION,
+      out float2 otexCoord : TEXCOORD0,
+      uniform float4x4 worldviewproj
+      )
+{
+	oPosition = mul(worldviewproj,position);
+	otexCoord = texCoord;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/chestnut/chesnutTrunk.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/chestnut/chesnutTrunk.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/chestnut/chesnutTrunk.material	(revision 1493)
@@ -0,0 +1,16 @@
+
+
+material trunkChestnut
+{
+	technique
+	{
+		pass
+		{               
+    			texture_unit
+			{
+				texture castanea_sativa_bark.png
+				filtering bilinear
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/chestnut/chestnutLeavesMaterial.material.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/chestnut/chestnutLeavesMaterial.material.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/chestnut/chestnutLeavesMaterial.material.bak	(revision 1493)
@@ -0,0 +1,245 @@
+material chestnutLeavesVisibilityBillboardCloudGroupedIndirectTexturingMaterialLOD0
+{
+	lod_distances 80
+
+	technique indirectTexturingWithVisibilityLOD0
+	{
+		lod_index 0
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+
+		        vertex_program_ref LightingWithIndirectTexturingVP
+		        {
+		        }
+
+		        fragment_program_ref LightingWithIndirectTexturingFP
+		        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named greyRange float 1.57987
+				param_named absGreyMin float 0.280774
+				param_named epsilonX float -0.121
+				param_named epsilonY float 0.1205
+
+				param_named_auto p_LightDiffuse light_diffuse_colour 0
+				param_named_auto p_LightSpecular light_specular_colour 0
+				param_named_auto p_LightPower light_power 0
+				//param_named_auto p_ShadowColor ambient_light_colour
+				param_named p_Diffuse float4 1.0 1.0 1.0 1.0
+				param_named p_Specular float4 1.0 1.0 1.0 16
+		        }
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectDiffuseColorBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault.png
+			}
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+		}
+	}
+
+	technique indirectTexturingWithVisibilityLOD1
+	{
+		lod_index 1
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+
+		        vertex_program_ref LightingWithIndirectTexturingVP
+		        {
+		        }
+
+		        fragment_program_ref LightingWithIndirectTexturingFP
+		        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named greyRange float 1.57987
+				param_named absGreyMin float 0.280774
+				param_named epsilonX float -0.121
+				param_named epsilonY float 0.1205
+
+				param_named_auto p_LightDiffuse light_diffuse_colour 0
+				param_named_auto p_LightSpecular light_specular_colour 0
+				param_named_auto p_LightPower light_power 0
+				//param_named_auto p_ShadowColor ambient_light_colour
+				param_named p_Diffuse float4 1.0 1.0 1.0 1.0
+				param_named p_Specular float4 1.0 1.0 1.0 16
+		        }
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectDiffuseColorBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault.png
+			}
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+		}
+	}
+}
+
+material chestnutLeavesVisibilityBillboardCloudGroupedIndirectTexturingMaterial0
+{
+	technique indirectTexturingWithVisibility
+	{
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+
+		        vertex_program_ref LightingWithIndirectTexturingVP
+		        {
+		        }
+
+		        fragment_program_ref LightingWithIndirectTexturingFP
+		        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named greyRange float 1.57987
+				param_named absGreyMin float 0.280774
+				param_named epsilonX float -0.121
+				param_named epsilonY float 0.1205
+
+				param_named_auto p_LightDiffuse light_diffuse_colour 0
+				param_named_auto p_LightSpecular light_specular_colour 0
+				param_named_auto p_LightPower light_power 0
+				//param_named_auto p_ShadowColor ambient_light_colour
+				param_named p_Diffuse float4 1.0 1.0 1.0 1.0
+				param_named p_Specular float4 1.0 1.0 1.0 16
+		        }
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectDiffuseColorBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault.png
+			}
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+		}
+	}
+}
+ 
+ material chestnutLeavesBillboardCloudGroupMaterial0
+{
+	lod_distances 400
+
+    // DIRECTX/HLSL Indirect texture default
+	// This technique render the billboard cloud using the indirect texturing
+	// approach leading to high resolution leaves
+	technique indirectTexturingLightingFiltering_HLSL
+	{
+		lod_index 0
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+			
+			vertex_program_ref indirectTexturingLighting_hlsl_VP20
+                        {				 			 
+				param_named_auto worldviewproj worldviewproj_matrix
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto eyePosition camera_position_object_space
+                        }
+
+			fragment_program_ref indirectTexturingLighting_hlsl_FP20
+                        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named_auto ambientColor ambient_light_colour
+				param_named ambient float 0.3
+                        }
+
+			texture_unit
+			{
+				texture chestnutIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault.png
+				//filtering none
+			}
+		}
+	}
+
+	// DIRECTX/HLSL Indirect texture default
+	// This technique render the billboard cloud using the indirect texturing
+	// approach leading to high resolution leaves
+	technique indirectTexturingLightingNoFiltering_HLSL
+	{
+		lod_index 1
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+			
+			vertex_program_ref indirectTexturingLighting_hlsl_VP20
+                        {				 			 
+				param_named_auto worldviewproj worldviewproj_matrix
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto eyePosition camera_position_object_space
+                        }
+
+			fragment_program_ref indirectTexturingLighting_hlsl_FP20
+                        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named_auto ambientColor ambient_light_colour
+				param_named ambient float 0.3
+                        }
+
+			texture_unit
+			{
+				texture chestnutIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault.png
+				filtering none
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/chestnut/chestnutLeavesMaterial.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/chestnut/chestnutLeavesMaterial.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/chestnut/chestnutLeavesMaterial.material	(revision 1493)
@@ -0,0 +1,246 @@
+material chestnutLeavesVisibilityBillboardCloudGroupedIndirectTexturingMaterialLOD0
+{
+	lod_distances 80
+
+	technique indirectTexturingWithVisibilityLOD0
+	{
+		lod_index 0
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+
+		        vertex_program_ref LightingWithIndirectTexturingVP
+		        {
+		        }
+
+		        fragment_program_ref LightingWithIndirectTexturingFP
+		        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named greyRange float 1.57987
+				param_named absGreyMin float 0.280774
+				param_named epsilonX float -0.121
+				param_named epsilonY float 0.1205
+
+				param_named_auto p_LightDiffuse light_diffuse_colour 0
+				param_named_auto p_LightSpecular light_specular_colour 0
+				param_named_auto p_LightPower light_power 0
+				//param_named_auto p_ShadowColor ambient_light_colour
+				param_named p_Diffuse float4 1.0 1.0 1.0 1.0
+				param_named p_Specular float4 1.0 1.0 1.0 16
+		        }
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectDiffuseColorBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault.png
+			}
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+		}
+	}
+
+	technique indirectTexturingWithVisibilityLOD1
+	{
+		lod_index 1
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+
+		        vertex_program_ref LightingWithIndirectTexturingVP
+		        {
+		        }
+
+		        fragment_program_ref LightingWithIndirectTexturingFP
+		        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named greyRange float 1.57987
+				param_named absGreyMin float 0.280774
+				param_named epsilonX float -0.121
+				param_named epsilonY float 0.1205
+
+				param_named_auto p_LightDiffuse light_diffuse_colour 0
+				param_named_auto p_LightSpecular light_specular_colour 0
+				param_named_auto p_LightPower light_power 0
+				//param_named_auto p_ShadowColor ambient_light_colour
+				param_named p_Diffuse float4 1.0 1.0 1.0 1.0
+				param_named p_Specular float4 1.0 1.0 1.0 16
+		        }
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectDiffuseColorBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault128.png
+				filtering linear linear none
+			}
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+		}
+	}
+}
+
+material chestnutLeavesVisibilityBillboardCloudGroupedIndirectTexturingMaterial0
+{
+	technique indirectTexturingWithVisibility
+	{
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+
+		        vertex_program_ref LightingWithIndirectTexturingVP
+		        {
+		        }
+
+		        fragment_program_ref LightingWithIndirectTexturingFP
+		        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named greyRange float 1.57987
+				param_named absGreyMin float 0.280774
+				param_named epsilonX float -0.121
+				param_named epsilonY float 0.1205
+
+				param_named_auto p_LightDiffuse light_diffuse_colour 0
+				param_named_auto p_LightSpecular light_specular_colour 0
+				param_named_auto p_LightPower light_power 0
+				//param_named_auto p_ShadowColor ambient_light_colour
+				param_named p_Diffuse float4 1.0 1.0 1.0 1.0
+				param_named p_Specular float4 1.0 1.0 1.0 16
+		        }
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectDiffuseColorBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault.png
+			}
+
+			texture_unit
+			{
+				texture chestnutLeavesVisibilityIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+		}
+	}
+}
+ 
+ material chestnutLeavesBillboardCloudGroupMaterial0
+{
+	lod_distances 400
+
+    // DIRECTX/HLSL Indirect texture default
+	// This technique render the billboard cloud using the indirect texturing
+	// approach leading to high resolution leaves
+	technique indirectTexturingLightingFiltering_HLSL
+	{
+		lod_index 0
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+			
+			vertex_program_ref indirectTexturingLighting_hlsl_VP20
+                        {				 			 
+				param_named_auto worldviewproj worldviewproj_matrix
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto eyePosition camera_position_object_space
+                        }
+
+			fragment_program_ref indirectTexturingLighting_hlsl_FP20
+                        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named_auto ambientColor ambient_light_colour
+				param_named ambient float 0.3
+                        }
+
+			texture_unit
+			{
+				texture chestnutIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault.png
+				//filtering none
+			}
+		}
+	}
+
+	// DIRECTX/HLSL Indirect texture default
+	// This technique render the billboard cloud using the indirect texturing
+	// approach leading to high resolution leaves
+	technique indirectTexturingLightingNoFiltering_HLSL
+	{
+		lod_index 1
+		pass
+		{
+			alpha_rejection greater_equal 110
+			cull_hardware none
+			cull_software none
+			lighting off
+			
+			vertex_program_ref indirectTexturingLighting_hlsl_VP20
+                        {				 			 
+				param_named_auto worldviewproj worldviewproj_matrix
+				param_named_auto lightPosition light_position_object_space 0
+				param_named_auto eyePosition camera_position_object_space
+                        }
+
+			fragment_program_ref indirectTexturingLighting_hlsl_FP20
+                        {
+				param_named sourceTextureSize float 16.0
+				param_named sqrtNumSamples float 4.0
+				param_named_auto ambientColor ambient_light_colour
+				param_named ambient float 0.3
+                        }
+
+			texture_unit
+			{
+				texture chestnutIndirectBillboardGroupAtlas0.png
+				filtering none
+			}
+
+			texture_unit
+			{
+				texture chestnutRotatedLeafAtlasDefault.png
+				filtering none
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_FP20.shd.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_FP20.shd.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_FP20.shd.bak	(revision 1493)
@@ -0,0 +1,29 @@
+sampler indirectTexture: register(s0);
+sampler sourceTexture: register(s1);
+
+uniform float epsilonX;
+uniform float epsilonY;
+uniform float sourceTextureSize;
+uniform float numSamples;
+uniform float sqrtNumSamples;
+uniform float3 ambientColor;
+uniform float ambient;
+
+float4 main_fp(float2 texCoord: TEXCOORD0, 
+               float2 subTexCoord: TEXCOORD1,
+	       float diffuseIn 	: TEXCOORD2) : COLOR
+{
+   float4 ocolor = float4(0.0, 0.0, 0.0, 0.0);
+   float2 epsilon = float2(epsilonX, epsilonY);
+   float4 value = tex2D(indirectTexture, subTexCoord).xyzw;
+   float2 coords = float2(0.0, 1.0) - abs(texCoord - ( value.xy - epsilon ) );
+
+   if (value.w != 0.0) 
+   {	
+	float2 newcoord = (float2(1.0, 1.0) - value.zw) + ((coords * sourceTextureSize) / sqrtNumSamples);
+	ocolor = float4(tex2D(sourceTexture, newcoord).xyzw);
+	ocolor.xyz = (ambientColor * ambient) + (ocolor.xyz * diffuseIn);
+   }
+   
+   return  ocolor;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_glsl_VP20.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_glsl_VP20.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_glsl_VP20.shd	(revision 1493)
@@ -0,0 +1,6 @@
+void main(void)
+{
+   gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+   gl_TexCoord[0].xy = gl_Color.xy;
+   gl_TexCoord[1].xy = gl_MultiTexCoord0.xy;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_hlsl_VP20.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_hlsl_VP20.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_hlsl_VP20.shd	(revision 1493)
@@ -0,0 +1,22 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float2 texCoord:  TEXCOORD0;
+   float2 subTexCoord: TEXCOORD1;
+};
+
+
+float4x4 worldviewproj;
+
+VS_OUTPUT main_vp(
+      float4 position: POSITION,
+      float2 subTexCoord: TEXCOORD0,
+      float4 color: COLOR
+      )
+{
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+	Out.subTexCoord = subTexCoord;
+	Out.texCoord = color.xy;
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_FP20.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_FP20.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_FP20.shd	(revision 1493)
@@ -0,0 +1,29 @@
+sampler indirectTexture: register(s0);
+sampler sourceTexture: register(s1);
+
+uniform float epsilonX;
+uniform float epsilonY;
+uniform float sourceTextureSize;
+uniform float numSamples;
+uniform float sqrtNumSamples;
+uniform float3 ambientColor;
+uniform float ambient;
+
+float4 main_fp(float2 texCoord: TEXCOORD0, 
+               float2 subTexCoord: TEXCOORD1,
+	       float diffuseIn 	: TEXCOORD2) : COLOR
+{
+   float4 ocolor = float4(0.0, 0.0, 0.0, 0.0);
+   float2 epsilon = float2(epsilonX, epsilonY);
+   float4 value = tex2D(indirectTexture, subTexCoord).xyzw;
+   float2 coords = float2(0.0, 1.0) - abs(texCoord - ( value.xy - epsilon ) );
+
+   if (value.w != 0.0) 
+   {	
+	float2 newcoord = (float2(1.0, 1.0) - value.zw) + ((coords * sourceTextureSize) / sqrtNumSamples);
+	ocolor = float4(tex2D(sourceTexture, newcoord).xyzw);
+	ocolor.xyz = (ambientColor * ambient * 0.000001) + (ocolor.xyz * diffuseIn);
+   }
+   
+   return  ocolor;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTextureScreenAligned_VP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTextureScreenAligned_VP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTextureScreenAligned_VP20.cg	(revision 1493)
@@ -0,0 +1,22 @@
+void main_vp(
+      float4 position: POSITION,
+      float4 normal: NORMAL,
+      float2 texCoord : TEXCOORD0,
+      float4 colour: COLOR0,
+      out float4 oPosition: POSITION,
+      out float4 oColour: COLOR0,
+      //out float4 oNormal: TEXCOORD1,
+      out float2 oTexCoord : TEXCOORD0,
+      uniform float4x4 worldmatrix,
+      uniform float4x4 viewmatrix,
+      uniform float4x4 projectionmatrix
+      //uniform float4x4 invtransworldview
+      )
+{
+	float4x4 m1 = mul(viewmatrix,worldmatrix);
+	float4x4 m2 = mul(projectionmatrix,m1);
+	oPosition = mul(m2,position);
+	//oNormal = mul(invtransworldview,normal);
+	oColour = colour;
+	oTexCoord = texCoord;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/v_lighting_indirect_texture_mapping.cg.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/v_lighting_indirect_texture_mapping.cg.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/v_lighting_indirect_texture_mapping.cg.bak	(revision 1493)
@@ -0,0 +1,79 @@
+// Define inputs from application.
+struct VertexIn
+{
+  float4 position    : POSITION;   // Vertex in object-space
+  float4 normal      : NORMAL;     // Vertex's Normal
+  float2 subTexCoord : TEXCOORD0;  // Vertex's Texture Coordinates
+  float3 color	     : COLOR0;
+};
+
+// Define outputs from vertex shader.
+struct Vertex
+{
+  float4 position       : POSITION;     // Vertex position in screen-space
+  float2 texCoord       : TEXCOORD0;    // Vertex texture coordinates
+  float2 subTexCoord    : TEXCOORD1;    // Vertex texture coordinates
+  float3 normal         : TEXCOORD2;    // Normal in eye-space
+  float3 halfVector     : TEXCOORD3;    // Half angle vector in eye space
+  float3 lightVector    : TEXCOORD4;    // Light vector in eye space
+  float4 wposition      : TEXCOORD5;    // Vertex position in world-space
+  float3 color		: COLOR0;
+
+#ifdef SHADOW_MAP
+  float4 lightPosition  : TEXCOORD6;    // Vertex position in light space
+
+#endif
+};
+
+Vertex main(VertexIn p_In,
+            uniform float4x4 p_ModelViewProjection, // Model view projection matrix
+            uniform float4 p_LightPosition,         // Light position in object-space
+            uniform float4x4 p_ModelView,           // Model view matrix
+            uniform float4x4 p_InverseModelView,    // Model view matrix inverted
+	    uniform float4x4 p_Model                // Model matrix
+
+            #ifdef SHADOW_MAP
+              , uniform float4x4 p_TextureViewProjection  // Texture view projection matrix
+            #endif
+            )
+{
+    Vertex l_Out;
+
+    // Compute light position in eye-space
+    float4 l_LightPosition4 = mul(p_ModelView, p_LightPosition);
+    float3 l_LightPosition3 = l_LightPosition4.xyz;
+    
+    // Compute vertex position in eye-space
+    float4 l_Position4 = mul(p_ModelView, p_In.position);
+    float3 l_Position3 = l_Position4.xyz / l_Position4.w;
+    
+    // Transform normal from model-space to eye-space.
+    l_Out.normal = normalize(mul(transpose(p_InverseModelView), p_In.normal).xyz);
+    
+    // Light vector.
+    l_Out.lightVector = l_LightPosition3 - (l_Position3 * l_LightPosition4.w);
+    
+    // Half angle vector = light vector + eye vector
+    l_Out.halfVector = l_Out.lightVector + (- l_Position3);
+
+    // Compute vertex position in light space
+    // First object to world space
+    l_Out.wposition = mul(p_Model, float4(0.0, 0.0, 0.0, 1.0));
+
+#ifdef SHADOW_MAP
+    // Then world to light space
+    l_Out.lightPosition = mul(p_Model, p_In.position);
+    l_Out.lightPosition = mul(p_TextureViewProjection, l_Out.lightPosition);    
+#endif
+
+    // Transform vertex position into homogenous screen-space.
+    l_Out.position = mul(p_ModelViewProjection, p_In.position);
+
+    // Pass texture coordinates to fragment shader
+    l_Out.subTexCoord = p_In.subTexCoord;
+    l_Out.texCoord = p_In.color.xy;
+
+    l_Out.color = p_In.color;
+
+    return l_Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDebugTextureAtlasFitting_FP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDebugTextureAtlasFitting_FP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDebugTextureAtlasFitting_FP20.cg	(revision 1493)
@@ -0,0 +1,9 @@
+void main_fp(float2 texCoord: TEXCOORD0, 
+	     float2 subTexCoord: TEXCOORD1,
+             out float4 ocolor: COLOR,
+             uniform sampler2D indirectTexture)
+{
+   float epsilon = 1.0/256.0;
+
+   ocolor = ( ( (tex2D(indirectTexture,subTexCoord).x - epsilon) != 0.0) && ( (tex2D(indirectTexture,subTexCoord).y + epsilon) != 0.0) ) ? float4(0.3, 0.3, 0.3, 1.0) : float4(1.0, 0.0, 0.0, 1.0);
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/v_lighting_indirect_texture_mapping.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/v_lighting_indirect_texture_mapping.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/v_lighting_indirect_texture_mapping.cg	(revision 1493)
@@ -0,0 +1,64 @@
+// Define inputs from application.
+struct VertexIn
+{
+  float4 position    : POSITION;   // Vertex in object-space
+  float4 normal      : NORMAL;     // Vertex's Normal
+  float2 subTexCoord : TEXCOORD0;  // Vertex's Texture Coordinates
+  float3 color	     : COLOR0;
+};
+
+// Define outputs from vertex shader.
+struct Vertex
+{
+  float4 position       : POSITION;     // Vertex position in screen-space
+  float2 texCoord       : TEXCOORD0;    // Vertex texture coordinates
+  float2 subTexCoord    : TEXCOORD1;    // Vertex texture coordinates
+  float3 normal         : TEXCOORD2;    // Normal in eye-space
+  float3 halfVector     : TEXCOORD3;    // Half angle vector in eye space
+  float3 lightVector    : TEXCOORD4;    // Light vector in eye space
+  float4 wposition      : TEXCOORD5;    // Vertex position in world-space
+  float3 color		: COLOR0;
+};
+
+Vertex main(VertexIn p_In,
+            uniform float4x4 p_ModelViewProjection, // Model view projection matrix
+            uniform float4 p_LightPosition,         // Light position in object-space
+            uniform float4x4 p_ModelView,           // Model view matrix
+            uniform float4x4 p_InverseModelView,    // Model view matrix inverted
+	    uniform float4x4 p_Model                // Model matrix
+            )
+{
+    Vertex l_Out;
+
+    // Compute light position in eye-space
+    float4 l_LightPosition4 = mul(p_ModelView, p_LightPosition);
+    float3 l_LightPosition3 = l_LightPosition4.xyz;
+    
+    // Compute vertex position in eye-space
+    float4 l_Position4 = mul(p_ModelView, p_In.position);
+    float3 l_Position3 = l_Position4.xyz / l_Position4.w;
+    
+    // Transform normal from model-space to eye-space.
+    l_Out.normal = normalize(mul(transpose(p_InverseModelView), p_In.normal).xyz);
+    
+    // Light vector.
+    l_Out.lightVector = l_LightPosition3 - (l_Position3 * l_LightPosition4.w);
+    
+    // Half angle vector = light vector + eye vector
+    l_Out.halfVector = l_Out.lightVector + (- l_Position3);
+
+    // Compute vertex position in light space
+    // First object to world space
+    l_Out.wposition = mul(p_Model, float4(0.0, 0.0, 0.0, 1.0));
+
+    // Transform vertex position into homogenous screen-space.
+    l_Out.position = mul(p_ModelViewProjection, p_In.position);
+
+    // Pass texture coordinates to fragment shader
+    l_Out.subTexCoord = p_In.subTexCoord;
+    l_Out.texCoord = p_In.color.xy;
+
+    l_Out.color = p_In.color;
+
+    return l_Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_FP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_FP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_FP20.cg	(revision 1493)
@@ -0,0 +1,22 @@
+void main_fp(float2 texCoord: TEXCOORD0, 
+             float2 subTexCoord: TEXCOORD1,
+	     uniform sampler2D indirectTexture,
+	     uniform sampler2D sourceTexture,
+	     uniform float epsilonX,
+	     uniform float epsilonY,
+	     uniform float sourceTextureSize,
+	     uniform float numSamples,
+	     uniform float sqrtNumSamples,
+	     out float4 ocolor: COLOR)
+{
+   ocolor = float4(0.0, 0.0, 0.0, 0.0);
+   float2 epsilon = float2(epsilonX, epsilonY);
+   float4 value = tex2D(indirectTexture, subTexCoord).xyzw;
+   float2 coords = float2(0.0, 1.0) - abs(texCoord - ( value.xy - epsilon ) );
+
+   if (value.z != 0.0) 
+   {	
+	float2 newcoord = (float2(1.0, 1.0) - value.zw) + ((coords * sourceTextureSize) / sqrtNumSamples);
+	ocolor = float4(tex2D(sourceTexture, newcoord).xyzw);
+   }
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_VP20.shd.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_VP20.shd.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_VP20.shd.bak	(revision 1493)
@@ -0,0 +1,44 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float2 texCoord:  TEXCOORD0;
+   float2 subTexCoord: TEXCOORD1;
+
+   float diffuse: TEXCOORD2;
+};
+
+
+uniform float4x4 worldviewproj;
+uniform float3 lightPosition; // object space
+uniform float3 eyePosition;   // object space
+uniform float4 shininess;
+
+VS_OUTPUT main_vp(
+      float4 position: POSITION,
+      float3 normal: NORMAL,
+      float2 subTexCoord: TEXCOORD0,
+      float4 color: COLOR
+      )
+{
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+	Out.subTexCoord = subTexCoord;
+	Out.texCoord = color.xy;
+
+	// Calculate vertex to eye vector
+	float3 vertToEye = position - eyePosition;
+	float aligned = dot(normal, vertToEye);
+
+	// calculate light vector
+	float3 N = normalize(normal);
+	float3 L = normalize(lightPosition - position.xyz);
+
+	// calculate light vector
+	N = normalize(-normal);
+	L = normalize(lightPosition - position.xyz);
+	
+	// Calculate diffuse component
+	Out.diffuse = clamp(dot(N, L) , 0.0, 1.0) + + clamp(-dot(N, L) , 0.0, 1.0);
+	
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_VP20.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_VP20.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingLighting_hlsl_VP20.shd	(revision 1493)
@@ -0,0 +1,44 @@
+struct VS_OUTPUT {
+   float4 Pos:       POSITION;
+   float2 texCoord:  TEXCOORD0;
+   float2 subTexCoord: TEXCOORD1;
+
+   float diffuse: TEXCOORD2;
+};
+
+
+uniform float4x4 worldviewproj;
+uniform float3 lightPosition; // object space
+uniform float3 eyePosition;   // object space
+uniform float4 shininess;
+
+VS_OUTPUT main_vp(
+      float4 position: POSITION,
+      float3 normal: NORMAL,
+      float2 subTexCoord: TEXCOORD0,
+      float4 color: COLOR
+      )
+{
+	VS_OUTPUT Out;
+
+	Out.Pos = mul(worldviewproj, position);
+	Out.subTexCoord = subTexCoord;
+	Out.texCoord = color.xy;
+
+	// Calculate vertex to eye vector
+	float3 vertToEye = position - eyePosition;
+	float aligned = dot(normal, vertToEye);
+
+	// calculate light vector
+	float3 N = normalize(normal);
+	float3 L = normalize(lightPosition - position.xyz);
+
+	// calculate light vector
+	N = normalize(-normal);
+	L = normalize(lightPosition - position.xyz);
+	
+	// Calculate diffuse component
+	Out.diffuse = clamp(dot(N, L) , 0.0, 1.0) + clamp(-dot(N, L) , 0.0, 1.0);
+	
+	return Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTexturing_FP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTexturing_FP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTexturing_FP20.cg	(revision 1493)
@@ -0,0 +1,33 @@
+void main_fp(float2 texCoord: TEXCOORD0, 
+	     float2 subTexCoord: TEXCOORD1,
+	     float4 position : WPOS,
+	     float4 colour: COLOR0,
+             out float4 ocolor: COLOR,
+             uniform sampler2D texture)
+{
+	// Normalmap
+	//normal = normalize(normal);
+	// Convert from [-1,1] to [0,1]
+	//ocolor.r = (normal.r + 1.0) / 2.0;
+	//ocolor.g = (normal.g + 1.0) / 2.0;
+	//ocolor.b = (normal.b + 1.0) / 2.0;
+	//ocolor.a = tex2D(textura,texCoord).a;
+
+	// Depthmap
+	//ocolor.r = position.z;
+	//ocolor.g = position.z;
+	//ocolor.b = position.z;
+	//ocolor.a = 1.0;
+
+	// Texture
+        ocolor.r = tex2D(texture, subTexCoord).r;
+	ocolor.g = tex2D(texture, subTexCoord).g;
+	ocolor.b = tex2D(texture, subTexCoord).b;
+	ocolor.a = tex2D(texture, subTexCoord).a;
+
+	// Debug
+	//ocolor = ocolor + float4(colour.xyz,1.0);
+
+	// Colour
+        //ocolor = colour;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_VP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_VP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_VP20.cg	(revision 1493)
@@ -0,0 +1,14 @@
+void main_vp(
+      float4 position: POSITION,
+      float2 subTexCoord: TEXCOORD0,
+      float4 color: COLOR,
+      uniform float4x4 worldviewproj,
+      out float4 oposition: POSITION,
+      out float2 otexCoord: TEXCOORD0,
+      out float2 osubTexCoord: TEXCOORD1
+      )
+{
+	oposition = mul(worldviewproj, position);
+	osubTexCoord = subTexCoord;
+	otexCoord = color.xy;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingPointBasedGeneration_FP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingPointBasedGeneration_FP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingPointBasedGeneration_FP20.cg	(revision 1493)
@@ -0,0 +1,6 @@
+void main(float4 colour: COLOR0,
+	  float4 texCoord: TEXCOORD0,
+          out float4 ocolor: COLOR)
+{
+	ocolor = float4(0.0, 0.0, texCoord.xy);
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/general.program.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/general.program.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/general.program.bak	(revision 1493)
@@ -0,0 +1,145 @@
+vertex_program diffuseTextureScreenAligned_VP20 cg
+{
+	source diffuseTextureScreenAligned_VP20.cg
+	entry_point main_vp
+	profiles arbvp1 vs_2_0
+}
+
+fragment_program diffuseTextureScreenAligned_FP20 cg
+{
+	source diffuseTextureScreenAligned_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+fragment_program indirectTexturingDebugEntityPosition_FP20 cg
+{
+	source indirectTexturingDebugEntityPosition_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+fragment_program indirectTexturingDebugTextureAtlasFitting_FP20 cg
+{
+	source indirectTexturingDebugTextureAtlasFitting_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+vertex_program diffuseTexturing_VP20 cg
+{
+	source diffuseTexturing_VP20.cg
+	entry_point main_vp
+	profiles arbvp1 vs_2_0
+}
+
+fragment_program diffuseTexturing_FP20 cg
+{
+	source diffuseTexturing_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+fragment_program indirectTexturingPointBasedGeneration_FP20 cg
+{
+	source indirectTexturingPointBasedGeneration_FP20.cg
+	entry_point main
+	profiles ps_2_0 arbfp1
+}
+
+vertex_program indirectTexturingDefault_VP20 cg
+{
+	source indirectTexturingDefault_VP20.cg
+	entry_point main_vp
+	profiles vs_2_0 arbvp1 
+}
+
+fragment_program indirectTexturingDefault_FP20 cg
+{
+	source indirectTexturingDefault_FP20.cg
+	entry_point main_fp
+        profiles ps_2_0 arbfp1
+}
+
+vertex_program indirectTexturingDefault_hlsl_VP20 hlsl
+{
+	source indirectTexturingDefault_hlsl_VP20.shd
+	entry_point main_vp
+	target vs_2_0
+}
+
+fragment_program indirectTexturingDefault_hlsl_FP20 hlsl
+{
+	source indirectTexturingDefault_hlsl_FP20.shd
+	entry_point main_fp
+	target ps_2_0 
+}
+
+vertex_program indirectTexturingLighting_hlsl_VP20 hlsl
+{
+	source indirectTexturingLighting_hlsl_VP20.shd
+	entry_point main_vp
+	target vs_2_0
+}
+
+fragment_program indirectTexturingLighting_hlsl_FP20 hlsl
+{
+	source indirectTexturingLighting_hlsl_FP20.shd
+	entry_point main_fp
+	target ps_2_0 
+}
+
+fragment_program indirectTexturingDebugTexCoordCorrespondence_FP20 cg
+{
+	source indirectTexturingDebugTexCoordCorrespondence_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1 
+}
+
+vertex_program indirectTexturingDefault_glsl_VP20 glsl
+{
+	source indirectTexturingDefault_glsl_VP20.shd
+}
+
+fragment_program indirectTexturingDefault_glsl_FP20 glsl
+{
+	source indirectTexturingDefault_glsl_FP20.shd
+}
+
+vertex_program LightingWithIndirectTexturingVP cg
+{
+    source v_lighting_indirect_texture_mapping.cg
+    entry_point main
+    profiles arbvp1 vs_2_0
+
+    default_params
+    {
+        param_named_auto p_ModelView worldview_matrix
+        param_named_auto p_Model world_matrix
+        param_named_auto p_InverseModelView inverse_worldview_matrix
+        param_named_auto p_ModelViewProjection worldviewproj_matrix
+        param_named_auto p_LightPosition light_position_object_space 0
+    }
+}
+
+fragment_program LightingWithIndirectTexturingFP cg
+{
+    source f_lighting_indirect_texture_mapping.cg
+    entry_point main
+    profiles arbfp1 ps_2_0
+    
+    default_params
+    {
+        param_named_auto p_LightDiffuse light_diffuse_colour 0
+        param_named_auto p_LightSpecular light_specular_colour 0
+        param_named_auto p_LightPower light_power 0
+	param_named_auto p_ShadowColor ambient_light_colour
+        param_named p_Diffuse float4 1.0 1.0 1.0 1.0
+	param_named p_Specular float4 0.1 0.1 0.1 16
+
+	param_named sourceTextureSize float 16.0
+	param_named sqrtNumSamples float 4.0
+	param_named epsilonX float -0.35
+	param_named epsilonY float -0.06
+    }
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/skydome.x
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/skydome.x	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/skydome.x	(revision 1493)
@@ -0,0 +1,12423 @@
+xof 0303txt 0032
+//
+// DirectX file: C:\Documents and Settings\igarcia\Escritorio\debug\skydome.x
+//
+// Converted by the PolyTrans geometry converter from Okino Computer Graphics, Inc.
+// Date/time of export: 06/06/2006 13:45:21
+//
+// Bounding box of geometry = (-656.481,-656.881,-100) to (656.481,656.881,425.505).
+
+
+template Header {
+ <3D82AB43-62DA-11cf-AB39-0020AF71E433>
+ WORD major;
+ WORD minor;
+ DWORD flags;
+}
+
+template Vector {
+  <3D82AB5E-62DA-11cf-AB39-0020AF71E433>
+ FLOAT x;
+ FLOAT y;
+ FLOAT z;
+}
+
+template Coords2d {
+  <F6F23F44-7686-11cf-8F52-0040333594A3>
+ FLOAT u;
+ FLOAT v;
+}
+
+template Matrix4x4 {
+  <F6F23F45-7686-11cf-8F52-0040333594A3>
+ array FLOAT matrix[16];
+}
+
+template ColorRGBA {
+  <35FF44E0-6C7C-11cf-8F52-0040333594A3>
+ FLOAT red;
+ FLOAT green;
+ FLOAT blue;
+ FLOAT alpha;
+}
+
+template ColorRGB {
+ <D3E16E81-7835-11cf-8F52-0040333594A3>
+ FLOAT red;
+ FLOAT green;
+ FLOAT blue;
+}
+
+template IndexedColor {
+ <1630B820-7842-11cf-8F52-0040333594A3>
+DWORD index;
+ ColorRGBA indexColor;
+}
+
+template Boolean {
+ <4885AE61-78E8-11cf-8F52-0040333594A3>
+WORD truefalse;
+}
+
+template Boolean2d {
+ <4885AE63-78E8-11cf-8F52-0040333594A3>
+Boolean u;
+ Boolean v;
+}
+
+template MaterialWrap {
+ <4885AE60-78E8-11cf-8F52-0040333594A3>
+Boolean u;
+ Boolean v;
+}
+
+template TextureFilename {
+ <A42790E1-7810-11cf-8F52-0040333594A3>
+ STRING filename;
+}
+
+template Material {
+ <3D82AB4D-62DA-11cf-AB39-0020AF71E433>
+ ColorRGBA faceColor;
+ FLOAT power;
+ ColorRGB specularColor;
+ ColorRGB emissiveColor;
+ [...]
+}
+
+template MeshFace {
+ <3D82AB5F-62DA-11cf-AB39-0020AF71E433>
+ DWORD nFaceVertexIndices;
+ array DWORD faceVertexIndices[nFaceVertexIndices];
+}
+
+template MeshFaceWraps {
+ <4885AE62-78E8-11cf-8F52-0040333594A3>
+ DWORD nFaceWrapValues;
+ Boolean2d faceWrapValues;
+}
+
+template MeshTextureCoords {
+ <F6F23F40-7686-11cf-8F52-0040333594A3>
+ DWORD nTextureCoords;
+ array Coords2d textureCoords[nTextureCoords];
+}
+
+template MeshMaterialList {
+ <F6F23F42-7686-11cf-8F52-0040333594A3>
+ DWORD nMaterials;
+ DWORD nFaceIndexes;
+ array DWORD faceIndexes[nFaceIndexes];
+ [Material]
+}
+
+template MeshNormals {
+ <F6F23F43-7686-11cf-8F52-0040333594A3>
+ DWORD nNormals;
+ array Vector normals[nNormals];
+ DWORD nFaceNormals;
+ array MeshFace faceNormals[nFaceNormals];
+}
+
+template MeshVertexColors {
+ <1630B821-7842-11cf-8F52-0040333594A3>
+ DWORD nVertexColors;
+ array IndexedColor vertexColors[nVertexColors];
+}
+
+template Mesh {
+ <3D82AB44-62DA-11cf-AB39-0020AF71E433>
+ DWORD nVertices;
+ array Vector vertices[nVertices];
+ DWORD nFaces;
+ array MeshFace faces[nFaces];
+ [...]
+}
+
+template FrameTransformMatrix {
+ <F6F23F41-7686-11cf-8F52-0040333594A3>
+ Matrix4x4 frameMatrix;
+}
+
+template Frame {
+ <3D82AB46-62DA-11cf-AB39-0020AF71E433>
+ [...]
+}
+
+Header {
+	1; // Major version
+	0; // Minor version
+	1; // Flags
+}
+
+Material xof_default {
+	0.698039;0.698039;0.698039;1.000000;;
+	21.000000;
+	0.710000;0.710000;0.710000;;
+	0.000000;0.000000;0.000000;;
+}
+Mesh single_mesh_object {
+	1930;		// 1930 vertices
+	-656.481201;-22.924862;100.000000;,
+	-656.481201;-22.924862;100.000000;,
+	-656.481201;22.924772;100.000000;,
+	-656.481201;22.924772;100.000000;,
+	-656.481201;22.924772;100.000000;,
+	-656.481201;22.924772;100.000000;,
+	-656.481201;22.924772;100.000000;,
+	-655.493652;-0.000046;65.861038;,
+	-653.861572;46.325920;65.946045;,
+	-653.861572;46.325920;65.946045;,
+	-653.861572;46.325920;65.946045;,
+	-653.861389;-46.326000;65.946045;,
+	-653.282776;-68.662819;100.000000;,
+	-653.282776;-68.662819;100.000000;,
+	-653.282776;68.662727;100.000000;,
+	-653.282776;68.662727;100.000000;,
+	-651.025879;-23.398178;32.539474;,
+	-651.025879;23.398069;32.539474;,
+	-651.025879;23.398069;32.539474;,
+	-651.025879;23.398069;32.539474;,
+	-651.025879;23.398069;32.539474;,
+	-651.025879;23.398069;32.539474;,
+	-648.973267;92.421188;66.200630;,
+	-648.973083;-92.421265;66.200645;,
+	-647.721802;-70.075661;32.881840;,
+	-647.721802;70.075569;32.881832;,
+	-646.901733;-114.066200;100.000008;,
+	-646.901733;-114.066200;100.000008;,
+	-646.901733;114.066124;99.999992;,
+	-646.901733;114.066124;99.999992;,
+	-644.869080;-0.000033;-0.037781;,
+	-643.206055;-47.145031;0.220217;,
+	-643.206055;47.144936;0.220213;,
+	-643.206055;47.144936;0.220213;,
+	-643.206055;47.144936;0.220213;,
+	-641.130432;-116.397560;33.564854;,
+	-641.130432;116.397430;33.564846;,
+	-640.853149;-138.056290;66.623543;,
+	-640.853149;138.056198;66.623528;,
+	-638.225525;-94.046829;0.992832;,
+	-638.225525;94.046761;0.992824;,
+	-637.369080;-158.913910;100.000008;,
+	-637.369080;-158.913910;100.000008;,
+	-637.369080;158.913864;99.999992;,
+	-637.369080;158.913864;99.999992;,
+	-635.501099;-23.746887;-31.617231;,
+	-635.501099;23.746788;-31.617235;,
+	-635.501099;23.746788;-31.617235;,
+	-635.501099;23.746788;-31.617235;,
+	-635.501099;23.746788;-31.617235;,
+	-635.501099;23.746788;-31.617235;,
+	-632.178955;-71.116432;-30.929180;,
+	-632.178955;71.116333;-30.929188;,
+	-631.285278;-162.128647;34.585030;,
+	-631.285278;162.128586;34.585014;,
+	-629.953247;-140.463608;2.276099;,
+	-629.953247;140.463516;2.276086;,
+	-629.541687;183.003738;67.212639;,
+	-629.541626;-183.003815;67.212654;,
+	-625.552124;-118.114235;-29.556711;,
+	-625.552124;118.114128;-29.556723;,
+	-624.731201;202.987350;99.999992;,
+	-624.731201;202.987350;99.999992;,
+	-624.731140;-202.987427;100.000008;,
+	-624.731140;-202.987427;100.000008;,
+	-624.697266;-0.000051;-62.473312;,
+	-623.046692;-47.720840;-62.044003;,
+	-623.046692;47.720722;-62.044010;,
+	-623.046692;47.720722;-62.044010;,
+	-623.046692;47.720722;-62.044010;,
+	-620.679626;181.040344;7.137352;,
+	-620.679504;-181.040375;7.137383;,
+	-620.379089;202.359024;39.742088;,
+	-620.379028;-202.359131;39.742104;,
+	-618.103394;-95.189430;-60.758343;,
+	-618.103394;95.189308;-60.758350;,
+	-617.873413;-158.935867;-25.129723;,
+	-617.873413;158.935745;-25.129738;,
+	-616.989929;222.792557;72.521828;,
+	-616.989868;-222.792648;72.521843;,
+	-611.958313;-136.149033;-56.896568;,
+	-611.958313;136.148911;-56.896584;,
+	-610.898804;-23.976246;-92.201019;,
+	-610.898804;23.976143;-92.201019;,
+	-610.898804;23.976143;-92.201019;,
+	-610.898804;23.976143;-92.201019;,
+	-610.898804;23.976143;-92.201019;,
+	-610.898804;23.976143;-92.201019;,
+	-609.049683;-246.072021;100.000008;,
+	-609.049683;-246.072021;100.000008;,
+	-609.049683;246.071930;99.999992;,
+	-609.049683;246.071930;99.999992;,
+	-608.860779;220.874771;12.379416;,
+	-608.860657;-220.874771;12.379450;,
+	-607.680237;199.110565;-20.193537;,
+	-607.680176;-199.110657;-20.193518;,
+	-607.643311;-71.800858;-91.176788;,
+	-607.643311;71.800743;-91.176788;,
+	-606.915222;241.755203;45.147572;,
+	-606.915161;-241.755280;45.147594;,
+	-603.347351;176.559906;-52.402596;,
+	-603.347290;-176.559998;-52.402580;,
+	-602.947876;-112.787491;-88.001305;,
+	-602.947876;112.787384;-88.001320;,
+	-599.749451;265.652496;72.031464;,
+	-599.749329;-265.652618;72.031494;,
+	-595.852173;-153.325165;-84.077446;,
+	-595.852173;153.325027;-84.077446;,
+	-595.819885;-0.000054;-121.256882;,
+	-595.014038;238.475082;-14.768199;,
+	-595.013977;-238.475174;-14.768178;,
+	-594.545105;-259.803497;17.980816;,
+	-594.545105;259.803436;17.980793;,
+	-594.222900;-48.062489;-120.663834;,
+	-594.222900;48.062363;-120.663834;,
+	-594.222900;48.062363;-120.663834;,
+	-594.222900;48.062363;-120.663834;,
+	-592.305054;216.259399;-47.294472;,
+	-592.304993;-216.259491;-47.294456;,
+	-590.871460;88.962059;-118.283592;,
+	-590.871399;-88.962151;-118.283562;,
+	-590.400940;-287.957794;100.000015;,
+	-590.400940;-287.957794;100.000015;,
+	-590.400940;287.957672;99.999985;,
+	-590.400940;287.957672;99.999985;,
+	-588.080444;284.266083;44.302876;,
+	-588.080383;-284.266144;44.302898;,
+	-586.384460;-193.252396;-79.420769;,
+	-586.384460;193.252319;-79.420799;,
+	-585.201904;129.512726;-115.046944;,
+	-585.201843;-129.512833;-115.046928;,
+	-579.926392;276.869110;-8.875791;,
+	-579.926331;-276.869202;-8.875766;,
+	-579.541931;-307.198334;71.679489;,
+	-579.541931;307.198212;71.679459;,
+	-578.876038;255.087463;-41.592800;,
+	-578.875916;-255.087570;-41.592777;,
+	-577.907410;-24.089943;-149.075821;,
+	-577.907410;24.089830;-149.075821;,
+	-577.907410;24.089830;-149.075821;,
+	-577.907410;24.089830;-149.075821;,
+	-577.907410;24.089830;-149.075821;,
+	-577.907410;24.089830;-149.075821;,
+	-577.236389;-169.555359;-110.966576;,
+	-577.236389;169.555283;-110.966606;,
+	-575.774719;-64.786972;-147.585342;,
+	-575.774719;64.786865;-147.585342;,
+	-574.582458;232.410278;-74.049889;,
+	-574.582397;-232.410400;-74.049889;,
+	-574.103455;-301.850861;16.922468;,
+	-574.103455;301.850861;16.922426;,
+	-571.421387;-105.234123;-145.139984;,
+	-571.421387;105.233994;-145.139984;,
+	-568.875793;-328.440674;100.000015;,
+	-568.875793;-328.440674;100.000015;,
+	-568.875793;328.440521;99.999985;,
+	-568.875793;328.440521;99.999985;,
+	-567.006226;-208.932739;-106.058540;,
+	-567.006226;208.932617;-106.058586;,
+	-566.297607;325.351868;43.737366;,
+	-566.297546;-325.351959;43.737396;,
+	-564.864014;145.275253;-141.749084;,
+	-564.863953;-145.275345;-141.749084;,
+	-563.114319;292.887604;-35.320583;,
+	-563.114258;-292.887726;-35.320560;,
+	-560.493164;270.643097;-67.986130;,
+	-560.493042;-270.643158;-67.986084;,
+	-558.776550;-0.000056;-176.274353;,
+	-557.887878;318.349213;-10.004653;,
+	-557.887756;-318.349274;-10.004624;,
+	-557.719910;40.378082;-175.751892;,
+	-557.719910;40.378082;-175.751892;,
+	-557.719910;40.378082;-175.751892;,
+	-557.719788;-40.378212;-175.751862;,
+	-556.467590;347.224396;71.467560;,
+	-556.467407;-347.224426;71.467590;,
+	-556.127991;184.756149;-137.425766;,
+	-556.127930;-184.756271;-137.425735;,
+	-554.553894;80.603508;-174.186554;,
+	-554.553833;-80.603645;-174.186554;,
+	-554.551575;247.490234;-100.342125;,
+	-554.551514;-247.490356;-100.342125;,
+	-550.751221;342.367828;16.285263;,
+	-550.751160;-342.367859;16.285294;,
+	-549.290527;120.524124;-171.584198;,
+	-549.290466;-120.524246;-171.584167;,
+	-545.247009;223.524475;-132.186707;,
+	-545.246948;-223.524567;-132.186676;,
+	-544.579163;-367.323364;100.000015;,
+	-544.579163;-367.323364;100.000015;,
+	-544.579163;367.323273;99.999985;,
+	-544.579163;367.323273;99.999985;,
+	-544.172546;307.798492;-61.253616;,
+	-544.172424;-307.798553;-61.253586;,
+	-541.949707;159.988876;-167.954681;,
+	-541.949646;-159.988983;-167.954681;,
+	-541.676025;364.806793;43.453903;,
+	-541.675903;-364.806885;43.453934;,
+	-539.921265;285.076935;-93.839691;,
+	-539.921143;-285.076965;-93.839645;,
+	-539.510681;-333.707855;-36.376389;,
+	-539.510681;333.707825;-36.376404;,
+	-536.923218;-24.089960;-202.126862;,
+	-536.923218;24.089844;-202.126862;,
+	-536.923218;24.089844;-202.126862;,
+	-536.923218;24.089844;-202.126862;,
+	-534.303101;64.786858;-201.267426;,
+	-534.303040;-64.786980;-201.267395;,
+	-532.994202;358.200043;-10.570541;,
+	-532.994080;-358.200073;-10.570480;,
+	-532.559204;198.848541;-163.311752;,
+	-532.559082;-198.848648;-163.311722;,
+	-532.262939;261.430695;-126.052071;,
+	-532.262878;-261.430756;-126.052055;,
+	-530.640259;385.532654;71.396805;,
+	-530.640137;-385.532715;71.396835;,
+	-529.622192;-105.234123;-199.245972;,
+	-529.622192;105.234009;-199.246002;,
+	-524.606812;381.149139;16.072508;,
+	-524.606750;-381.149170;16.072557;,
+	-523.172607;321.545105;-86.576752;,
+	-523.172546;-321.545197;-86.576721;,
+	-522.898560;145.275284;-196.070374;,
+	-522.898499;-145.275345;-196.070374;,
+	-521.154480;236.956161;-157.672989;,
+	-521.154358;-236.956238;-157.672928;,
+	-519.056885;347.877625;-62.094437;,
+	-519.056824;-347.877716;-62.094406;,
+	-517.629456;-404.416504;100.000015;,
+	-517.629456;-404.416504;100.000015;,
+	-517.629456;404.416473;99.999985;,
+	-517.629456;404.416473;99.999985;,
+	-517.225952;298.328552;-119.045578;,
+	-517.225891;-298.328583;-119.045547;,
+	-514.338989;402.432983;43.453899;,
+	-514.338928;-402.432983;43.453938;,
+	-514.158020;-184.756271;-191.752792;,
+	-514.158020;184.756210;-191.752853;,
+	-513.831421;-0.000058;-227.384979;,
+	-513.125000;372.807037;-36.728973;,
+	-513.124817;-372.807129;-36.728928;,
+	-512.454224;48.062374;-226.507477;,
+	-512.454224;48.062374;-226.507477;,
+	-512.454224;48.062374;-226.507477;,
+	-512.454224;48.062374;-226.507477;,
+	-512.454224;48.062374;-226.507477;,
+	-512.454163;-48.062492;-226.507477;,
+	-508.294159;88.962067;-225.173859;,
+	-508.294128;-88.962173;-225.173859;,
+	-507.778717;274.167572;-151.059647;,
+	-507.778625;-274.167664;-151.059616;,
+	-505.372833;396.217651;-10.570543;,
+	-505.372620;-396.217651;-10.570478;,
+	-503.434509;223.524521;-186.310013;,
+	-503.434387;-223.524582;-186.309952;,
+	-502.187927;421.933868;71.467560;,
+	-502.187805;-421.933838;71.467590;,
+	-502.139984;129.512756;-222.564514;,
+	-502.139954;-129.512863;-222.564514;,
+	-500.194061;334.075745;-111.194244;,
+	-500.194000;-334.075836;-111.194214;,
+	-496.618164;360.814178;-87.063965;,
+	-496.618042;-360.814240;-87.063889;,
+	-495.802704;417.998077;16.285259;,
+	-495.802582;-417.998047;16.285297;,
+	-494.015778;169.555298;-218.689667;,
+	-494.015717;-169.555405;-218.689667;,
+	-492.482544;310.342133;-143.496796;,
+	-492.482422;-310.342133;-143.496735;,
+	-491.248749;386.152313;-62.094452;,
+	-491.248688;-386.152283;-62.094406;,
+	-490.769135;261.430695;-179.762863;,
+	-490.769043;-261.430756;-179.762802;,
+	-488.157867;-439.539368;100.000023;,
+	-488.157867;-439.539368;100.000023;,
+	-488.157867;439.539307;99.999977;,
+	-488.157867;439.539307;99.999977;,
+	-488.089508;-23.976254;-251.168732;,
+	-488.089508;23.976135;-251.168732;,
+	-488.089508;23.976135;-251.168732;,
+	-488.089508;23.976135;-251.168732;,
+	-485.488495;-71.800896;-249.297363;,
+	-485.488495;71.800774;-249.297363;,
+	-484.423645;438.041687;43.737362;,
+	-484.423584;-438.041748;43.737400;,
+	-484.093018;409.983765;-36.376438;,
+	-484.092926;-409.983826;-36.376385;,
+	-483.953369;208.932617;-213.564529;,
+	-483.953308;-208.932755;-213.564499;,
+	-479.838318;112.787415;-247.357666;,
+	-479.838257;-112.787529;-247.357666;,
+	-476.210907;298.328583;-172.136673;,
+	-476.210846;-298.328583;-172.136581;,
+	-475.323730;345.342834;-135.013000;,
+	-475.323700;-345.342926;-135.012970;,
+	-475.165009;432.207581;-10.004688;,
+	-475.164795;-432.207520;-10.004620;,
+	-472.293488;372.477722;-111.194275;,
+	-472.293335;-372.477753;-111.194214;,
+	-472.278046;-153.325165;-244.035248;,
+	-472.277954;153.325043;-244.035217;,
+	-471.992279;247.490265;-207.209152;,
+	-471.992249;-247.490356;-207.209122;,
+	-471.251282;456.247650;71.679451;,
+	-471.251190;-456.247681;71.679497;,
+	-467.477020;398.203827;-86.576782;,
+	-467.476807;-398.203857;-86.576721;,
+	-464.484985;452.727783;16.922405;,
+	-464.484833;-452.727783;16.922474;,
+	-462.837585;-193.252411;-239.343185;,
+	-462.837585;193.252350;-239.343216;,
+	-461.023804;-0.000060;-274.336761;,
+	-460.892395;422.423798;-61.253635;,
+	-460.892242;-422.423889;-61.253582;,
+	-459.815918;334.075745;-163.460831;,
+	-459.815887;-334.075836;-163.460800;,
+	-459.805573;-47.720848;-273.347595;,
+	-459.805573;47.720730;-273.347595;,
+	-459.805573;47.720730;-273.347595;,
+	-459.805573;47.720730;-273.347595;,
+	-459.805573;47.720730;-273.347595;,
+	-459.805573;47.720730;-273.347595;,
+	-458.179443;285.076935;-199.648483;,
+	-458.179382;-285.077057;-199.648453;,
+	-456.307983;472.520721;99.999977;,
+	-456.307983;472.520721;99.999977;,
+	-456.307953;-472.520874;100.000023;,
+	-456.307953;-472.520874;100.000023;,
+	-456.157501;-95.189438;-270.385498;,
+	-456.157501;95.189346;-270.385498;,
+	-452.564697;445.046326;-35.320621;,
+	-452.564606;-445.046265;-35.320553;,
+	-452.079987;471.454712;44.302853;,
+	-452.079865;-471.454712;44.302906;,
+	-451.554779;232.410324;-233.300339;,
+	-451.554688;-232.410416;-233.300308;,
+	-449.091766;136.148956;-267.715485;,
+	-449.091736;-136.149063;-267.715485;,
+	-447.338348;372.477661;-143.496765;,
+	-447.338257;-372.477753;-143.496735;,
+	-443.559021;399.722534;-119.045639;,
+	-443.558868;-399.722534;-119.045578;,
+	-442.569061;321.545135;-190.912247;,
+	-442.568970;-321.545258;-190.912216;,
+	-442.525391;465.985504;-8.875813;,
+	-442.525238;-465.985474;-8.875758;,
+	-440.216370;176.559937;-263.563721;,
+	-440.216339;-176.560043;-263.563721;,
+	-438.474335;270.643127;-225.930618;,
+	-438.474213;-270.643188;-225.930588;,
+	-437.983337;488.304382;72.031456;,
+	-437.983307;-488.304504;72.031502;,
+	-437.969269;425.402008;-93.839722;,
+	-437.969055;-425.401978;-93.839630;,
+	-431.357208;-23.746916;-295.866638;,
+	-431.357208;23.746794;-295.866638;,
+	-431.357208;23.746794;-295.866638;,
+	-431.357208;23.746794;-295.866638;,
+	-430.884644;360.714813;-172.136642;,
+	-430.884613;-360.714874;-172.136642;,
+	-430.812378;485.162292;17.980783;,
+	-430.812286;-485.162292;17.980825;,
+	-430.598816;449.427277;-67.986122;,
+	-430.598694;-449.427307;-67.986076;,
+	-429.567047;-216.259567;-257.946960;,
+	-429.567047;216.259445;-257.946930;,
+	-429.102295;71.116356;-293.797211;,
+	-429.102264;-71.116478;-293.797211;,
+	-424.604187;118.114159;-289.669220;,
+	-424.604156;-118.114273;-289.669220;,
+	-423.648315;307.798492;-217.263412;,
+	-423.648285;-307.798553;-217.263382;,
+	-422.235046;503.200165;99.999977;,
+	-422.235046;503.200165;99.999977;,
+	-422.235016;-503.200317;100.000023;,
+	-422.235016;-503.200317;100.000023;,
+	-421.485260;471.717468;-41.592838;,
+	-421.485077;-471.717407;-41.592785;,
+	-417.661194;398.203674;-151.059647;,
+	-417.661072;-398.203827;-151.059616;,
+	-417.470001;502.504211;45.147560;,
+	-417.469910;-502.504272;45.147606;,
+	-417.186798;255.087524;-250.887772;,
+	-417.186707;-255.087570;-250.887741;,
+	-416.220673;158.935791;-286.154572;,
+	-416.220612;-158.935898;-286.154572;,
+	-413.113770;425.425659;-126.052109;,
+	-413.113647;-425.425598;-126.052063;,
+	-412.709564;-347.660919;-199.648453;,
+	-412.709564;347.660767;-199.648483;,
+	-410.672852;492.199066;-14.768210;,
+	-410.672668;-492.199097;-14.768151;,
+	-406.743225;450.931183;-100.342171;,
+	-406.743073;-450.931152;-100.342094;,
+	-406.143280;199.110611;-281.068451;,
+	-406.143158;-199.110672;-281.068390;,
+	-403.125366;292.887695;-242.414658;,
+	-403.125305;-292.887787;-242.414627;,
+	-402.548767;517.945557;72.521812;,
+	-402.548645;-517.945618;72.521858;,
+	-400.291443;385.962524;-179.762833;,
+	-400.291351;-385.962616;-179.762833;,
+	-400.239777;-0.000032;-316.692505;,
+	-399.207672;-47.145046;-315.617981;,
+	-399.207672;47.144966;-315.617981;,
+	-399.207672;47.144966;-315.617981;,
+	-399.207672;47.144966;-315.617981;,
+	-399.207672;47.144966;-315.617981;,
+	-399.207672;47.144966;-315.617981;,
+	-398.591125;474.641663;-74.049904;,
+	-398.591003;-474.641663;-74.049873;,
+	-398.212799;510.806885;12.379403;,
+	-398.212585;-510.806824;12.379462;,
+	-396.116547;94.046791;-312.399719;,
+	-396.116455;-94.046867;-312.399719;,
+	-394.413086;238.475159;-274.431519;,
+	-394.413055;-238.475189;-274.431488;,
+	-392.892975;333.380432;-225.930618;,
+	-392.892883;-333.380524;-225.930588;,
+	-390.982269;-140.463638;-307.054443;,
+	-390.982269;140.463562;-307.054443;,
+	-388.707336;496.487701;-47.294502;,
+	-388.707214;-496.487732;-47.294441;,
+	-386.404327;422.423798;-157.672958;,
+	-386.404236;-422.423828;-157.672928;,
+	-386.105011;531.428040;99.999977;,
+	-386.105011;531.428040;99.999977;,
+	-386.104950;-531.428101;100.000023;,
+	-386.104950;-531.428101;100.000023;,
+	-384.162567;527.483154;39.742073;,
+	-384.162506;-527.483215;39.742119;,
+	-381.399872;-181.040451;-302.592743;,
+	-381.399872;181.040375;-302.592743;,
+	-381.231018;372.412506;-207.209152;,
+	-381.230896;-372.412628;-207.209122;,
+	-381.077820;276.869171;-266.270813;,
+	-381.077728;-276.869232;-266.270813;,
+	-381.075134;449.487854;-132.186722;,
+	-381.074982;-449.487793;-132.186676;,
+	-377.149017;516.409607;-20.193550;,
+	-377.148895;-516.409668;-20.193489;,
+	-373.921448;474.691254;-106.058632;,
+	-373.921295;-474.691284;-106.058540;,
+	-371.520538;317.941772;-250.887802;,
+	-371.520477;-317.941803;-250.887741;,
+	-370.253540;-220.874893;-296.480194;,
+	-370.253540;220.874817;-296.480133;,
+	-368.586060;542.178406;67.212624;,
+	-368.585938;-542.178467;67.212669;,
+	-368.154327;409.721649;-186.309982;,
+	-368.154266;-409.721832;-186.309982;,
+	-366.570740;-23.398178;-335.666931;,
+	-366.570740;23.398098;-335.666931;,
+	-366.570740;23.398098;-335.666931;,
+	-366.570740;23.398098;-335.666931;,
+	-364.996735;497.966553;-79.420815;,
+	-364.996613;-497.966492;-79.420753;,
+	-364.710358;70.075615;-333.455872;,
+	-364.710327;-70.075676;-333.455872;,
+	-363.980225;534.356750;7.137336;,
+	-363.980072;-534.356750;7.137398;,
+	-360.998993;116.397491;-329.044952;,
+	-360.998962;-116.397575;-329.044952;,
+	-360.573517;357.635284;-233.300339;,
+	-360.573425;-357.635345;-233.300308;,
+	-357.588928;259.803497;-288.741730;,
+	-357.588837;-259.803558;-288.741730;,
+	-355.455566;162.128632;-322.456543;,
+	-355.455475;-162.128708;-322.456543;,
+	-354.363098;519.257263;-52.402626;,
+	-354.363037;-519.257385;-52.402565;,
+	-353.686157;445.046173;-163.311752;,
+	-353.686005;-445.046265;-163.311722;,
+	-349.271362;550.287415;34.584999;,
+	-349.271271;-550.287476;34.585045;,
+	-348.683746;301.416199;-274.431519;,
+	-348.683716;-301.416290;-274.431519;,
+	-348.256653;395.703125;-213.564529;,
+	-348.256561;-395.703278;-213.564499;,
+	-348.093964;557.066895;99.999977;,
+	-348.093964;557.066895;99.999977;,
+	-348.093872;-557.066895;100.000023;,
+	-348.093872;-557.066895;100.000023;,
+	-347.566681;471.816345;-137.425812;,
+	-347.566528;-471.816284;-137.425735;,
+	-344.812347;202.359070;-316.959015;,
+	-344.812317;-202.359161;-316.959015;,
+	-342.090393;538.518677;-25.129768;,
+	-342.090240;-538.518677;-25.129707;,
+	-339.632660;496.588989;-110.966637;,
+	-339.632507;-496.588989;-110.966560;,
+	-338.418549;341.714600;-257.946930;,
+	-338.418518;-341.714691;-257.946960;,
+	-334.597198;431.900421;-191.752853;,
+	-334.597137;-431.900513;-191.752823;,
+	-332.747620;241.755249;-309.742462;,
+	-332.747528;-241.755325;-309.742462;,
+	-331.314178;-0.000033;-353.765656;,
+	-330.489197;-46.326015;-352.635803;,
+	-330.489197;46.325951;-352.635803;,
+	-330.489197;46.325951;-352.635803;,
+	-330.489197;46.325951;-352.635803;,
+	-330.489197;46.325951;-352.635803;,
+	-330.489197;46.325951;-352.635803;,
+	-329.949310;519.309021;-84.077477;,
+	-329.949280;-519.309082;-84.077431;,
+	-329.333801;566.825806;66.623512;,
+	-329.333740;-566.825745;66.623558;,
+	-328.255035;555.715454;2.276068;,
+	-328.254974;-555.715454;2.276117;,
+	-328.018463;-92.421326;-349.251892;,
+	-328.018463;92.421242;-349.251892;,
+	-326.818634;380.466400;-239.343216;,
+	-326.818573;-380.466522;-239.343185;,
+	-324.479095;283.877899;-296.480164;,
+	-324.479034;-283.877960;-296.480133;,
+	-323.914276;138.056274;-343.630768;,
+	-323.914215;-138.056320;-343.630768;,
+	-319.630219;465.985382;-167.954697;,
+	-319.630127;-465.985474;-167.954666;,
+	-318.590942;539.934631;-56.896614;,
+	-318.590820;-539.934631;-56.896568;,
+	-318.196991;183.003815;-335.800446;,
+	-318.196960;-183.003845;-335.800446;,
+	-314.870697;324.736542;-281.068420;,
+	-314.870636;-324.736664;-281.068451;,
+	-313.916016;417.441345;-218.689682;,
+	-313.915955;-417.441437;-218.689651;,
+	-312.717651;492.325073;-141.749115;,
+	-312.717529;-492.325073;-141.749069;,
+	-308.820801;573.782410;33.564823;,
+	-308.820709;-573.782410;33.564877;,
+	-308.386993;579.991699;99.999977;,
+	-308.386993;579.991699;99.999977;,
+	-308.386932;-579.991699;100.000023;,
+	-308.386932;-579.991699;100.000023;,
+	-306.647827;222.792633;-329.193451;,
+	-306.647766;-222.792709;-329.193451;,
+	-305.639526;558.436096;-29.556742;,
+	-305.639435;-558.436096;-29.556692;,
+	-304.011383;516.538391;-115.046959;,
+	-304.011230;-516.538391;-115.046898;,
+	-303.952881;364.110657;-263.563751;,
+	-303.952850;-364.110626;-263.563721;,
+	-299.749603;452.413422;-196.070389;,
+	-299.749542;-452.413513;-196.070358;,
+	-299.007843;265.403595;-316.959015;,
+	-299.007782;-265.403656;-316.959015;,
+	-293.588348;538.584229;-88.001335;,
+	-293.588287;-538.584167;-88.001289;,
+	-293.587250;-22.924868;-369.739624;,
+	-293.587250;22.924782;-369.739624;,
+	-293.587250;22.924782;-369.739624;,
+	-293.587250;22.924782;-369.739624;,
+	-293.587250;22.924782;-369.739624;,
+	-293.587250;22.924782;-369.739624;,
+	-292.156921;68.662735;-367.451111;,
+	-292.156891;-68.662834;-367.451111;,
+	-291.762787;401.782959;-244.035263;,
+	-291.762726;-401.783051;-244.035202;,
+	-290.038727;306.788239;-302.592712;,
+	-290.038666;-306.788300;-302.592743;,
+	-289.303223;-114.066246;-362.885193;,
+	-289.303223;114.066200;-362.885193;,
+	-288.441559;588.650452;66.200615;,
+	-288.441437;-588.650391;66.200661;,
+	-286.666382;577.926453;0.992803;,
+	-286.666290;-577.926453;0.992854;,
+	-285.040070;-158.913956;-356.064148;,
+	-285.040070;158.913910;-356.064148;,
+	-284.365417;485.162170;-171.584183;,
+	-284.365326;-485.162231;-171.584152;,
+	-281.534943;558.436096;-60.758369;,
+	-281.534821;-558.436096;-60.758324;,
+	-279.776245;346.735474;-286.154572;,
+	-279.776184;-346.735504;-286.154572;,
+	-279.388275;202.987427;-347.021271;,
+	-279.388245;-202.987503;-347.021271;,
+	-278.343811;437.541748;-222.564529;,
+	-278.343719;-437.541870;-222.564499;,
+	-276.662506;510.934875;-145.139984;,
+	-276.662384;-510.934937;-145.139969;,
+	-272.375275;246.071976;-335.800446;,
+	-272.375214;-246.072037;-335.800446;,
+	-268.262421;385.039307;-267.715515;,
+	-268.262360;-385.039337;-267.715485;,
+	-267.197357;534.461365;-118.283607;,
+	-267.197235;-534.461365;-118.283546;,
+	-267.177612;600.090881;99.999977;,
+	-267.177612;600.090881;99.999977;,
+	-267.177582;-600.090881;100.000023;,
+	-267.177582;-600.090881;100.000023;,
+	-266.802917;594.365356;32.881824;,
+	-266.802826;-594.365417;32.881863;,
+	-264.035339;287.957733;-322.456543;,
+	-264.035278;-287.957794;-322.456543;,
+	-263.745819;471.181458;-199.246017;,
+	-263.745728;-471.181519;-199.245987;,
+	-262.989807;579.261780;-30.929224;,
+	-262.989685;-579.261780;-30.929159;,
+	-261.351410;-0.000035;-382.120972;,
+	-260.704987;46.172947;-380.928467;,
+	-260.704987;46.172947;-380.928467;,
+	-260.704987;46.172947;-380.928467;,
+	-260.704956;-46.173004;-380.928467;,
+	-258.768829;-92.117607;-377.356842;,
+	-258.768829;92.117523;-377.356842;,
+	-256.058746;555.715454;-91.176811;,
+	-256.058655;-555.715454;-91.176765;,
+	-255.552567;137.606400;-371.423706;,
+	-255.552551;-137.606445;-371.423706;,
+	-255.545456;421.500031;-247.357681;,
+	-255.545395;-421.500153;-247.357651;,
+	-254.408997;328.440491;-307.054443;,
+	-254.408936;-328.440582;-307.054443;,
+	-251.072067;182.414520;-363.158417;,
+	-251.072052;-182.414551;-363.158417;,
+	-248.025162;502.504089;-174.186569;,
+	-248.025055;-502.504150;-174.186539;,
+	-246.112885;607.543762;65.946022;,
+	-246.112793;-607.543640;65.946068;,
+	-243.599136;597.156677;0.220189;,
+	-243.599060;-597.156677;0.220241;,
+	-243.543228;367.323242;-289.669250;,
+	-243.543152;-367.323334;-289.669189;,
+	-241.679565;455.925598;-225.173874;,
+	-241.679489;-455.925659;-225.173843;,
+	-239.540222;527.574097;-147.585403;,
+	-239.540131;-527.574097;-147.585358;,
+	-239.218399;221.982101;-356.064148;,
+	-239.218323;-221.982162;-356.064148;,
+	-237.917175;577.806030;-62.044048;,
+	-237.917068;-577.805969;-62.043980;,
+	-231.490936;404.416443;-270.385529;,
+	-231.490891;-404.416412;-270.385468;,
+	-231.394333;265.399017;-343.630768;,
+	-231.394302;-265.399017;-343.630768;,
+	-229.335068;550.287415;-120.663857;,
+	-229.334976;-550.287476;-120.663811;,
+	-228.654922;-23.254272;-392.288818;,
+	-228.654922;23.254189;-392.288818;,
+	-228.654922;23.254189;-392.288818;,
+	-228.654922;23.254189;-392.288818;,
+	-228.654922;23.254189;-392.288818;,
+	-228.654922;23.254189;-392.288818;,
+	-227.508698;-69.646149;-389.821014;,
+	-227.508698;69.646072;-389.821014;,
+	-226.724808;488.132141;-201.267441;,
+	-226.724701;-488.132202;-201.267410;,
+	-225.222000;115.688835;-384.897766;,
+	-225.221985;-115.688896;-384.897766;,
+	-224.666565;617.266357;99.999969;,
+	-224.666565;617.266357;99.999969;,
+	-224.666550;-617.266479;100.000031;,
+	-224.666550;-617.266479;100.000031;,
+	-223.430984;611.932007;32.539433;,
+	-223.430908;-611.931946;32.539501;,
+	-222.255463;307.361603;-329.044952;,
+	-222.255386;-307.361664;-329.044952;,
+	-221.806290;161.151672;-377.543793;,
+	-221.806244;-161.151733;-377.543793;,
+	-218.965256;597.059326;-31.617275;,
+	-218.965149;-597.059265;-31.617207;,
+	-218.310837;439.539276;-249.297379;,
+	-218.310760;-439.539307;-249.297348;,
+	-211.850571;347.667023;-312.399719;,
+	-211.850540;-347.667084;-312.399719;,
+	-211.580811;573.590149;-92.201042;,
+	-211.580765;-573.590149;-92.200996;,
+	-210.746826;517.945496;-175.751877;,
+	-210.746735;-517.945557;-175.751846;,
+	-209.841568;200.522202;-371.423676;,
+	-209.841522;-200.522263;-371.423676;,
+	-204.067184;472.520721;-226.507492;,
+	-204.067078;-472.520813;-226.507462;,
+	-202.558624;623.411499;65.861008;,
+	-202.558548;-623.411377;65.861084;,
+	-201.494095;542.178345;-149.075851;,
+	-201.493973;-542.178406;-149.075790;,
+	-200.235641;386.124268;-293.797241;,
+	-200.235565;-386.124359;-293.797180;,
+	-199.275482;613.306885;-0.037808;,
+	-199.275406;-613.306885;-0.037754;,
+	-197.883057;239.895294;-362.885193;,
+	-197.882996;-239.895325;-362.885193;,
+	-196.161758;-0.000035;-401.526337;,
+	-195.664474;-46.742035;-400.254974;,
+	-195.664474;46.741978;-400.254974;,
+	-195.664474;46.741978;-400.254974;,
+	-195.664474;46.741978;-400.254974;,
+	-194.175247;-93.247086;-396.447479;,
+	-194.175247;93.247032;-396.447479;,
+	-193.042099;594.122375;-62.473339;,
+	-193.041992;-594.122437;-62.473286;,
+	-191.701630;139.279327;-390.123077;,
+	-191.701584;-139.279419;-390.123077;,
+	-189.261139;283.404358;-349.251892;,
+	-189.261093;-283.404358;-349.251892;,
+	-188.829315;503.200073;-202.126877;,
+	-188.829193;-503.200195;-202.126846;,
+	-187.472961;422.554565;-273.347626;,
+	-187.472855;-422.554596;-273.347565;,
+	-184.118500;566.658325;-121.256905;,
+	-184.118408;-566.658447;-121.256859;,
+	-181.061005;631.434753;99.999969;,
+	-181.061005;631.434753;99.999969;,
+	-181.060944;-631.434753;100.000031;,
+	-181.060944;-631.434753;100.000031;,
+	-179.624084;178.448990;-384.897766;,
+	-179.624069;-178.449020;-384.897766;,
+	-179.347610;325.205505;-333.455841;,
+	-179.347534;-325.205597;-333.455872;,
+	-178.925095;626.392761;32.539433;,
+	-178.925018;-626.392761;32.539501;,
+	-173.796066;611.735779;-31.617275;,
+	-173.795975;-611.735657;-31.617207;,
+	-173.630676;456.791626;-251.168747;,
+	-173.630600;-456.791626;-251.168716;,
+	-172.671478;531.428040;-176.274384;,
+	-172.671371;-531.428040;-176.274323;,
+	-168.199524;365.100372;-315.618011;,
+	-168.199463;-365.100433;-315.617950;,
+	-167.572983;217.637909;-377.356812;,
+	-167.572937;-217.637924;-377.356812;,
+	-165.975403;588.408264;-92.201042;,
+	-165.975327;-588.408264;-92.200996;,
+	-163.375977;-23.496202;-408.644745;,
+	-163.375977;23.496145;-408.644745;,
+	-163.375977;23.496145;-408.644745;,
+	-163.375977;23.496145;-408.644745;,
+	-163.375977;23.496145;-408.644745;,
+	-163.375977;23.496145;-408.644745;,
+	-162.539841;-70.368317;-406.041626;,
+	-162.539841;70.368271;-406.041626;,
+	-160.871887;-116.880302;-400.848724;,
+	-160.871887;116.880241;-400.848724;,
+	-158.782669;488.682678;-227.384995;,
+	-158.782593;-488.682739;-227.384964;,
+	-157.995682;636.174744;65.946014;,
+	-157.995590;-636.174622;65.946075;,
+	-155.881332;402.906891;-295.866669;,
+	-155.881271;-402.906891;-295.866608;,
+	-155.672409;557.066895;-149.075882;,
+	-155.672302;-557.066833;-149.075790;,
+	-155.583649;256.639740;-367.451111;,
+	-155.583603;-256.639771;-367.451111;,
+	-153.924042;626.293884;0.220187;,
+	-153.923981;-626.293823;0.220242;,
+	-148.686691;155.856705;-396.447479;,
+	-148.686676;-155.856766;-396.447571;,
+	-147.146866;607.299133;-62.044048;,
+	-147.146759;-607.299072;-62.043980;,
+	-146.185425;299.998352;-352.635803;,
+	-146.185364;-299.998383;-352.635803;,
+	-143.007584;518.088440;-202.126877;,
+	-143.007477;-518.088501;-202.126846;,
+	-142.464218;438.459595;-274.336792;,
+	-142.464127;-438.459686;-274.336731;,
+	-137.914917;579.991699;-120.663887;,
+	-137.914825;-579.991638;-120.663811;,
+	-136.573288;642.526733;99.999969;,
+	-136.573288;642.526733;99.999969;,
+	-136.573227;-642.526794;100.000031;,
+	-136.573227;-642.526794;100.000031;,
+	-136.541443;194.851776;-389.820984;,
+	-136.541412;-194.851822;-389.820984;,
+	-135.529572;341.399048;-335.666962;,
+	-135.529495;-341.399078;-335.666931;,
+	-133.943024;542.900635;-175.751892;,
+	-133.942932;-542.900574;-175.751831;,
+	-133.511139;637.674561;32.881809;,
+	-133.511063;-637.674561;32.881863;,
+	-130.780884;-0.000021;-414.984680;,
+	-130.443680;47.141102;-413.656860;,
+	-130.443680;47.141102;-413.656860;,
+	-130.443680;47.141102;-413.656860;,
+	-130.443665;-47.141144;-413.656860;,
+	-129.433777;94.039116;-409.680054;,
+	-129.433762;-94.039146;-409.680054;,
+	-128.025253;471.609741;-251.168747;,
+	-128.025162;-471.609741;-251.168716;,
+	-127.718346;623.214172;-30.929241;,
+	-127.718262;-623.214111;-30.929157;,
+	-124.475395;233.676895;-380.928467;,
+	-124.475349;-233.676956;-380.928467;,
+	-123.680931;380.650604;-316.692535;,
+	-123.680855;-380.650665;-316.692474;,
+	-119.485504;600.090759;-91.176811;,
+	-119.485420;-600.090820;-91.176765;,
+	-117.151779;-132.839630;-406.041626;,
+	-117.151779;132.839584;-406.041626;,
+	-116.308205;567.614685;-147.585419;,
+	-116.308113;-567.614563;-147.585312;,
+	-112.646973;502.224976;-226.507492;,
+	-112.646896;-502.224976;-226.507462;,
+	-112.645905;645.769897;66.200592;,
+	-112.645828;-645.769714;66.200668;,
+	-112.526260;272.133881;-369.739624;,
+	-112.526222;-272.133942;-369.739624;,
+	-110.712143;417.583252;-295.866669;,
+	-110.712051;-417.583344;-295.866608;,
+	-107.778694;636.050659;0.992801;,
+	-107.778625;-636.050598;0.992856;,
+	-104.917938;171.643890;-400.254974;,
+	-104.917931;-171.643951;-400.255035;,
+	-103.492737;528.172668;-201.267456;,
+	-103.492638;-528.172668;-201.267365;,
+	-102.381721;315.098450;-353.765656;,
+	-102.381653;-315.098480;-353.765656;,
+	-100.473991;617.266479;-60.758389;,
+	-100.473915;-617.266418;-60.758320;,
+	-98.014526;23.654989;-419.277405;,
+	-98.014526;23.654989;-419.277405;,
+	-98.014526;23.654989;-419.277405;,
+	-98.014526;23.654989;-419.277405;,
+	-98.014526;23.654989;-419.277405;,
+	-98.014519;-23.655033;-419.277405;,
+	-97.981339;589.442993;-118.283623;,
+	-97.981247;-589.442993;-118.283546;,
+	-97.506119;70.842323;-416.583801;,
+	-97.506096;-70.842346;-416.583801;,
+	-96.702599;452.047668;-273.347626;,
+	-96.702515;-452.047607;-273.347565;,
+	-94.708015;552.319885;-174.186584;,
+	-94.707932;-552.319946;-174.186523;,
+	-92.774345;210.277802;-392.288788;,
+	-92.774315;-210.277817;-392.288788;,
+	-91.420212;650.488464;99.999969;,
+	-91.420212;650.488464;99.999969;,
+	-91.420166;-650.488464;100.000031;,
+	-91.420166;-650.488464;100.000031;,
+	-91.023666;355.859924;-335.666992;,
+	-91.023590;-355.859894;-335.666901;,
+	-87.419594;645.720093;33.564823;,
+	-87.419533;-645.720093;33.564877;,
+	-85.143196;109.491859;-413.656860;,
+	-85.143188;-109.491913;-413.656860;,
+	-81.737579;483.914612;-249.297379;,
+	-81.737480;-483.914673;-249.297348;,
+	-80.972969;631.434753;-29.556759;,
+	-80.972900;-631.434692;-29.556690;,
+	-80.762047;248.559952;-382.120972;,
+	-80.762009;-248.559982;-382.120972;,
+	-79.053932;608.290710;-88.001335;,
+	-79.053841;-608.290710;-88.001305;,
+	-78.524414;394.237610;-315.618011;,
+	-78.524345;-394.237701;-315.617950;,
+	-76.495422;575.973145;-145.140030;,
+	-76.495323;-575.973145;-145.139954;,
+	-72.832146;148.119049;-408.644745;,
+	-72.832130;-148.119110;-408.644745;,
+	-72.463539;510.907227;-225.173874;,
+	-72.463463;-510.907227;-225.173843;,
+	-68.920654;286.302185;-369.739624;,
+	-68.920601;-286.302216;-369.739624;,
+	-66.735176;652.149353;66.623505;,
+	-66.735123;-652.149292;66.623566;,
+	-65.379944;-0.000021;-422.895569;,
+	-65.209679;47.377583;-421.533752;,
+	-65.209679;47.377583;-421.533752;,
+	-65.209679;47.377583;-421.533752;,
+	-65.209663;-47.377625;-421.533752;,
+	-64.964188;430.076691;-293.797241;,
+	-64.964104;-430.076691;-293.797180;,
+	-63.578747;536.219727;-199.246033;,
+	-63.578640;-536.219666;-199.245941;,
+	-61.077457;642.526733;2.276064;,
+	-61.077396;-642.526733;2.276121;,
+	-60.617321;186.560883;-401.526337;,
+	-60.617290;-186.560928;-401.526337;,
+	-59.620159;624.079407;-56.896633;,
+	-59.620083;-624.079346;-56.896564;,
+	-58.068161;328.629395;-352.635803;,
+	-58.068111;-328.629486;-352.635803;,
+	-57.663372;596.581726;-115.046989;,
+	-57.663280;-596.581726;-115.046898;,
+	-55.114811;559.650269;-171.584198;,
+	-55.114708;-559.650269;-171.584137;,
+	-52.785412;85.907532;-419.277405;,
+	-52.785393;-85.907585;-419.277405;,
+	-50.429951;463.246704;-270.385529;,
+	-50.429867;-463.246704;-270.385468;,
+	-48.542175;224.649704;-392.288788;,
+	-48.542149;-224.649734;-392.288788;,
+	-46.055813;368.514679;-333.455872;,
+	-46.055748;-368.514740;-333.455841;,
+	-45.821735;655.281067;99.999969;,
+	-45.821735;655.281067;99.999969;,
+	-45.821690;-655.281067;100.000031;,
+	-45.821690;-655.281067;100.000031;,
+	-41.010975;491.206604;-247.357681;,
+	-41.010887;-491.206604;-247.357651;,
+	-40.884392;650.488464;34.584995;,
+	-40.884327;-650.488464;34.585049;,
+	-40.413525;124.379990;-414.984680;,
+	-40.413506;-124.380028;-414.984680;,
+	-39.776451;636.746460;-25.129789;,
+	-39.776382;-636.746338;-25.129702;,
+	-38.307636;614.069153;-84.077469;,
+	-38.307545;-614.069092;-84.077408;,
+	-36.649162;262.213409;-380.928467;,
+	-36.649124;-262.213409;-380.928467;,
+	-36.387577;582.110107;-141.749146;,
+	-36.387482;-582.110168;-141.749054;,
+	-32.962894;405.791260;-312.399750;,
+	-32.962822;-405.791229;-312.399689;,
+	-32.666611;23.733665;-424.511292;,
+	-32.666611;23.733665;-424.511292;,
+	-32.666611;23.733665;-424.511292;,
+	-32.666611;23.733665;-424.511292;,
+	-32.666607;-23.733692;-424.511292;,
+	-31.995815;517.585083;-222.564529;,
+	-31.995731;-517.585083;-222.564499;,
+	-28.139763;162.640503;-408.644745;,
+	-28.139738;-162.640533;-408.644745;,
+	-24.979280;299.075653;-367.451111;,
+	-24.979229;-299.075714;-367.451111;,
+	-23.419521;542.198547;-196.070404;,
+	-23.419415;-542.198486;-196.070343;,
+	-20.492123;655.281067;67.212616;,
+	-20.492077;-655.281006;67.212677;,
+	-20.203520;62.180008;-422.895569;,
+	-20.203510;-62.180023;-422.895569;,
+	-19.620895;646.245789;7.137347;,
+	-19.620832;-646.245789;7.137403;,
+	-18.876635;440.321899;-289.669250;,
+	-18.876553;-440.321869;-289.669189;,
+	-18.526075;628.377502;-52.402630;,
+	-18.526007;-628.377502;-52.402561;,
+	-17.119165;601.379944;-110.966637;,
+	-17.119066;-601.379883;-110.966560;,
+	-16.009363;200.532059;-400.254974;,
+	-16.009331;-200.532074;-400.255035;,
+	-15.313156;564.863953;-167.954712;,
+	-15.313060;-564.863953;-167.954651;,
+	-13.465446;340.523773;-349.251892;,
+	-13.465387;-340.523834;-349.251892;,
+	-9.291617;469.183960;-267.715546;,
+	-9.291530;-469.183960;-267.715454;,
+	-7.790909;100.527153;-419.277405;,
+	-7.790889;-100.527184;-419.277405;,
+	-4.066675;237.895462;-389.820984;,
+	-4.066638;-237.895462;-389.820984;,
+	-0.854211;379.299255;-329.044983;,
+	-0.854144;-379.299225;-329.044922;,
+	-0.121117;496.543213;-244.035263;,
+	-0.121019;-496.543152;-244.035202;,
+	-0.000029;656.881165;99.999969;,
+	-0.000029;656.881165;99.999969;,
+	0.000000;-0.000006;-425.505005;,
+	0.000000;-0.000006;-425.505005;,
+	0.000000;-0.000006;-425.505005;,
+	0.000000;-0.000006;-425.505005;,
+	0.000000;-0.000006;-425.505005;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000000;0.000017;100.000000;,
+	0.000008;-656.881165;100.000031;,
+	0.000008;-656.881165;100.000031;,
+	0.747240;652.547913;39.742069;,
+	0.747294;-652.547913;39.742123;,
+	1.581945;639.466797;-20.193571;,
+	1.582010;-639.466675;-20.193499;,
+	2.591148;617.402954;-79.420822;,
+	2.591230;-617.402954;-79.420746;,
+	3.860591;586.002014;-137.425812;,
+	3.860690;-586.001892;-137.425720;,
+	4.524555;138.626694;-413.656860;,
+	4.524580;-138.626740;-413.656860;,
+	7.645014;274.569702;-377.356812;,
+	7.645063;-274.569672;-377.356812;,
+	8.597447;522.232361;-218.689682;,
+	8.597533;-522.232361;-218.689651;,
+	12.477533;38.401894;-424.511292;,
+	12.477540;-38.401905;-424.511292;,
+	12.768639;415.251862;-307.054474;,
+	12.768714;-415.251862;-307.054413;,
+	16.696638;176.329590;-406.041626;,
+	16.696665;-176.329605;-406.041626;,
+	16.830030;546.086121;-191.752838;,
+	16.830133;-546.086121;-191.752777;,
+	19.083799;310.392120;-362.885193;,
+	19.083858;-310.392120;-362.885193;,
+	21.228024;655.638977;72.521805;,
+	21.228065;-655.638977;72.521866;,
+	21.916128;647.314941;12.379427;,
+	21.916187;-647.314941;12.379469;,
+	22.537689;444.963165;-286.154602;,
+	22.537767;-444.963226;-286.154541;,
+	22.642641;630.143433;-47.294491;,
+	22.642736;-630.143494;-47.294453;,
+	23.492203;603.818787;-106.058601;,
+	23.492289;-603.818726;-106.058540;,
+	24.546400;567.941406;-163.311768;,
+	24.546503;-567.941406;-163.311707;,
+	24.907875;76.658554;-421.533752;,
+	24.907888;-76.658569;-421.533752;,
+	28.679768;213.486557;-396.447479;,
+	28.679804;-213.486588;-396.447571;,
+	31.204323;350.722443;-343.630798;,
+	31.204384;-350.722443;-343.630737;,
+	31.884153;473.230682;-263.563782;,
+	31.884251;-473.230652;-263.563690;,
+	37.244015;114.625290;-416.583801;,
+	37.244038;-114.625305;-416.583801;,
+	40.378151;-0.000006;-424.511292;,
+	40.429230;249.948685;-384.897766;,
+	40.429264;-249.948685;-384.897766;,
+	40.769226;499.902924;-239.343216;,
+	40.769321;-499.902954;-239.343185;,
+	42.375786;651.917114;45.147556;,
+	42.375835;-651.917114;45.147610;,
+	42.933903;639.584900;-14.768216;,
+	42.933964;-639.584778;-14.768161;,
+	43.479618;618.279114;-74.049911;,
+	43.479694;-618.278992;-74.049835;,
+	44.093887;587.633606;-132.186722;,
+	44.093967;-587.633545;-132.186661;,
+	44.351723;388.158813;-322.456573;,
+	44.351784;-388.158783;-322.456512;,
+	45.821690;655.281067;99.999969;,
+	45.821690;655.281067;99.999969;,
+	45.821743;-655.281006;100.000031;,
+	45.821743;-655.281006;100.000031;,
+	49.156960;524.830750;-213.564545;,
+	49.157055;-524.830750;-213.564484;,
+	49.439293;152.158508;-409.680054;,
+	49.439316;-152.158539;-409.680054;,
+	51.901375;285.567627;-371.423676;,
+	51.901428;-285.567627;-371.423676;,
+	52.893486;38.429359;-422.895569;,
+	52.893494;-38.429367;-422.895569;,
+	54.320591;418.677338;-302.592773;,
+	54.320675;-418.677399;-302.592712;,
+	57.014664;547.867432;-186.309998;,
+	57.014759;-547.867432;-186.309937;,
+	61.447590;189.116257;-400.848724;,
+	61.447628;-189.116257;-400.848724;,
+	63.053894;320.196228;-356.064148;,
+	63.053947;-320.196320;-356.064148;,
+	63.363277;645.729614;17.980776;,
+	63.363338;-645.729614;17.980833;,
+	63.720139;629.370178;-41.592831;,
+	63.720215;-629.370178;-41.592777;,
+	63.860294;447.793823;-281.068481;,
+	63.860367;-447.793732;-281.068359;,
+	64.011406;603.888550;-100.342155;,
+	64.011497;-603.888550;-100.342094;,
+	64.313133;568.870789;-157.672974;,
+	64.313240;-568.870728;-157.672913;,
+	65.391350;76.748795;-419.277405;,
+	65.391365;-76.748810;-419.277405;,
+	67.317841;652.486816;72.031448;,
+	67.317894;-652.486755;72.031509;,
+	72.931465;475.370422;-257.946991;,
+	72.931541;-475.370422;-257.946930;,
+	73.223488;225.358719;-390.123077;,
+	73.223526;-225.358734;-390.123077;,
+	75.718704;359.174591;-335.800476;,
+	75.718765;-359.174591;-335.800415;,
+	77.822289;114.810822;-413.656860;,
+	77.822304;-114.810852;-413.656860;,
+	80.603592;-0.000006;-421.533752;,
+	81.497269;501.272827;-233.300339;,
+	81.497368;-501.272766;-233.300308;,
+	84.111137;637.100037;-8.875806;,
+	84.111198;-637.099915;-8.875751;,
+	84.157104;586.998718;-126.052101;,
+	84.157188;-586.998596;-126.052040;,
+	84.195007;616.693970;-67.986145;,
+	84.195084;-616.693848;-67.986069;,
+	84.722450;260.748932;-377.543793;,
+	84.722504;-260.748901;-377.543793;,
+	85.902061;390.468384;-316.959045;,
+	85.902130;-390.468353;-316.958984;,
+	88.626274;647.140747;44.302860;,
+	88.626335;-647.140686;44.302914;,
+	89.523643;525.370117;-207.209167;,
+	89.523735;-525.369934;-207.209106;,
+	90.136063;152.467651;-406.041626;,
+	90.136093;-152.467682;-406.041626;,
+	91.420174;650.488464;99.999969;,
+	91.420174;650.488464;99.999969;,
+	91.420250;-650.488525;100.000031;,
+	91.420250;-650.488525;100.000031;,
+	93.199486;38.474186;-419.277405;,
+	93.199493;-38.474197;-419.277405;,
+	95.649803;420.386047;-296.480164;,
+	95.649895;-420.386139;-296.480164;,
+	95.900986;295.152893;-363.158417;,
+	95.901039;-295.152924;-363.158417;,
+	96.979401;547.535645;-179.762848;,
+	96.979500;-547.535645;-179.762787;,
+	102.281853;189.571823;-396.447571;,
+	102.281868;-189.571793;-396.447479;,
+	103.836624;567.648743;-151.059662;,
+	103.836731;-567.648621;-151.059601;,
+	104.279472;601.589294;-93.839699;,
+	104.279556;-601.589172;-93.839622;,
+	104.540855;626.060852;-35.320599;,
+	104.540932;-626.060852;-35.320545;,
+	104.923012;448.801971;-274.431549;,
+	104.923088;-448.801941;-274.431458;,
+	105.803940;76.871071;-414.984680;,
+	105.803963;-76.871094;-414.984680;,
+	106.716820;328.440552;-347.021271;,
+	106.716866;-328.440582;-347.021271;,
+	109.669479;639.281860;16.922426;,
+	109.669563;-639.281860;16.922483;,
+	113.074638;646.106567;71.679443;,
+	113.074707;-646.106567;71.679504;,
+	113.684868;475.594574;-250.887772;,
+	113.684944;-475.594543;-250.887741;,
+	114.208206;225.976395;-384.897766;,
+	114.208244;-225.976410;-384.897766;,
+	117.129036;360.486084;-329.193481;,
+	117.129082;-360.486115;-329.193420;,
+	118.363243;115.038803;-408.644745;,
+	118.363251;-115.038818;-408.644745;,
+	120.524193;-0.000006;-416.583801;,
+	121.900879;500.647095;-225.930618;,
+	121.900993;-500.647156;-225.930588;,
+	123.895721;584.099670;-119.045601;,
+	123.895798;-584.099609;-119.045540;,
+	124.575218;612.653748;-61.253628;,
+	124.575294;-612.653687;-61.253574;,
+	125.863327;261.535980;-371.423676;,
+	125.863396;-261.535950;-371.423706;,
+	127.098251;391.168182;-309.742493;,
+	127.098312;-391.168243;-309.742432;,
+	129.539078;523.848206;-199.648499;,
+	129.539169;-523.848145;-199.648438;,
+	130.371277;628.958130;-10.004666;,
+	130.371353;-628.958069;-10.004611;,
+	130.821640;152.823792;-400.255035;,
+	130.821655;-152.823776;-400.254974;,
+	133.240005;38.534885;-413.656860;,
+	133.240021;-38.534897;-413.656860;,
+	134.432480;639.120300;43.737370;,
+	134.432571;-639.120300;43.737408;,
+	136.570084;545.092102;-172.136658;,
+	136.570175;-545.091980;-172.136566;,
+	136.573257;642.526794;99.999969;,
+	136.573257;642.526794;99.999969;,
+	136.573349;-642.526794;100.000031;,
+	136.573349;-642.526794;100.000031;,
+	136.586777;420.370911;-288.741760;,
+	136.586868;-420.370880;-288.741699;,
+	137.194992;296.106445;-356.064209;,
+	137.195038;-296.106415;-356.064148;,
+	142.967407;564.279724;-143.496780;,
+	142.967499;-564.279602;-143.496719;,
+	143.121445;190.071136;-389.820984;,
+	143.121490;-190.071152;-389.821014;,
+	144.138428;596.929626;-86.576759;,
+	144.138504;-596.929626;-86.576714;,
+	145.558746;447.983704;-266.270844;,
+	145.558823;-447.983704;-266.270782;,
+	145.984650;77.021179;-408.644745;,
+	145.984665;-77.021179;-408.644745;,
+	149.859787;335.084656;-335.800446;,
+	149.859848;-335.084686;-335.800446;,
+	150.657013;616.226624;-36.376415;,
+	150.657104;-616.226563;-36.376362;,
+	153.980179;473.902252;-242.414658;,
+	153.980255;-473.902283;-242.414627;,
+	155.203049;226.625168;-377.356812;,
+	155.203079;-226.625168;-377.356842;,
+	155.419693;629.592957;16.285252;,
+	155.419769;-629.592957;16.285305;,
+	158.272064;636.530212;71.467545;,
+	158.272141;-636.530212;71.467606;,
+	158.698212;-115.300987;-401.526337;,
+	158.698212;115.300964;-401.526337;,
+	159.988937;-0.000005;-409.680054;,
+	160.015335;366.387573;-316.959045;,
+	160.015396;-366.387543;-316.959015;,
+	161.819229;498.028503;-217.263412;,
+	161.819321;-498.028442;-217.263382;,
+	163.156494;578.947815;-111.194252;,
+	163.156570;-578.947815;-111.194206;,
+	167.004822;262.329712;-362.885254;,
+	167.004837;-262.329651;-362.885193;,
+	169.046310;520.271057;-190.912247;,
+	169.046402;-520.271057;-190.912216;,
+	169.714432;396.321075;-296.480225;,
+	169.714478;-396.321014;-296.480072;,
+	170.453918;601.152344;-62.094433;,
+	170.454010;-601.152405;-62.094395;,
+	171.317261;-153.213074;-392.288818;,
+	171.317261;153.213043;-392.288788;,
+	172.858948;-38.609390;-406.041626;,
+	172.858948;38.609379;-406.041626;,
+	175.634018;540.545959;-163.460846;,
+	175.634125;-540.545959;-163.460785;,
+	175.964218;617.597473;-10.570538;,
+	175.964325;-617.597351;-10.570484;,
+	178.914658;424.760681;-274.431519;,
+	178.914764;-424.760651;-274.431488;,
+	179.564804;627.896057;43.453907;,
+	179.564896;-627.895935;43.453945;,
+	180.904663;302.081879;-343.630768;,
+	180.904709;-302.081879;-343.630768;,
+	181.060989;631.434753;99.999969;,
+	181.060989;631.434753;99.999969;,
+	181.061096;-631.434753;100.000031;,
+	181.061096;-631.434753;100.000031;,
+	181.557480;558.776550;-135.013016;,
+	181.557587;-558.776489;-135.012955;,
+	183.774948;190.593262;-380.928467;,
+	183.774994;-190.593262;-380.928467;,
+	185.770172;-77.193604;-400.254974;,
+	185.770187;77.193619;-400.255035;,
+	187.574463;451.586395;-250.887772;,
+	187.574539;-451.586365;-250.887741;,
+	189.691238;583.809753;-87.063957;,
+	189.691330;-583.809631;-87.063911;,
+	192.272690;340.096344;-322.456543;,
+	192.272751;-340.096344;-322.456543;,
+	195.653061;476.683594;-225.930618;,
+	195.653137;-476.683533;-225.930588;,
+	195.996231;603.214417;-36.728954;,
+	195.996353;-603.214478;-36.728916;,
+	196.000946;227.274887;-367.451111;,
+	196.000961;-227.274887;-367.451111;,
+	198.654221;115.586922;-392.288788;,
+	198.654236;-115.586937;-392.288818;,
+	198.848602;-0.000005;-400.848724;,
+	200.381927;616.712280;16.072514;,
+	200.382034;-616.712158;16.072567;,
+	202.146103;370.645996;-302.592773;,
+	202.146133;-370.645966;-302.592651;,
+	202.686508;623.804993;71.396790;,
+	202.686600;-623.804932;71.396851;,
+	203.110870;499.943329;-199.648514;,
+	203.110947;-499.943237;-199.648453;,
+	208.300613;564.279724;-111.194252;,
+	208.300735;-564.279602;-111.194206;,
+	209.909500;521.262634;-172.136612;,
+	209.909576;-521.262512;-172.136581;,
+	211.048630;267.574799;-349.251892;,
+	211.048691;-267.574768;-349.251892;,
+	211.437729;153.618500;-382.120972;,
+	211.437744;-153.618530;-382.120972;,
+	211.542465;399.808899;-281.068420;,
+	211.542557;-399.808929;-281.068390;,
+	211.900330;-38.694901;-396.447479;,
+	211.900360;38.694889;-396.447571;,
+	215.448410;586.532837;-62.094433;,
+	215.448502;-586.532837;-62.094395;,
+	216.012161;540.545959;-143.496780;,
+	216.012268;-540.546021;-143.496750;,
+	220.412903;427.450806;-257.946991;,
+	220.412964;-427.450775;-257.946899;,
+	220.656616;603.075989;-10.570538;,
+	220.656708;-603.075928;-10.570484;,
+	223.637573;306.357422;-329.044952;,
+	223.637604;-306.357452;-329.044952;,
+	223.796951;613.524109;43.453907;,
+	223.797104;-613.523987;43.453945;,
+	224.042206;-191.112823;-369.739624;,
+	224.042206;191.112854;-369.739685;,
+	224.666580;617.266479;99.999969;,
+	224.666580;617.266479;99.999969;,
+	224.666718;-617.266418;100.000031;,
+	224.666718;-617.266418;100.000031;,
+	224.995377;77.381363;-389.820984;,
+	224.995392;-77.381371;-389.821014;,
+	228.708038;453.441101;-233.300339;,
+	228.708145;-453.441101;-233.300308;,
+	233.748840;343.451019;-307.054443;,
+	233.748901;-343.451080;-307.054413;,
+	234.255966;567.648743;-86.576759;,
+	234.256088;-567.648621;-86.576714;,
+	236.378601;477.653931;-207.209122;,
+	236.378662;-477.653931;-207.209091;,
+	236.956223;-0.000004;-390.123077;,
+	238.054535;115.883812;-380.928467;,
+	238.054565;-115.883850;-380.928467;,
+	240.141632;231.735184;-352.635803;,
+	240.141708;-231.735184;-352.635803;,
+	240.324738;587.091675;-36.376415;,
+	240.324860;-587.091675;-36.376362;,
+	243.091415;545.370728;-119.045616;,
+	243.091492;-545.370667;-119.045555;,
+	243.309433;373.230225;-286.154602;,
+	243.309509;-373.230133;-286.154510;,
+	243.375366;499.968689;-179.762833;,
+	243.375458;-499.968689;-179.762802;,
+	244.328293;600.704895;16.285252;,
+	244.328415;-600.704834;16.285305;,
+	246.098282;607.993774;71.467552;,
+	246.098434;-607.993774;71.467598;,
+	249.649918;520.271057;-151.059647;,
+	249.649963;-520.271057;-151.059586;,
+	250.208633;38.787895;-384.897766;,
+	250.208649;-38.787918;-384.897766;,
+	250.991959;-154.019684;-369.739624;,
+	250.991959;154.019699;-369.739685;,
+	252.363159;401.592682;-263.563751;,
+	252.363235;-401.592743;-263.563690;,
+	253.867447;271.063782;-333.455872;,
+	253.867462;-271.063751;-333.455872;,
+	259.325348;568.870789;-61.253628;,
+	259.325470;-568.870728;-61.253574;,
+	260.852570;428.393524;-239.343216;,
+	260.852631;-428.393585;-239.343185;,
+	263.493713;77.575836;-377.356812;,
+	263.493744;-77.575829;-377.356842;,
+	264.219696;585.468140;-10.004664;,
+	264.219818;-585.468079;-10.004613;,
+	265.185638;308.916931;-312.399719;,
+	265.185669;-308.916962;-312.399689;,
+	266.907257;596.076599;43.737370;,
+	266.907379;-596.076538;43.737408;,
+	267.177643;600.090881;99.999977;,
+	267.177643;600.090881;99.999977;,
+	267.177765;-600.090820;100.000023;,
+	267.177765;-600.090820;100.000023;,
+	268.038788;194.741577;-353.765656;,
+	268.038818;-194.741562;-353.765656;,
+	268.718933;453.490723;-213.564499;,
+	268.718994;-453.490723;-213.564438;,
+	269.241364;547.989807;-93.839684;,
+	269.241486;-547.989807;-93.839622;,
+	274.086212;345.132446;-289.669220;,
+	274.086243;-345.132477;-289.669189;,
+	274.167633;-0.000004;-377.543793;,
+	275.902557;476.746460;-186.309982;,
+	275.902649;-476.746399;-186.309952;,
+	276.718903;-116.176178;-367.451111;,
+	276.718903;116.176170;-367.451111;,
+	276.944611;524.358215;-126.052101;,
+	276.944702;-524.358154;-126.052055;,
+	282.343414;498.028503;-157.672958;,
+	282.343506;-498.028442;-157.672958;,
+	282.808899;234.394348;-335.666931;,
+	282.808929;-234.394363;-335.666931;,
+	283.296478;374.116333;-267.715515;,
+	283.296539;-374.116364;-267.715454;,
+	283.413940;567.941406;-35.320599;,
+	283.414063;-567.941345;-35.320545;,
+	287.035919;581.651917;16.922430;,
+	287.036072;-581.651978;16.922480;,
+	287.629395;-38.884109;-371.423706;,
+	287.629395;38.884102;-371.423676;,
+	288.292633;589.174866;71.679451;,
+	288.292755;-589.174805;71.679497;,
+	291.958679;401.640625;-244.035233;,
+	291.958771;-401.640656;-244.035233;,
+	294.368378;548.404480;-67.986122;,
+	294.368500;-548.404419;-67.986092;,
+	294.601105;156.778168;-352.635803;,
+	294.601166;-156.778183;-352.635803;,
+	295.254669;272.789520;-315.617981;,
+	295.254700;-272.789490;-315.617920;,
+	300.005005;427.548309;-218.689682;,
+	300.005035;-427.548340;-218.689651;,
+	301.097687;-77.766655;-362.885193;,
+	301.097717;77.766663;-362.885254;,
+	303.170471;526.181091;-100.342155;,
+	303.170532;-526.181091;-100.342094;,
+	305.349854;309.754364;-293.797211;,
+	305.349884;-309.754364;-293.797150;,
+	306.430634;564.863953;-8.875803;,
+	306.430756;-564.863892;-8.875753;,
+	307.365570;451.685425;-191.752823;,
+	307.365631;-451.685364;-191.752762;,
+	308.387054;579.991760;99.999977;,
+	308.387054;579.991760;99.999977;,
+	308.387177;-579.991638;100.000023;,
+	308.387177;-579.991638;100.000023;,
+	308.679565;575.641113;44.302860;,
+	308.679718;-575.640930;44.302914;,
+	309.729614;501.323334;-132.186707;,
+	309.729706;-501.323242;-132.186676;,
+	310.315063;196.535370;-335.666931;,
+	310.315094;-196.535339;-335.666931;,
+	310.342133;-0.000003;-363.158417;,
+	313.088257;345.132446;-270.385498;,
+	313.088287;-345.132477;-270.385498;,
+	313.969116;473.902252;-163.311752;,
+	313.969177;-473.902283;-163.311722;,
+	318.383789;546.625000;-41.592827;,
+	318.383911;-546.624817;-41.592766;,
+	319.696350;118.034035;-349.251892;,
+	319.696381;-118.034050;-349.251892;,
+	321.902557;373.288849;-247.357681;,
+	321.902588;-373.288849;-247.357651;,
+	323.800812;235.255066;-316.692505;,
+	323.800903;-235.255051;-316.692505;,
+	324.009552;-38.978271;-356.064148;,
+	324.009644;38.978279;-356.064209;,
+	328.239532;525.754944;-74.049889;,
+	328.239685;-525.754944;-74.049843;,
+	328.288391;559.650269;17.980780;,
+	328.288513;-559.650146;17.980829;,
+	329.060791;567.441345;72.031456;,
+	329.060913;-567.441162;72.031502;,
+	330.114075;399.928528;-222.564529;,
+	330.114105;-399.928497;-222.564499;,
+	335.017334;-272.757019;-295.866608;,
+	335.017334;272.757050;-295.866638;,
+	335.910156;502.308014;-106.058617;,
+	335.910187;-502.307922;-106.058510;,
+	336.246307;-157.678940;-333.455872;,
+	336.246307;157.678940;-333.455872;,
+	337.643097;424.882202;-196.070389;,
+	337.643127;-424.882202;-196.070328;,
+	341.204224;542.670898;-14.768212;,
+	341.204376;-542.670776;-14.768149;,
+	341.320007;476.354767;-137.425781;,
+	341.320129;-476.354736;-137.425751;,
+	343.199554;78.702126;-343.630768;,
+	343.199615;-78.702141;-343.630768;,
+	343.940979;308.873901;-273.347626;,
+	343.941010;-308.873871;-273.347626;,
+	344.407318;447.983704;-167.954697;,
+	344.407379;-447.983765;-167.954666;,
+	345.342957;-0.000003;-347.021271;,
+	348.093994;557.066895;99.999977;,
+	348.093994;557.066895;99.999977;,
+	348.094177;-557.066772;100.000023;,
+	348.094177;-557.066772;100.000023;,
+	348.904510;552.319946;45.147560;,
+	348.904663;-552.319763;45.147606;,
+	350.564972;343.451019;-249.297379;,
+	350.565002;-343.451080;-249.297348;,
+	350.676910;196.507294;-315.617981;,
+	350.676971;-196.507263;-315.617920;,
+	352.070709;523.105896;-47.294487;,
+	352.070862;-523.105713;-47.294441;,
+	358.928040;-370.739655;-225.173813;,
+	358.928040;370.739685;-225.173904;,
+	360.471130;-118.022293;-329.044952;,
+	360.471130;118.022293;-329.044952;,
+	360.804077;501.012512;-79.420799;,
+	360.804138;-501.012512;-79.420753;,
+	362.751709;536.570740;12.379416;,
+	362.751740;-536.570679;12.379479;,
+	362.933380;-234.333801;-295.866608;,
+	362.933380;234.333801;-295.866638;,
+	364.993713;38.978264;-335.800446;,
+	364.993744;-38.978268;-335.800446;,
+	366.618317;396.440247;-199.245987;,
+	366.618347;-396.440216;-199.245926;,
+	367.331940;476.464172;-110.966637;,
+	367.331970;-476.464111;-110.966545;,
+	368.201080;542.900635;72.521812;,
+	368.201233;-542.900452;72.521858;,
+	371.593933;449.548950;-141.749130;,
+	371.594025;-449.548950;-141.749054;,
+	372.976074;270.983002;-274.336761;,
+	372.976105;-270.982971;-274.336761;,
+	373.543030;420.370911;-171.584183;,
+	373.543060;-420.370911;-171.584152;,
+	374.589264;518.269287;-20.193535;,
+	374.589386;-518.269165;-20.193489;,
+	375.744324;-156.745956;-312.399689;,
+	375.744324;156.745941;-312.399719;,
+	379.037567;-0.000002;-329.193451;,
+	380.779846;306.288971;-251.168747;,
+	380.779877;-306.288910;-251.168716;,
+	382.866455;-77.766655;-322.456543;,
+	382.866455;77.766655;-322.456543;,
+	382.953522;528.361633;39.742073;,
+	382.953644;-528.361511;39.742119;,
+	384.338898;497.478729;-52.402626;,
+	384.338928;-497.478638;-52.402550;,
+	386.105042;531.428040;99.999977;,
+	386.105042;531.428040;99.999977;,
+	386.105255;-531.427917;100.000023;,
+	386.105255;-531.427917;100.000023;,
+	386.333740;340.096344;-226.507492;,
+	386.333832;-340.096344;-226.507431;,
+	388.952240;-194.685623;-293.797150;,
+	388.952240;194.685638;-293.797211;,
+	391.932281;474.275635;-84.077461;,
+	391.932343;-474.275696;-84.077400;,
+	394.179474;-366.469208;-201.267380;,
+	394.179474;366.469208;-201.267410;,
+	395.727448;511.290985;7.137352;,
+	395.727478;-511.290894;7.137413;,
+	397.312561;448.751160;-115.046989;,
+	397.312592;-448.751038;-115.046883;,
+	397.902740;-38.963650;-316.959015;,
+	397.902740;38.963650;-316.959045;,
+	398.873718;-116.176170;-307.054413;,
+	398.873718;116.176163;-307.054443;,
+	400.040100;-231.660004;-273.347626;,
+	400.040100;231.660034;-273.347626;,
+	400.434631;421.009186;-145.140030;,
+	400.434662;-421.009216;-145.139969;,
+	401.265839;391.168182;-174.186569;,
+	401.265930;-391.168243;-174.186508;,
+	401.742981;518.088623;67.212624;,
+	401.743134;-518.088440;67.212669;,
+	406.449890;491.758667;-25.129751;,
+	406.450012;-491.758545;-25.129709;,
+	408.965515;267.494659;-251.168747;,
+	408.965546;-267.494629;-251.168716;,
+	411.298615;-0.000001;-309.742462;,
+	412.937836;-154.019669;-289.669189;,
+	412.937836;154.019669;-289.669220;,
+	414.971832;-77.716454;-302.592712;,
+	414.971863;77.716454;-302.592743;,
+	415.058350;469.846924;-56.896626;,
+	415.058380;-469.846863;-56.896557;,
+	415.423676;502.225006;34.584999;,
+	415.423798;-502.224915;34.585045;,
+	415.698364;302.022583;-227.385025;,
+	415.698456;-302.022552;-227.384964;,
+	420.220306;335.084686;-202.126877;,
+	420.220337;-335.084686;-202.126816;,
+	421.500244;445.650879;-88.001350;,
+	421.500336;-445.650818;-88.001289;,
+	422.235016;503.200165;99.999977;,
+	422.235016;503.200165;99.999977;,
+	422.235199;-503.200073;100.000023;,
+	422.235199;-503.200073;100.000023;,
+	424.990143;-191.112823;-270.385498;,
+	424.990143;191.112823;-270.385498;,
+	425.734467;-419.277344;-118.283524;,
+	425.734467;419.277435;-118.283615;,
+	427.080444;483.914612;2.276071;,
+	427.080505;-483.914551;2.276144;,
+	427.471100;360.486084;-175.751877;,
+	427.471222;-360.486115;-175.751846;,
+	427.730835;390.845642;-147.585419;,
+	427.730927;-390.845673;-147.585342;,
+	429.368347;-38.938061;-296.480103;,
+	429.368347;38.938061;-296.480133;,
+	430.149750;-116.066574;-286.154541;,
+	430.149750;116.066574;-286.154572;,
+	434.971863;227.274902;-249.297379;,
+	434.971893;-227.274887;-249.297348;,
+	436.656494;463.246735;-29.556753;,
+	436.656586;-463.246643;-29.556696;,
+	437.313599;488.373962;66.623512;,
+	437.313751;-488.373779;66.623558;,
+	442.004150;0.000000;-288.741730;,
+	442.834534;262.329681;-226.507492;,
+	442.834564;-262.329651;-226.507431;,
+	443.349243;-153.822647;-267.715485;,
+	443.349243;153.822662;-267.715485;,
+	444.105225;440.321899;-60.758381;,
+	444.105286;-440.321838;-60.758312;,
+	445.611084;-77.641136;-281.068420;,
+	445.611176;77.641136;-281.068451;,
+	448.539703;-296.106415;-202.126816;,
+	448.539703;296.106445;-202.126877;,
+	449.390320;415.251862;-91.176804;,
+	449.390350;-415.251831;-91.176758;,
+	450.268677;471.014648;33.564831;,
+	450.268768;-471.014526;33.564869;,
+	452.059692;328.440582;-176.274368;,
+	452.059723;-328.440582;-176.274307;,
+	452.486053;-388.158783;-120.663788;,
+	452.486053;388.158813;-120.663879;,
+	453.377289;359.174622;-149.075867;,
+	453.377319;-359.174591;-149.075806;,
+	454.492126;190.794952;-247.357681;,
+	454.492157;-190.794907;-247.357651;,
+	456.307983;472.520752;99.999977;,
+	456.307983;472.520752;99.999977;,
+	456.308105;-472.520691;100.000023;,
+	456.308105;-472.520691;100.000023;,
+	459.259033;-38.899715;-274.431519;,
+	459.259033;38.899719;-274.431519;,
+	459.921844;115.912666;-263.563721;,
+	459.921875;-115.912682;-263.563721;,
+	461.055969;451.224976;0.992809;,
+	461.056030;-451.224976;0.992848;,
+	463.509277;-226.795944;-225.173813;,
+	463.509277;226.795944;-225.173874;,
+	469.642334;429.119843;-30.929218;,
+	469.642426;-429.119751;-30.929165;,
+	470.341125;-261.641754;-201.267380;,
+	470.341125;261.641785;-201.267441;,
+	470.706421;456.227203;66.200615;,
+	470.706573;-456.227173;66.200661;,
+	471.037994;0.000001;-266.270813;,
+	472.203156;153.555420;-244.035217;,
+	472.203186;-153.555420;-244.035248;,
+	474.641205;-77.535606;-257.946960;,
+	474.641205;77.535599;-257.946930;,
+	474.938568;-295.152893;-175.751846;,
+	474.938568;295.152924;-175.751907;,
+	476.005768;404.824524;-62.044041;,
+	476.005798;-404.824463;-62.043972;,
+	480.134644;378.474457;-92.201035;,
+	480.134705;-378.474457;-92.201004;,
+	481.696594;320.196259;-149.075836;,
+	481.696686;-320.196259;-149.075775;,
+	482.028442;-350.214142;-121.256836;,
+	482.028442;350.214203;-121.256927;,
+	482.365479;190.372406;-222.564529;,
+	482.365509;-190.372391;-222.564499;,
+	482.828491;437.413727;32.881817;,
+	482.828583;-437.413635;32.881870;,
+	487.447876;-38.846050;-250.887756;,
+	487.447876;38.846050;-250.887756;,
+	488.034363;-115.704636;-239.343201;,
+	488.034363;115.704659;-239.343201;,
+	488.157867;439.539307;99.999977;,
+	488.157867;439.539307;99.999977;,
+	488.157959;-439.539246;100.000023;,
+	488.157959;-439.539246;100.000023;,
+	490.328369;-226.167984;-199.245956;,
+	490.328369;226.167969;-199.246017;,
+	492.653503;-416.208008;0.220248;,
+	492.653503;416.208160;0.220181;,
+	496.021057;260.748932;-174.186569;,
+	496.021088;-260.748901;-174.186508;,
+	498.290344;0.000002;-242.414642;,
+	499.329224;153.201981;-218.689667;,
+	499.329285;-153.201981;-218.689667;,
+	500.173157;-392.749695;-31.617201;,
+	500.173157;392.749786;-31.617250;,
+	501.755280;421.808594;65.946030;,
+	501.755371;-421.808594;65.946060;,
+	501.922821;77.393288;-233.300323;,
+	501.922852;-77.393303;-233.300323;,
+	503.892334;286.018188;-147.585388;,
+	503.892426;-286.018188;-147.585342;,
+	505.390747;-367.187836;-62.473282;,
+	505.390747;367.187836;-62.473328;,
+	508.320313;339.680115;-92.201035;,
+	508.320404;-339.680145;-92.200989;,
+	508.424500;-189.821823;-196.070328;,
+	508.424500;189.821838;-196.070389;,
+	508.986786;310.392151;-120.663849;,
+	508.986816;-310.392120;-120.663788;,
+	512.937927;-401.592773;32.539509;,
+	512.937927;401.592865;32.539440;,
+	513.813171;-38.773827;-225.930603;,
+	513.813171;38.773815;-225.930603;,
+	514.333984;115.430550;-213.564514;,
+	514.334045;-115.430527;-213.564453;,
+	515.227661;-225.358704;-171.584122;,
+	515.227661;225.358734;-171.584213;,
+	517.629395;404.416473;99.999985;,
+	517.629395;404.416473;99.999985;,
+	517.629517;-404.416321;100.000015;,
+	517.629517;-404.416321;100.000015;,
+	521.710022;379.044495;-0.037797;,
+	521.710083;-379.044373;-0.037734;,
+	523.658142;0.000003;-217.263397;,
+	524.144653;250.736908;-145.139999;,
+	524.144714;-250.736908;-145.139954;,
+	524.559570;-152.743576;-191.752808;,
+	524.559631;152.743576;-191.752838;,
+	527.320923;-77.206192;-207.209106;,
+	527.320923;77.206200;-207.209137;,
+	528.089233;354.326599;-31.617249;,
+	528.089294;-354.326508;-31.617203;,
+	530.305359;385.289429;65.861038;,
+	530.305542;-385.289429;65.861053;,
+	530.315674;-275.333618;-118.283524;,
+	530.315674;275.333649;-118.283585;,
+	532.104919;-327.610687;-62.043976;,
+	532.104919;327.610718;-62.044022;,
+	532.485596;-189.116211;-167.954636;,
+	532.485596;189.116257;-167.954697;,
+	533.797180;299.075684;-91.176804;,
+	533.797241;-299.075684;-91.176743;,
+	538.238953;-38.678963;-199.648468;,
+	538.238953;38.678970;-199.648468;,
+	538.671448;-115.076164;-186.309967;,
+	538.671509;115.076187;-186.309998;,
+	540.444031;-363.733826;32.539505;,
+	540.444031;363.733948;32.539444;,
+	542.375305;214.488525;-141.749115;,
+	542.375366;-214.488510;-141.749054;,
+	544.579163;367.323303;99.999985;,
+	544.579163;367.323303;99.999985;,
+	544.579285;-367.323181;100.000015;,
+	544.579285;-367.323181;100.000015;,
+	547.045349;0.000004;-190.912231;,
+	547.729675;-152.158524;-163.311737;,
+	547.729675;152.158524;-163.311737;,
+	548.075745;-339.925873;0.220245;,
+	548.075745;339.925934;0.220185;,
+	549.563965;239.194992;-115.046928;,
+	549.564026;-239.194977;-115.046898;,
+	550.705688;-76.964920;-179.762817;,
+	550.705688;76.964920;-179.762848;,
+	553.244690;-314.051056;-30.929155;,
+	553.244690;314.051117;-30.929197;,
+	554.089844;263.156921;-88.001343;,
+	554.089905;-263.156891;-88.001282;,
+	556.007080;-286.302185;-60.758320;,
+	556.007080;286.302216;-60.758358;,
+	556.214661;346.851532;65.946030;,
+	556.214783;-346.851563;65.946060;,
+	558.513977;177.412872;-137.425797;,
+	558.514038;-177.412872;-137.425735;,
+	560.615845;-38.556816;-172.136627;,
+	560.615845;38.556824;-172.136658;,
+	560.902161;-114.625298;-157.672943;,
+	560.902161;114.625305;-157.672974;,
+	565.207336;324.028900;32.881836;,
+	565.207397;-324.028839;32.881882;,
+	566.656189;-202.117859;-110.966560;,
+	566.656189;202.117889;-110.966591;,
+	568.363708;0.000005;-163.460815;,
+	568.875793;328.440582;99.999985;,
+	568.875793;328.440582;99.999985;,
+	568.875916;-328.440552;100.000015;,
+	568.875916;-328.440552;100.000015;,
+	571.614624;299.054077;0.992815;,
+	571.614685;-299.054047;0.992841;,
+	571.953247;-76.658554;-151.059601;,
+	571.953247;76.658569;-151.059631;,
+	572.176697;226.190475;-84.077446;,
+	572.176819;-226.190475;-84.077415;,
+	572.498474;139.652954;-132.186707;,
+	572.498596;-139.652939;-132.186722;,
+	575.111023;249.553207;-56.896587;,
+	575.111084;-249.553192;-56.896564;,
+	575.508118;-272.133850;-29.556690;,
+	575.508118;272.133911;-29.556728;,
+	579.354065;306.686432;66.200623;,
+	579.354187;-306.686493;66.200653;,
+	580.841248;-38.401890;-143.496750;,
+	580.841248;38.401905;-143.496780;,
+	581.525208;164.247849;-106.058571;,
+	581.525269;-164.247803;-106.058525;,
+	584.274902;-101.354355;-126.052086;,
+	584.274902;101.354370;-126.052101;,
+	587.102173;-282.679382;33.564877;,
+	587.102173;282.679474;33.564838;,
+	587.532410;0.000007;-135.012985;,
+	587.985840;188.323669;-79.420784;,
+	587.985901;-188.323639;-79.420769;,
+	590.400879;287.957794;99.999985;,
+	590.400879;287.957794;99.999985;,
+	590.400940;-287.957703;100.000015;,
+	590.400940;-287.957703;100.000015;,
+	591.897583;-211.798615;-52.402565;,
+	591.897583;211.798615;-52.402596;,
+	592.205261;-256.639740;2.276134;,
+	592.205261;256.639740;2.276081;,
+	593.290222;-234.595016;-25.129721;,
+	593.290222;234.595093;-25.129740;,
+	593.797668;62.664871;-119.045593;,
+	593.797791;-62.664871;-119.045609;,
+	594.112793;-125.733315;-100.342110;,
+	594.112793;125.733337;-100.342125;,
+	599.608459;-264.994080;66.623550;,
+	599.608459;264.994141;66.623520;,
+	601.030334;-23.733664;-111.194260;,
+	601.030334;23.733692;-111.194260;,
+	601.454285;149.707153;-74.049873;,
+	601.454346;-149.707153;-74.049858;,
+	604.369446;86.725609;-93.839645;,
+	604.369507;-86.725601;-93.839645;,
+	606.017334;-239.895294;34.585049;,
+	606.017334;239.895340;34.585011;,
+	606.299011;-173.190521;-47.294456;,
+	606.299011;173.190567;-47.294472;,
+	608.553162;218.361526;7.137365;,
+	608.553284;-218.361496;7.137369;,
+	608.657837;-196.101471;-20.193489;,
+	608.657898;196.101593;-20.193520;,
+	609.049561;246.072037;99.999992;,
+	609.049561;246.072037;99.999992;,
+	609.049683;-246.071991;100.000008;,
+	609.049683;-246.071991;100.000008;,
+	612.255066;-47.377579;-86.576736;,
+	612.255066;47.377617;-86.576736;,
+	612.528503;-110.494667;-67.986092;,
+	612.528503;110.494675;-67.986107;,
+	613.853821;0.000009;-87.063934;,
+	616.876831;-221.982086;67.212654;,
+	616.876831;221.982132;67.212639;,
+	618.257202;-133.884598;-41.592781;,
+	618.257263;133.884598;-41.592796;,
+	620.840942;-200.937683;39.742104;,
+	620.840942;200.937759;39.742088;,
+	621.164246;-70.842331;-61.253597;,
+	621.164246;70.842346;-61.253605;,
+	621.548645;-156.809967;-14.768167;,
+	621.548645;156.810013;-14.768180;,
+	622.405579;179.187836;12.379433;,
+	622.405701;-179.187836;12.379433;,
+	624.403137;-23.654987;-62.094406;,
+	624.403137;23.655022;-62.094406;,
+	624.731140;-202.987396;100.000008;,
+	624.731140;-202.987396;100.000008;,
+	624.731140;202.987503;99.999992;,
+	624.731140;202.987503;99.999992;,
+	627.724121;-94.039101;-35.320568;,
+	627.724121;94.039146;-35.320576;,
+	630.109619;-182.414490;72.521843;,
+	630.109619;182.414551;72.521828;,
+	631.909912;-116.880234;-8.875773;,
+	631.909912;116.880287;-8.875783;,
+	632.621948;-47.141098;-36.376400;,
+	632.621948;47.141132;-36.376408;,
+	633.104919;-161.151627;45.147591;,
+	633.104919;161.151718;45.147575;,
+	633.705811;-139.279343;17.980810;,
+	633.705811;139.279373;17.980799;,
+	634.257263;0.000026;-36.728958;,
+	637.369019;-158.913910;100.000008;,
+	637.369019;-158.913910;100.000008;,
+	637.369019;158.913971;99.999992;,
+	637.369019;158.913971;99.999992;,
+	638.461731;-70.368263;-10.004636;,
+	638.461731;70.368301;-10.004642;,
+	641.354248;-137.606384;72.031471;,
+	641.354248;137.606415;72.031456;,
+	641.746094;-23.496155;-10.570510;,
+	641.746094;23.496195;-10.570512;,
+	641.882935;-93.247047;16.922459;,
+	641.882996;93.247078;16.922451;,
+	642.854492;-115.688820;44.302891;,
+	642.854492;115.688896;44.302883;,
+	646.805908;-46.741985;16.285311;,
+	646.805908;46.742027;16.285307;,
+	646.901733;-114.066170;100.000008;,
+	646.901733;-114.066170;100.000008;,
+	646.901733;114.066231;99.999992;,
+	646.901733;114.066231;99.999992;,
+	648.449646;0.000029;16.072540;,
+	649.381592;-69.646095;43.737385;,
+	649.381592;69.646156;43.737377;,
+	649.425964;-92.117531;71.679482;,
+	649.425964;92.117577;71.679466;,
+	652.653137;-23.254194;43.453918;,
+	652.653137;23.254269;43.453918;,
+	653.282715;-68.662758;100.000000;,
+	653.282715;-68.662758;100.000000;,
+	653.282715;68.662819;100.000000;,
+	653.282715;68.662819;100.000000;,
+	654.285156;-46.172955;71.467575;,
+	654.285156;46.173000;71.467575;,
+	655.907471;0.000031;71.396820;,
+	656.481018;-22.924770;100.000000;,
+	656.481018;-22.924770;100.000000;,
+	656.481018;22.924849;100.000000;,
+	656.481018;22.924849;100.000000;;
+
+	3330;		// 3330 faces
+	3;1060,1092,953;,
+	3;1117,1149,1092;,
+	3;1060,1117,1092;,
+	3;1082,1117,1060;,
+	3;1172,1206,1149;,
+	3;1117,1172,1149;,
+	3;1137,1172,1117;,
+	3;1082,1137,1117;,
+	3;1090,1137,1082;,
+	3;1223,1261,1206;,
+	3;1172,1223,1206;,
+	3;1190,1223,1172;,
+	3;1137,1190,1172;,
+	3;1147,1190,1137;,
+	3;1090,1147,1137;,
+	3;1113,1147,1090;,
+	3;1279,1314,1261;,
+	3;1223,1279,1261;,
+	3;1245,1279,1223;,
+	3;1190,1245,1223;,
+	3;1204,1245,1190;,
+	3;1147,1204,1190;,
+	3;1166,1204,1147;,
+	3;1113,1166,1147;,
+	3;1123,1166,1113;,
+	3;1334,1363,1314;,
+	3;1279,1334,1314;,
+	3;1299,1334,1279;,
+	3;1245,1299,1279;,
+	3;1260,1299,1245;,
+	3;1204,1260,1245;,
+	3;1221,1260,1204;,
+	3;1166,1221,1204;,
+	3;1180,1221,1166;,
+	3;1123,1180,1166;,
+	3;1143,1180,1123;,
+	3;1382,1414,1363;,
+	3;1334,1382,1363;,
+	3;1353,1382,1334;,
+	3;1299,1353,1334;,
+	3;1312,1353,1299;,
+	3;1260,1312,1299;,
+	3;1277,1312,1260;,
+	3;1221,1277,1260;,
+	3;1239,1277,1221;,
+	3;1180,1239,1221;,
+	3;1200,1239,1180;,
+	3;1143,1200,1180;,
+	3;1158,1200,1143;,
+	3;1432,1465,1414;,
+	3;1382,1432,1414;,
+	3;1394,1432,1382;,
+	3;1353,1394,1382;,
+	3;1364,1394,1353;,
+	3;1312,1364,1353;,
+	3;1329,1364,1312;,
+	3;1277,1329,1312;,
+	3;1296,1329,1277;,
+	3;1239,1296,1277;,
+	3;1253,1296,1239;,
+	3;1200,1253,1239;,
+	3;1213,1253,1200;,
+	3;1158,1213,1200;,
+	3;1176,1213,1158;,
+	3;1479,1506,1465;,
+	3;1432,1479,1465;,
+	3;1446,1479,1432;,
+	3;1394,1446,1432;,
+	3;1418,1446,1394;,
+	3;1364,1418,1394;,
+	3;1385,1418,1364;,
+	3;1329,1385,1364;,
+	3;1348,1385,1329;,
+	3;1296,1348,1329;,
+	3;1310,1348,1296;,
+	3;1253,1310,1296;,
+	3;1268,1310,1253;,
+	3;1213,1268,1253;,
+	3;1235,1268,1213;,
+	3;1176,1235,1213;,
+	3;1192,1235,1176;,
+	3;909,1060,952;,
+	3;921,1082,1060;,
+	3;909,921,1060;,
+	3;860,921,909;,
+	3;939,1090,1082;,
+	3;921,939,1082;,
+	3;878,939,921;,
+	3;860,878,921;,
+	3;819,878,860;,
+	3;1054,1113,1090;,
+	3;939,1054,1090;,
+	3;894,1054,939;,
+	3;878,894,939;,
+	3;835,894,878;,
+	3;819,835,878;,
+	3;777,835,819;,
+	3;1064,1123,1113;,
+	3;1054,1064,1113;,
+	3;913,1064,1054;,
+	3;894,913,1054;,
+	3;849,913,894;,
+	3;835,849,894;,
+	3;790,849,835;,
+	3;777,790,835;,
+	3;735,790,777;,
+	3;1084,1143,1123;,
+	3;1064,1084,1123;,
+	3;931,1084,1064;,
+	3;913,931,1064;,
+	3;868,931,913;,
+	3;849,868,913;,
+	3;803,868,849;,
+	3;790,803,849;,
+	3;748,803,790;,
+	3;735,748,790;,
+	3;694,748,735;,
+	3;1093,1158,1143;,
+	3;1084,1093,1143;,
+	3;941,1093,1084;,
+	3;931,941,1084;,
+	3;882,941,931;,
+	3;868,882,931;,
+	3;825,882,868;,
+	3;803,825,868;,
+	3;764,825,803;,
+	3;748,764,803;,
+	3;708,764,748;,
+	3;694,708,748;,
+	3;659,708,694;,
+	3;1115,1176,1158;,
+	3;1093,1115,1158;,
+	3;1056,1115,1093;,
+	3;941,1056,1093;,
+	3;900,1056,941;,
+	3;882,900,941;,
+	3;841,900,882;,
+	3;825,841,882;,
+	3;783,841,825;,
+	3;764,783,825;,
+	3;722,783,764;,
+	3;708,722,764;,
+	3;671,722,708;,
+	3;659,671,708;,
+	3;615,671,659;,
+	3;1125,1192,1176;,
+	3;1115,1125,1176;,
+	3;1068,1125,1115;,
+	3;1056,1068,1115;,
+	3;915,1068,1056;,
+	3;900,915,1056;,
+	3;853,915,900;,
+	3;841,853,900;,
+	3;797,853,841;,
+	3;783,797,841;,
+	3;744,797,783;,
+	3;722,744,783;,
+	3;683,744,722;,
+	3;671,683,722;,
+	3;629,683,671;,
+	3;615,629,671;,
+	3;576,629,615;,
+	3;910,908,951;,
+	3;857,859,907;,
+	3;910,857,906;,
+	3;861,857,910;,
+	3;815,819,860;,
+	3;857,814,858;,
+	3;816,813,857;,
+	3;861,816,857;,
+	3;820,816,861;,
+	3;775,777,819;,
+	3;815,775,819;,
+	3;772,774,812;,
+	3;816,772,811;,
+	3;776,772,816;,
+	3;820,776,816;,
+	3;778,776,820;,
+	3;733,735,777;,
+	3;775,733,777;,
+	3;731,733,775;,
+	3;772,730,773;,
+	3;726,729,772;,
+	3;776,726,772;,
+	3;732,726,776;,
+	3;778,732,776;,
+	3;734,732,778;,
+	3;691,694,735;,
+	3;733,691,735;,
+	3;689,691,733;,
+	3;731,689,733;,
+	3;685,688,728;,
+	3;726,685,727;,
+	3;686,685,726;,
+	3;732,686,726;,
+	3;690,686,732;,
+	3;734,690,732;,
+	3;695,690,734;,
+	3;649,659,694;,
+	3;691,649,694;,
+	3;646,649,691;,
+	3;689,646,691;,
+	3;644,646,689;,
+	3;685,643,687;,
+	3;639,642,685;,
+	3;686,639,685;,
+	3;645,639,686;,
+	3;690,645,686;,
+	3;650,645,690;,
+	3;695,650,690;,
+	3;660,650,695;,
+	3;609,615,659;,
+	3;649,609,659;,
+	3;606,609,649;,
+	3;646,606,649;,
+	3;603,606,646;,
+	3;644,603,646;,
+	3;600,602,641;,
+	3;639,600,640;,
+	3;604,600,639;,
+	3;645,604,639;,
+	3;605,604,645;,
+	3;650,605,645;,
+	3;610,605,650;,
+	3;660,610,650;,
+	3;616,610,660;,
+	3;569,576,615;,
+	3;609,569,615;,
+	3;563,569,609;,
+	3;606,563,609;,
+	3;556,563,606;,
+	3;603,556,606;,
+	3;555,556,603;,
+	3;600,554,601;,
+	3;550,553,600;,
+	3;604,550,600;,
+	3;557,550,604;,
+	3;605,557,604;,
+	3;562,557,605;,
+	3;610,562,605;,
+	3;568,562,610;,
+	3;616,568,610;,
+	3;577,568,616;,
+	3;1061,910,950;,
+	3;922,861,910;,
+	3;1061,922,910;,
+	3;1083,922,1061;,
+	3;879,820,861;,
+	3;922,879,861;,
+	3;940,879,922;,
+	3;1083,940,922;,
+	3;1091,940,1083;,
+	3;836,778,820;,
+	3;879,836,820;,
+	3;895,836,879;,
+	3;940,895,879;,
+	3;1055,895,940;,
+	3;1091,1055,940;,
+	3;1114,1055,1091;,
+	3;789,734,778;,
+	3;836,789,778;,
+	3;850,789,836;,
+	3;895,850,836;,
+	3;914,850,895;,
+	3;1055,914,895;,
+	3;1065,914,1055;,
+	3;1114,1065,1055;,
+	3;1124,1065,1114;,
+	3;749,695,734;,
+	3;789,749,734;,
+	3;804,749,789;,
+	3;850,804,789;,
+	3;869,804,850;,
+	3;914,869,850;,
+	3;932,869,914;,
+	3;1065,932,914;,
+	3;1085,932,1065;,
+	3;1124,1085,1065;,
+	3;1144,1085,1124;,
+	3;709,660,695;,
+	3;749,709,695;,
+	3;765,709,749;,
+	3;804,765,749;,
+	3;826,765,804;,
+	3;869,826,804;,
+	3;883,826,869;,
+	3;932,883,869;,
+	3;942,883,932;,
+	3;1085,942,932;,
+	3;1094,942,1085;,
+	3;1144,1094,1085;,
+	3;1159,1094,1144;,
+	3;672,616,660;,
+	3;709,672,660;,
+	3;723,672,709;,
+	3;765,723,709;,
+	3;784,723,765;,
+	3;826,784,765;,
+	3;842,784,826;,
+	3;883,842,826;,
+	3;901,842,883;,
+	3;942,901,883;,
+	3;1057,901,942;,
+	3;1094,1057,942;,
+	3;1116,1057,1094;,
+	3;1159,1116,1094;,
+	3;1177,1116,1159;,
+	3;630,577,616;,
+	3;672,630,616;,
+	3;684,630,672;,
+	3;723,684,672;,
+	3;745,684,723;,
+	3;784,745,723;,
+	3;798,745,784;,
+	3;842,798,784;,
+	3;854,798,842;,
+	3;901,854,842;,
+	3;916,854,901;,
+	3;1057,916,901;,
+	3;1069,916,1057;,
+	3;1116,1069,1057;,
+	3;1126,1069,1116;,
+	3;1177,1126,1116;,
+	3;1193,1126,1177;,
+	3;1092,1061,949;,
+	3;1118,1083,1061;,
+	3;1092,1118,1061;,
+	3;1149,1118,1092;,
+	3;1138,1091,1083;,
+	3;1118,1138,1083;,
+	3;1173,1138,1118;,
+	3;1149,1173,1118;,
+	3;1206,1173,1149;,
+	3;1148,1114,1091;,
+	3;1138,1148,1091;,
+	3;1191,1148,1138;,
+	3;1173,1191,1138;,
+	3;1224,1191,1173;,
+	3;1206,1224,1173;,
+	3;1261,1224,1206;,
+	3;1167,1124,1114;,
+	3;1148,1167,1114;,
+	3;1205,1167,1148;,
+	3;1191,1205,1148;,
+	3;1246,1205,1191;,
+	3;1224,1246,1191;,
+	3;1278,1246,1224;,
+	3;1261,1278,1224;,
+	3;1314,1278,1261;,
+	3;1181,1144,1124;,
+	3;1167,1181,1124;,
+	3;1222,1181,1167;,
+	3;1205,1222,1167;,
+	3;1259,1222,1205;,
+	3;1246,1259,1205;,
+	3;1298,1259,1246;,
+	3;1278,1298,1246;,
+	3;1333,1298,1278;,
+	3;1314,1333,1278;,
+	3;1363,1333,1314;,
+	3;1201,1159,1144;,
+	3;1181,1201,1144;,
+	3;1240,1201,1181;,
+	3;1222,1240,1181;,
+	3;1276,1240,1222;,
+	3;1259,1276,1222;,
+	3;1313,1276,1259;,
+	3;1298,1313,1259;,
+	3;1354,1313,1298;,
+	3;1333,1354,1298;,
+	3;1383,1354,1333;,
+	3;1363,1383,1333;,
+	3;1414,1383,1363;,
+	3;1214,1177,1159;,
+	3;1201,1214,1159;,
+	3;1254,1214,1201;,
+	3;1240,1254,1201;,
+	3;1297,1254,1240;,
+	3;1276,1297,1240;,
+	3;1330,1297,1276;,
+	3;1313,1330,1276;,
+	3;1365,1330,1313;,
+	3;1354,1365,1313;,
+	3;1395,1365,1354;,
+	3;1383,1395,1354;,
+	3;1431,1395,1383;,
+	3;1414,1431,1383;,
+	3;1465,1431,1414;,
+	3;1236,1193,1177;,
+	3;1214,1236,1177;,
+	3;1269,1236,1214;,
+	3;1254,1269,1214;,
+	3;1311,1269,1254;,
+	3;1297,1311,1254;,
+	3;1347,1311,1297;,
+	3;1330,1347,1297;,
+	3;1384,1347,1330;,
+	3;1365,1384,1330;,
+	3;1417,1384,1365;,
+	3;1395,1417,1365;,
+	3;1445,1417,1395;,
+	3;1431,1445,1395;,
+	3;1478,1445,1431;,
+	3;1465,1478,1431;,
+	3;1506,1478,1465;,
+	3;1637,1599,1642;,
+	3;1597,1560,1599;,
+	3;1637,1597,1599;,
+	3;1628,1597,1637;,
+	3;1548,1513,1560;,
+	3;1597,1548,1560;,
+	3;1586,1548,1597;,
+	3;1628,1586,1597;,
+	3;1621,1586,1628;,
+	3;1502,1466,1513;,
+	3;1548,1502,1513;,
+	3;1539,1502,1548;,
+	3;1586,1539,1548;,
+	3;1577,1539,1586;,
+	3;1621,1577,1586;,
+	3;1608,1577,1621;,
+	3;1449,1412,1466;,
+	3;1502,1449,1466;,
+	3;1489,1449,1502;,
+	3;1539,1489,1502;,
+	3;1528,1489,1539;,
+	3;1577,1528,1539;,
+	3;1563,1528,1577;,
+	3;1608,1563,1577;,
+	3;1590,1563,1608;,
+	3;1398,1357,1412;,
+	3;1449,1398,1412;,
+	3;1441,1398,1449;,
+	3;1489,1441,1449;,
+	3;1476,1441,1489;,
+	3;1528,1476,1489;,
+	3;1515,1476,1528;,
+	3;1563,1515,1528;,
+	3;1546,1515,1563;,
+	3;1590,1546,1563;,
+	3;1575,1546,1590;,
+	3;1343,1304,1357;,
+	3;1398,1343,1357;,
+	3;1388,1343,1398;,
+	3;1441,1388,1398;,
+	3;1423,1388,1441;,
+	3;1476,1423,1441;,
+	3;1463,1423,1476;,
+	3;1515,1463,1476;,
+	3;1493,1463,1515;,
+	3;1546,1493,1515;,
+	3;1522,1493,1546;,
+	3;1575,1522,1546;,
+	3;1551,1522,1575;,
+	3;1288,1247,1304;,
+	3;1343,1288,1304;,
+	3;1327,1288,1343;,
+	3;1388,1327,1343;,
+	3;1366,1327,1388;,
+	3;1423,1366,1388;,
+	3;1406,1366,1423;,
+	3;1463,1406,1423;,
+	3;1439,1406,1463;,
+	3;1493,1439,1463;,
+	3;1472,1439,1493;,
+	3;1522,1472,1493;,
+	3;1500,1472,1522;,
+	3;1551,1500,1522;,
+	3;1529,1500,1551;,
+	3;1235,1192,1247;,
+	3;1288,1235,1247;,
+	3;1268,1235,1288;,
+	3;1327,1268,1288;,
+	3;1310,1268,1327;,
+	3;1366,1310,1327;,
+	3;1348,1310,1366;,
+	3;1406,1348,1366;,
+	3;1385,1348,1406;,
+	3;1439,1385,1406;,
+	3;1418,1385,1439;,
+	3;1472,1418,1439;,
+	3;1446,1418,1472;,
+	3;1500,1446,1472;,
+	3;1479,1446,1500;,
+	3;1529,1479,1500;,
+	3;1506,1479,1529;,
+	3;754,698,718;,
+	3;736,673,698;,
+	3;754,736,698;,
+	3;793,736,754;,
+	3;716,663,673;,
+	3;736,716,673;,
+	3;779,716,736;,
+	3;793,779,736;,
+	3;837,779,793;,
+	3;700,633,663;,
+	3;716,700,663;,
+	3;756,700,716;,
+	3;779,756,716;,
+	3;821,756,779;,
+	3;837,821,779;,
+	3;880,821,837;,
+	3;679,623,633;,
+	3;700,679,633;,
+	3;740,679,700;,
+	3;756,740,700;,
+	3;799,740,756;,
+	3;821,799,756;,
+	3;862,799,821;,
+	3;880,862,821;,
+	3;925,862,880;,
+	3;665,613,623;,
+	3;679,665,623;,
+	3;720,665,679;,
+	3;740,720,679;,
+	3;785,720,740;,
+	3;799,785,740;,
+	3;845,785,799;,
+	3;862,845,799;,
+	3;904,845,862;,
+	3;925,904,862;,
+	3;1062,904,925;,
+	3;657,594,613;,
+	3;665,657,613;,
+	3;710,657,665;,
+	3;720,710,665;,
+	3;766,710,720;,
+	3;785,766,720;,
+	3;831,766,785;,
+	3;845,831,785;,
+	3;884,831,845;,
+	3;904,884,845;,
+	3;943,884,904;,
+	3;1062,943,904;,
+	3;1105,943,1062;,
+	3;635,582,594;,
+	3;657,635,594;,
+	3;696,635,657;,
+	3;710,696,657;,
+	3;752,696,710;,
+	3;766,752,710;,
+	3;807,752,766;,
+	3;831,807,766;,
+	3;872,807,831;,
+	3;884,872,831;,
+	3;935,872,884;,
+	3;943,935,884;,
+	3;1086,935,943;,
+	3;1105,1086,943;,
+	3;1145,1086,1105;,
+	3;629,576,582;,
+	3;635,629,582;,
+	3;683,629,635;,
+	3;696,683,635;,
+	3;744,683,696;,
+	3;752,744,696;,
+	3;797,744,752;,
+	3;807,797,752;,
+	3;853,797,807;,
+	3;872,853,807;,
+	3;915,853,872;,
+	3;935,915,872;,
+	3;1068,915,935;,
+	3;1086,1068,935;,
+	3;1125,1068,1086;,
+	3;1145,1125,1086;,
+	3;1192,1125,1145;,
+	3;205,202,167;,
+	3;238,246,202;,
+	3;205,238,202;,
+	3;245,238,205;,
+	3;277,281,246;,
+	3;238,277,246;,
+	3;280,277,238;,
+	3;245,280,238;,
+	3;282,279,244;,
+	3;316,328,281;,
+	3;277,316,281;,
+	3;311,316,277;,
+	3;280,311,277;,
+	3;321,311,280;,
+	3;282,320,278;,
+	3;329,319,282;,
+	3;367,369,328;,
+	3;316,367,328;,
+	3;354,367,316;,
+	3;311,354,316;,
+	3;357,354,311;,
+	3;321,357,311;,
+	3;366,356,318;,
+	3;329,366,317;,
+	3;368,366,329;,
+	3;414,419,369;,
+	3;367,414,369;,
+	3;403,414,367;,
+	3;354,403,367;,
+	3;402,403,354;,
+	3;357,402,354;,
+	3;408,402,357;,
+	3;366,407,355;,
+	3;413,406,366;,
+	3;368,413,366;,
+	3;420,413,368;,
+	3;462,468,419;,
+	3;414,462,419;,
+	3;458,462,414;,
+	3;403,458,414;,
+	3;451,458,403;,
+	3;402,451,403;,
+	3;454,451,402;,
+	3;408,454,402;,
+	3;457,453,405;,
+	3;413,457,404;,
+	3;461,457,413;,
+	3;420,461,413;,
+	3;467,461,420;,
+	3;517,523,468;,
+	3;462,517,468;,
+	3;510,517,462;,
+	3;458,510,462;,
+	3;498,510,458;,
+	3;451,498,458;,
+	3;497,498,451;,
+	3;454,497,451;,
+	3;503,497,454;,
+	3;457,502,452;,
+	3;511,501,457;,
+	3;461,511,457;,
+	3;516,511,461;,
+	3;467,516,461;,
+	3;522,516,467;,
+	3;568,577,523;,
+	3;517,568,523;,
+	3;562,568,517;,
+	3;510,562,517;,
+	3;557,562,510;,
+	3;498,557,510;,
+	3;550,557,498;,
+	3;497,550,498;,
+	3;552,550,497;,
+	3;503,551,497;,
+	3;556,555,500;,
+	3;511,556,499;,
+	3;563,556,511;,
+	3;516,563,511;,
+	3;569,563,516;,
+	3;522,569,516;,
+	3;576,569,522;,
+	3;699,755,719;,
+	3;737,794,755;,
+	3;699,737,755;,
+	3;674,737,699;,
+	3;780,838,794;,
+	3;737,780,794;,
+	3;717,780,737;,
+	3;674,717,737;,
+	3;664,717,674;,
+	3;822,881,838;,
+	3;780,822,838;,
+	3;757,822,780;,
+	3;717,757,780;,
+	3;701,757,717;,
+	3;664,701,717;,
+	3;634,701,664;,
+	3;863,926,881;,
+	3;822,863,881;,
+	3;800,863,822;,
+	3;757,800,822;,
+	3;741,800,757;,
+	3;701,741,757;,
+	3;680,741,701;,
+	3;634,680,701;,
+	3;624,680,634;,
+	3;905,1063,926;,
+	3;863,905,926;,
+	3;846,905,863;,
+	3;800,846,863;,
+	3;786,846,800;,
+	3;741,786,800;,
+	3;721,786,741;,
+	3;680,721,741;,
+	3;666,721,680;,
+	3;624,666,680;,
+	3;614,666,624;,
+	3;944,1106,1063;,
+	3;905,944,1063;,
+	3;885,944,905;,
+	3;846,885,905;,
+	3;832,885,846;,
+	3;786,832,846;,
+	3;767,832,786;,
+	3;721,767,786;,
+	3;711,767,721;,
+	3;666,711,721;,
+	3;658,711,666;,
+	3;614,658,666;,
+	3;595,658,614;,
+	3;1087,1146,1106;,
+	3;944,1087,1106;,
+	3;936,1087,944;,
+	3;885,936,944;,
+	3;873,936,885;,
+	3;832,873,885;,
+	3;808,873,832;,
+	3;767,808,832;,
+	3;753,808,767;,
+	3;711,753,767;,
+	3;697,753,711;,
+	3;658,697,711;,
+	3;636,697,658;,
+	3;595,636,658;,
+	3;583,636,595;,
+	3;1126,1193,1146;,
+	3;1087,1126,1146;,
+	3;1069,1126,1087;,
+	3;936,1069,1087;,
+	3;916,1069,936;,
+	3;873,916,936;,
+	3;854,916,873;,
+	3;808,854,873;,
+	3;798,854,808;,
+	3;753,798,808;,
+	3;745,798,753;,
+	3;697,745,753;,
+	3;684,745,697;,
+	3;636,684,697;,
+	3;630,684,636;,
+	3;583,630,636;,
+	3;577,630,583;,
+	3;1600,1636,1643;,
+	3;1598,1629,1636;,
+	3;1600,1598,1636;,
+	3;1561,1598,1600;,
+	3;1587,1622,1629;,
+	3;1598,1587,1629;,
+	3;1549,1587,1598;,
+	3;1561,1549,1598;,
+	3;1514,1549,1561;,
+	3;1576,1607,1622;,
+	3;1587,1576,1622;,
+	3;1540,1576,1587;,
+	3;1549,1540,1587;,
+	3;1503,1540,1549;,
+	3;1514,1503,1549;,
+	3;1467,1503,1514;,
+	3;1562,1589,1607;,
+	3;1576,1562,1607;,
+	3;1527,1562,1576;,
+	3;1540,1527,1576;,
+	3;1488,1527,1540;,
+	3;1503,1488,1540;,
+	3;1450,1488,1503;,
+	3;1467,1450,1503;,
+	3;1413,1450,1467;,
+	3;1545,1574,1589;,
+	3;1562,1545,1589;,
+	3;1516,1545,1562;,
+	3;1527,1516,1562;,
+	3;1477,1516,1527;,
+	3;1488,1477,1527;,
+	3;1442,1477,1488;,
+	3;1450,1442,1488;,
+	3;1399,1442,1450;,
+	3;1413,1399,1450;,
+	3;1358,1399,1413;,
+	3;1521,1550,1574;,
+	3;1545,1521,1574;,
+	3;1492,1521,1545;,
+	3;1516,1492,1545;,
+	3;1464,1492,1516;,
+	3;1477,1464,1516;,
+	3;1424,1464,1477;,
+	3;1442,1424,1477;,
+	3;1389,1424,1442;,
+	3;1399,1389,1442;,
+	3;1344,1389,1399;,
+	3;1358,1344,1399;,
+	3;1305,1344,1358;,
+	3;1501,1530,1550;,
+	3;1521,1501,1550;,
+	3;1473,1501,1521;,
+	3;1492,1473,1521;,
+	3;1440,1473,1492;,
+	3;1464,1440,1492;,
+	3;1407,1440,1464;,
+	3;1424,1407,1464;,
+	3;1367,1407,1424;,
+	3;1389,1367,1424;,
+	3;1328,1367,1389;,
+	3;1344,1328,1389;,
+	3;1289,1328,1344;,
+	3;1305,1289,1344;,
+	3;1248,1289,1305;,
+	3;1478,1506,1530;,
+	3;1501,1478,1530;,
+	3;1445,1478,1501;,
+	3;1473,1445,1501;,
+	3;1417,1445,1473;,
+	3;1440,1417,1473;,
+	3;1384,1417,1440;,
+	3;1407,1384,1440;,
+	3;1347,1384,1407;,
+	3;1367,1347,1407;,
+	3;1311,1347,1367;,
+	3;1328,1311,1367;,
+	3;1269,1311,1328;,
+	3;1289,1269,1328;,
+	3;1236,1269,1289;,
+	3;1248,1236,1289;,
+	3;1193,1236,1248;,
+	3;1547,1530,1506;,
+	3;1572,1550,1530;,
+	3;1547,1572,1530;,
+	3;1588,1572,1547;,
+	3;1591,1574,1550;,
+	3;1572,1591,1550;,
+	3;1617,1591,1572;,
+	3;1588,1617,1572;,
+	3;1627,1617,1588;,
+	3;1619,1589,1574;,
+	3;1591,1619,1574;,
+	3;1634,1619,1591;,
+	3;1617,1634,1591;,
+	3;1654,1634,1617;,
+	3;1627,1654,1617;,
+	3;1668,1654,1627;,
+	3;1630,1607,1589;,
+	3;1619,1630,1589;,
+	3;1657,1630,1619;,
+	3;1634,1657,1619;,
+	3;1671,1657,1634;,
+	3;1654,1671,1634;,
+	3;1687,1671,1654;,
+	3;1668,1687,1654;,
+	3;1701,1687,1668;,
+	3;1649,1622,1607;,
+	3;1630,1649,1607;,
+	3;1670,1649,1630;,
+	3;1657,1670,1630;,
+	3;1689,1670,1657;,
+	3;1671,1689,1657;,
+	3;1709,1689,1671;,
+	3;1687,1709,1671;,
+	3;1722,1709,1687;,
+	3;1701,1722,1687;,
+	3;1734,1722,1701;,
+	3;1660,1629,1622;,
+	3;1649,1660,1622;,
+	3;1684,1660,1649;,
+	3;1670,1684,1649;,
+	3;1703,1684,1670;,
+	3;1689,1703,1670;,
+	3;1725,1703,1689;,
+	3;1709,1725,1689;,
+	3;1739,1725,1709;,
+	3;1722,1739,1709;,
+	3;1753,1739,1722;,
+	3;1734,1753,1722;,
+	3;1765,1753,1734;,
+	3;1664,1636,1629;,
+	3;1660,1664,1629;,
+	3;1695,1664,1660;,
+	3;1684,1695,1660;,
+	3;1716,1695,1684;,
+	3;1703,1716,1684;,
+	3;1737,1716,1703;,
+	3;1725,1737,1703;,
+	3;1755,1737,1725;,
+	3;1739,1755,1725;,
+	3;1772,1755,1739;,
+	3;1753,1772,1739;,
+	3;1784,1772,1753;,
+	3;1765,1784,1753;,
+	3;1792,1784,1765;,
+	3;1673,1643,1636;,
+	3;1664,1673,1636;,
+	3;1700,1673,1664;,
+	3;1695,1700,1664;,
+	3;1726,1700,1695;,
+	3;1716,1726,1695;,
+	3;1749,1726,1716;,
+	3;1737,1749,1716;,
+	3;1766,1749,1737;,
+	3;1755,1766,1737;,
+	3;1786,1766,1755;,
+	3;1772,1786,1755;,
+	3;1799,1786,1772;,
+	3;1784,1799,1772;,
+	3;1811,1799,1784;,
+	3;1792,1811,1784;,
+	3;1819,1811,1792;,
+	3;1529,1547,1506;,
+	3;1573,1588,1547;,
+	3;1529,1573,1547;,
+	3;1551,1573,1529;,
+	3;1618,1627,1588;,
+	3;1573,1618,1588;,
+	3;1592,1618,1573;,
+	3;1551,1592,1573;,
+	3;1575,1592,1551;,
+	3;1655,1668,1627;,
+	3;1618,1655,1627;,
+	3;1635,1655,1618;,
+	3;1592,1635,1618;,
+	3;1620,1635,1592;,
+	3;1575,1620,1592;,
+	3;1590,1620,1575;,
+	3;1688,1701,1668;,
+	3;1655,1688,1668;,
+	3;1672,1688,1655;,
+	3;1635,1672,1655;,
+	3;1656,1672,1635;,
+	3;1620,1656,1635;,
+	3;1631,1656,1620;,
+	3;1590,1631,1620;,
+	3;1608,1631,1590;,
+	3;1723,1734,1701;,
+	3;1688,1723,1701;,
+	3;1708,1723,1688;,
+	3;1672,1708,1688;,
+	3;1690,1708,1672;,
+	3;1656,1690,1672;,
+	3;1669,1690,1656;,
+	3;1631,1669,1656;,
+	3;1648,1669,1631;,
+	3;1608,1648,1631;,
+	3;1621,1648,1608;,
+	3;1754,1765,1734;,
+	3;1723,1754,1734;,
+	3;1740,1754,1723;,
+	3;1708,1740,1723;,
+	3;1724,1740,1708;,
+	3;1690,1724,1708;,
+	3;1702,1724,1690;,
+	3;1669,1702,1690;,
+	3;1683,1702,1669;,
+	3;1648,1683,1669;,
+	3;1661,1683,1648;,
+	3;1621,1661,1648;,
+	3;1628,1661,1621;,
+	3;1785,1792,1765;,
+	3;1754,1785,1765;,
+	3;1773,1785,1754;,
+	3;1740,1773,1754;,
+	3;1756,1773,1740;,
+	3;1724,1756,1740;,
+	3;1738,1756,1724;,
+	3;1702,1738,1724;,
+	3;1717,1738,1702;,
+	3;1683,1717,1702;,
+	3;1696,1717,1683;,
+	3;1661,1696,1683;,
+	3;1665,1696,1661;,
+	3;1628,1665,1661;,
+	3;1637,1665,1628;,
+	3;1812,1819,1792;,
+	3;1785,1812,1792;,
+	3;1800,1812,1785;,
+	3;1773,1800,1785;,
+	3;1787,1800,1773;,
+	3;1756,1787,1773;,
+	3;1767,1787,1756;,
+	3;1738,1767,1756;,
+	3;1750,1767,1738;,
+	3;1717,1750,1738;,
+	3;1727,1750,1717;,
+	3;1696,1727,1717;,
+	3;1699,1727,1696;,
+	3;1665,1699,1696;,
+	3;1674,1699,1665;,
+	3;1637,1674,1665;,
+	3;1642,1674,1637;,
+	3;1202,1247,1192;,
+	3;1262,1304,1247;,
+	3;1202,1262,1247;,
+	3;1215,1262,1202;,
+	3;1317,1357,1304;,
+	3;1262,1317,1304;,
+	3;1272,1317,1262;,
+	3;1215,1272,1262;,
+	3;1233,1272,1215;,
+	3;1372,1412,1357;,
+	3;1317,1372,1357;,
+	3;1331,1372,1317;,
+	3;1272,1331,1317;,
+	3;1284,1331,1272;,
+	3;1233,1284,1272;,
+	3;1243,1284,1233;,
+	3;1425,1466,1412;,
+	3;1372,1425,1412;,
+	3;1386,1425,1372;,
+	3;1331,1386,1372;,
+	3;1339,1386,1331;,
+	3;1284,1339,1331;,
+	3;1300,1339,1284;,
+	3;1243,1300,1284;,
+	3;1251,1300,1243;,
+	3;1474,1513,1466;,
+	3;1425,1474,1466;,
+	3;1435,1474,1425;,
+	3;1386,1435,1425;,
+	3;1392,1435,1386;,
+	3;1339,1392,1386;,
+	3;1355,1392,1339;,
+	3;1300,1355,1339;,
+	3;1306,1355,1300;,
+	3;1251,1306,1300;,
+	3;1264,1306,1251;,
+	3;1520,1560,1513;,
+	3;1474,1520,1513;,
+	3;1486,1520,1474;,
+	3;1435,1486,1474;,
+	3;1443,1486,1435;,
+	3;1392,1443,1435;,
+	3;1408,1443,1392;,
+	3;1355,1408,1392;,
+	3;1361,1408,1355;,
+	3;1306,1361,1355;,
+	3;1321,1361,1306;,
+	3;1264,1321,1306;,
+	3;1270,1321,1264;,
+	3;1567,1599,1560;,
+	3;1520,1567,1560;,
+	3;1531,1567,1520;,
+	3;1486,1531,1520;,
+	3;1494,1531,1486;,
+	3;1443,1494,1486;,
+	3;1453,1494,1443;,
+	3;1408,1453,1443;,
+	3;1415,1453,1408;,
+	3;1361,1415,1408;,
+	3;1374,1415,1361;,
+	3;1321,1374,1361;,
+	3;1325,1374,1321;,
+	3;1270,1325,1321;,
+	3;1280,1325,1270;,
+	3;1613,1642,1599;,
+	3;1567,1613,1599;,
+	3;1580,1613,1567;,
+	3;1531,1580,1567;,
+	3;1541,1580,1531;,
+	3;1494,1541,1531;,
+	3;1504,1541,1494;,
+	3;1453,1504,1494;,
+	3;1468,1504,1453;,
+	3;1415,1468,1453;,
+	3;1421,1468,1415;,
+	3;1374,1421,1415;,
+	3;1380,1421,1374;,
+	3;1325,1380,1374;,
+	3;1337,1380,1325;,
+	3;1280,1337,1325;,
+	3;1294,1337,1280;,
+	3;1145,1202,1192;,
+	3;1160,1215,1202;,
+	3;1145,1160,1202;,
+	3;1105,1160,1145;,
+	3;1174,1233,1215;,
+	3;1160,1174,1215;,
+	3;1119,1174,1160;,
+	3;1105,1119,1160;,
+	3;1062,1119,1105;,
+	3;1188,1243,1233;,
+	3;1174,1188,1233;,
+	3;1131,1188,1174;,
+	3;1119,1131,1174;,
+	3;1074,1131,1119;,
+	3;1062,1074,1119;,
+	3;925,1074,1062;,
+	3;1198,1251,1243;,
+	3;1188,1198,1243;,
+	3;1141,1198,1188;,
+	3;1131,1141,1188;,
+	3;1088,1141,1131;,
+	3;1074,1088,1131;,
+	3;937,1088,1074;,
+	3;925,937,1074;,
+	3;880,937,925;,
+	3;1207,1264,1251;,
+	3;1198,1207,1251;,
+	3;1150,1207,1198;,
+	3;1141,1150,1198;,
+	3;1095,1150,1141;,
+	3;1088,1095,1141;,
+	3;945,1095,1088;,
+	3;937,945,1088;,
+	3;890,945,937;,
+	3;880,890,937;,
+	3;837,890,880;,
+	3;1217,1270,1264;,
+	3;1207,1217,1264;,
+	3;1164,1217,1207;,
+	3;1150,1164,1207;,
+	3;1111,1164,1150;,
+	3;1095,1111,1150;,
+	3;1058,1111,1095;,
+	3;945,1058,1095;,
+	3;911,1058,945;,
+	3;890,911,945;,
+	3;851,911,890;,
+	3;837,851,890;,
+	3;793,851,837;,
+	3;1227,1280,1270;,
+	3;1217,1227,1270;,
+	3;1178,1227,1217;,
+	3;1164,1178,1217;,
+	3;1121,1178,1164;,
+	3;1111,1121,1164;,
+	3;1066,1121,1111;,
+	3;1058,1066,1111;,
+	3;917,1066,1058;,
+	3;911,917,1058;,
+	3;864,917,911;,
+	3;851,864,911;,
+	3;805,864,851;,
+	3;793,805,851;,
+	3;754,805,793;,
+	3;1237,1294,1280;,
+	3;1227,1237,1280;,
+	3;1182,1237,1227;,
+	3;1178,1182,1227;,
+	3;1135,1182,1178;,
+	3;1121,1135,1178;,
+	3;1080,1135,1121;,
+	3;1066,1080,1121;,
+	3;933,1080,1066;,
+	3;917,933,1066;,
+	3;876,933,917;,
+	3;864,876,917;,
+	3;823,876,864;,
+	3;805,823,864;,
+	3;768,823,805;,
+	3;754,768,805;,
+	3;718,768,754;,
+	3;536,582,576;,
+	3;546,594,582;,
+	3;536,546,582;,
+	3;495,546,536;,
+	3;560,613,594;,
+	3;546,560,594;,
+	3;514,560,546;,
+	3;495,514,546;,
+	3;465,514,495;,
+	3;574,623,613;,
+	3;560,574,613;,
+	3;524,574,560;,
+	3;514,524,560;,
+	3;475,524,514;,
+	3;465,475,514;,
+	3;435,475,465;,
+	3;584,633,623;,
+	3;574,584,623;,
+	3;542,584,574;,
+	3;524,542,574;,
+	3;491,542,524;,
+	3;475,491,524;,
+	3;443,491,475;,
+	3;435,443,475;,
+	3;396,443,435;,
+	3;611,663,633;,
+	3;584,611,633;,
+	3;558,611,584;,
+	3;542,558,584;,
+	3;512,558,542;,
+	3;491,512,542;,
+	3;463,512,491;,
+	3;443,463,491;,
+	3;417,463,443;,
+	3;396,417,443;,
+	3;370,417,396;,
+	3;625,673,663;,
+	3;611,625,663;,
+	3;578,625,611;,
+	3;558,578,611;,
+	3;526,578,558;,
+	3;512,526,558;,
+	3;477,526,512;,
+	3;463,477,512;,
+	3;433,477,463;,
+	3;417,433,463;,
+	3;389,433,417;,
+	3;370,389,417;,
+	3;342,389,370;,
+	3;647,698,673;,
+	3;625,647,673;,
+	3;596,647,625;,
+	3;578,596,625;,
+	3;544,596,578;,
+	3;526,544,578;,
+	3;493,544,526;,
+	3;477,493,526;,
+	3;449,493,477;,
+	3;433,449,477;,
+	3;400,449,433;,
+	3;389,400,433;,
+	3;358,400,389;,
+	3;342,358,389;,
+	3;314,358,342;,
+	3;669,718,698;,
+	3;647,669,698;,
+	3;617,669,647;,
+	3;596,617,647;,
+	3;570,617,596;,
+	3;544,570,596;,
+	3;518,570,544;,
+	3;493,518,544;,
+	3;471,518,493;,
+	3;449,471,493;,
+	3;423,471,449;,
+	3;400,423,449;,
+	3;378,423,400;,
+	3;358,378,400;,
+	3;338,378,358;,
+	3;314,338,358;,
+	3;293,338,314;,
+	3;522,536,576;,
+	3;485,495,536;,
+	3;522,485,536;,
+	3;467,485,522;,
+	3;446,465,495;,
+	3;485,446,495;,
+	3;432,446,485;,
+	3;467,432,485;,
+	3;420,432,467;,
+	3;415,435,465;,
+	3;446,415,465;,
+	3;394,415,446;,
+	3;432,394,446;,
+	3;384,394,432;,
+	3;420,384,432;,
+	3;368,384,420;,
+	3;382,396,435;,
+	3;415,382,435;,
+	3;365,382,415;,
+	3;394,365,415;,
+	3;346,365,394;,
+	3;384,346,394;,
+	3;336,346,384;,
+	3;368,336,384;,
+	3;329,336,368;,
+	3;348,370,396;,
+	3;382,348,396;,
+	3;334,348,382;,
+	3;365,334,382;,
+	3;310,334,365;,
+	3;346,310,365;,
+	3;300,310,346;,
+	3;336,300,346;,
+	3;289,300,336;,
+	3;329,289,336;,
+	3;282,289,329;,
+	3;322,342,370;,
+	3;348,322,370;,
+	3;301,322,348;,
+	3;334,301,348;,
+	3;287,301,334;,
+	3;310,287,334;,
+	3;265,287,310;,
+	3;300,265,310;,
+	3;257,265,300;,
+	3;289,257,300;,
+	3;247,257,289;,
+	3;282,247,289;,
+	3;243,247,282;,
+	3;291,314,342;,
+	3;322,291,342;,
+	3;271,291,322;,
+	3;301,271,322;,
+	3;253,271,301;,
+	3;287,253,301;,
+	3;237,253,287;,
+	3;265,237,287;,
+	3;222,237,265;,
+	3;257,222,265;,
+	3;217,222,257;,
+	3;247,217,257;,
+	3;206,217,247;,
+	3;242,206,247;,
+	3;204,206,241;,
+	3;267,293,314;,
+	3;291,267,314;,
+	3;249,267,291;,
+	3;271,249,291;,
+	3;224,249,271;,
+	3;253,224,271;,
+	3;210,224,253;,
+	3;237,210,253;,
+	3;194,210,237;,
+	3;222,194,237;,
+	3;184,194,222;,
+	3;217,184,222;,
+	3;178,184,217;,
+	3;206,178,217;,
+	3;172,178,206;,
+	3;203,172,206;,
+	3;167,171,205;,
+	3;537,523,577;,
+	3;486,468,523;,
+	3;537,486,523;,
+	3;496,486,537;,
+	3;431,419,468;,
+	3;486,431,468;,
+	3;445,431,486;,
+	3;496,445,486;,
+	3;466,445,496;,
+	3;385,369,419;,
+	3;431,385,419;,
+	3;395,385,431;,
+	3;445,395,431;,
+	3;416,395,445;,
+	3;466,416,445;,
+	3;436,416,466;,
+	3;337,328,369;,
+	3;385,337,369;,
+	3;347,337,385;,
+	3;395,347,385;,
+	3;364,347,395;,
+	3;416,364,395;,
+	3;383,364,416;,
+	3;436,383,416;,
+	3;397,383,436;,
+	3;290,281,328;,
+	3;337,290,328;,
+	3;299,290,337;,
+	3;347,299,337;,
+	3;309,299,347;,
+	3;364,309,347;,
+	3;335,309,364;,
+	3;383,335,364;,
+	3;349,335,383;,
+	3;397,349,383;,
+	3;371,349,397;,
+	3;248,246,281;,
+	3;290,248,281;,
+	3;258,248,290;,
+	3;299,258,290;,
+	3;266,258,299;,
+	3;309,266,299;,
+	3;288,266,309;,
+	3;335,288,309;,
+	3;302,288,335;,
+	3;349,302,335;,
+	3;323,302,349;,
+	3;371,323,349;,
+	3;343,323,371;,
+	3;207,202,246;,
+	3;248,207,246;,
+	3;216,207,248;,
+	3;258,216,248;,
+	3;223,216,258;,
+	3;266,223,258;,
+	3;236,223,266;,
+	3;288,236,266;,
+	3;254,236,288;,
+	3;302,254,288;,
+	3;272,254,302;,
+	3;323,272,302;,
+	3;292,272,323;,
+	3;343,292,323;,
+	3;315,292,343;,
+	3;173,167,202;,
+	3;207,173,202;,
+	3;179,173,207;,
+	3;216,179,207;,
+	3;185,179,216;,
+	3;223,185,216;,
+	3;195,185,223;,
+	3;236,195,223;,
+	3;211,195,236;,
+	3;254,211,236;,
+	3;225,211,254;,
+	3;272,225,254;,
+	3;250,225,272;,
+	3;292,250,272;,
+	3;268,250,292;,
+	3;315,268,292;,
+	3;294,268,315;,
+	3;583,537,577;,
+	3;547,496,537;,
+	3;583,547,537;,
+	3;595,547,583;,
+	3;515,466,496;,
+	3;547,515,496;,
+	3;561,515,547;,
+	3;595,561,547;,
+	3;614,561,595;,
+	3;476,436,466;,
+	3;515,476,466;,
+	3;525,476,515;,
+	3;561,525,515;,
+	3;575,525,561;,
+	3;614,575,561;,
+	3;624,575,614;,
+	3;444,397,436;,
+	3;476,444,436;,
+	3;492,444,476;,
+	3;525,492,476;,
+	3;543,492,525;,
+	3;575,543,525;,
+	3;585,543,575;,
+	3;624,585,575;,
+	3;634,585,624;,
+	3;418,371,397;,
+	3;444,418,397;,
+	3;464,418,444;,
+	3;492,464,444;,
+	3;513,464,492;,
+	3;543,513,492;,
+	3;559,513,543;,
+	3;585,559,543;,
+	3;612,559,585;,
+	3;634,612,585;,
+	3;664,612,634;,
+	3;388,343,371;,
+	3;418,388,371;,
+	3;434,388,418;,
+	3;464,434,418;,
+	3;478,434,464;,
+	3;513,478,464;,
+	3;527,478,513;,
+	3;559,527,513;,
+	3;579,527,559;,
+	3;612,579,559;,
+	3;626,579,612;,
+	3;664,626,612;,
+	3;674,626,664;,
+	3;359,315,343;,
+	3;388,359,343;,
+	3;401,359,388;,
+	3;434,401,388;,
+	3;450,401,434;,
+	3;478,450,434;,
+	3;494,450,478;,
+	3;527,494,478;,
+	3;545,494,527;,
+	3;579,545,527;,
+	3;597,545,579;,
+	3;626,597,579;,
+	3;648,597,626;,
+	3;674,648,626;,
+	3;699,648,674;,
+	3;339,294,315;,
+	3;359,339,315;,
+	3;379,339,359;,
+	3;401,379,359;,
+	3;424,379,401;,
+	3;450,424,401;,
+	3;472,424,450;,
+	3;494,472,450;,
+	3;519,472,494;,
+	3;545,519,494;,
+	3;571,519,545;,
+	3;597,571,545;,
+	3;618,571,597;,
+	3;648,618,597;,
+	3;670,618,648;,
+	3;699,670,648;,
+	3;719,670,699;,
+	3;1203,1146,1193;,
+	3;1161,1106,1146;,
+	3;1203,1161,1146;,
+	3;1216,1161,1203;,
+	3;1120,1063,1106;,
+	3;1161,1120,1106;,
+	3;1175,1120,1161;,
+	3;1216,1175,1161;,
+	3;1234,1175,1216;,
+	3;1075,926,1063;,
+	3;1120,1075,1063;,
+	3;1132,1075,1120;,
+	3;1175,1132,1120;,
+	3;1189,1132,1175;,
+	3;1234,1189,1175;,
+	3;1244,1189,1234;,
+	3;938,881,926;,
+	3;1075,938,926;,
+	3;1089,938,1075;,
+	3;1132,1089,1075;,
+	3;1142,1089,1132;,
+	3;1189,1142,1132;,
+	3;1199,1142,1189;,
+	3;1244,1199,1189;,
+	3;1252,1199,1244;,
+	3;891,838,881;,
+	3;938,891,881;,
+	3;946,891,938;,
+	3;1089,946,938;,
+	3;1096,946,1089;,
+	3;1142,1096,1089;,
+	3;1151,1096,1142;,
+	3;1199,1151,1142;,
+	3;1208,1151,1199;,
+	3;1252,1208,1199;,
+	3;1265,1208,1252;,
+	3;852,794,838;,
+	3;891,852,838;,
+	3;912,852,891;,
+	3;946,912,891;,
+	3;1059,912,946;,
+	3;1096,1059,946;,
+	3;1112,1059,1096;,
+	3;1151,1112,1096;,
+	3;1165,1112,1151;,
+	3;1208,1165,1151;,
+	3;1218,1165,1208;,
+	3;1265,1218,1208;,
+	3;1271,1218,1265;,
+	3;806,755,794;,
+	3;852,806,794;,
+	3;865,806,852;,
+	3;912,865,852;,
+	3;918,865,912;,
+	3;1059,918,912;,
+	3;1067,918,1059;,
+	3;1112,1067,1059;,
+	3;1122,1067,1112;,
+	3;1165,1122,1112;,
+	3;1179,1122,1165;,
+	3;1218,1179,1165;,
+	3;1228,1179,1218;,
+	3;1271,1228,1218;,
+	3;1281,1228,1271;,
+	3;769,719,755;,
+	3;806,769,755;,
+	3;824,769,806;,
+	3;865,824,806;,
+	3;877,824,865;,
+	3;918,877,865;,
+	3;934,877,918;,
+	3;1067,934,918;,
+	3;1081,934,1067;,
+	3;1122,1081,1067;,
+	3;1136,1081,1122;,
+	3;1179,1136,1122;,
+	3;1183,1136,1179;,
+	3;1228,1183,1179;,
+	3;1238,1183,1228;,
+	3;1281,1238,1228;,
+	3;1295,1238,1281;,
+	3;1248,1203,1193;,
+	3;1263,1216,1203;,
+	3;1248,1263,1203;,
+	3;1305,1263,1248;,
+	3;1273,1234,1216;,
+	3;1263,1273,1216;,
+	3;1318,1273,1263;,
+	3;1305,1318,1263;,
+	3;1358,1318,1305;,
+	3;1285,1244,1234;,
+	3;1273,1285,1234;,
+	3;1332,1285,1273;,
+	3;1318,1332,1273;,
+	3;1373,1332,1318;,
+	3;1358,1373,1318;,
+	3;1413,1373,1358;,
+	3;1301,1252,1244;,
+	3;1285,1301,1244;,
+	3;1340,1301,1285;,
+	3;1332,1340,1285;,
+	3;1387,1340,1332;,
+	3;1373,1387,1332;,
+	3;1426,1387,1373;,
+	3;1413,1426,1373;,
+	3;1467,1426,1413;,
+	3;1307,1265,1252;,
+	3;1301,1307,1252;,
+	3;1356,1307,1301;,
+	3;1340,1356,1301;,
+	3;1393,1356,1340;,
+	3;1387,1393,1340;,
+	3;1436,1393,1387;,
+	3;1426,1436,1387;,
+	3;1475,1436,1426;,
+	3;1467,1475,1426;,
+	3;1514,1475,1467;,
+	3;1322,1271,1265;,
+	3;1307,1322,1265;,
+	3;1362,1322,1307;,
+	3;1356,1362,1307;,
+	3;1409,1362,1356;,
+	3;1393,1409,1356;,
+	3;1444,1409,1393;,
+	3;1436,1444,1393;,
+	3;1487,1444,1436;,
+	3;1475,1487,1436;,
+	3;1519,1487,1475;,
+	3;1514,1519,1475;,
+	3;1561,1519,1514;,
+	3;1326,1281,1271;,
+	3;1322,1326,1271;,
+	3;1375,1326,1322;,
+	3;1362,1375,1322;,
+	3;1416,1375,1362;,
+	3;1409,1416,1362;,
+	3;1454,1416,1409;,
+	3;1444,1454,1409;,
+	3;1495,1454,1444;,
+	3;1487,1495,1444;,
+	3;1532,1495,1487;,
+	3;1519,1532,1487;,
+	3;1566,1532,1519;,
+	3;1561,1566,1519;,
+	3;1600,1566,1561;,
+	3;1338,1295,1281;,
+	3;1326,1338,1281;,
+	3;1381,1338,1326;,
+	3;1375,1381,1326;,
+	3;1422,1381,1375;,
+	3;1416,1422,1375;,
+	3;1469,1422,1416;,
+	3;1454,1469,1416;,
+	3;1505,1469,1454;,
+	3;1495,1505,1454;,
+	3;1542,1505,1495;,
+	3;1532,1542,1495;,
+	3;1581,1542,1532;,
+	3;1566,1581,1532;,
+	3;1614,1581,1566;,
+	3;1600,1614,1566;,
+	3;1643,1614,1600;,
+	3;1882,1862,1878;,
+	3;1866,1845,1862;,
+	3;1882,1866,1862;,
+	3;1888,1866,1882;,
+	3;1848,1829,1845;,
+	3;1866,1848,1845;,
+	3;1871,1848,1866;,
+	3;1888,1871,1866;,
+	3;1890,1871,1888;,
+	3;1831,1808,1829;,
+	3;1848,1831,1829;,
+	3;1851,1831,1848;,
+	3;1871,1851,1848;,
+	3;1870,1851,1871;,
+	3;1890,1870,1871;,
+	3;1884,1870,1890;,
+	3;1805,1779,1808;,
+	3;1831,1805,1808;,
+	3;1827,1805,1831;,
+	3;1851,1827,1831;,
+	3;1847,1827,1851;,
+	3;1870,1847,1851;,
+	3;1864,1847,1870;,
+	3;1884,1864,1870;,
+	3;1880,1864,1884;,
+	3;1776,1751,1779;,
+	3;1805,1776,1779;,
+	3;1801,1776,1805;,
+	3;1827,1801,1805;,
+	3;1820,1801,1827;,
+	3;1847,1820,1827;,
+	3;1840,1820,1847;,
+	3;1864,1840,1847;,
+	3;1859,1840,1864;,
+	3;1880,1859,1864;,
+	3;1868,1859,1880;,
+	3;1746,1718,1751;,
+	3;1776,1746,1751;,
+	3;1770,1746,1776;,
+	3;1801,1770,1776;,
+	3;1791,1770,1801;,
+	3;1820,1791,1801;,
+	3;1813,1791,1820;,
+	3;1840,1813,1820;,
+	3;1835,1813,1840;,
+	3;1859,1835,1840;,
+	3;1842,1835,1859;,
+	3;1868,1842,1859;,
+	3;1857,1842,1868;,
+	3;1710,1679,1718;,
+	3;1746,1710,1718;,
+	3;1735,1710,1746;,
+	3;1770,1735,1746;,
+	3;1759,1735,1770;,
+	3;1791,1759,1770;,
+	3;1782,1759,1791;,
+	3;1813,1782,1791;,
+	3;1803,1782,1813;,
+	3;1835,1803,1813;,
+	3;1816,1803,1835;,
+	3;1842,1816,1835;,
+	3;1832,1816,1842;,
+	3;1857,1832,1842;,
+	3;1839,1832,1857;,
+	3;1674,1642,1679;,
+	3;1710,1674,1679;,
+	3;1699,1674,1710;,
+	3;1735,1699,1710;,
+	3;1727,1699,1735;,
+	3;1759,1727,1735;,
+	3;1750,1727,1759;,
+	3;1782,1750,1759;,
+	3;1767,1750,1782;,
+	3;1803,1767,1782;,
+	3;1787,1767,1803;,
+	3;1816,1787,1803;,
+	3;1800,1787,1816;,
+	3;1832,1800,1816;,
+	3;1812,1800,1832;,
+	3;1839,1812,1832;,
+	3;1819,1812,1839;,
+	3;1582,1535,1557;,
+	3;1552,1511,1535;,
+	3;1582,1552,1535;,
+	3;1595,1552,1582;,
+	3;1525,1482,1511;,
+	3;1552,1525,1511;,
+	3;1568,1525,1552;,
+	3;1595,1568,1552;,
+	3;1611,1568,1595;,
+	3;1496,1451,1482;,
+	3;1525,1496,1482;,
+	3;1543,1496,1525;,
+	3;1568,1543,1525;,
+	3;1584,1543,1568;,
+	3;1611,1584,1568;,
+	3;1623,1584,1611;,
+	3;1470,1427,1451;,
+	3;1496,1470,1451;,
+	3;1517,1470,1496;,
+	3;1543,1517,1496;,
+	3;1554,1517,1543;,
+	3;1584,1554,1543;,
+	3;1593,1554,1584;,
+	3;1623,1593,1584;,
+	3;1632,1593,1623;,
+	3;1437,1390,1427;,
+	3;1470,1437,1427;,
+	3;1480,1437,1470;,
+	3;1517,1480,1470;,
+	3;1523,1480,1517;,
+	3;1554,1523,1517;,
+	3;1564,1523,1554;,
+	3;1593,1564,1554;,
+	3;1601,1564,1593;,
+	3;1632,1601,1593;,
+	3;1638,1601,1632;,
+	3;1410,1359,1390;,
+	3;1437,1410,1390;,
+	3;1447,1410,1437;,
+	3;1480,1447,1437;,
+	3;1490,1447,1480;,
+	3;1523,1490,1480;,
+	3;1533,1490,1523;,
+	3;1564,1533,1523;,
+	3;1570,1533,1564;,
+	3;1601,1570,1564;,
+	3;1610,1570,1601;,
+	3;1638,1610,1601;,
+	3;1645,1610,1638;,
+	3;1370,1323,1359;,
+	3;1410,1370,1359;,
+	3;1419,1370,1410;,
+	3;1447,1419,1410;,
+	3;1461,1419,1447;,
+	3;1490,1461,1447;,
+	3;1498,1461,1490;,
+	3;1533,1498,1490;,
+	3;1537,1498,1533;,
+	3;1570,1537,1533;,
+	3;1578,1537,1570;,
+	3;1610,1578,1570;,
+	3;1615,1578,1610;,
+	3;1645,1615,1610;,
+	3;1646,1615,1645;,
+	3;1337,1294,1323;,
+	3;1370,1337,1323;,
+	3;1380,1337,1370;,
+	3;1419,1380,1370;,
+	3;1421,1380,1419;,
+	3;1461,1421,1419;,
+	3;1468,1421,1461;,
+	3;1498,1468,1461;,
+	3;1504,1468,1498;,
+	3;1537,1504,1498;,
+	3;1541,1504,1537;,
+	3;1578,1541,1537;,
+	3;1580,1541,1578;,
+	3;1615,1580,1578;,
+	3;1613,1580,1615;,
+	3;1646,1613,1615;,
+	3;1642,1613,1646;,
+	3;1070,919,948;,
+	3;1046,892,919;,
+	3;1070,1046,919;,
+	3;1097,1046,1070;,
+	3;923,866,892;,
+	3;1046,923,892;,
+	3;1072,923,1046;,
+	3;1097,1072,1046;,
+	3;1127,1072,1097;,
+	3;896,839,866;,
+	3;923,896,866;,
+	3;1048,896,923;,
+	3;1072,1048,923;,
+	3;1099,1048,1072;,
+	3;1127,1099,1072;,
+	3;1152,1099,1127;,
+	3;870,809,839;,
+	3;896,870,839;,
+	3;927,870,896;,
+	3;1048,927,896;,
+	3;1076,927,1048;,
+	3;1099,1076,1048;,
+	3;1129,1076,1099;,
+	3;1152,1129,1099;,
+	3;1186,1129,1152;,
+	3;843,787,809;,
+	3;870,843,809;,
+	3;898,843,870;,
+	3;927,898,870;,
+	3;1050,898,927;,
+	3;1076,1050,927;,
+	3;1101,1050,1076;,
+	3;1129,1101,1076;,
+	3;1156,1101,1129;,
+	3;1186,1156,1129;,
+	3;1211,1156,1186;,
+	3;817,758,787;,
+	3;843,817,787;,
+	3;874,817,843;,
+	3;898,874,843;,
+	3;929,874,898;,
+	3;1050,929,898;,
+	3;1078,929,1050;,
+	3;1101,1078,1050;,
+	3;1133,1078,1101;,
+	3;1156,1133,1101;,
+	3;1184,1133,1156;,
+	3;1211,1184,1156;,
+	3;1241,1184,1211;,
+	3;791,742,758;,
+	3;817,791,758;,
+	3;847,791,817;,
+	3;874,847,817;,
+	3;902,847,874;,
+	3;929,902,874;,
+	3;1052,902,929;,
+	3;1078,1052,929;,
+	3;1103,1052,1078;,
+	3;1133,1103,1078;,
+	3;1154,1103,1133;,
+	3;1184,1154,1133;,
+	3;1209,1154,1184;,
+	3;1241,1209,1184;,
+	3;1266,1209,1241;,
+	3;768,718,742;,
+	3;791,768,742;,
+	3;823,768,791;,
+	3;847,823,791;,
+	3;876,823,847;,
+	3;902,876,847;,
+	3;933,876,902;,
+	3;1052,933,902;,
+	3;1080,933,1052;,
+	3;1103,1080,1052;,
+	3;1135,1080,1103;,
+	3;1154,1135,1103;,
+	3;1182,1135,1154;,
+	3;1209,1182,1154;,
+	3;1237,1182,1209;,
+	3;1266,1237,1209;,
+	3;1294,1237,1266;,
+	3;447,398,426;,
+	3;429,380,398;,
+	3;447,429,398;,
+	3;473,429,447;,
+	3;411,360,380;,
+	3;429,411,380;,
+	3;459,411,429;,
+	3;473,459,429;,
+	3;508,459,473;,
+	3;390,344,360;,
+	3;411,390,360;,
+	3;439,390,411;,
+	3;459,439,411;,
+	3;487,439,459;,
+	3;508,487,459;,
+	3;538,487,508;,
+	3;376,330,344;,
+	3;390,376,344;,
+	3;421,376,390;,
+	3;439,421,390;,
+	3;469,421,439;,
+	3;487,469,439;,
+	3;520,469,487;,
+	3;538,520,487;,
+	3;572,520,538;,
+	3;362,312,330;,
+	3;376,362,330;,
+	3;409,362,376;,
+	3;421,409,376;,
+	3;455,409,421;,
+	3;469,455,421;,
+	3;504,455,469;,
+	3;520,504,469;,
+	3;548,504,520;,
+	3;572,548,520;,
+	3;607,548,572;,
+	3;352,305,312;,
+	3;362,352,312;,
+	3;392,352,362;,
+	3;409,392,362;,
+	3;441,392,409;,
+	3;455,441,409;,
+	3;489,441,455;,
+	3;504,489,455;,
+	3;540,489,504;,
+	3;548,540,504;,
+	3;586,540,548;,
+	3;607,586,548;,
+	3;637,586,607;,
+	3;340,297,305;,
+	3;352,340,305;,
+	3;386,340,352;,
+	3;392,386,352;,
+	3;437,386,392;,
+	3;441,437,392;,
+	3;483,437,441;,
+	3;489,483,441;,
+	3;528,483,489;,
+	3;540,528,489;,
+	3;580,528,540;,
+	3;586,580,540;,
+	3;627,580,586;,
+	3;637,627,586;,
+	3;677,627,637;,
+	3;338,293,297;,
+	3;340,338,297;,
+	3;378,338,340;,
+	3;386,378,340;,
+	3;423,378,386;,
+	3;437,423,386;,
+	3;471,423,437;,
+	3;483,471,437;,
+	3;518,471,483;,
+	3;528,518,483;,
+	3;570,518,528;,
+	3;580,570,528;,
+	3;617,570,580;,
+	3;627,617,580;,
+	3;669,617,627;,
+	3;677,669,627;,
+	3;718,669,677;,
+	3;78,57,62;,
+	3;72,54,57;,
+	3;78,72,57;,
+	3;98,72,78;,
+	3;70,56,54;,
+	3;72,70,54;,
+	3;92,70,72;,
+	3;98,92,72;,
+	3;112,92,98;,
+	3;77,60,56;,
+	3;70,77,56;,
+	3;94,77,70;,
+	3;92,94,70;,
+	3;109,94,92;,
+	3;112,109,92;,
+	3;131,109,112;,
+	3;81,75,60;,
+	3;77,81,60;,
+	3;100,81,77;,
+	3;94,100,77;,
+	3;117,100,94;,
+	3;109,117,94;,
+	3;135,117,109;,
+	3;131,135,109;,
+	3;163,135,131;,
+	3;103,97,75;,
+	3;81,103,75;,
+	3;107,103,81;,
+	3;100,107,81;,
+	3;128,107,100;,
+	3;117,128,100;,
+	3;147,128,117;,
+	3;135,147,117;,
+	3;165,147,135;,
+	3;163,165,135;,
+	3;192,165,163;,
+	3;119,116,97;,
+	3;103,119,97;,
+	3;129,119,103;,
+	3;107,129,103;,
+	3;144,129,107;,
+	3;128,144,107;,
+	3;158,144,128;,
+	3;147,158,128;,
+	3;180,158,147;,
+	3;165,180,147;,
+	3;198,180,165;,
+	3;192,198,165;,
+	3;220,198,192;,
+	3;146,142,116;,
+	3;119,146,116;,
+	3;152,146,119;,
+	3;129,152,119;,
+	3;161,152,129;,
+	3;144,161,129;,
+	3;176,161,144;,
+	3;158,176,144;,
+	3;186,176,158;,
+	3;180,186,158;,
+	3;212,186,180;,
+	3;198,212,180;,
+	3;232,212,198;,
+	3;220,232,198;,
+	3;259,232,220;,
+	3;170,167,141;,
+	3;146,172,142;,
+	3;178,172,146;,
+	3;152,178,146;,
+	3;184,178,152;,
+	3;161,184,152;,
+	3;194,184,161;,
+	3;176,194,161;,
+	3;210,194,176;,
+	3;186,210,176;,
+	3;224,210,186;,
+	3;212,224,186;,
+	3;249,224,212;,
+	3;232,249,212;,
+	3;267,249,232;,
+	3;259,267,232;,
+	3;293,267,259;,
+	3;58,79,64;,
+	3;73,99,79;,
+	3;58,73,79;,
+	3;53,73,58;,
+	3;93,111,99;,
+	3;73,93,99;,
+	3;71,93,73;,
+	3;53,71,73;,
+	3;55,71,53;,
+	3;110,132,111;,
+	3;93,110,111;,
+	3;95,110,93;,
+	3;71,95,93;,
+	3;76,95,71;,
+	3;55,76,71;,
+	3;59,76,55;,
+	3;136,164,132;,
+	3;110,136,132;,
+	3;118,136,110;,
+	3;95,118,110;,
+	3;101,118,95;,
+	3;76,101,95;,
+	3;80,101,76;,
+	3;59,80,76;,
+	3;74,80,59;,
+	3;166,193,164;,
+	3;136,166,164;,
+	3;148,166,136;,
+	3;118,148,136;,
+	3;127,148,118;,
+	3;101,127,118;,
+	3;106,127,101;,
+	3;80,106,101;,
+	3;102,106,80;,
+	3;74,102,80;,
+	3;96,102,74;,
+	3;199,221,193;,
+	3;166,199,193;,
+	3;181,199,166;,
+	3;148,181,166;,
+	3;157,181,148;,
+	3;127,157,148;,
+	3;143,157,127;,
+	3;106,143,127;,
+	3;130,143,106;,
+	3;102,130,106;,
+	3;120,130,102;,
+	3;96,120,102;,
+	3;113,120,96;,
+	3;233,260,221;,
+	3;199,233,221;,
+	3;213,233,199;,
+	3;181,213,199;,
+	3;187,213,181;,
+	3;157,187,181;,
+	3;177,187,157;,
+	3;143,177,157;,
+	3;162,177,143;,
+	3;130,162,143;,
+	3;151,162,130;,
+	3;120,151,130;,
+	3;145,151,120;,
+	3;113,145,120;,
+	3;137,145,113;,
+	3;268,294,260;,
+	3;233,268,260;,
+	3;250,268,233;,
+	3;213,250,233;,
+	3;225,250,213;,
+	3;187,225,213;,
+	3;211,225,187;,
+	3;177,211,187;,
+	3;195,211,177;,
+	3;162,195,177;,
+	3;185,195,162;,
+	3;151,185,162;,
+	3;179,185,151;,
+	3;145,179,151;,
+	3;173,179,145;,
+	3;137,173,145;,
+	3;167,173,137;,
+	3;399,448,428;,
+	3;430,474,448;,
+	3;399,430,448;,
+	3;381,430,399;,
+	3;460,509,474;,
+	3;430,460,474;,
+	3;412,460,430;,
+	3;381,412,430;,
+	3;361,412,381;,
+	3;488,539,509;,
+	3;460,488,509;,
+	3;440,488,460;,
+	3;412,440,460;,
+	3;391,440,412;,
+	3;361,391,412;,
+	3;345,391,361;,
+	3;521,573,539;,
+	3;488,521,539;,
+	3;470,521,488;,
+	3;440,470,488;,
+	3;422,470,440;,
+	3;391,422,440;,
+	3;377,422,391;,
+	3;345,377,391;,
+	3;331,377,345;,
+	3;549,608,573;,
+	3;521,549,573;,
+	3;505,549,521;,
+	3;470,505,521;,
+	3;456,505,470;,
+	3;422,456,470;,
+	3;410,456,422;,
+	3;377,410,422;,
+	3;363,410,377;,
+	3;331,363,377;,
+	3;313,363,331;,
+	3;587,638,608;,
+	3;549,587,608;,
+	3;541,587,549;,
+	3;505,541,549;,
+	3;490,541,505;,
+	3;456,490,505;,
+	3;442,490,456;,
+	3;410,442,456;,
+	3;393,442,410;,
+	3;363,393,410;,
+	3;353,393,363;,
+	3;313,353,363;,
+	3;306,353,313;,
+	3;628,678,638;,
+	3;587,628,638;,
+	3;581,628,587;,
+	3;541,581,587;,
+	3;529,581,541;,
+	3;490,529,541;,
+	3;484,529,490;,
+	3;442,484,490;,
+	3;438,484,442;,
+	3;393,438,442;,
+	3;387,438,393;,
+	3;353,387,393;,
+	3;341,387,353;,
+	3;306,341,353;,
+	3;298,341,306;,
+	3;670,719,678;,
+	3;628,670,678;,
+	3;618,670,628;,
+	3;581,618,628;,
+	3;571,618,581;,
+	3;529,571,581;,
+	3;519,571,529;,
+	3;484,519,529;,
+	3;472,519,484;,
+	3;438,472,484;,
+	3;424,472,438;,
+	3;387,424,438;,
+	3;379,424,387;,
+	3;341,379,387;,
+	3;339,379,341;,
+	3;298,339,341;,
+	3;294,339,298;,
+	3;920,1071,1045;,
+	3;1047,1098,1071;,
+	3;920,1047,1071;,
+	3;893,1047,920;,
+	3;1073,1128,1098;,
+	3;1047,1073,1098;,
+	3;924,1073,1047;,
+	3;893,924,1047;,
+	3;867,924,893;,
+	3;1100,1153,1128;,
+	3;1073,1100,1128;,
+	3;1049,1100,1073;,
+	3;924,1049,1073;,
+	3;897,1049,924;,
+	3;867,897,924;,
+	3;840,897,867;,
+	3;1130,1187,1153;,
+	3;1100,1130,1153;,
+	3;1077,1130,1100;,
+	3;1049,1077,1100;,
+	3;928,1077,1049;,
+	3;897,928,1049;,
+	3;871,928,897;,
+	3;840,871,897;,
+	3;810,871,840;,
+	3;1157,1212,1187;,
+	3;1130,1157,1187;,
+	3;1102,1157,1130;,
+	3;1077,1102,1130;,
+	3;1051,1102,1077;,
+	3;928,1051,1077;,
+	3;899,1051,928;,
+	3;871,899,928;,
+	3;844,899,871;,
+	3;810,844,871;,
+	3;788,844,810;,
+	3;1185,1242,1212;,
+	3;1157,1185,1212;,
+	3;1134,1185,1157;,
+	3;1102,1134,1157;,
+	3;1079,1134,1102;,
+	3;1051,1079,1102;,
+	3;930,1079,1051;,
+	3;899,930,1051;,
+	3;875,930,899;,
+	3;844,875,899;,
+	3;818,875,844;,
+	3;788,818,844;,
+	3;759,818,788;,
+	3;1210,1267,1242;,
+	3;1185,1210,1242;,
+	3;1155,1210,1185;,
+	3;1134,1155,1185;,
+	3;1104,1155,1134;,
+	3;1079,1104,1134;,
+	3;1053,1104,1079;,
+	3;930,1053,1079;,
+	3;903,1053,930;,
+	3;875,903,930;,
+	3;848,903,875;,
+	3;818,848,875;,
+	3;792,848,818;,
+	3;759,792,818;,
+	3;743,792,759;,
+	3;1238,1295,1267;,
+	3;1210,1238,1267;,
+	3;1183,1238,1210;,
+	3;1155,1183,1210;,
+	3;1136,1183,1155;,
+	3;1104,1136,1155;,
+	3;1081,1136,1104;,
+	3;1053,1081,1104;,
+	3;934,1081,1053;,
+	3;903,934,1053;,
+	3;877,934,903;,
+	3;848,877,903;,
+	3;824,877,848;,
+	3;792,824,848;,
+	3;769,824,792;,
+	3;743,769,792;,
+	3;719,769,743;,
+	3;1536,1583,1559;,
+	3;1553,1596,1583;,
+	3;1536,1553,1583;,
+	3;1512,1553,1536;,
+	3;1569,1612,1596;,
+	3;1553,1569,1596;,
+	3;1526,1569,1553;,
+	3;1512,1526,1553;,
+	3;1483,1526,1512;,
+	3;1585,1624,1612;,
+	3;1569,1585,1612;,
+	3;1544,1585,1569;,
+	3;1526,1544,1569;,
+	3;1497,1544,1526;,
+	3;1483,1497,1526;,
+	3;1452,1497,1483;,
+	3;1594,1633,1624;,
+	3;1585,1594,1624;,
+	3;1555,1594,1585;,
+	3;1544,1555,1585;,
+	3;1518,1555,1544;,
+	3;1497,1518,1544;,
+	3;1471,1518,1497;,
+	3;1452,1471,1497;,
+	3;1428,1471,1452;,
+	3;1602,1639,1633;,
+	3;1594,1602,1633;,
+	3;1565,1602,1594;,
+	3;1555,1565,1594;,
+	3;1524,1565,1555;,
+	3;1518,1524,1555;,
+	3;1481,1524,1518;,
+	3;1471,1481,1518;,
+	3;1438,1481,1471;,
+	3;1428,1438,1471;,
+	3;1391,1438,1428;,
+	3;1609,1644,1639;,
+	3;1602,1609,1639;,
+	3;1571,1609,1602;,
+	3;1565,1571,1602;,
+	3;1534,1571,1565;,
+	3;1524,1534,1565;,
+	3;1491,1534,1524;,
+	3;1481,1491,1524;,
+	3;1448,1491,1481;,
+	3;1438,1448,1481;,
+	3;1411,1448,1438;,
+	3;1391,1411,1438;,
+	3;1360,1411,1391;,
+	3;1616,1647,1644;,
+	3;1609,1616,1644;,
+	3;1579,1616,1609;,
+	3;1571,1579,1609;,
+	3;1538,1579,1571;,
+	3;1534,1538,1571;,
+	3;1499,1538,1534;,
+	3;1491,1499,1534;,
+	3;1462,1499,1491;,
+	3;1448,1462,1491;,
+	3;1420,1462,1448;,
+	3;1411,1420,1448;,
+	3;1371,1420,1411;,
+	3;1360,1371,1411;,
+	3;1324,1371,1360;,
+	3;1614,1643,1647;,
+	3;1616,1614,1647;,
+	3;1581,1614,1616;,
+	3;1579,1581,1616;,
+	3;1542,1581,1579;,
+	3;1538,1542,1579;,
+	3;1505,1542,1538;,
+	3;1499,1505,1538;,
+	3;1469,1505,1499;,
+	3;1462,1469,1499;,
+	3;1422,1469,1462;,
+	3;1420,1422,1462;,
+	3;1381,1422,1420;,
+	3;1371,1381,1420;,
+	3;1338,1381,1371;,
+	3;1324,1338,1371;,
+	3;1295,1338,1324;,
+	3;1861,1881,1876;,
+	3;1865,1887,1881;,
+	3;1861,1865,1881;,
+	3;1844,1865,1861;,
+	3;1872,1889,1887;,
+	3;1865,1872,1887;,
+	3;1849,1872,1865;,
+	3;1844,1849,1865;,
+	3;1828,1849,1844;,
+	3;1869,1883,1889;,
+	3;1872,1869,1889;,
+	3;1850,1869,1872;,
+	3;1849,1850,1872;,
+	3;1830,1850,1849;,
+	3;1828,1830,1849;,
+	3;1807,1830,1828;,
+	3;1863,1879,1883;,
+	3;1869,1863,1883;,
+	3;1846,1863,1869;,
+	3;1850,1846,1869;,
+	3;1826,1846,1850;,
+	3;1830,1826,1850;,
+	3;1806,1826,1830;,
+	3;1807,1806,1830;,
+	3;1778,1806,1807;,
+	3;1858,1867,1879;,
+	3;1863,1858,1879;,
+	3;1841,1858,1863;,
+	3;1846,1841,1863;,
+	3;1821,1841,1846;,
+	3;1826,1821,1846;,
+	3;1802,1821,1826;,
+	3;1806,1802,1826;,
+	3;1777,1802,1806;,
+	3;1778,1777,1806;,
+	3;1752,1777,1778;,
+	3;1843,1856,1867;,
+	3;1858,1843,1867;,
+	3;1834,1843,1858;,
+	3;1841,1834,1858;,
+	3;1814,1834,1841;,
+	3;1821,1814,1841;,
+	3;1790,1814,1821;,
+	3;1802,1790,1821;,
+	3;1771,1790,1802;,
+	3;1777,1771,1802;,
+	3;1745,1771,1777;,
+	3;1752,1745,1777;,
+	3;1719,1745,1752;,
+	3;1833,1838,1856;,
+	3;1843,1833,1856;,
+	3;1815,1833,1843;,
+	3;1834,1815,1843;,
+	3;1804,1815,1834;,
+	3;1814,1804,1834;,
+	3;1783,1804,1814;,
+	3;1790,1783,1814;,
+	3;1760,1783,1790;,
+	3;1771,1760,1790;,
+	3;1736,1760,1771;,
+	3;1745,1736,1771;,
+	3;1711,1736,1745;,
+	3;1719,1711,1745;,
+	3;1680,1711,1719;,
+	3;1811,1819,1838;,
+	3;1833,1811,1838;,
+	3;1799,1811,1833;,
+	3;1815,1799,1833;,
+	3;1786,1799,1815;,
+	3;1804,1786,1815;,
+	3;1766,1786,1804;,
+	3;1783,1766,1804;,
+	3;1749,1766,1783;,
+	3;1760,1749,1783;,
+	3;1726,1749,1760;,
+	3;1736,1726,1760;,
+	3;1700,1726,1736;,
+	3;1711,1700,1736;,
+	3;1673,1700,1711;,
+	3;1680,1673,1711;,
+	3;1643,1673,1680;,
+	3;1839,1838,1819;,
+	3;1860,1856,1838;,
+	3;1839,1860,1838;,
+	3;1857,1860,1839;,
+	3;1873,1867,1856;,
+	3;1860,1873,1856;,
+	3;1874,1873,1860;,
+	3;1857,1874,1860;,
+	3;1868,1874,1857;,
+	3;1885,1879,1867;,
+	3;1873,1885,1867;,
+	3;1891,1885,1873;,
+	3;1874,1891,1873;,
+	3;1886,1891,1874;,
+	3;1868,1886,1874;,
+	3;1880,1886,1868;,
+	3;1896,1883,1879;,
+	3;1885,1896,1879;,
+	3;1900,1896,1885;,
+	3;1891,1900,1885;,
+	3;1901,1900,1891;,
+	3;1886,1901,1891;,
+	3;1897,1901,1886;,
+	3;1880,1897,1886;,
+	3;1884,1897,1880;,
+	3;1902,1889,1883;,
+	3;1896,1902,1883;,
+	3;1906,1902,1896;,
+	3;1900,1906,1896;,
+	3;1912,1906,1900;,
+	3;1901,1912,1900;,
+	3;1907,1912,1901;,
+	3;1897,1907,1901;,
+	3;1903,1907,1897;,
+	3;1884,1903,1897;,
+	3;1890,1903,1884;,
+	3;1904,1887,1889;,
+	3;1902,1904,1889;,
+	3;1913,1904,1902;,
+	3;1906,1913,1902;,
+	3;1917,1913,1906;,
+	3;1912,1917,1906;,
+	3;1918,1917,1912;,
+	3;1907,1918,1912;,
+	3;1914,1918,1907;,
+	3;1903,1914,1907;,
+	3;1905,1914,1903;,
+	3;1890,1905,1903;,
+	3;1888,1905,1890;,
+	3;1898,1881,1887;,
+	3;1904,1898,1887;,
+	3;1915,1898,1904;,
+	3;1913,1915,1904;,
+	3;1923,1915,1913;,
+	3;1917,1923,1913;,
+	3;1925,1923,1917;,
+	3;1918,1925,1917;,
+	3;1924,1925,1918;,
+	3;1914,1924,1918;,
+	3;1916,1924,1914;,
+	3;1905,1916,1914;,
+	3;1899,1916,1905;,
+	3;1888,1899,1905;,
+	3;1882,1899,1888;,
+	3;1893,1876,1881;,
+	3;1898,1893,1881;,
+	3;1909,1893,1898;,
+	3;1915,1909,1898;,
+	3;1920,1909,1915;,
+	3;1923,1920,1915;,
+	3;1927,1920,1923;,
+	3;1925,1927,1923;,
+	3;1929,1927,1925;,
+	3;1924,1929,1925;,
+	3;1922,1929,1924;,
+	3;1916,1922,1924;,
+	3;1911,1922,1916;,
+	3;1899,1911,1916;,
+	3;1895,1911,1899;,
+	3;1882,1895,1899;,
+	3;1878,1895,1882;,
+	3;1646,1679,1642;,
+	3;1682,1718,1679;,
+	3;1646,1682,1679;,
+	3;1645,1682,1646;,
+	3;1714,1751,1718;,
+	3;1682,1714,1718;,
+	3;1677,1714,1682;,
+	3;1645,1677,1682;,
+	3;1638,1677,1645;,
+	3;1748,1779,1751;,
+	3;1714,1748,1751;,
+	3;1713,1748,1714;,
+	3;1677,1713,1714;,
+	3;1675,1713,1677;,
+	3;1638,1675,1677;,
+	3;1632,1675,1638;,
+	3;1775,1808,1779;,
+	3;1748,1775,1779;,
+	3;1741,1775,1748;,
+	3;1713,1741,1748;,
+	3;1705,1741,1713;,
+	3;1675,1705,1713;,
+	3;1662,1705,1675;,
+	3;1632,1662,1675;,
+	3;1623,1662,1632;,
+	3;1797,1829,1808;,
+	3;1775,1797,1808;,
+	3;1769,1797,1775;,
+	3;1741,1769,1775;,
+	3;1732,1769,1741;,
+	3;1705,1732,1741;,
+	3;1698,1732,1705;,
+	3;1662,1698,1705;,
+	3;1658,1698,1662;,
+	3;1623,1658,1662;,
+	3;1611,1658,1623;,
+	3;1818,1845,1829;,
+	3;1797,1818,1829;,
+	3;1788,1818,1797;,
+	3;1769,1788,1797;,
+	3;1758,1788,1769;,
+	3;1732,1758,1769;,
+	3;1721,1758,1732;,
+	3;1698,1721,1732;,
+	3;1685,1721,1698;,
+	3;1658,1685,1698;,
+	3;1640,1685,1658;,
+	3;1611,1640,1658;,
+	3;1595,1640,1611;,
+	3;1837,1862,1845;,
+	3;1818,1837,1845;,
+	3;1809,1837,1818;,
+	3;1788,1809,1818;,
+	3;1780,1809,1788;,
+	3;1758,1780,1788;,
+	3;1743,1780,1758;,
+	3;1721,1743,1758;,
+	3;1706,1743,1721;,
+	3;1685,1706,1721;,
+	3;1666,1706,1685;,
+	3;1640,1666,1685;,
+	3;1625,1666,1640;,
+	3;1595,1625,1640;,
+	3;1582,1625,1595;,
+	3;1853,1878,1862;,
+	3;1837,1853,1862;,
+	3;1823,1853,1837;,
+	3;1809,1823,1837;,
+	3;1794,1823,1809;,
+	3;1780,1794,1809;,
+	3;1762,1794,1780;,
+	3;1743,1762,1780;,
+	3;1729,1762,1743;,
+	3;1706,1729,1743;,
+	3;1692,1729,1706;,
+	3;1666,1692,1706;,
+	3;1651,1692,1666;,
+	3;1625,1651,1666;,
+	3;1604,1651,1625;,
+	3;1582,1604,1625;,
+	3;1557,1604,1582;,
+	3;1266,1323,1294;,
+	3;1302,1359,1323;,
+	3;1266,1302,1323;,
+	3;1241,1302,1266;,
+	3;1335,1390,1359;,
+	3;1302,1335,1359;,
+	3;1274,1335,1302;,
+	3;1241,1274,1302;,
+	3;1211,1274,1241;,
+	3;1368,1427,1390;,
+	3;1335,1368,1390;,
+	3;1308,1368,1335;,
+	3;1274,1308,1335;,
+	3;1249,1308,1274;,
+	3;1211,1249,1274;,
+	3;1186,1249,1211;,
+	3;1396,1451,1427;,
+	3;1368,1396,1427;,
+	3;1341,1396,1368;,
+	3;1308,1341,1368;,
+	3;1282,1341,1308;,
+	3;1249,1282,1308;,
+	3;1219,1282,1249;,
+	3;1186,1219,1249;,
+	3;1152,1219,1186;,
+	3;1429,1482,1451;,
+	3;1396,1429,1451;,
+	3;1376,1429,1396;,
+	3;1341,1376,1396;,
+	3;1315,1376,1341;,
+	3;1282,1315,1341;,
+	3;1255,1315,1282;,
+	3;1219,1255,1282;,
+	3;1194,1255,1219;,
+	3;1152,1194,1219;,
+	3;1127,1194,1152;,
+	3;1459,1511,1482;,
+	3;1429,1459,1482;,
+	3;1400,1459,1429;,
+	3;1376,1400,1429;,
+	3;1345,1400,1376;,
+	3;1315,1345,1376;,
+	3;1286,1345,1315;,
+	3;1255,1286,1315;,
+	3;1225,1286,1255;,
+	3;1194,1225,1255;,
+	3;1162,1225,1194;,
+	3;1127,1162,1194;,
+	3;1097,1162,1127;,
+	3;1484,1535,1511;,
+	3;1459,1484,1511;,
+	3;1433,1484,1459;,
+	3;1400,1433,1459;,
+	3;1378,1433,1400;,
+	3;1345,1378,1400;,
+	3;1319,1378,1345;,
+	3;1286,1319,1345;,
+	3;1257,1319,1286;,
+	3;1225,1257,1286;,
+	3;1196,1257,1225;,
+	3;1162,1196,1225;,
+	3;1139,1196,1162;,
+	3;1097,1139,1162;,
+	3;1070,1139,1097;,
+	3;1508,1557,1535;,
+	3;1484,1508,1535;,
+	3;1456,1508,1484;,
+	3;1433,1456,1484;,
+	3;1403,1456,1433;,
+	3;1378,1403,1433;,
+	3;1350,1403,1378;,
+	3;1319,1350,1378;,
+	3;1291,1350,1319;,
+	3;1257,1291,1319;,
+	3;1230,1291,1257;,
+	3;1196,1230,1257;,
+	3;1169,1230,1196;,
+	3;1139,1169,1196;,
+	3;1108,1169,1139;,
+	3;1070,1108,1139;,
+	3;948,1108,1070;,
+	3;677,742,718;,
+	3;702,758,742;,
+	3;677,702,742;,
+	3;637,702,677;,
+	3;724,787,758;,
+	3;702,724,758;,
+	3;667,724,702;,
+	3;637,667,702;,
+	3;607,667,637;,
+	3;750,809,787;,
+	3;724,750,787;,
+	3;692,750,724;,
+	3;667,692,724;,
+	3;631,692,667;,
+	3;607,631,667;,
+	3;572,631,607;,
+	3;781,839,809;,
+	3;750,781,809;,
+	3;714,781,750;,
+	3;692,714,750;,
+	3;661,714,692;,
+	3;631,661,692;,
+	3;598,661,631;,
+	3;572,598,631;,
+	3;538,598,572;,
+	3;801,866,839;,
+	3;781,801,839;,
+	3;746,801,781;,
+	3;714,746,781;,
+	3;681,746,714;,
+	3;661,681,714;,
+	3;621,681,661;,
+	3;598,621,661;,
+	3;566,621,598;,
+	3;538,566,598;,
+	3;508,566,538;,
+	3;833,892,866;,
+	3;801,833,866;,
+	3;770,833,801;,
+	3;746,770,801;,
+	3;712,770,746;,
+	3;681,712,746;,
+	3;655,712,681;,
+	3;621,655,681;,
+	3;592,655,621;,
+	3;566,592,621;,
+	3;530,592,566;,
+	3;508,530,566;,
+	3;473,530,508;,
+	3;855,919,892;,
+	3;833,855,892;,
+	3;795,855,833;,
+	3;770,795,833;,
+	3;738,795,770;,
+	3;712,738,770;,
+	3;675,738,712;,
+	3;655,675,712;,
+	3;619,675,655;,
+	3;592,619,655;,
+	3;564,619,592;,
+	3;530,564,592;,
+	3;506,564,530;,
+	3;473,506,530;,
+	3;447,506,473;,
+	3;887,948,919;,
+	3;855,887,919;,
+	3;828,887,855;,
+	3;795,828,855;,
+	3;761,828,795;,
+	3;738,761,795;,
+	3;705,761,738;,
+	3;675,705,738;,
+	3;652,705,675;,
+	3;619,652,675;,
+	3;589,652,619;,
+	3;564,589,619;,
+	3;533,589,564;,
+	3;506,533,564;,
+	3;480,533,506;,
+	3;447,480,506;,
+	3;426,480,447;,
+	3;259,297,293;,
+	3;261,305,297;,
+	3;259,261,297;,
+	3;220,261,259;,
+	3;269,312,305;,
+	3;261,269,305;,
+	3;226,269,261;,
+	3;220,226,261;,
+	3;192,226,220;,
+	3;285,330,312;,
+	3;269,285,312;,
+	3;239,285,269;,
+	3;226,239,269;,
+	3;201,239,226;,
+	3;192,201,226;,
+	3;163,201,192;,
+	3;295,344,330;,
+	3;285,295,330;,
+	3;251,295,285;,
+	3;239,251,285;,
+	3;208,251,239;,
+	3;201,208,239;,
+	3;168,208,201;,
+	3;163,168,201;,
+	3;131,168,163;,
+	3;307,360,344;,
+	3;295,307,344;,
+	3;263,307,295;,
+	3;251,263,295;,
+	3;218,263,251;,
+	3;208,218,251;,
+	3;182,218,208;,
+	3;168,182,208;,
+	3;150,182,168;,
+	3;131,150,168;,
+	3;112,150,131;,
+	3;332,380,360;,
+	3;307,332,360;,
+	3;283,332,307;,
+	3;263,283,307;,
+	3;234,283,263;,
+	3;218,234,263;,
+	3;196,234,218;,
+	3;182,196,218;,
+	3;159,196,182;,
+	3;150,159,182;,
+	3;125,159,150;,
+	3;112,125,150;,
+	3;98,125,112;,
+	3;350,398,380;,
+	3;332,350,380;,
+	3;303,350,332;,
+	3;283,303,332;,
+	3;255,303,283;,
+	3;234,255,283;,
+	3;214,255,234;,
+	3;196,214,234;,
+	3;174,214,196;,
+	3;159,174,196;,
+	3;134,174,159;,
+	3;125,134,159;,
+	3;104,134,125;,
+	3;98,104,125;,
+	3;78,104,98;,
+	3;373,426,398;,
+	3;350,373,398;,
+	3;325,373,350;,
+	3;303,325,350;,
+	3;276,325,303;,
+	3;255,276,303;,
+	3;231,276,255;,
+	3;214,231,255;,
+	3;191,231,214;,
+	3;174,191,214;,
+	3;156,191,174;,
+	3;134,156,174;,
+	3;124,156,134;,
+	3;104,124,134;,
+	3;91,124,104;,
+	3;78,91,104;,
+	3;62,91,78;,
+	3;137,140,167;,
+	3;108,115,139;,
+	3;137,108,138;,
+	3;113,108,137;,
+	3;87,97,116;,
+	3;108,86,114;,
+	3;82,85,108;,
+	3;113,82,108;,
+	3;96,82,113;,
+	3;69,75,97;,
+	3;87,69,97;,
+	3;65,68,84;,
+	3;82,65,83;,
+	3;66,65,82;,
+	3;96,66,82;,
+	3;74,66,96;,
+	3;52,60,75;,
+	3;69,52,75;,
+	3;50,52,69;,
+	3;65,49,67;,
+	3;45,48,65;,
+	3;66,45,65;,
+	3;51,45,66;,
+	3;74,51,66;,
+	3;59,51,74;,
+	3;40,56,60;,
+	3;52,40,60;,
+	3;34,40,52;,
+	3;50,34,52;,
+	3;30,33,47;,
+	3;45,30,46;,
+	3;31,30,45;,
+	3;51,31,45;,
+	3;39,31,51;,
+	3;59,39,51;,
+	3;55,39,59;,
+	3;36,54,56;,
+	3;40,36,56;,
+	3;25,36,40;,
+	3;34,25,40;,
+	3;21,25,34;,
+	3;30,20,32;,
+	3;16,19,30;,
+	3;31,16,30;,
+	3;24,16,31;,
+	3;39,24,31;,
+	3;35,24,39;,
+	3;55,35,39;,
+	3;53,35,55;,
+	3;38,57,54;,
+	3;36,38,54;,
+	3;22,38,36;,
+	3;25,22,36;,
+	3;10,22,25;,
+	3;21,10,25;,
+	3;7,9,18;,
+	3;16,7,17;,
+	3;11,7,16;,
+	3;24,11,16;,
+	3;23,11,24;,
+	3;35,23,24;,
+	3;37,23,35;,
+	3;53,37,35;,
+	3;58,37,53;,
+	3;44,62,57;,
+	3;38,44,57;,
+	3;29,44,38;,
+	3;22,29,38;,
+	3;15,29,22;,
+	3;10,15,22;,
+	3;6,15,10;,
+	3;7,5,8;,
+	3;1,4,7;,
+	3;11,1,7;,
+	3;13,1,11;,
+	3;23,13,11;,
+	3;27,13,23;,
+	3;37,27,23;,
+	3;42,27,37;,
+	3;58,42,37;,
+	3;64,42,58;,
+	3;298,260,294;,
+	3;262,221,260;,
+	3;298,262,260;,
+	3;306,262,298;,
+	3;227,193,221;,
+	3;262,227,221;,
+	3;270,227,262;,
+	3;306,270,262;,
+	3;313,270,306;,
+	3;200,164,193;,
+	3;227,200,193;,
+	3;240,200,227;,
+	3;270,240,227;,
+	3;286,240,270;,
+	3;313,286,270;,
+	3;331,286,313;,
+	3;169,132,164;,
+	3;200,169,164;,
+	3;209,169,200;,
+	3;240,209,200;,
+	3;252,209,240;,
+	3;286,252,240;,
+	3;296,252,286;,
+	3;331,296,286;,
+	3;345,296,331;,
+	3;149,111,132;,
+	3;169,149,132;,
+	3;183,149,169;,
+	3;209,183,169;,
+	3;219,183,209;,
+	3;252,219,209;,
+	3;264,219,252;,
+	3;296,264,252;,
+	3;308,264,296;,
+	3;345,308,296;,
+	3;361,308,345;,
+	3;126,99,111;,
+	3;149,126,111;,
+	3;160,126,149;,
+	3;183,160,149;,
+	3;197,160,183;,
+	3;219,197,183;,
+	3;235,197,219;,
+	3;264,235,219;,
+	3;284,235,264;,
+	3;308,284,264;,
+	3;333,284,308;,
+	3;361,333,308;,
+	3;381,333,361;,
+	3;105,79,99;,
+	3;126,105,99;,
+	3;133,105,126;,
+	3;160,133,126;,
+	3;175,133,160;,
+	3;197,175,160;,
+	3;215,175,197;,
+	3;235,215,197;,
+	3;256,215,235;,
+	3;284,256,235;,
+	3;304,256,284;,
+	3;333,304,284;,
+	3;351,304,333;,
+	3;381,351,333;,
+	3;399,351,381;,
+	3;89,64,79;,
+	3;105,89,79;,
+	3;122,89,105;,
+	3;133,122,105;,
+	3;154,122,133;,
+	3;175,154,133;,
+	3;189,154,175;,
+	3;215,189,175;,
+	3;229,189,215;,
+	3;256,229,215;,
+	3;274,229,256;,
+	3;304,274,256;,
+	3;327,274,304;,
+	3;351,327,304;,
+	3;375,327,351;,
+	3;399,375,351;,
+	3;428,375,399;,
+	3;743,678,719;,
+	3;703,638,678;,
+	3;743,703,678;,
+	3;759,703,743;,
+	3;668,608,638;,
+	3;703,668,638;,
+	3;725,668,703;,
+	3;759,725,703;,
+	3;788,725,759;,
+	3;632,573,608;,
+	3;668,632,608;,
+	3;693,632,668;,
+	3;725,693,668;,
+	3;751,693,725;,
+	3;788,751,725;,
+	3;810,751,788;,
+	3;599,539,573;,
+	3;632,599,573;,
+	3;662,599,632;,
+	3;693,662,632;,
+	3;715,662,693;,
+	3;751,715,693;,
+	3;782,715,751;,
+	3;810,782,751;,
+	3;840,782,810;,
+	3;567,509,539;,
+	3;599,567,539;,
+	3;622,567,599;,
+	3;662,622,599;,
+	3;682,622,662;,
+	3;715,682,662;,
+	3;747,682,715;,
+	3;782,747,715;,
+	3;802,747,782;,
+	3;840,802,782;,
+	3;867,802,840;,
+	3;531,474,509;,
+	3;567,531,509;,
+	3;593,531,567;,
+	3;622,593,567;,
+	3;656,593,622;,
+	3;682,656,622;,
+	3;713,656,682;,
+	3;747,713,682;,
+	3;771,713,747;,
+	3;802,771,747;,
+	3;834,771,802;,
+	3;867,834,802;,
+	3;893,834,867;,
+	3;507,448,474;,
+	3;531,507,474;,
+	3;565,507,531;,
+	3;593,565,531;,
+	3;620,565,593;,
+	3;656,620,593;,
+	3;676,620,656;,
+	3;713,676,656;,
+	3;739,676,713;,
+	3;771,739,713;,
+	3;796,739,771;,
+	3;834,796,771;,
+	3;856,796,834;,
+	3;893,856,834;,
+	3;920,856,893;,
+	3;482,428,448;,
+	3;507,482,448;,
+	3;535,482,507;,
+	3;565,535,507;,
+	3;591,535,565;,
+	3;620,591,565;,
+	3;654,591,620;,
+	3;676,654,620;,
+	3;707,654,676;,
+	3;739,707,676;,
+	3;763,707,739;,
+	3;796,763,739;,
+	3;830,763,796;,
+	3;856,830,796;,
+	3;889,830,856;,
+	3;920,889,856;,
+	3;1045,889,920;,
+	3;1324,1267,1295;,
+	3;1303,1242,1267;,
+	3;1324,1303,1267;,
+	3;1360,1303,1324;,
+	3;1275,1212,1242;,
+	3;1303,1275,1242;,
+	3;1336,1275,1303;,
+	3;1360,1336,1303;,
+	3;1391,1336,1360;,
+	3;1250,1187,1212;,
+	3;1275,1250,1212;,
+	3;1309,1250,1275;,
+	3;1336,1309,1275;,
+	3;1369,1309,1336;,
+	3;1391,1369,1336;,
+	3;1428,1369,1391;,
+	3;1220,1153,1187;,
+	3;1250,1220,1187;,
+	3;1283,1220,1250;,
+	3;1309,1283,1250;,
+	3;1342,1283,1309;,
+	3;1369,1342,1309;,
+	3;1397,1342,1369;,
+	3;1428,1397,1369;,
+	3;1452,1397,1428;,
+	3;1195,1128,1153;,
+	3;1220,1195,1153;,
+	3;1256,1195,1220;,
+	3;1283,1256,1220;,
+	3;1316,1256,1283;,
+	3;1342,1316,1283;,
+	3;1377,1316,1342;,
+	3;1397,1377,1342;,
+	3;1430,1377,1397;,
+	3;1452,1430,1397;,
+	3;1483,1430,1452;,
+	3;1163,1098,1128;,
+	3;1195,1163,1128;,
+	3;1226,1163,1195;,
+	3;1256,1226,1195;,
+	3;1287,1226,1256;,
+	3;1316,1287,1256;,
+	3;1346,1287,1316;,
+	3;1377,1346,1316;,
+	3;1401,1346,1377;,
+	3;1430,1401,1377;,
+	3;1460,1401,1430;,
+	3;1483,1460,1430;,
+	3;1512,1460,1483;,
+	3;1140,1071,1098;,
+	3;1163,1140,1098;,
+	3;1197,1140,1163;,
+	3;1226,1197,1163;,
+	3;1258,1197,1226;,
+	3;1287,1258,1226;,
+	3;1320,1258,1287;,
+	3;1346,1320,1287;,
+	3;1379,1320,1346;,
+	3;1401,1379,1346;,
+	3;1434,1379,1401;,
+	3;1460,1434,1401;,
+	3;1485,1434,1460;,
+	3;1512,1485,1460;,
+	3;1536,1485,1512;,
+	3;1110,1045,1071;,
+	3;1140,1110,1071;,
+	3;1171,1110,1140;,
+	3;1197,1171,1140;,
+	3;1232,1171,1197;,
+	3;1258,1232,1197;,
+	3;1293,1232,1258;,
+	3;1320,1293,1258;,
+	3;1352,1293,1320;,
+	3;1379,1352,1320;,
+	3;1405,1352,1379;,
+	3;1434,1405,1379;,
+	3;1458,1405,1434;,
+	3;1485,1458,1434;,
+	3;1510,1458,1485;,
+	3;1536,1510,1485;,
+	3;1559,1510,1536;,
+	3;1680,1647,1643;,
+	3;1681,1644,1647;,
+	3;1680,1681,1647;,
+	3;1719,1681,1680;,
+	3;1678,1639,1644;,
+	3;1681,1678,1644;,
+	3;1715,1678,1681;,
+	3;1719,1715,1681;,
+	3;1752,1715,1719;,
+	3;1676,1633,1639;,
+	3;1678,1676,1639;,
+	3;1712,1676,1678;,
+	3;1715,1712,1678;,
+	3;1747,1712,1715;,
+	3;1752,1747,1715;,
+	3;1778,1747,1752;,
+	3;1663,1624,1633;,
+	3;1676,1663,1633;,
+	3;1704,1663,1676;,
+	3;1712,1704,1676;,
+	3;1742,1704,1712;,
+	3;1747,1742,1712;,
+	3;1774,1742,1747;,
+	3;1778,1774,1747;,
+	3;1807,1774,1778;,
+	3;1659,1612,1624;,
+	3;1663,1659,1624;,
+	3;1697,1659,1663;,
+	3;1704,1697,1663;,
+	3;1733,1697,1704;,
+	3;1742,1733,1704;,
+	3;1768,1733,1742;,
+	3;1774,1768,1742;,
+	3;1798,1768,1774;,
+	3;1807,1798,1774;,
+	3;1828,1798,1807;,
+	3;1641,1596,1612;,
+	3;1659,1641,1612;,
+	3;1686,1641,1659;,
+	3;1697,1686,1659;,
+	3;1720,1686,1697;,
+	3;1733,1720,1697;,
+	3;1757,1720,1733;,
+	3;1768,1757,1733;,
+	3;1789,1757,1768;,
+	3;1798,1789,1768;,
+	3;1817,1789,1798;,
+	3;1828,1817,1798;,
+	3;1844,1817,1828;,
+	3;1626,1583,1596;,
+	3;1641,1626,1596;,
+	3;1667,1626,1641;,
+	3;1686,1667,1641;,
+	3;1707,1667,1686;,
+	3;1720,1707,1686;,
+	3;1744,1707,1720;,
+	3;1757,1744,1720;,
+	3;1781,1744,1757;,
+	3;1789,1781,1757;,
+	3;1810,1781,1789;,
+	3;1817,1810,1789;,
+	3;1836,1810,1817;,
+	3;1844,1836,1817;,
+	3;1861,1836,1844;,
+	3;1606,1559,1583;,
+	3;1626,1606,1583;,
+	3;1653,1606,1626;,
+	3;1667,1653,1626;,
+	3;1694,1653,1667;,
+	3;1707,1694,1667;,
+	3;1731,1694,1707;,
+	3;1744,1731,1707;,
+	3;1764,1731,1744;,
+	3;1781,1764,1744;,
+	3;1796,1764,1781;,
+	3;1810,1796,1781;,
+	3;1825,1796,1810;,
+	3;1836,1825,1810;,
+	3;1855,1825,1836;,
+	3;1861,1855,1836;,
+	3;1876,1855,1861;,
+	3;1043,1875,1892;,
+	3;1042,1892,1908;,
+	3;1041,1908,1919;,
+	3;1040,1919,1926;,
+	3;1039,1926,1928;,
+	3;1038,1928,1921;,
+	3;1037,1921,1910;,
+	3;1036,1910,1894;,
+	3;1035,1894,1877;,
+	3;1034,1877,1852;,
+	3;1033,1852,1822;,
+	3;1032,1822,1793;,
+	3;1031,1793,1761;,
+	3;1030,1761,1728;,
+	3;1029,1728,1691;,
+	3;1028,1691,1650;,
+	3;1027,1650,1603;,
+	3;1026,1603,1556;,
+	3;1025,1556,1507;,
+	3;1024,1507,1455;,
+	3;1023,1455,1402;,
+	3;1022,1402,1349;,
+	3;1021,1349,1290;,
+	3;1020,1290,1229;,
+	3;1019,1229,1168;,
+	3;1018,1168,1107;,
+	3;1017,1107,947;,
+	3;1016,947,886;,
+	3;1015,886,827;,
+	3;1014,827,760;,
+	3;1013,760,704;,
+	3;1012,704,651;,
+	3;1011,651,588;,
+	3;1010,588,532;,
+	3;1009,532,479;,
+	3;1008,479,425;,
+	3;1007,425,372;,
+	3;1006,372,324;,
+	3;1005,324,275;,
+	3;1004,275,230;,
+	3;1003,230,190;,
+	3;1002,190,155;,
+	3;1001,155,123;,
+	3;1000,123,90;,
+	3;999,90,61;,
+	3;998,61,43;,
+	3;997,43,28;,
+	3;996,28,14;,
+	3;995,14,3;,
+	3;994,2,0;,
+	3;993,0,12;,
+	3;992,12,26;,
+	3;991,26,41;,
+	3;990,41,63;,
+	3;989,63,88;,
+	3;988,88,121;,
+	3;987,121,153;,
+	3;986,153,188;,
+	3;985,188,228;,
+	3;984,228,273;,
+	3;983,273,326;,
+	3;982,326,374;,
+	3;981,374,427;,
+	3;980,427,481;,
+	3;979,481,534;,
+	3;978,534,590;,
+	3;977,590,653;,
+	3;976,653,706;,
+	3;975,706,762;,
+	3;974,762,829;,
+	3;973,829,888;,
+	3;972,888,1044;,
+	3;971,1044,1109;,
+	3;970,1109,1170;,
+	3;969,1170,1231;,
+	3;968,1231,1292;,
+	3;967,1292,1351;,
+	3;966,1351,1404;,
+	3;965,1404,1457;,
+	3;964,1457,1509;,
+	3;963,1509,1558;,
+	3;962,1558,1605;,
+	3;961,1605,1652;,
+	3;960,1652,1693;,
+	3;959,1693,1730;,
+	3;958,1730,1763;,
+	3;957,1763,1795;,
+	3;956,1795,1824;,
+	3;955,1824,1854;,
+	3;954,1854,1875;;
+
+	MeshMaterialList {
+		1;1;0;;
+		{xof_default}
+	}
+
+	MeshNormals {
+		1725; // 1725 normals
+		-0.999582;-0.000000;-0.028915;,
+		-0.998710;-0.035013;-0.036770;,
+		-0.997996;0.035256;-0.052544;,
+		-0.997150;0.069730;-0.028790;,
+		-0.996735;-0.000001;-0.080737;,
+		-0.994260;-0.070442;-0.080535;,
+		-0.993815;0.104864;-0.036550;,
+		-0.993814;-0.104864;-0.036555;,
+		-0.993474;0.035200;-0.108489;,
+		-0.992862;0.088018;-0.080490;,
+		-0.991131;-0.000000;-0.132891;,
+		-0.986844;-0.140532;-0.079931;,
+		-0.986844;0.140533;-0.079931;,
+		-0.986584;-0.035457;-0.159357;,
+		-0.984739;0.070871;-0.158953;,
+		-0.984047;-0.174201;-0.036124;,
+		-0.984047;0.174203;-0.036121;,
+		-0.982606;-0.000000;-0.185703;,
+		-0.981623;-0.106195;-0.158554;,
+		-0.981622;0.106195;-0.158556;,
+		-0.977004;0.035614;-0.210224;,
+		-0.974526;-0.209929;-0.078929;,
+		-0.974525;0.209930;-0.078929;,
+		-0.971943;-0.000000;-0.235214;,
+		-0.971723;-0.176408;-0.156953;,
+		-0.971723;0.176408;-0.156954;,
+		-0.969487;-0.071057;-0.234620;,
+		-0.969455;0.242691;-0.035481;,
+		-0.969454;-0.242692;-0.035482;,
+		-0.968096;0.088788;-0.234320;,
+		-0.965061;0.035463;-0.259616;,
+		-0.962127;-0.141769;-0.232837;,
+		-0.962127;0.141769;-0.232837;,
+		-0.958706;-0.000000;-0.284398;,
+		-0.958142;0.276223;-0.075264;,
+		-0.958142;-0.276224;-0.075264;,
+		-0.957797;0.243595;-0.152599;,
+		-0.957796;-0.243596;-0.152600;,
+		-0.950929;-0.035532;-0.307363;,
+		-0.950870;-0.308057;-0.030787;,
+		-0.950870;0.308057;-0.030787;,
+		-0.950795;0.209542;-0.228214;,
+		-0.950794;-0.209543;-0.228214;,
+		-0.949139;0.071021;-0.306744;,
+		-0.946125;-0.106429;-0.305810;,
+		-0.946125;0.106429;-0.305810;,
+		-0.943818;-0.000000;-0.330465;,
+		-0.940954;0.306938;-0.142808;,
+		-0.940954;-0.306939;-0.142809;,
+		-0.938024;0.339933;-0.067494;,
+		-0.938024;-0.339933;-0.067494;,
+		-0.937420;-0.174479;-0.301332;,
+		-0.937420;0.174479;-0.301332;,
+		-0.936692;0.273234;-0.218978;,
+		-0.936692;-0.273235;-0.218978;,
+		-0.934386;0.035508;-0.354489;,
+		-0.927066;0.373829;-0.028283;,
+		-0.927066;-0.373829;-0.028285;,
+		-0.926545;-0.000000;-0.376183;,
+		-0.925959;0.238208;-0.293012;,
+		-0.925959;-0.238209;-0.293012;,
+		-0.924221;-0.070786;-0.375239;,
+		-0.922913;0.088452;-0.374711;,
+		-0.920357;-0.367958;-0.132475;,
+		-0.920357;0.367958;-0.132475;,
+		-0.919726;-0.333664;-0.206815;,
+		-0.919726;0.333665;-0.206815;,
+		-0.918083;-0.138815;-0.371288;,
+		-0.918083;0.138815;-0.371288;,
+		-0.917054;0.035292;-0.397197;,
+		-0.912322;-0.404095;-0.066152;,
+		-0.912322;0.404096;-0.066151;,
+		-0.911772;-0.298773;-0.281791;,
+		-0.911772;0.298772;-0.281792;,
+		-0.909090;0.202282;-0.364194;,
+		-0.909090;-0.202283;-0.364194;,
+		-0.907052;-0.000000;-0.421019;,
+		-0.898632;-0.437754;-0.028847;,
+		-0.898631;0.437755;-0.028845;,
+		-0.897946;-0.393873;-0.196359;,
+		-0.897946;0.393873;-0.196359;,
+		-0.897507;0.262669;-0.354240;,
+		-0.897507;-0.262670;-0.354240;,
+		-0.896996;-0.035204;-0.440634;,
+		-0.895316;0.070365;-0.439839;,
+		-0.893894;-0.358287;-0.269415;,
+		-0.893894;0.358287;-0.269415;,
+		-0.893283;0.102934;-0.437551;,
+		-0.893283;-0.102934;-0.437551;,
+		-0.892485;-0.431403;-0.131761;,
+		-0.892485;0.431404;-0.131761;,
+		-0.887593;-0.000000;-0.460628;,
+		-0.886526;0.165863;-0.431928;,
+		-0.886525;-0.165863;-0.431929;,
+		-0.882393;0.322204;-0.342880;,
+		-0.882393;-0.322205;-0.342879;,
+		-0.881565;0.467287;-0.066985;,
+		-0.881564;-0.467287;-0.066987;,
+		-0.877309;0.225781;-0.423499;,
+		-0.877309;-0.225781;-0.423499;,
+		-0.874937;0.035031;-0.482967;,
+		-0.871081;0.417515;-0.258650;,
+		-0.871080;-0.417515;-0.258650;,
+		-0.867957;0.456348;-0.195954;,
+		-0.867956;-0.456348;-0.195954;,
+		-0.865801;0.499535;-0.029217;,
+		-0.865800;-0.499536;-0.029221;,
+		-0.865073;-0.000000;-0.501645;,
+		-0.864763;-0.285030;-0.413452;,
+		-0.864763;0.285029;-0.413453;,
+		-0.863774;0.380660;-0.330141;,
+		-0.863773;-0.380660;-0.330141;,
+		-0.863580;-0.067186;-0.499715;,
+		-0.862773;0.083304;-0.498682;,
+		-0.859372;0.493727;-0.133093;,
+		-0.859372;-0.493727;-0.133093;,
+		-0.858785;0.129329;-0.495745;,
+		-0.858785;-0.129329;-0.495745;,
+		-0.853711;0.034778;-0.519584;,
+		-0.851654;0.188515;-0.489027;,
+		-0.851654;-0.188514;-0.489027;,
+		-0.848897;0.343400;-0.401808;,
+		-0.848897;-0.343402;-0.401807;,
+		-0.846454;0.528167;-0.067488;,
+		-0.846454;-0.528168;-0.067489;,
+		-0.841423;0.247192;-0.480524;,
+		-0.841423;-0.247191;-0.480525;,
+		-0.840781;-0.000000;-0.541375;,
+		-0.840109;0.438769;-0.318903;,
+		-0.840108;-0.438769;-0.318904;,
+		-0.839083;0.478804;-0.258238;,
+		-0.839083;-0.478804;-0.258237;,
+		-0.832563;0.517550;-0.197436;,
+		-0.832563;-0.517550;-0.197437;,
+		-0.829731;0.400684;-0.388586;,
+		-0.829730;-0.400685;-0.388586;,
+		-0.829560;-0.031871;-0.557508;,
+		-0.828733;0.558871;-0.029405;,
+		-0.828733;-0.558871;-0.029410;,
+		-0.828093;0.305176;-0.470244;,
+		-0.828093;-0.305176;-0.470244;,
+		-0.827939;0.063793;-0.557178;,
+		-0.826431;0.093019;-0.555302;,
+		-0.826430;-0.093019;-0.555302;,
+		-0.821981;-0.553585;-0.133759;,
+		-0.821981;0.553585;-0.133760;,
+		-0.821080;0.151243;-0.550412;,
+		-0.821080;-0.151243;-0.550412;,
+		-0.817932;-0.000000;-0.575315;,
+		-0.812876;0.209096;-0.543609;,
+		-0.812876;-0.209096;-0.543610;,
+		-0.811670;0.362278;-0.458200;,
+		-0.811669;-0.362280;-0.458199;,
+		-0.807163;0.586439;-0.067656;,
+		-0.807163;-0.586438;-0.067657;,
+		-0.806261;-0.498699;-0.318186;,
+		-0.806261;0.498699;-0.318186;,
+		-0.805439;0.028737;-0.591981;,
+		-0.805419;-0.457565;-0.376742;,
+		-0.805419;0.457566;-0.376741;,
+		-0.801817;0.266416;-0.534895;,
+		-0.801816;-0.266416;-0.534896;,
+		-0.801542;0.538676;-0.259534;,
+		-0.801542;-0.538677;-0.259534;,
+		-0.793012;0.576156;-0.197931;,
+		-0.793011;-0.576157;-0.197932;,
+		-0.792165;-0.418304;-0.444405;,
+		-0.792165;0.418304;-0.444406;,
+		-0.791483;-0.000001;-0.611191;,
+		-0.790081;-0.059251;-0.610133;,
+		-0.789292;0.074556;-0.609475;,
+		-0.787899;0.323041;-0.524271;,
+		-0.787898;-0.323041;-0.524273;,
+		-0.787611;0.615471;-0.029407;,
+		-0.787611;-0.615471;-0.029411;,
+		-0.786083;0.116516;-0.607040;,
+		-0.786083;-0.116516;-0.607040;,
+		-0.780496;0.610683;-0.133759;,
+		-0.780496;-0.610683;-0.133759;,
+		-0.779470;0.173514;-0.601929;,
+		-0.779470;-0.173515;-0.601929;,
+		-0.776315;0.028463;-0.629703;,
+		-0.771124;0.378796;-0.511744;,
+		-0.771123;-0.378797;-0.511744;,
+		-0.770238;-0.230107;-0.594797;,
+		-0.770238;0.230107;-0.594797;,
+		-0.769921;0.516006;-0.375446;,
+		-0.769921;-0.516007;-0.375446;,
+		-0.767428;-0.473876;-0.431850;,
+		-0.767428;0.473877;-0.431851;,
+		-0.766756;0.557080;-0.318979;,
+		-0.766756;-0.557081;-0.318977;,
+		-0.764494;0.062767;-0.641567;,
+		-0.763886;0.641813;-0.067489;,
+		-0.763886;-0.641813;-0.067490;,
+		-0.760002;0.595851;-0.259534;,
+		-0.760002;-0.595852;-0.259534;,
+		-0.758381;0.286152;-0.585641;,
+		-0.758381;-0.286153;-0.585641;,
+		-0.751499;0.433502;-0.497319;,
+		-0.751498;-0.433501;-0.497319;,
+		-0.750403;0.015451;-0.660800;,
+		-0.750283;-0.031037;-0.660388;,
+		-0.749496;0.631882;-0.197435;,
+		-0.749495;-0.631883;-0.197438;,
+		-0.747507;-0.090609;-0.658045;,
+		-0.747507;0.090609;-0.658045;,
+		-0.743894;0.341502;-0.574455;,
+		-0.743894;-0.341502;-0.574455;,
+		-0.742634;-0.669060;-0.029222;,
+		-0.742633;0.669061;-0.029218;,
+		-0.741733;-0.147337;-0.654312;,
+		-0.741733;0.147337;-0.654312;,
+		-0.735123;0.664741;-0.133092;,
+		-0.735123;-0.664741;-0.133093;,
+		-0.734099;0.061543;-0.676247;,
+		-0.733512;-0.203733;-0.648424;,
+		-0.733512;0.203733;-0.648424;,
+		-0.730507;0.530743;-0.429734;,
+		-0.730506;-0.530744;-0.429734;,
+		-0.728671;0.572783;-0.375444;,
+		-0.728670;-0.572783;-0.375445;,
+		-0.726774;0.395997;-0.561237;,
+		-0.726773;-0.395997;-0.561237;,
+		-0.726562;0.487716;-0.483984;,
+		-0.726562;-0.487716;-0.483984;,
+		-0.723440;-0.612694;-0.318185;,
+		-0.723440;0.612693;-0.318187;,
+		-0.722837;-0.259673;-0.640372;,
+		-0.722837;0.259672;-0.640373;,
+		-0.720361;0.095671;-0.686969;,
+		-0.716835;-0.694017;-0.066987;,
+		-0.716834;0.694018;-0.066985;,
+		-0.714661;0.650056;-0.258237;,
+		-0.714661;-0.650057;-0.258236;,
+		-0.709701;-0.315023;-0.630147;,
+		-0.709700;0.315023;-0.630148;,
+		-0.708763;-0.000000;-0.705447;,
+		-0.708273;0.033170;-0.705159;,
+		-0.707019;-0.449470;-0.545986;,
+		-0.707019;0.449471;-0.545986;,
+		-0.706728;-0.063812;-0.704601;,
+		-0.702226;0.684457;-0.195953;,
+		-0.702226;-0.684456;-0.195955;,
+		-0.702148;-0.122856;-0.701352;,
+		-0.702147;0.122857;-0.701352;,
+		-0.694631;-0.179113;-0.696711;,
+		-0.694631;0.179113;-0.696711;,
+		-0.694093;-0.369643;-0.617737;,
+		-0.694092;0.369643;-0.617738;,
+		-0.694022;-0.719376;-0.028845;,
+		-0.694021;0.719376;-0.028843;,
+		-0.689416;0.093545;-0.718301;,
+		-0.688366;0.540286;-0.483986;,
+		-0.688366;-0.540288;-0.483985;,
+		-0.687833;0.583431;-0.431850;,
+		-0.687832;-0.583432;-0.431851;,
+		-0.686116;-0.498492;-0.529859;,
+		-0.686115;0.498492;-0.529860;,
+		-0.686083;-0.715492;-0.131762;,
+		-0.686082;0.715493;-0.131761;,
+		-0.684824;-0.234985;-0.689781;,
+		-0.684823;0.234984;-0.689782;,
+		-0.684059;0.624604;-0.376741;,
+		-0.684058;-0.624604;-0.376742;,
+		-0.677117;0.065506;-0.732954;,
+		-0.676902;0.663403;-0.318905;,
+		-0.676902;-0.663404;-0.318903;,
+		-0.676005;-0.423381;-0.603130;,
+		-0.676004;0.423381;-0.603131;,
+		-0.672716;-0.290352;-0.680551;,
+		-0.672715;0.290352;-0.680551;,
+		-0.666259;-0.699428;-0.258649;,
+		-0.666259;0.699428;-0.258648;,
+		-0.666241;-0.742797;-0.066152;,
+		-0.666241;0.742797;-0.066150;,
+		-0.664657;0.016315;-0.746971;,
+		-0.664333;-0.032639;-0.746724;,
+		-0.660920;-0.095441;-0.744363;,
+		-0.660920;0.095441;-0.744363;,
+		-0.658295;-0.345093;-0.668999;,
+		-0.658294;0.345093;-0.668999;,
+		-0.657193;-0.477478;-0.583192;,
+		-0.657192;0.477479;-0.583192;,
+		-0.654707;-0.153853;-0.740059;,
+		-0.654707;0.153853;-0.740059;,
+		-0.652076;0.732284;-0.196359;,
+		-0.652076;-0.732284;-0.196360;,
+		-0.648956;0.064957;-0.758048;,
+		-0.645953;-0.533521;-0.545986;,
+		-0.645953;0.533520;-0.545987;,
+		-0.645605;-0.209546;-0.734360;,
+		-0.645605;0.209546;-0.734360;,
+		-0.644510;-0.580758;-0.497320;,
+		-0.644510;0.580756;-0.497322;,
+		-0.642623;0.624132;-0.444404;,
+		-0.642623;-0.624132;-0.444405;,
+		-0.642012;0.766173;-0.028282;,
+		-0.642011;-0.766174;-0.028284;,
+		-0.641547;-0.399068;-0.655105;,
+		-0.641546;0.399068;-0.655105;,
+		-0.637474;0.665302;-0.388586;,
+		-0.637474;-0.665302;-0.388586;,
+		-0.634371;-0.264812;-0.726256;,
+		-0.634370;0.264811;-0.726257;,
+		-0.634355;0.761606;-0.132474;,
+		-0.634355;-0.761606;-0.132477;,
+		-0.630619;0.096518;-0.770067;,
+		-0.628950;-0.703867;-0.330141;,
+		-0.628950;0.703867;-0.330142;,
+		-0.624142;-0.453465;-0.636252;,
+		-0.624141;0.453466;-0.636252;,
+		-0.620990;0.319542;-0.715726;,
+		-0.620990;-0.319543;-0.715726;,
+		-0.619060;-0.000000;-0.785344;,
+		-0.618612;0.032065;-0.785042;,
+		-0.617784;-0.064129;-0.783728;,
+		-0.616979;-0.739427;-0.269415;,
+		-0.616979;0.739427;-0.269415;,
+		-0.613255;-0.125850;-0.779795;,
+		-0.613255;0.125849;-0.779795;,
+		-0.613162;0.787069;-0.067493;,
+		-0.613161;-0.787070;-0.067494;,
+		-0.611556;-0.512087;-0.603130;,
+		-0.611556;0.512087;-0.603131;,
+		-0.605590;0.183553;-0.774319;,
+		-0.605589;-0.183553;-0.774319;,
+		-0.605448;0.373620;-0.702739;,
+		-0.605447;-0.373619;-0.702739;,
+		-0.601544;0.771603;-0.206815;,
+		-0.601544;-0.771603;-0.206816;,
+		-0.601288;0.095712;-0.793279;,
+		-0.601200;-0.568833;-0.561237;,
+		-0.601200;0.568832;-0.561238;,
+		-0.598546;-0.616328;-0.511744;,
+		-0.598546;0.616327;-0.511746;,
+		-0.595367;-0.659993;-0.458199;,
+		-0.595367;0.659994;-0.458198;,
+		-0.595065;0.238615;-0.767437;,
+		-0.595064;-0.238615;-0.767438;,
+		-0.589317;0.428164;-0.685113;,
+		-0.589317;-0.428164;-0.685114;,
+		-0.588918;-0.701233;-0.401807;,
+		-0.588918;0.701233;-0.401807;,
+		-0.586815;0.809136;-0.030785;,
+		-0.586814;-0.809137;-0.030786;,
+		-0.586139;0.063189;-0.807743;,
+		-0.582686;-0.800051;-0.142810;,
+		-0.582686;0.800052;-0.142808;,
+		-0.582566;0.293222;-0.758049;,
+		-0.582565;-0.293222;-0.758049;,
+		-0.579109;-0.739639;-0.342879;,
+		-0.579108;0.739641;-0.342879;,
+		-0.577785;0.486828;-0.655105;,
+		-0.577785;-0.486828;-0.655105;,
+		-0.572017;0.015737;-0.820090;,
+		-0.571735;-0.031482;-0.819834;,
+		-0.569463;0.094401;-0.816579;,
+		-0.569462;-0.094402;-0.816579;,
+		-0.568074;0.347274;-0.746118;,
+		-0.568074;-0.347275;-0.746118;,
+		-0.566038;-0.545896;-0.617737;,
+		-0.566038;0.545895;-0.617738;,
+		-0.565903;-0.774821;-0.281790;,
+		-0.565902;0.774821;-0.281792;,
+		-0.564068;0.154994;-0.811051;,
+		-0.564068;-0.154994;-0.811051;,
+		-0.558786;0.825890;-0.075264;,
+		-0.558785;-0.825890;-0.075263;,
+		-0.555146;0.062660;-0.829389;,
+		-0.555130;-0.211939;-0.804309;,
+		-0.555130;0.211938;-0.804309;,
+		-0.554663;-0.601956;-0.574455;,
+		-0.554663;0.601954;-0.574457;,
+		-0.553072;0.401830;-0.729824;,
+		-0.553072;-0.401830;-0.729825;,
+		-0.550703;-0.649511;-0.524272;,
+		-0.550703;0.649510;-0.524273;,
+		-0.549315;-0.806413;-0.218978;,
+		-0.549314;0.806414;-0.218977;,
+		-0.546134;0.693259;-0.470244;,
+		-0.546134;-0.693259;-0.470244;,
+		-0.543347;-0.266324;-0.796144;,
+		-0.543347;0.266324;-0.796144;,
+		-0.542427;0.460360;-0.702738;,
+		-0.542427;-0.460360;-0.702739;,
+		-0.538306;-0.734360;-0.413452;,
+		-0.538305;0.734361;-0.413451;,
+		-0.537330;0.092931;-0.838236;,
+		-0.531627;0.519436;-0.668999;,
+		-0.531626;-0.519436;-0.668999;,
+		-0.530391;0.847010;-0.035481;,
+		-0.530390;-0.847011;-0.035481;,
+		-0.529744;-0.320241;-0.785377;,
+		-0.529744;0.320241;-0.785377;,
+		-0.527648;0.835644;-0.152600;,
+		-0.527648;-0.835644;-0.152600;,
+		-0.527159;-0.772410;-0.354240;,
+		-0.527158;0.772410;-0.354240;,
+		-0.523664;-0.000000;-0.851925;,
+		-0.523266;0.030865;-0.851610;,
+		-0.522664;-0.061743;-0.850300;,
+		-0.519658;-0.123416;-0.845414;,
+		-0.519658;0.123415;-0.845414;,
+		-0.518914;-0.577618;-0.630147;,
+		-0.518914;0.577618;-0.630148;,
+		-0.515718;-0.374691;-0.770482;,
+		-0.515718;0.374691;-0.770482;,
+		-0.513637;0.182854;-0.838297;,
+		-0.513637;-0.182853;-0.838297;,
+		-0.512687;0.807029;-0.293012;,
+		-0.512687;-0.807029;-0.293011;,
+		-0.506500;-0.632838;-0.585640;,
+		-0.506499;0.632836;-0.585642;,
+		-0.505822;-0.432957;-0.746118;,
+		-0.505822;0.432957;-0.746118;,
+		-0.505012;0.092169;-0.858177;,
+		-0.503604;-0.239008;-0.830216;,
+		-0.503603;0.239008;-0.830216;,
+		-0.501152;-0.680245;-0.534896;,
+		-0.501151;0.680245;-0.534897;,
+		-0.500800;0.861957;-0.078929;,
+		-0.500799;-0.861958;-0.078929;,
+		-0.495800;-0.491853;-0.715726;,
+		-0.495800;0.491853;-0.715726;,
+		-0.495107;-0.723854;-0.480525;,
+		-0.495106;0.723855;-0.480524;,
+		-0.493098;-0.839507;-0.228214;,
+		-0.493098;0.839508;-0.228213;,
+		-0.490723;-0.292694;-0.820683;,
+		-0.490723;0.292693;-0.820684;,
+		-0.490014;0.060722;-0.869597;,
+		-0.485833;0.764601;-0.423498;,
+		-0.485833;-0.764601;-0.423499;,
+		-0.484022;0.550067;-0.680551;,
+		-0.484021;-0.550067;-0.680551;,
+		-0.477521;0.346940;-0.807221;,
+		-0.477521;-0.346940;-0.807221;,
+		-0.474090;0.015124;-0.880347;,
+		-0.473849;-0.030256;-0.880086;,
+		-0.473306;0.802087;-0.364195;,
+		-0.473305;-0.802088;-0.364194;,
+		-0.472108;-0.090744;-0.876858;,
+		-0.472108;0.090744;-0.876858;,
+		-0.470332;0.607216;-0.640373;,
+		-0.470332;-0.607216;-0.640372;,
+		-0.469764;0.882053;-0.036122;,
+		-0.469764;-0.882053;-0.036124;,
+		-0.468613;-0.151152;-0.870376;,
+		-0.468613;0.151152;-0.870376;,
+		-0.468267;-0.404856;-0.785377;,
+		-0.468267;0.404857;-0.785377;,
+		-0.468053;0.869650;-0.156954;,
+		-0.468053;-0.869651;-0.156953;,
+		-0.462190;0.209425;-0.861697;,
+		-0.462189;-0.209425;-0.861697;,
+		-0.458894;-0.463442;-0.758048;,
+		-0.458894;0.463442;-0.758049;,
+		-0.456861;-0.661433;-0.594797;,
+		-0.456861;0.661432;-0.594799;,
+		-0.455892;0.060233;-0.887995;,
+		-0.455618;-0.837623;-0.301331;,
+		-0.455618;0.837623;-0.301331;,
+		-0.451231;0.264778;-0.852222;,
+		-0.451231;-0.264777;-0.852223;,
+		-0.450054;-0.708477;-0.543610;,
+		-0.450053;0.708477;-0.543611;,
+		-0.447883;0.521491;-0.726256;,
+		-0.447883;-0.521491;-0.726256;,
+		-0.442463;0.751718;-0.489027;,
+		-0.442463;-0.751718;-0.489027;,
+		-0.439162;0.089167;-0.893972;,
+		-0.438707;0.318739;-0.840203;,
+		-0.438707;-0.318740;-0.840203;,
+		-0.438606;0.895118;-0.079932;,
+		-0.438606;-0.895118;-0.079932;,
+		-0.435106;0.578692;-0.689782;,
+		-0.435105;-0.578692;-0.689782;,
+		-0.432144;0.871228;-0.232836;,
+		-0.432144;-0.871228;-0.232836;,
+		-0.431696;0.791882;-0.431928;,
+		-0.431696;-0.791882;-0.431928;,
+		-0.430010;-0.376257;-0.820684;,
+		-0.430010;0.376258;-0.820684;,
+		-0.423264;-0.000000;-0.906006;,
+		-0.422921;0.029620;-0.905682;,
+		-0.422520;-0.059252;-0.904415;,
+		-0.421193;0.434455;-0.796144;,
+		-0.421192;-0.434455;-0.796145;,
+		-0.420429;0.634654;-0.648423;,
+		-0.420429;-0.634655;-0.648423;,
+		-0.420280;-0.118469;-0.899628;,
+		-0.420279;0.118469;-0.899628;,
+		-0.416526;-0.177610;-0.891606;,
+		-0.416525;0.177610;-0.891606;,
+		-0.415724;0.830252;-0.371289;,
+		-0.415723;-0.830252;-0.371289;,
+		-0.410822;0.492204;-0.767438;,
+		-0.410821;-0.492205;-0.767438;,
+		-0.409907;-0.234719;-0.881410;,
+		-0.409907;0.234719;-0.881410;,
+		-0.406837;-0.912769;-0.036554;,
+		-0.406836;0.912770;-0.036550;,
+		-0.405891;-0.687701;-0.601929;,
+		-0.405891;0.687701;-0.601930;,
+		-0.404878;0.029499;-0.913895;,
+		-0.404336;0.900762;-0.158556;,
+		-0.404336;-0.900763;-0.158554;,
+		-0.403534;0.088483;-0.910676;,
+		-0.399457;0.290222;-0.869601;,
+		-0.399457;-0.290223;-0.869600;,
+		-0.398793;-0.549254;-0.734360;,
+		-0.398793;0.549254;-0.734360;,
+		-0.397569;-0.734156;-0.550413;,
+		-0.397568;0.734156;-0.550413;,
+		-0.393589;0.866930;-0.305810;,
+		-0.393589;-0.866930;-0.305811;,
+		-0.391257;-0.347326;-0.852222;,
+		-0.391257;0.347326;-0.852222;,
+		-0.389900;-0.000000;-0.920857;,
+		-0.389207;0.058169;-0.919312;,
+		-0.388379;-0.776788;-0.495743;,
+		-0.388378;0.776788;-0.495744;,
+		-0.385000;0.605285;-0.696711;,
+		-0.384999;-0.605285;-0.696711;,
+		-0.382932;0.405098;-0.830216;,
+		-0.382932;-0.405098;-0.830216;,
+		-0.374236;0.923830;-0.080534;,
+		-0.374236;-0.923830;-0.080535;,
+		-0.373935;-0.817755;-0.437550;,
+		-0.373935;0.817755;-0.437550;,
+		-0.373693;-0.029106;-0.927096;,
+		-0.373652;0.058005;-0.925753;,
+		-0.373109;0.462467;-0.804310;,
+		-0.373109;-0.462467;-0.804309;,
+		-0.372426;0.087306;-0.923946;,
+		-0.372426;-0.087306;-0.923946;,
+		-0.369882;-0.145473;-0.917619;,
+		-0.369882;0.145473;-0.917619;,
+		-0.369334;0.659900;-0.654312;,
+		-0.369334;-0.659901;-0.654311;,
+		-0.367168;0.900079;-0.234618;,
+		-0.367167;-0.900079;-0.234619;,
+		-0.366037;-0.203572;-0.908061;,
+		-0.366037;0.203572;-0.908062;,
+		-0.361706;0.519229;-0.774319;,
+		-0.361706;-0.519229;-0.774319;,
+		-0.358640;0.260567;-0.896372;,
+		-0.358640;-0.260567;-0.896372;,
+		-0.358549;-0.000000;-0.933511;,
+		-0.353727;0.711603;-0.607040;,
+		-0.353727;-0.711604;-0.607040;,
+		-0.352921;-0.857112;-0.375240;,
+		-0.352921;0.857112;-0.375241;,
+		-0.349899;0.317312;-0.881410;,
+		-0.349899;-0.317313;-0.881410;,
+		-0.348638;0.575121;-0.740059;,
+		-0.348638;-0.575120;-0.740059;,
+		-0.343847;-0.757237;-0.555302;,
+		-0.343847;0.757237;-0.555303;,
+		-0.342000;0.374853;-0.861697;,
+		-0.342000;-0.374853;-0.861697;,
+		-0.341916;0.939011;-0.036763;,
+		-0.341916;-0.939011;-0.036769;,
+		-0.340335;0.029038;-0.939856;,
+		-0.338593;0.927340;-0.159359;,
+		-0.338592;-0.927341;-0.159357;,
+		-0.333819;0.629817;-0.701353;,
+		-0.333819;-0.629817;-0.701353;,
+		-0.332626;0.431993;-0.838297;,
+		-0.332626;-0.431993;-0.838297;,
+		-0.330758;-0.800553;-0.499714;,
+		-0.330757;0.800553;-0.499714;,
+		-0.328036;-0.000000;-0.944665;,
+		-0.327646;0.893407;-0.307363;,
+		-0.327646;-0.893407;-0.307363;,
+		-0.327485;-0.057973;-0.943076;,
+		-0.327146;0.072456;-0.942192;,
+		-0.325825;-0.115934;-0.938295;,
+		-0.325825;0.115934;-0.938295;,
+		-0.323042;0.173866;-0.930277;,
+		-0.323042;-0.173866;-0.930277;,
+		-0.321714;-0.488565;-0.811052;,
+		-0.321714;0.488564;-0.811052;,
+		-0.317508;0.230683;-0.919769;,
+		-0.317507;-0.230683;-0.919769;,
+		-0.317167;-0.682922;-0.658044;,
+		-0.317167;0.682922;-0.658045;,
+		-0.315519;0.028913;-0.948479;,
+		-0.310668;-0.842216;-0.440633;,
+		-0.310667;0.842216;-0.440634;,
+		-0.309196;0.544351;-0.779795;,
+		-0.309196;-0.544351;-0.779795;,
+		-0.308008;0.947952;-0.080734;,
+		-0.308008;-0.947952;-0.080736;,
+		-0.306720;0.285214;-0.908062;,
+		-0.306720;-0.285214;-0.908062;,
+		-0.300499;-0.733102;-0.610132;,
+		-0.300499;0.733102;-0.610133;,
+		-0.300347;0.924374;-0.235213;,
+		-0.300347;-0.924374;-0.235214;,
+		-0.297631;0.341255;-0.891606;,
+		-0.297631;-0.341255;-0.891606;,
+		-0.296950;-0.000000;-0.954893;,
+		-0.295005;0.599080;-0.744362;,
+		-0.295005;-0.599079;-0.744363;,
+		-0.288564;-0.398969;-0.870376;,
+		-0.288564;0.398969;-0.870376;,
+		-0.286659;0.779110;-0.557508;,
+		-0.286658;-0.779110;-0.557508;,
+		-0.286319;0.881196;-0.376185;,
+		-0.286318;-0.881197;-0.376184;,
+		-0.285052;-0.028977;-0.958074;,
+		-0.284745;0.057935;-0.956851;,
+		-0.284092;-0.086928;-0.954848;,
+		-0.284092;0.086928;-0.954848;,
+		-0.282164;0.144872;-0.948365;,
+		-0.282164;-0.144872;-0.948365;,
+		-0.279080;0.652419;-0.704602;,
+		-0.279080;-0.652419;-0.704602;,
+		-0.277958;-0.456086;-0.845414;,
+		-0.277958;0.456086;-0.845414;,
+		-0.277416;0.201555;-0.939370;,
+		-0.277416;-0.201555;-0.939370;,
+		-0.275321;0.960649;-0.036764;,
+		-0.275320;-0.960649;-0.036769;,
+		-0.273455;-0.000000;-0.961885;,
+		-0.271150;-0.949254;-0.159357;,
+		-0.271149;0.949254;-0.159359;,
+		-0.267324;0.822734;-0.501644;,
+		-0.267322;-0.822734;-0.501644;,
+		-0.265755;0.512419;-0.816579;,
+		-0.265754;-0.512419;-0.816579;,
+		-0.265182;-0.253504;-0.930277;,
+		-0.265182;0.253503;-0.930277;,
+		-0.261368;0.703971;-0.660388;,
+		-0.261368;-0.703971;-0.660387;,
+		-0.260061;0.915367;-0.307362;,
+		-0.260060;-0.915367;-0.307362;,
+		-0.254085;0.028998;-0.966747;,
+		-0.252652;-0.306825;-0.917620;,
+		-0.252652;0.306824;-0.917620;,
+		-0.251896;-0.567731;-0.783728;,
+		-0.251896;0.567731;-0.783728;,
+		-0.244582;0.752744;-0.611192;,
+		-0.244581;-0.752745;-0.611191;,
+		-0.243707;0.863973;-0.440634;,
+		-0.243707;-0.863973;-0.440633;,
+		-0.243029;-0.000000;-0.970019;,
+		-0.242621;-0.057933;-0.968390;,
+		-0.242544;-0.363101;-0.899628;,
+		-0.242544;0.363101;-0.899628;,
+		-0.242369;0.072407;-0.967479;,
+		-0.241393;0.115869;-0.963485;,
+		-0.241393;-0.115869;-0.963485;,
+		-0.240250;0.967365;-0.080534;,
+		-0.240250;-0.967365;-0.080534;,
+		-0.237304;-0.172411;-0.956013;,
+		-0.237304;0.172411;-0.956013;,
+		-0.236331;0.621733;-0.746724;,
+		-0.236331;-0.621732;-0.746724;,
+		-0.232192;0.420960;-0.876858;,
+		-0.232192;-0.420960;-0.876858;,
+		-0.232009;0.943995;-0.234617;,
+		-0.232009;-0.943995;-0.234619;,
+		-0.231831;0.028913;-0.972326;,
+		-0.226039;0.798806;-0.557508;,
+		-0.226037;-0.798806;-0.557508;,
+		-0.224975;-0.223587;-0.948364;,
+		-0.224975;0.223586;-0.948365;,
+		-0.220233;0.478004;-0.850300;,
+		-0.220233;-0.478004;-0.850300;,
+		-0.219020;0.674074;-0.705446;,
+		-0.219019;-0.674074;-0.705447;,
+		-0.218279;0.900860;-0.375242;,
+		-0.218279;-0.900860;-0.375240;,
+		-0.212175;-0.000000;-0.977232;,
+		-0.210945;-0.274052;-0.938295;,
+		-0.210945;0.274052;-0.938295;,
+		-0.207374;0.977579;-0.036550;,
+		-0.207374;-0.977578;-0.036556;,
+		-0.206617;-0.534023;-0.819834;,
+		-0.206617;0.534023;-0.819834;,
+		-0.202965;0.842076;-0.499713;,
+		-0.202964;-0.842075;-0.499714;,
+		-0.202341;0.966394;-0.158555;,
+		-0.202341;-0.966395;-0.158554;,
+		-0.202333;0.723152;-0.660388;,
+		-0.202332;-0.723153;-0.660387;,
+		-0.201439;-0.028957;-0.979073;,
+		-0.201227;0.057895;-0.977832;,
+		-0.200762;0.086876;-0.975780;,
+		-0.200762;-0.086876;-0.975780;,
+		-0.198119;-0.327219;-0.923946;,
+		-0.198119;0.327219;-0.923946;,
+		-0.197208;-0.143279;-0.969835;,
+		-0.197208;0.143280;-0.969835;,
+		-0.191300;0.588761;-0.785344;,
+		-0.191300;-0.588761;-0.785344;,
+		-0.191149;-0.932707;-0.305810;,
+		-0.191149;0.932707;-0.305810;,
+		-0.190928;-0.000000;-0.981604;,
+		-0.187797;-0.769721;-0.610133;,
+		-0.187797;0.769720;-0.610134;,
+		-0.186918;0.383530;-0.904415;,
+		-0.186918;-0.383530;-0.904415;,
+		-0.184793;-0.193773;-0.963485;,
+		-0.184793;0.193773;-0.963485;,
+		-0.178145;-0.881371;-0.437550;,
+		-0.178144;0.881371;-0.437551;,
+		-0.175203;0.441307;-0.880086;,
+		-0.175203;-0.441308;-0.880086;,
+		-0.174249;0.641904;-0.746724;,
+		-0.174249;-0.641904;-0.746724;,
+		-0.171299;-0.981971;-0.079931;,
+		-0.171298;0.981972;-0.079930;,
+		-0.170691;0.028962;-0.984899;,
+		-0.170463;-0.243327;-0.954848;,
+		-0.170463;0.243326;-0.954848;,
+		-0.166915;-0.814726;-0.555302;,
+		-0.166914;0.814726;-0.555303;,
+		-0.162484;-0.958846;-0.232837;,
+		-0.162483;0.958846;-0.232836;,
+		-0.161822;0.498035;-0.851924;,
+		-0.161821;-0.498034;-0.851925;,
+		-0.160557;-0.000000;-0.987027;,
+		-0.160287;-0.057901;-0.985371;,
+		-0.160119;0.072369;-0.984441;,
+		-0.157702;0.691857;-0.704602;,
+		-0.157702;-0.691858;-0.704601;,
+		-0.157155;0.114179;-0.980951;,
+		-0.157155;-0.114179;-0.980951;,
+		-0.156334;0.293542;-0.943076;,
+		-0.156334;-0.293542;-0.943076;,
+		-0.151683;-0.916044;-0.371288;,
+		-0.151683;0.916044;-0.371290;,
+		-0.150337;0.028910;-0.988212;,
+		-0.146735;0.553480;-0.819834;,
+		-0.146734;-0.553481;-0.819834;,
+		-0.144818;0.738921;-0.658045;,
+		-0.144817;-0.738921;-0.658045;,
+		-0.144663;0.164090;-0.975780;,
+		-0.144663;-0.164089;-0.975780;,
+		-0.143158;0.346409;-0.927096;,
+		-0.143158;-0.346409;-0.927096;,
+		-0.142380;-0.856718;-0.495745;,
+		-0.142380;0.856718;-0.495743;,
+		-0.138412;-0.989716;-0.036125;,
+		-0.138412;0.989716;-0.036121;,
+		-0.132505;-0.978677;-0.156953;,
+		-0.132505;0.978677;-0.156954;,
+		-0.132099;-0.783615;-0.607040;,
+		-0.132098;0.783614;-0.607041;,
+		-0.130796;-0.402549;-0.906006;,
+		-0.130796;0.402548;-0.906006;,
+		-0.130072;0.212845;-0.968390;,
+		-0.130071;-0.212845;-0.968390;,
+		-0.129916;0.607365;-0.783728;,
+		-0.129916;-0.607365;-0.783728;,
+		-0.129900;-0.000000;-0.991527;,
+		-0.123739;0.945457;-0.301330;,
+		-0.123739;-0.945457;-0.301331;,
+		-0.119977;-0.028943;-0.992355;,
+		-0.119852;0.057867;-0.991104;,
+		-0.117652;-0.460007;-0.880086;,
+		-0.117652;0.460007;-0.880086;,
+		-0.117154;-0.085117;-0.989459;,
+		-0.117154;0.085117;-0.989459;,
+		-0.116207;0.894390;-0.431929;,
+		-0.116206;-0.894390;-0.431929;,
+		-0.115644;0.262146;-0.958074;,
+		-0.115644;-0.262147;-0.958074;,
+		-0.113466;-0.658065;-0.744363;,
+		-0.113466;0.658065;-0.744362;,
+		-0.110194;-0.000000;-0.993910;,
+		-0.109887;-0.827630;-0.550413;,
+		-0.109886;0.827629;-0.550413;,
+		-0.104599;-0.134550;-0.985371;,
+		-0.104599;0.134550;-0.985371;,
+		-0.102792;0.516163;-0.850300;,
+		-0.102791;-0.516163;-0.850300;,
+		-0.101492;-0.991700;-0.078928;,
+		-0.101491;0.991701;-0.078928;,
+		-0.101369;0.311981;-0.944665;,
+		-0.101369;-0.311981;-0.944665;,
+		-0.100132;0.705747;-0.701353;,
+		-0.100132;-0.705747;-0.701352;,
+		-0.094524;0.969012;-0.228213;,
+		-0.094524;-0.969011;-0.228215;,
+		-0.089788;0.182632;-0.979073;,
+		-0.089788;-0.182632;-0.979073;,
+		-0.089403;0.028938;-0.995575;,
+		-0.089082;0.750960;-0.654312;,
+		-0.089082;-0.750960;-0.654312;,
+		-0.088542;-0.927105;-0.364194;,
+		-0.088542;0.927104;-0.364195;,
+		-0.087797;0.364397;-0.927096;,
+		-0.087796;-0.364397;-0.927096;,
+		-0.086193;0.570762;-0.816579;,
+		-0.086192;-0.570763;-0.816579;,
+		-0.083888;0.868226;-0.489027;,
+		-0.083887;-0.868226;-0.489026;,
+		-0.079834;-0.000000;-0.996808;,
+		-0.077210;-0.056096;-0.995435;,
+		-0.075884;0.069670;-0.994680;,
+		-0.075847;0.794939;-0.601930;,
+		-0.075846;-0.794939;-0.601930;,
+		-0.075100;0.231135;-0.970019;,
+		-0.075100;-0.231135;-0.970019;,
+		-0.074214;-0.420150;-0.904415;,
+		-0.074213;0.420150;-0.904415;,
+		-0.070224;0.028913;-0.997112;,
+		-0.069816;0.622130;-0.779795;,
+		-0.069816;-0.622129;-0.779795;,
+		-0.068765;-0.997002;-0.035480;,
+		-0.068765;0.997002;-0.035478;,
+		-0.064601;0.105161;-0.992355;,
+		-0.064601;-0.105161;-0.992355;,
+		-0.064301;-0.986194;-0.152601;,
+		-0.064301;0.986194;-0.152602;,
+		-0.060528;-0.280055;-0.958074;,
+		-0.060528;0.280055;-0.958074;,
+		-0.059587;0.954251;-0.293010;,
+		-0.059586;0.477043;-0.876858;,
+		-0.059586;-0.477043;-0.876858;,
+		-0.059586;-0.954251;-0.293010;,
+		-0.056373;0.904141;-0.423500;,
+		-0.056372;-0.904140;-0.423500;,
+		-0.055994;0.670207;-0.740059;,
+		-0.055993;-0.670207;-0.740059;,
+		-0.052331;0.837704;-0.543611;,
+		-0.052330;-0.837705;-0.543610;,
+		-0.049615;0.152698;-0.987027;,
+		-0.049615;-0.152699;-0.987027;,
+		-0.049330;-0.000000;-0.998783;,
+		-0.046063;0.329371;-0.943076;,
+		-0.046063;-0.329371;-0.943076;,
+		-0.044307;0.715983;-0.696710;,
+		-0.044306;-0.715983;-0.696710;,
+		-0.043208;0.532361;-0.845414;,
+		-0.043208;-0.532361;-0.845414;,
+		-0.037317;-0.027112;-0.998936;,
+		-0.034708;-0.200528;-0.979073;,
+		-0.034708;0.200529;-0.979073;,
+		-0.033378;-0.996605;-0.075263;,
+		-0.033377;0.996605;-0.075264;,
+		-0.032906;-0.760568;-0.648423;,
+		-0.032906;0.760568;-0.648423;,
+		-0.032053;0.381177;-0.923946;,
+		-0.032053;-0.381177;-0.923946;,
+		-0.030406;-0.000000;-0.999538;,
+		-0.029592;0.975281;-0.218977;,
+		-0.029592;-0.975281;-0.218979;,
+		-0.027531;-0.934749;-0.354240;,
+		-0.027530;0.934749;-0.354241;,
+		-0.026899;-0.584356;-0.811051;,
+		-0.026898;0.584356;-0.811051;,
+		-0.024921;0.876628;-0.480523;,
+		-0.024921;-0.876628;-0.480523;,
+		-0.024670;0.075926;-0.996808;,
+		-0.024670;-0.075926;-0.996808;,
+		-0.024618;0.044572;-0.998703;,
+		-0.019877;-0.248649;-0.968390;,
+		-0.019876;0.248649;-0.968390;,
+		-0.019172;0.803646;-0.594799;,
+		-0.019172;-0.803646;-0.594798;,
+		-0.017203;0.436319;-0.899628;,
+		-0.017202;-0.436319;-0.899628;,
+		-0.012568;0.632670;-0.774319;,
+		-0.012568;-0.632670;-0.774319;,
+		-0.009549;0.123049;-0.992355;,
+		-0.009549;-0.123049;-0.992355;,
+		-0.009396;0.028918;-0.999538;,
+		-0.009396;-0.028918;-0.999538;,
+		-0.005116;-0.297051;-0.954848;,
+		-0.005116;0.297050;-0.954848;,
+		-0.001055;0.492386;-0.870376;,
+		-0.001055;-0.492386;-0.870376;,
+		-0.000855;-0.999526;-0.030785;,
+		-0.000855;0.999526;-0.030784;,
+		-0.000213;-0.678760;-0.734360;,
+		-0.000213;0.678761;-0.734360;,
+		0.000000;0.000000;1.000000;,
+		0.001145;-0.989749;-0.142810;,
+		0.001146;0.989749;-0.142811;,
+		0.002396;-0.959473;-0.281789;,
+		0.002396;0.959473;-0.281790;,
+		0.003853;0.910518;-0.413453;,
+		0.003853;-0.910517;-0.413454;,
+		0.005536;0.170335;-0.985371;,
+		0.005536;-0.170335;-0.985371;,
+		0.005602;0.844899;-0.534897;,
+		0.005602;-0.844899;-0.534896;,
+		0.009574;0.345704;-0.938295;,
+		0.009575;-0.345703;-0.938295;,
+		0.011860;-0.723920;-0.689781;,
+		0.011861;0.723920;-0.689782;,
+		0.014254;0.043869;-0.998936;,
+		0.014254;-0.043869;-0.998936;,
+		0.015181;-0.545003;-0.838297;,
+		0.015182;0.545003;-0.838297;,
+		0.020585;0.217782;-0.975780;,
+		0.020586;-0.217781;-0.975780;,
+		0.023594;-0.767703;-0.640372;,
+		0.023594;0.767703;-0.640372;,
+		0.024053;0.396732;-0.917619;,
+		0.024053;-0.396732;-0.917619;,
+		0.024599;-0.017872;-0.999538;,
+		0.024599;0.017872;-0.999538;,
+		0.029492;0.090766;-0.995435;,
+		0.029492;-0.090766;-0.995435;,
+		0.030020;0.593452;-0.804309;,
+		0.030021;-0.593453;-0.804309;,
+		0.033122;0.977819;-0.206814;,
+		0.033122;-0.977819;-0.206816;,
+		0.033430;0.997159;-0.067494;,
+		0.033431;-0.997159;-0.067493;,
+		0.033760;0.938772;-0.342881;,
+		0.033760;-0.938772;-0.342880;,
+		0.034345;-0.881868;-0.470243;,
+		0.034345;0.881868;-0.470243;,
+		0.035603;0.265385;-0.963485;,
+		0.035604;-0.265385;-0.963485;,
+		0.037794;-0.809689;-0.585641;,
+		0.037795;0.809688;-0.585642;,
+		0.040204;-0.451024;-0.891606;,
+		0.040204;0.451024;-0.891606;,
+		0.043051;0.639676;-0.767438;,
+		0.043051;-0.639676;-0.767438;,
+		0.044749;0.137723;-0.989459;,
+		0.044749;-0.137723;-0.989459;,
+		0.046126;-0.000000;-0.998936;,
+		0.050588;0.313122;-0.948365;,
+		0.050588;-0.313123;-0.948364;,
+		0.055820;-0.685154;-0.726257;,
+		0.055820;0.685154;-0.726256;,
+		0.056351;-0.504285;-0.861697;,
+		0.056351;0.504285;-0.861697;,
+		0.060028;0.184746;-0.980951;,
+		0.060028;-0.184746;-0.980951;,
+		0.063756;-0.849160;-0.524272;,
+		0.063757;0.849160;-0.524273;,
+		0.064270;0.913466;-0.401807;,
+		0.064271;-0.913466;-0.401808;,
+		0.064523;0.960861;-0.269414;,
+		0.064523;-0.960861;-0.269413;,
+		0.064587;-0.046925;-0.996808;,
+		0.064587;0.046925;-0.996808;,
+		0.065531;-0.360959;-0.930277;,
+		0.065531;0.360959;-0.930276;,
+		0.065543;0.989017;-0.132477;,
+		0.065544;-0.989017;-0.132477;,
+		0.068260;0.729514;-0.680551;,
+		0.068261;-0.729514;-0.680551;,
+		0.069052;-0.997212;-0.028281;,
+		0.069053;0.997212;-0.028281;,
+		0.071688;-0.552813;-0.830216;,
+		0.071688;0.552813;-0.830216;,
+		0.075326;0.231831;-0.969835;,
+		0.075327;-0.231831;-0.969835;,
+		0.080051;-0.093936;-0.992355;,
+		0.080051;0.093936;-0.992355;,
+		0.080295;0.772313;-0.630147;,
+		0.080296;-0.772313;-0.630147;,
+		0.080497;-0.411029;-0.908061;,
+		0.080497;0.411029;-0.908062;,
+		0.085385;-0.599052;-0.796144;,
+		0.085386;0.599051;-0.796145;,
+		0.090642;0.278967;-0.956013;,
+		0.090643;-0.278967;-0.956013;,
+		0.093728;0.883894;-0.458199;,
+		0.093728;-0.883894;-0.458198;,
+		0.094911;0.813014;-0.574456;,
+		0.094912;-0.813015;-0.574455;,
+		0.095109;0.939128;-0.330142;,
+		0.095109;-0.939128;-0.330141;,
+		0.095437;-0.000000;-0.995435;,
+		0.095642;-0.141057;-0.985371;,
+		0.095642;0.141057;-0.985371;,
+		0.096562;-0.462377;-0.881410;,
+		0.096563;0.462376;-0.881410;,
+		0.097115;0.975711;-0.196358;,
+		0.097115;-0.975711;-0.196360;,
+		0.098848;-0.644663;-0.758049;,
+		0.098848;0.644664;-0.758048;,
+		0.102395;-0.992542;-0.066152;,
+		0.102395;0.992542;-0.066152;,
+		0.105963;-0.326122;-0.939370;,
+		0.105964;0.326122;-0.939370;,
+		0.111354;0.188289;-0.975781;,
+		0.111355;-0.188289;-0.975780;,
+		0.112007;0.689341;-0.715726;,
+		0.112007;-0.689341;-0.715725;,
+		0.112380;-0.510967;-0.852223;,
+		0.112381;0.510968;-0.852222;,
+		0.114076;-0.047106;-0.992355;,
+		0.114076;0.047105;-0.992355;,
+		0.121276;0.373253;-0.919769;,
+		0.121277;-0.373253;-0.919769;,
+		0.121966;0.850436;-0.511744;,
+		0.121967;-0.850436;-0.511744;,
+		0.124673;0.912939;-0.388586;,
+		0.124673;-0.912938;-0.388587;,
+		0.124778;0.732715;-0.668999;,
+		0.124778;-0.732715;-0.668998;,
+		0.126726;-0.557153;-0.820683;,
+		0.126727;0.557152;-0.820684;,
+		0.127185;0.235628;-0.963485;,
+		0.127185;-0.235628;-0.963485;,
+		0.127902;-0.957467;-0.258648;,
+		0.127902;0.957466;-0.258648;,
+		0.129893;0.094373;-0.987027;,
+		0.129893;-0.094373;-0.987027;,
+		0.134496;-0.982115;-0.131761;,
+		0.134496;0.982115;-0.131762;,
+		0.136988;0.421607;-0.896372;,
+		0.136988;-0.421606;-0.896372;,
+		0.137064;0.774347;-0.617737;,
+		0.137065;-0.774347;-0.617737;,
+		0.138637;-0.989923;-0.028846;,
+		0.138638;0.989923;-0.028844;,
+		0.140868;-0.602776;-0.785377;,
+		0.140868;0.602776;-0.785377;,
+		0.143122;-0.283056;-0.948365;,
+		0.143122;0.283056;-0.948364;,
+		0.144810;-0.000000;-0.989459;,
+		0.145947;0.141829;-0.979073;,
+		0.145947;-0.141830;-0.979073;,
+		0.152029;0.813572;-0.561237;,
+		0.152030;-0.813572;-0.561237;,
+		0.152579;-0.469590;-0.869601;,
+		0.152579;0.469590;-0.869601;,
+		0.153038;-0.882657;-0.444405;,
+		0.153038;0.882657;-0.444405;,
+		0.154733;-0.647584;-0.746118;,
+		0.154734;0.647584;-0.746118;,
+		0.157687;-0.934578;-0.318903;,
+		0.157687;0.934578;-0.318903;,
+		0.159150;0.330539;-0.930277;,
+		0.159150;-0.330540;-0.930277;,
+		0.162232;-0.189478;-0.968390;,
+		0.162233;0.189478;-0.968390;,
+		0.163708;0.047372;-0.985371;,
+		0.163708;-0.047372;-0.985371;,
+		0.165799;-0.966495;-0.195955;,
+		0.165799;0.966495;-0.195954;,
+		0.167570;0.515731;-0.840203;,
+		0.167572;-0.515731;-0.840203;,
+		0.168239;-0.691270;-0.702739;,
+		0.168240;0.691269;-0.702739;,
+		0.171998;-0.982817;-0.066987;,
+		0.171999;0.982817;-0.066986;,
+		0.176473;0.379845;-0.908061;,
+		0.176473;-0.379844;-0.908061;,
+		0.178740;-0.237311;-0.954848;,
+		0.178741;0.237312;-0.954848;,
+		0.179988;0.094976;-0.979073;,
+		0.179989;-0.094976;-0.979073;,
+		0.180059;-0.848676;-0.497320;,
+		0.180060;0.848677;-0.497319;,
+		0.181287;-0.733466;-0.655105;,
+		0.181288;0.733466;-0.655105;,
+		0.182396;0.561361;-0.807221;,
+		0.182398;-0.561360;-0.807221;,
+		0.186282;-0.907394;-0.376743;,
+		0.186284;0.907394;-0.376742;,
+		0.193657;-0.430828;-0.881410;,
+		0.193657;0.430829;-0.881410;,
+		0.193762;-0.773751;-0.603130;,
+		0.193762;0.773750;-0.603131;,
+		0.194254;-0.000000;-0.980951;,
+		0.195453;0.285307;-0.938295;,
+		0.195454;-0.285308;-0.938295;,
+		0.196079;0.945974;-0.258236;,
+		0.196079;-0.945974;-0.258236;,
+		0.196615;-0.142849;-0.970019;,
+		0.196615;0.142849;-0.970019;,
+		0.196986;-0.606262;-0.770482;,
+		0.196987;0.606263;-0.770482;,
+		0.204001;0.969881;-0.133092;,
+		0.204002;-0.969881;-0.133092;,
+		0.207539;0.977790;-0.029222;,
+		0.207540;-0.977790;-0.029223;,
+		0.208991;-0.811309;-0.545986;,
+		0.208992;0.811309;-0.545985;,
+		0.209421;0.479436;-0.852223;,
+		0.209422;-0.479437;-0.852222;,
+		0.211254;0.650175;-0.729825;,
+		0.211255;-0.650175;-0.729825;,
+		0.213483;0.047720;-0.975781;,
+		0.213485;-0.047721;-0.975780;,
+		0.213535;-0.876304;-0.431850;,
+		0.213536;0.876304;-0.431850;,
+		0.213580;-0.190992;-0.958074;,
+		0.213580;0.190992;-0.958074;,
+		0.213734;0.335100;-0.917620;,
+		0.213734;-0.335101;-0.917619;,
+		0.224962;0.525234;-0.820683;,
+		0.224962;-0.525234;-0.820684;,
+		0.225098;0.692784;-0.685114;,
+		0.225100;-0.692784;-0.685114;,
+		0.225143;-0.920906;-0.318186;,
+		0.225144;0.920906;-0.318187;,
+		0.230337;0.095741;-0.968390;,
+		0.230337;-0.095740;-0.968390;,
+		0.230864;0.239391;-0.943077;,
+		0.230865;-0.239392;-0.943076;,
+		0.232580;-0.388517;-0.891606;,
+		0.232580;0.388518;-0.891606;,
+		0.234943;0.951746;-0.197438;,
+		0.234944;-0.951745;-0.197438;,
+		0.238401;0.733723;-0.636251;,
+		0.238401;-0.733723;-0.636251;,
+		0.239325;0.841714;-0.483985;,
+		0.239326;-0.841713;-0.483985;,
+		0.240338;-0.570456;-0.785378;,
+		0.240339;0.570456;-0.785377;,
+		0.240748;0.968238;-0.067488;,
+		0.240749;-0.968238;-0.067489;,
+		0.243762;-0.000001;-0.969835;,
+		0.247644;-0.144107;-0.958074;,
+		0.247644;0.144107;-0.958074;,
+		0.249982;0.289539;-0.923946;,
+		0.249982;-0.289539;-0.923946;,
+		0.250822;0.441097;-0.861697;,
+		0.250822;-0.441097;-0.861697;,
+		0.251025;-0.772576;-0.583192;,
+		0.251026;0.772576;-0.583192;,
+		0.252833;-0.891693;-0.375445;,
+		0.252834;0.891693;-0.375444;,
+		0.255459;0.614857;-0.746118;,
+		0.255459;-0.614857;-0.746118;,
+		0.262072;-0.806578;-0.529859;,
+		0.262073;0.806577;-0.529860;,
+		0.263398;-0.048147;-0.963485;,
+		0.263398;0.048147;-0.963485;,
+		0.264622;0.928772;-0.259534;,
+		0.264622;-0.928772;-0.259533;,
+		0.265386;0.192814;-0.944665;,
+		0.265387;-0.192815;-0.944665;,
+		0.266938;-0.489373;-0.830216;,
+		0.266939;0.489372;-0.830216;,
+		0.270209;-0.658138;-0.702739;,
+		0.270209;0.658137;-0.702739;,
+		0.270379;-0.342878;-0.899628;,
+		0.270379;0.342878;-0.899628;,
+		0.272484;0.952817;-0.133759;,
+		0.272485;-0.952817;-0.133760;,
+		0.275425;0.960873;-0.029409;,
+		0.275425;-0.960872;-0.029410;,
+		0.279028;0.858763;-0.429732;,
+		0.279029;-0.858762;-0.429734;,
+		0.280930;-0.096659;-0.954848;,
+		0.280931;0.096660;-0.954848;,
+		0.283035;-0.534831;-0.796145;,
+		0.283036;0.534832;-0.796144;,
+		0.284456;-0.699945;-0.655105;,
+		0.284456;0.699944;-0.655105;,
+		0.285215;0.243198;-0.927096;,
+		0.285216;-0.243198;-0.927096;,
+		0.290271;0.397729;-0.870376;,
+		0.290271;-0.397729;-0.870376;,
+		0.292875;-0.901375;-0.318978;,
+		0.292875;0.901374;-0.318980;,
+		0.293324;-0.000001;-0.956013;,
+		0.298043;0.739868;-0.603130;,
+		0.298043;-0.739868;-0.603131;,
+		0.298954;-0.579646;-0.758049;,
+		0.298954;0.579645;-0.758049;,
+		0.299016;0.145589;-0.943077;,
+		0.299016;-0.145590;-0.943076;,
+		0.301127;0.821633;-0.483986;,
+		0.301127;-0.821633;-0.483985;,
+		0.302903;0.932241;-0.197933;,
+		0.302903;-0.932241;-0.197932;,
+		0.306998;-0.296287;-0.904415;,
+		0.306998;0.296287;-0.904415;,
+		0.307797;0.779204;-0.545987;,
+		0.307798;-0.779204;-0.545987;,
+		0.308063;-0.449840;-0.838296;,
+		0.308063;0.449840;-0.838297;,
+		0.308309;-0.948877;-0.067657;,
+		0.308309;0.948877;-0.067656;,
+		0.313429;-0.048648;-0.948365;,
+		0.313430;0.048648;-0.948364;,
+		0.314569;-0.623525;-0.715725;,
+		0.314569;0.623525;-0.715725;,
+		0.319431;-0.196104;-0.927096;,
+		0.319432;0.196104;-0.927096;,
+		0.319577;0.870008;-0.375442;,
+		0.319578;-0.870007;-0.375445;,
+		0.324535;-0.497758;-0.804309;,
+		0.324536;0.497759;-0.804309;,
+		0.328605;0.350911;-0.876858;,
+		0.328606;-0.350912;-0.876858;,
+		0.329732;-0.666122;-0.668999;,
+		0.329732;0.666121;-0.668999;,
+		0.331742;0.097722;-0.938295;,
+		0.331742;-0.097722;-0.938295;,
+		0.331835;-0.906933;-0.259534;,
+		0.331835;0.906933;-0.259536;,
+		0.339607;-0.931008;-0.133760;,
+		0.339608;0.931007;-0.133759;,
+		0.341163;-0.542814;-0.767438;,
+		0.341164;0.542814;-0.767438;,
+		0.341963;-0.939253;-0.029409;,
+		0.341963;0.939253;-0.029410;,
+		0.342325;-0.834458;-0.431850;,
+		0.342326;0.834458;-0.431849;,
+		0.342428;-0.248789;-0.906006;,
+		0.342429;0.248789;-0.906006;,
+		0.342905;0.000000;-0.939370;,
+		0.344262;-0.707025;-0.617737;,
+		0.344263;0.707025;-0.617737;,
+		0.347870;0.405293;-0.845414;,
+		0.347871;-0.405293;-0.845414;,
+		0.352616;0.148274;-0.923946;,
+		0.352616;-0.148274;-0.923946;,
+		0.353169;0.792429;-0.497320;,
+		0.353169;-0.792430;-0.497319;,
+		0.355210;0.747554;-0.561238;,
+		0.355211;-0.747554;-0.561238;,
+		0.357564;-0.587111;-0.726256;,
+		0.357564;0.587111;-0.726256;,
+		0.359150;0.877365;-0.318186;,
+		0.359151;-0.877365;-0.318185;,
+		0.363541;0.049218;-0.930277;,
+		0.363542;-0.049218;-0.930277;,
+		0.365238;-0.456943;-0.811051;,
+		0.365238;0.456943;-0.811051;,
+		0.365568;0.302999;-0.880086;,
+		0.365568;-0.302999;-0.880086;,
+		0.369349;-0.908075;-0.197437;,
+		0.369350;0.908074;-0.197437;,
+		0.373573;0.630312;-0.680551;,
+		0.373574;-0.630313;-0.680550;,
+		0.374346;-0.924830;-0.067490;,
+		0.374347;0.924830;-0.067489;,
+		0.376653;-0.200415;-0.904415;,
+		0.376654;0.200415;-0.904415;,
+		0.382042;-0.504453;-0.774319;,
+		0.382042;0.504454;-0.774319;,
+		0.382647;-0.843592;-0.376741;,
+		0.382647;0.843592;-0.376741;,
+		0.384747;0.099721;-0.917620;,
+		0.384747;-0.099721;-0.917619;,
+		0.386553;0.357165;-0.850300;,
+		0.386553;-0.357166;-0.850299;,
+		0.388994;0.672010;-0.630148;,
+		0.388994;-0.672010;-0.630148;,
+		0.392460;-0.000001;-0.919769;,
+		0.395003;-0.804038;-0.444405;,
+		0.395003;0.804038;-0.444405;,
+		0.397398;-0.880561;-0.258238;,
+		0.397399;0.880561;-0.258238;,
+		0.399137;0.549003;-0.734360;,
+		0.399138;-0.549003;-0.734360;,
+		0.401093;0.713530;-0.574456;,
+		0.401093;-0.713530;-0.574455;,
+		0.401136;0.254044;-0.880086;,
+		0.401136;-0.254044;-0.880086;,
+		0.401201;-0.759708;-0.511744;,
+		0.401201;0.759708;-0.511744;,
+		0.405041;0.904559;-0.133093;,
+		0.405042;-0.904559;-0.133092;,
+		0.405217;-0.411094;-0.816579;,
+		0.405217;0.411094;-0.816579;,
+		0.406827;0.913038;-0.029222;,
+		0.406828;-0.913037;-0.029220;,
+		0.409648;-0.151190;-0.899628;,
+		0.409648;0.151191;-0.899628;,
+		0.415786;-0.050458;-0.908062;,
+		0.415787;0.050457;-0.908061;,
+		0.415913;0.592636;-0.689782;,
+		0.415914;-0.592636;-0.689781;,
+		0.421759;0.848776;-0.318903;,
+		0.421760;-0.848775;-0.318903;,
+		0.422161;-0.462276;-0.779795;,
+		0.422161;0.462277;-0.779795;,
+		0.423654;0.307802;-0.851925;,
+		0.423654;-0.307802;-0.851924;,
+		0.432156;-0.634953;-0.640372;,
+		0.432156;0.634953;-0.640372;,
+		0.433958;0.879365;-0.195955;,
+		0.433958;-0.879365;-0.195954;,
+		0.435281;0.204085;-0.876858;,
+		0.435282;-0.204085;-0.876858;,
+		0.435749;0.811864;-0.388587;,
+		0.435750;-0.811864;-0.388586;,
+		0.438535;0.896214;-0.066988;,
+		0.438537;-0.896213;-0.066988;,
+		0.439236;0.509296;-0.740060;,
+		0.439237;-0.509297;-0.740059;,
+		0.441373;-0.101138;-0.891606;,
+		0.441373;0.101138;-0.891606;,
+		0.443303;-0.000001;-0.896372;,
+		0.443712;0.770178;-0.458198;,
+		0.443713;-0.770177;-0.458199;,
+		0.444038;-0.361527;-0.819834;,
+		0.444038;0.361527;-0.819834;,
+		0.445346;-0.677267;-0.585642;,
+		0.445347;0.677267;-0.585642;,
+		0.447544;0.724460;-0.524273;,
+		0.447544;-0.724461;-0.524272;,
+		0.456688;0.553200;-0.696711;,
+		0.456689;-0.553199;-0.696710;,
+		0.459136;0.257264;-0.850300;,
+		0.459137;-0.257264;-0.850299;,
+		0.459310;0.849786;-0.258648;,
+		0.459310;-0.849785;-0.258650;,
+		0.462104;-0.415006;-0.783728;,
+		0.462104;0.415006;-0.783728;,
+		0.467961;0.153159;-0.870376;,
+		0.467961;-0.153160;-0.870376;,
+		0.468462;0.873603;-0.131763;,
+		0.468464;-0.873602;-0.131761;,
+		0.469586;-0.051046;-0.881410;,
+		0.469586;0.051046;-0.881410;,
+		0.469702;0.882353;-0.028846;,
+		0.469703;-0.882353;-0.028847;,
+		0.473672;0.595971;-0.648423;,
+		0.473672;-0.595971;-0.648424;,
+		0.475060;0.815674;-0.330141;,
+		0.475061;-0.815674;-0.330140;,
+		0.478597;0.465692;-0.744363;,
+		0.478597;-0.465692;-0.744363;,
+		0.481048;0.310588;-0.819834;,
+		0.481048;-0.310587;-0.819834;,
+		0.484926;0.776786;-0.401808;,
+		0.484927;-0.776786;-0.401807;,
+		0.487881;-0.638894;-0.594799;,
+		0.487881;0.638895;-0.594798;,
+		0.490564;0.733634;-0.470243;,
+		0.490564;-0.733633;-0.470243;,
+		0.492087;0.686831;-0.534896;,
+		0.492087;-0.686832;-0.534895;,
+		0.492953;0.205602;-0.845414;,
+		0.492954;-0.205602;-0.845414;,
+		0.493756;-0.000000;-0.869600;,
+		0.494940;0.846450;-0.196360;,
+		0.494942;-0.846449;-0.196359;,
+		0.495836;0.512105;-0.701352;,
+		0.495836;-0.512105;-0.701352;,
+		0.497016;0.102240;-0.861697;,
+		0.497017;-0.102240;-0.861697;,
+		0.500562;0.863169;-0.066152;,
+		0.500562;-0.863169;-0.066153;,
+		0.500830;-0.363874;-0.785344;,
+		0.500830;0.363874;-0.785344;,
+		0.512580;0.815278;-0.269413;,
+		0.512580;-0.815278;-0.269414;,
+		0.513472;-0.555178;-0.654312;,
+		0.513473;0.555178;-0.654311;,
+		0.516192;-0.258349;-0.816579;,
+		0.516192;0.258349;-0.816579;,
+		0.518272;-0.416890;-0.746724;,
+		0.518272;0.416890;-0.746724;,
+		0.520686;0.051017;-0.852222;,
+		0.520687;-0.051018;-0.852222;,
+		0.523020;0.153977;-0.838297;,
+		0.523020;-0.153977;-0.838297;,
+		0.524484;0.779326;-0.342880;,
+		0.524485;-0.779327;-0.342879;,
+		0.528303;-0.838657;-0.132476;,
+		0.528304;0.838657;-0.132477;,
+		0.528615;-0.598537;-0.601931;,
+		0.528615;0.598537;-0.601930;,
+		0.530281;-0.847350;-0.028286;,
+		0.530282;0.847350;-0.028283;,
+		0.532072;0.738888;-0.413454;,
+		0.532072;-0.738888;-0.413453;,
+		0.534247;-0.467030;-0.704601;,
+		0.534247;0.467029;-0.704602;,
+		0.534726;0.646958;-0.543611;,
+		0.534727;-0.646959;-0.543609;,
+		0.535430;-0.694559;-0.480523;,
+		0.535430;0.694559;-0.480523;,
+		0.537492;-0.311243;-0.783728;,
+		0.537492;0.311244;-0.783728;,
+		0.542272;-0.000000;-0.840203;,
+		0.547443;-0.206158;-0.811052;,
+		0.547444;0.206158;-0.811051;,
+		0.547909;0.102649;-0.830216;,
+		0.547910;-0.102649;-0.830216;,
+		0.547950;0.810541;-0.206817;,
+		0.547951;-0.810541;-0.206816;,
+		0.551487;-0.512679;-0.658045;,
+		0.551488;0.512679;-0.658044;,
+		0.556641;-0.364080;-0.746724;,
+		0.556641;0.364080;-0.746724;,
+		0.559069;-0.826369;-0.067494;,
+		0.559069;0.826369;-0.067493;,
+		0.562026;0.777639;-0.281790;,
+		0.562026;-0.777639;-0.281790;,
+		0.567466;-0.556312;-0.607041;,
+		0.567467;0.556311;-0.607041;,
+		0.569044;-0.051646;-0.820684;,
+		0.569044;0.051645;-0.820684;,
+		0.570106;-0.258648;-0.779795;,
+		0.570107;0.258648;-0.779795;,
+		0.571705;0.740045;-0.354241;,
+		0.571705;-0.740046;-0.354239;,
+		0.573401;0.416600;-0.705447;,
+		0.573402;-0.416600;-0.705447;,
+		0.573683;-0.154835;-0.804309;,
+		0.573684;0.154836;-0.804309;,
+		0.575368;0.604976;-0.550414;,
+		0.575369;-0.604977;-0.550412;,
+		0.577047;0.698331;-0.423499;,
+		0.577047;-0.698331;-0.423499;,
+		0.578196;0.653102;-0.489026;,
+		0.578197;-0.653102;-0.489026;,
+		0.580833;-0.801398;-0.142810;,
+		0.580833;0.801398;-0.142811;,
+		0.588198;-0.808131;-0.030786;,
+		0.588198;0.808131;-0.030783;,
+		0.588749;0.466115;-0.660387;,
+		0.588749;-0.466115;-0.660387;,
+		0.590249;-0.000000;-0.807221;,
+		0.590794;0.311266;-0.744363;,
+		0.590794;-0.311266;-0.744363;,
+		0.596118;-0.103911;-0.796145;,
+		0.596118;0.103910;-0.796144;,
+		0.597196;-0.771625;-0.218979;,
+		0.597196;0.771625;-0.218979;,
+		0.597822;-0.207459;-0.774319;,
+		0.597822;0.207459;-0.774319;,
+		0.604361;0.512332;-0.610134;,
+		0.604362;-0.512332;-0.610134;,
+		0.609101;-0.736981;-0.293011;,
+		0.609101;0.736981;-0.293011;,
+		0.609262;0.363779;-0.704602;,
+		0.609263;-0.363779;-0.704602;,
+		0.612793;-0.786651;-0.075263;,
+		0.612793;0.786651;-0.075263;,
+		0.613920;0.561017;-0.555304;,
+		0.613921;-0.561017;-0.555302;,
+		0.616570;0.698000;-0.364195;,
+		0.616570;-0.698000;-0.364194;,
+		0.616804;-0.052295;-0.785378;,
+		0.616805;0.052295;-0.785377;,
+		0.618754;0.609411;-0.495744;,
+		0.618754;-0.609411;-0.495744;,
+		0.619722;0.655273;-0.431928;,
+		0.619722;-0.655272;-0.431929;,
+		0.620102;-0.260358;-0.740059;,
+		0.620102;0.260357;-0.740059;,
+		0.621672;-0.156727;-0.767438;,
+		0.621672;0.156727;-0.767437;,
+		0.625234;0.415897;-0.660388;,
+		0.625235;-0.415896;-0.660387;,
+		0.631691;-0.760052;-0.152601;,
+		0.631691;0.760052;-0.152601;,
+		0.637462;-0.000000;-0.770482;,
+		0.640262;0.313319;-0.701353;,
+		0.640262;-0.313319;-0.701352;,
+		0.640323;0.465222;-0.611191;,
+		0.640323;-0.465222;-0.611192;,
+		0.641656;-0.766172;-0.035479;,
+		0.641656;0.766172;-0.035476;,
+		0.643657;-0.105202;-0.758049;,
+		0.643658;0.105202;-0.758048;,
+		0.645473;-0.209951;-0.734360;,
+		0.645474;0.209951;-0.734360;,
+		0.646042;-0.728387;-0.228215;,
+		0.646043;0.728387;-0.228215;,
+		0.652395;0.513385;-0.557509;,
+		0.652396;-0.513386;-0.557507;,
+		0.655832;-0.692159;-0.301331;,
+		0.655833;0.692158;-0.301331;,
+		0.658005;-0.366069;-0.658045;,
+		0.658005;0.366069;-0.658045;,
+		0.659162;-0.561954;-0.499714;,
+		0.659162;0.561954;-0.499714;,
+		0.661152;0.651938;-0.371288;,
+		0.661152;-0.651938;-0.371288;,
+		0.662178;-0.608333;-0.437550;,
+		0.662179;0.608333;-0.437550;,
+		0.663704;-0.052954;-0.746118;,
+		0.663704;0.052955;-0.746118;,
+		0.665015;-0.742648;-0.078928;,
+		0.665015;0.742648;-0.078927;,
+		0.667249;0.263388;-0.696711;,
+		0.667249;-0.263389;-0.696711;,
+		0.668869;0.158636;-0.726256;,
+		0.668869;-0.158636;-0.726256;,
+		0.674015;-0.416463;-0.610133;,
+		0.674016;0.416463;-0.610132;,
+		0.682450;-0.713882;-0.156954;,
+		0.682450;0.713882;-0.156954;,
+		0.683634;-0.000000;-0.729825;,
+		0.686677;0.316781;-0.654312;,
+		0.686678;-0.316782;-0.654311;,
+		0.689861;-0.461820;-0.557507;,
+		0.689861;0.461819;-0.557508;,
+		0.690215;0.106493;-0.715726;,
+		0.690215;-0.106493;-0.715725;,
+		0.692154;0.212423;-0.689782;,
+		0.692155;-0.212423;-0.689782;,
+		0.693717;-0.719341;-0.036121;,
+		0.693718;0.719341;-0.036121;,
+		0.695047;0.680218;-0.232838;,
+		0.695048;-0.680217;-0.232838;,
+		0.699859;-0.508477;-0.501645;,
+		0.699860;0.508477;-0.501644;,
+		0.702874;0.642221;-0.305810;,
+		0.702875;-0.642221;-0.305810;,
+		0.704441;-0.367783;-0.607040;,
+		0.704442;0.367784;-0.607040;,
+		0.704993;-0.555722;-0.440633;,
+		0.704994;0.555722;-0.440633;,
+		0.706104;0.600511;-0.375239;,
+		0.706104;-0.600511;-0.375239;,
+		0.709425;0.053609;-0.702739;,
+		0.709426;-0.053609;-0.702739;,
+		0.713175;0.266324;-0.648424;,
+		0.713175;-0.266324;-0.648423;,
+		0.714902;0.160512;-0.680552;,
+		0.714903;-0.160512;-0.680551;,
+		0.715771;-0.693745;-0.079930;,
+		0.715772;0.693745;-0.079929;,
+		0.723271;0.410510;-0.555302;,
+		0.723271;-0.410510;-0.555302;,
+		0.728436;-0.000000;-0.685113;,
+		0.731730;0.662897;-0.158554;,
+		0.731730;-0.662896;-0.158556;,
+		0.732593;-0.317784;-0.601930;,
+		0.732594;0.317785;-0.601930;,
+		0.735411;0.107750;-0.668999;,
+		0.735412;-0.107750;-0.668999;,
+		0.737419;0.214794;-0.640373;,
+		0.737419;-0.214794;-0.640372;,
+		0.738142;-0.453246;-0.499714;,
+		0.738142;0.453246;-0.499714;,
+		0.742376;0.668986;-0.036552;,
+		0.742376;-0.668985;-0.036550;,
+		0.742565;0.627336;-0.234620;,
+		0.742566;-0.627336;-0.234619;,
+		0.746378;-0.498760;-0.440634;,
+		0.746378;0.498760;-0.440633;,
+		0.748433;0.587688;-0.307363;,
+		0.748433;-0.587688;-0.307362;,
+		0.749591;0.544609;-0.376184;,
+		0.749591;-0.544610;-0.376183;,
+		0.753166;-0.360260;-0.550413;,
+		0.753166;0.360261;-0.550412;,
+		0.753588;0.054238;-0.655105;,
+		0.753588;-0.054239;-0.655105;,
+		0.758389;-0.266574;-0.594798;,
+		0.758389;0.266574;-0.594798;,
+		0.759325;-0.162293;-0.630148;,
+		0.759325;0.162292;-0.630148;,
+		0.762970;-0.641398;-0.080534;,
+		0.762970;0.641398;-0.080533;,
+		0.770789;-0.400152;-0.495744;,
+		0.770789;0.400152;-0.495744;,
+		0.771481;-0.000000;-0.636252;,
+		0.777323;-0.608584;-0.159359;,
+		0.777323;0.608584;-0.159357;,
+		0.778803;-0.108930;-0.617737;,
+		0.778804;0.108929;-0.617737;,
+		0.780534;-0.308634;-0.543610;,
+		0.780534;0.308635;-0.543610;,
+		0.781738;-0.214263;-0.585642;,
+		0.781740;0.214263;-0.585640;,
+		0.783184;0.441784;-0.437551;,
+		0.783184;-0.441783;-0.437551;,
+		0.786319;-0.571294;-0.235214;,
+		0.786319;0.571294;-0.235214;,
+		0.787395;-0.615352;-0.036764;,
+		0.787395;0.615352;-0.036767;,
+		0.789317;0.485976;-0.375240;,
+		0.789318;-0.485976;-0.375239;,
+		0.790203;0.530196;-0.307362;,
+		0.790203;-0.530196;-0.307362;,
+		0.795756;0.054823;-0.603131;,
+		0.795756;-0.054824;-0.603131;,
+		0.799809;-0.348079;-0.489026;,
+		0.799809;0.348079;-0.489026;,
+		0.802552;-0.160968;-0.574456;,
+		0.802553;0.160969;-0.574455;,
+		0.805278;-0.255761;-0.534896;,
+		0.805279;0.255760;-0.534895;,
+		0.806376;-0.585866;-0.080736;,
+		0.806376;0.585866;-0.080734;,
+		0.812334;-0.000000;-0.583192;,
+		0.814706;-0.386901;-0.431928;,
+		0.814706;0.386900;-0.431928;,
+		0.819004;-0.551214;-0.159359;,
+		0.819004;0.551214;-0.159356;,
+		0.820733;-0.106819;-0.561238;,
+		0.820733;0.106819;-0.561237;,
+		0.824337;0.427332;-0.371289;,
+		0.824337;-0.427332;-0.371288;,
+		0.826022;-0.294594;-0.480523;,
+		0.826022;0.294594;-0.480523;,
+		0.826097;-0.512364;-0.234619;,
+		0.826098;0.512364;-0.234619;,
+		0.827302;-0.201769;-0.524272;,
+		0.827302;0.201770;-0.524272;,
+		0.827989;-0.470016;-0.305810;,
+		0.827989;0.470016;-0.305810;,
+		0.828553;-0.558703;-0.036765;,
+		0.828553;0.558702;-0.036768;,
+		0.836182;-0.051946;-0.545987;,
+		0.836182;0.051946;-0.545986;,
+		0.842469;0.333009;-0.423499;,
+		0.842469;-0.333008;-0.423499;,
+		0.845777;-0.527424;-0.080535;,
+		0.845777;0.527424;-0.080533;,
+		0.846503;-0.146802;-0.511744;,
+		0.846503;0.146802;-0.511744;,
+		0.848085;-0.000000;-0.529860;,
+		0.849320;-0.239849;-0.470243;,
+		0.849320;0.239848;-0.470243;,
+		0.854368;0.370699;-0.364195;,
+		0.854368;-0.370700;-0.364194;,
+		0.856569;-0.491070;-0.158555;,
+		0.856569;0.491070;-0.158553;,
+		0.860945;-0.409845;-0.301331;,
+		0.860945;0.409845;-0.301331;,
+		0.861707;-0.450830;-0.232837;,
+		0.861707;0.450830;-0.232837;,
+		0.862781;-0.091010;-0.497320;,
+		0.862781;0.091010;-0.497319;,
+		0.865650;0.499314;-0.036554;,
+		0.865650;-0.499313;-0.036553;,
+		0.867144;0.277702;-0.413453;,
+		0.867144;-0.277701;-0.413453;,
+		0.869597;0.183998;-0.458199;,
+		0.869597;-0.183998;-0.458199;,
+		0.874473;0.032492;-0.483985;,
+		0.874473;-0.032491;-0.483985;,
+		0.880491;0.315038;-0.354241;,
+		0.880492;-0.315037;-0.354239;,
+		0.880976;0.466360;-0.079930;,
+		0.880977;-0.466359;-0.079931;,
+		0.886748;0.127208;-0.444406;,
+		0.886748;-0.127209;-0.444405;,
+		0.888618;0.221152;-0.401808;,
+		0.888618;-0.221152;-0.401807;,
+		0.889133;-0.351550;-0.293012;,
+		0.889133;0.351550;-0.293012;,
+		0.889831;0.428447;-0.156953;,
+		0.889831;-0.428447;-0.156953;,
+		0.892375;-0.389340;-0.228214;,
+		0.892375;0.389339;-0.228214;,
+		0.898504;0.437476;-0.036124;,
+		0.898505;-0.437475;-0.036124;,
+		0.899400;0.067709;-0.431850;,
+		0.899401;-0.067709;-0.431849;,
+		0.902956;-0.000000;-0.429732;,
+		0.903258;0.257989;-0.342880;,
+		0.903258;-0.257990;-0.342879;,
+		0.906782;0.163543;-0.388587;,
+		0.906783;-0.163543;-0.388586;,
+		0.911801;0.402976;-0.078927;,
+		0.911801;-0.402975;-0.078929;,
+		0.913253;-0.294214;-0.281793;,
+		0.913253;0.294215;-0.281791;,
+		0.918055;-0.365907;-0.152599;,
+		0.918056;0.365906;-0.152600;,
+		0.918402;-0.329523;-0.218979;,
+		0.918403;0.329523;-0.218978;,
+		0.920547;0.103235;-0.376743;,
+		0.920548;-0.103235;-0.376742;,
+		0.922554;0.199753;-0.330142;,
+		0.922554;-0.199753;-0.330141;,
+		0.926180;-0.035089;-0.375445;,
+		0.926180;0.035089;-0.375445;,
+		0.926955;-0.373490;-0.035482;,
+		0.926955;0.373490;-0.035480;,
+		0.933771;-0.235558;-0.269416;,
+		0.933771;0.235558;-0.269415;,
+		0.937513;0.339714;-0.075263;,
+		0.937513;-0.339714;-0.075263;,
+		0.937564;-0.138832;-0.318904;,
+		0.937564;0.138832;-0.318904;,
+		0.940197;0.270661;-0.206816;,
+		0.940197;-0.270661;-0.206817;,
+		0.941661;0.304761;-0.142810;,
+		0.941662;-0.304761;-0.142808;,
+		0.945407;-0.070452;-0.318187;,
+		0.945407;0.070452;-0.318187;,
+		0.947761;-0.000000;-0.318980;,
+		0.950128;-0.174231;-0.258650;,
+		0.950128;0.174231;-0.258650;,
+		0.950341;0.309685;-0.030785;,
+		0.950341;-0.309684;-0.030785;,
+		0.957966;0.209150;-0.196360;,
+		0.957967;-0.209149;-0.196359;,
+		0.958685;-0.276346;-0.067493;,
+		0.958685;0.276346;-0.067493;,
+		0.960266;0.105840;-0.258237;,
+		0.960266;-0.105841;-0.258237;,
+		0.960865;0.243288;-0.132477;,
+		0.960865;-0.243288;-0.132476;,
+		0.965087;0.035336;-0.259534;,
+		0.965087;-0.035336;-0.259534;,
+		0.969743;-0.242483;-0.028280;,
+		0.969744;0.242482;-0.028280;,
+		0.970426;-0.140979;-0.195955;,
+		0.970426;0.140979;-0.195955;,
+		0.975605;-0.209329;-0.066151;,
+		0.975605;0.209329;-0.066151;,
+		0.975608;-0.175577;-0.131762;,
+		0.975608;0.175577;-0.131762;,
+		0.977766;-0.070661;-0.197437;,
+		0.977766;0.070660;-0.197437;,
+		0.980216;-0.000000;-0.197931;,
+		0.984314;-0.174051;-0.028842;,
+		0.984314;0.174051;-0.028842;,
+		0.985452;-0.105693;-0.133094;,
+		0.985452;0.105692;-0.133093;,
+		0.987865;-0.140128;-0.066985;,
+		0.987865;0.140128;-0.066985;,
+		0.990385;-0.035287;-0.133761;,
+		0.990385;0.035287;-0.133761;,
+		0.994067;-0.104772;-0.029216;,
+		0.994067;0.104772;-0.029216;,
+		0.995245;-0.070236;-0.067487;,
+		0.995245;0.070236;-0.067487;,
+		0.997709;0.000000;-0.067656;,
+		0.998955;-0.034980;-0.029403;,
+		0.998955;0.034980;-0.029403;;
+
+		3330;		// 3330 faces
+		3;897,931,908;,
+		3;947,976,931;,
+		3;897,947,931;,
+		3;909,947,897;,
+		3;996,1025,976;,
+		3;947,996,976;,
+		3;961,996,947;,
+		3;909,961,947;,
+		3;929,961,909;,
+		3;1042,1070,1025;,
+		3;996,1042,1025;,
+		3;1011,1042,996;,
+		3;961,1011,996;,
+		3;978,1011,961;,
+		3;929,978,961;,
+		3;938,978,929;,
+		3;1089,1119,1070;,
+		3;1042,1089,1070;,
+		3;1056,1089,1042;,
+		3;1011,1056,1042;,
+		3;1026,1056,1011;,
+		3;978,1026,1011;,
+		3;989,1026,978;,
+		3;938,989,978;,
+		3;958,989,938;,
+		3;1135,1164,1119;,
+		3;1089,1135,1119;,
+		3;1103,1135,1089;,
+		3;1056,1103,1089;,
+		3;1076,1103,1056;,
+		3;1026,1076,1056;,
+		3;1041,1076,1026;,
+		3;989,1041,1026;,
+		3;1007,1041,989;,
+		3;958,1007,989;,
+		3;968,1007,958;,
+		3;1184,1211,1164;,
+		3;1135,1184,1164;,
+		3;1153,1184,1135;,
+		3;1103,1153,1135;,
+		3;1121,1153,1103;,
+		3;1076,1121,1103;,
+		3;1094,1121,1076;,
+		3;1041,1094,1076;,
+		3;1055,1094,1041;,
+		3;1007,1055,1041;,
+		3;1024,1055,1007;,
+		3;968,1024,1007;,
+		3;988,1024,968;,
+		3;1226,1250,1211;,
+		3;1184,1226,1211;,
+		3;1197,1226,1184;,
+		3;1153,1197,1184;,
+		3;1169,1197,1153;,
+		3;1121,1169,1153;,
+		3;1138,1169,1121;,
+		3;1094,1138,1121;,
+		3;1105,1138,1094;,
+		3;1055,1105,1094;,
+		3;1071,1105,1055;,
+		3;1024,1071,1055;,
+		3;1038,1071,1024;,
+		3;988,1038,1024;,
+		3;997,1038,988;,
+		3;1272,1295,1250;,
+		3;1226,1272,1250;,
+		3;1244,1272,1226;,
+		3;1197,1244,1226;,
+		3;1216,1244,1197;,
+		3;1169,1216,1197;,
+		3;1188,1216,1169;,
+		3;1138,1188,1169;,
+		3;1158,1188,1138;,
+		3;1105,1158,1138;,
+		3;1122,1158,1105;,
+		3;1071,1122,1105;,
+		3;1095,1122,1071;,
+		3;1038,1095,1071;,
+		3;1052,1095,1038;,
+		3;997,1052,1038;,
+		3;1015,1052,997;,
+		3;861,897,872;,
+		3;859,909,897;,
+		3;861,859,897;,
+		3;804,859,861;,
+		3;870,929,909;,
+		3;859,870,909;,
+		3;816,870,859;,
+		3;804,816,859;,
+		3;767,816,804;,
+		3;889,938,929;,
+		3;870,889,929;,
+		3;832,889,870;,
+		3;816,832,870;,
+		3;778,832,816;,
+		3;767,778,816;,
+		3;730,778,767;,
+		3;901,958,938;,
+		3;889,901,938;,
+		3;843,901,889;,
+		3;832,843,889;,
+		3;789,843,832;,
+		3;778,789,832;,
+		3;741,789,778;,
+		3;730,741,778;,
+		3;696,741,730;,
+		3;921,968,958;,
+		3;901,921,958;,
+		3;863,921,901;,
+		3;843,863,901;,
+		3;807,863,843;,
+		3;789,807,843;,
+		3;755,807,789;,
+		3;741,755,789;,
+		3;707,755,741;,
+		3;696,707,741;,
+		3;658,707,696;,
+		3;932,988,968;,
+		3;921,932,968;,
+		3;875,932,921;,
+		3;863,875,921;,
+		3;821,875,863;,
+		3;807,821,863;,
+		3;770,821,807;,
+		3;755,770,807;,
+		3;718,770,755;,
+		3;707,718,755;,
+		3;669,718,707;,
+		3;658,669,707;,
+		3;622,669,658;,
+		3;949,997,988;,
+		3;932,949,988;,
+		3;893,949,932;,
+		3;875,893,932;,
+		3;835,893,875;,
+		3;821,835,875;,
+		3;783,835,821;,
+		3;770,783,821;,
+		3;732,783,770;,
+		3;718,732,770;,
+		3;678,732,718;,
+		3;669,678,718;,
+		3;634,678,669;,
+		3;622,634,669;,
+		3;584,634,622;,
+		3;965,1015,997;,
+		3;949,965,997;,
+		3;905,965,949;,
+		3;893,905,949;,
+		3;848,905,893;,
+		3;835,848,893;,
+		3;796,848,835;,
+		3;783,796,835;,
+		3;743,796,783;,
+		3;732,743,783;,
+		3;694,743,732;,
+		3;678,694,732;,
+		3;641,694,678;,
+		3;634,641,678;,
+		3;595,641,634;,
+		3;584,595,634;,
+		3;547,595,584;,
+		3;841,850,850;,
+		3;802,811,811;,
+		3;841,802,834;,
+		3;803,802,841;,
+		3;763,767,804;,
+		3;802,791,791;,
+		3;762,774,802;,
+		3;803,762,802;,
+		3;766,762,803;,
+		3;727,730,767;,
+		3;763,727,767;,
+		3;725,736,736;,
+		3;762,725,759;,
+		3;726,725,762;,
+		3;766,726,762;,
+		3;731,726,766;,
+		3;691,696,730;,
+		3;727,691,730;,
+		3;690,691,727;,
+		3;725,716,716;,
+		3;689,701,725;,
+		3;726,689,725;,
+		3;692,689,726;,
+		3;731,692,726;,
+		3;695,692,731;,
+		3;653,658,696;,
+		3;691,653,696;,
+		3;652,653,691;,
+		3;690,652,691;,
+		3;648,665,665;,
+		3;689,648,676;,
+		3;649,648,689;,
+		3;692,649,689;,
+		3;654,649,692;,
+		3;695,654,692;,
+		3;657,654,695;,
+		3;616,622,658;,
+		3;653,616,658;,
+		3;615,616,653;,
+		3;652,615,653;,
+		3;613,615,652;,
+		3;648,639,639;,
+		3;612,626,648;,
+		3;649,612,648;,
+		3;614,612,649;,
+		3;654,614,649;,
+		3;617,614,654;,
+		3;657,617,654;,
+		3;623,617,657;,
+		3;580,584,622;,
+		3;616,580,622;,
+		3;579,580,616;,
+		3;615,579,616;,
+		3;577,579,615;,
+		3;613,577,615;,
+		3;573,588,588;,
+		3;612,573,603;,
+		3;576,573,612;,
+		3;614,576,612;,
+		3;578,576,614;,
+		3;617,578,614;,
+		3;581,578,617;,
+		3;623,581,617;,
+		3;585,581,623;,
+		3;544,547,584;,
+		3;580,544,584;,
+		3;538,544,580;,
+		3;579,538,580;,
+		3;535,538,579;,
+		3;577,535,579;,
+		3;532,535,577;,
+		3;573,564,564;,
+		3;531,549,573;,
+		3;576,531,573;,
+		3;536,531,576;,
+		3;578,536,576;,
+		3;537,536,578;,
+		3;581,537,578;,
+		3;543,537,581;,
+		3;585,543,581;,
+		3;548,543,585;,
+		3;898,841,873;,
+		3;860,803,841;,
+		3;898,860,841;,
+		3;910,860,898;,
+		3;817,766,803;,
+		3;860,817,803;,
+		3;871,817,860;,
+		3;910,871,860;,
+		3;930,871,910;,
+		3;777,731,766;,
+		3;817,777,766;,
+		3;833,777,817;,
+		3;871,833,817;,
+		3;890,833,871;,
+		3;930,890,871;,
+		3;939,890,930;,
+		3;742,695,731;,
+		3;777,742,731;,
+		3;790,742,777;,
+		3;833,790,777;,
+		3;842,790,833;,
+		3;890,842,833;,
+		3;902,842,890;,
+		3;939,902,890;,
+		3;959,902,939;,
+		3;706,657,695;,
+		3;742,706,695;,
+		3;756,706,742;,
+		3;790,756,742;,
+		3;808,756,790;,
+		3;842,808,790;,
+		3;862,808,842;,
+		3;902,862,842;,
+		3;922,862,902;,
+		3;959,922,902;,
+		3;969,922,959;,
+		3;668,623,657;,
+		3;706,668,657;,
+		3;717,668,706;,
+		3;756,717,706;,
+		3;771,717,756;,
+		3;808,771,756;,
+		3;820,771,808;,
+		3;862,820,808;,
+		3;874,820,862;,
+		3;922,874,862;,
+		3;933,874,922;,
+		3;969,933,922;,
+		3;987,933,969;,
+		3;633,585,623;,
+		3;668,633,623;,
+		3;677,633,668;,
+		3;717,677,668;,
+		3;733,677,717;,
+		3;771,733,717;,
+		3;784,733,771;,
+		3;820,784,771;,
+		3;836,784,820;,
+		3;874,836,820;,
+		3;894,836,874;,
+		3;933,894,874;,
+		3;948,894,933;,
+		3;987,948,933;,
+		3;998,948,987;,
+		3;596,548,585;,
+		3;633,596,585;,
+		3;640,596,633;,
+		3;677,640,633;,
+		3;693,640,677;,
+		3;733,693,677;,
+		3;744,693,733;,
+		3;784,744,733;,
+		3;797,744,784;,
+		3;836,797,784;,
+		3;849,797,836;,
+		3;894,849,836;,
+		3;906,849,894;,
+		3;948,906,894;,
+		3;964,906,948;,
+		3;998,964,948;,
+		3;1016,964,998;,
+		3;931,898,907;,
+		3;946,910,898;,
+		3;931,946,898;,
+		3;976,946,931;,
+		3;960,930,910;,
+		3;946,960,910;,
+		3;995,960,946;,
+		3;976,995,946;,
+		3;1025,995,976;,
+		3;977,939,930;,
+		3;960,977,930;,
+		3;1012,977,960;,
+		3;995,1012,960;,
+		3;1043,1012,995;,
+		3;1025,1043,995;,
+		3;1070,1043,1025;,
+		3;990,959,939;,
+		3;977,990,939;,
+		3;1027,990,977;,
+		3;1012,1027,977;,
+		3;1057,1027,1012;,
+		3;1043,1057,1012;,
+		3;1090,1057,1043;,
+		3;1070,1090,1043;,
+		3;1119,1090,1070;,
+		3;1008,969,959;,
+		3;990,1008,959;,
+		3;1040,1008,990;,
+		3;1027,1040,990;,
+		3;1075,1040,1027;,
+		3;1057,1075,1027;,
+		3;1104,1075,1057;,
+		3;1090,1104,1057;,
+		3;1134,1104,1090;,
+		3;1119,1134,1090;,
+		3;1164,1134,1119;,
+		3;1023,987,969;,
+		3;1008,1023,969;,
+		3;1054,1023,1008;,
+		3;1040,1054,1008;,
+		3;1093,1054,1040;,
+		3;1075,1093,1040;,
+		3;1120,1093,1075;,
+		3;1104,1120,1075;,
+		3;1152,1120,1104;,
+		3;1134,1152,1104;,
+		3;1183,1152,1134;,
+		3;1164,1183,1134;,
+		3;1211,1183,1164;,
+		3;1039,998,987;,
+		3;1023,1039,987;,
+		3;1072,1039,1023;,
+		3;1054,1072,1023;,
+		3;1106,1072,1054;,
+		3;1093,1106,1054;,
+		3;1139,1106,1093;,
+		3;1120,1139,1093;,
+		3;1170,1139,1120;,
+		3;1152,1170,1120;,
+		3;1198,1170,1152;,
+		3;1183,1198,1152;,
+		3;1227,1198,1183;,
+		3;1211,1227,1183;,
+		3;1250,1227,1211;,
+		3;1053,1016,998;,
+		3;1039,1053,998;,
+		3;1096,1053,1039;,
+		3;1072,1096,1039;,
+		3;1123,1096,1072;,
+		3;1106,1123,1072;,
+		3;1159,1123,1106;,
+		3;1139,1159,1106;,
+		3;1187,1159,1139;,
+		3;1170,1187,1139;,
+		3;1217,1187,1170;,
+		3;1198,1217,1170;,
+		3;1245,1217,1198;,
+		3;1227,1245,1198;,
+		3;1271,1245,1227;,
+		3;1250,1271,1227;,
+		3;1295,1271,1250;,
+		3;1449,1416,1456;,
+		3;1402,1372,1416;,
+		3;1449,1402,1416;,
+		3;1431,1402,1449;,
+		3;1356,1324,1372;,
+		3;1402,1356,1372;,
+		3;1389,1356,1402;,
+		3;1431,1389,1402;,
+		3;1419,1389,1431;,
+		3;1311,1278,1324;,
+		3;1356,1311,1324;,
+		3;1348,1311,1356;,
+		3;1389,1348,1356;,
+		3;1378,1348,1389;,
+		3;1419,1378,1389;,
+		3;1399,1378,1419;,
+		3;1266,1229,1278;,
+		3;1311,1266,1278;,
+		3;1299,1266,1311;,
+		3;1348,1299,1311;,
+		3;1326,1299,1348;,
+		3;1378,1326,1348;,
+		3;1354,1326,1378;,
+		3;1399,1354,1378;,
+		3;1381,1354,1399;,
+		3;1214,1180,1229;,
+		3;1266,1214,1229;,
+		3;1246,1214,1266;,
+		3;1299,1246,1266;,
+		3;1279,1246,1299;,
+		3;1326,1279,1299;,
+		3;1306,1279,1326;,
+		3;1354,1306,1326;,
+		3;1336,1306,1354;,
+		3;1381,1336,1354;,
+		3;1359,1336,1381;,
+		3;1160,1124,1180;,
+		3;1214,1160,1180;,
+		3;1193,1160,1214;,
+		3;1246,1193,1214;,
+		3;1230,1193,1246;,
+		3;1279,1230,1246;,
+		3;1259,1230,1279;,
+		3;1306,1259,1279;,
+		3;1285,1259,1306;,
+		3;1336,1285,1306;,
+		3;1312,1285,1336;,
+		3;1359,1312,1336;,
+		3;1343,1312,1359;,
+		3;1108,1067,1124;,
+		3;1160,1108,1124;,
+		3;1145,1108,1160;,
+		3;1193,1145,1160;,
+		3;1176,1145,1193;,
+		3;1230,1176,1193;,
+		3;1210,1176,1230;,
+		3;1259,1210,1230;,
+		3;1239,1210,1259;,
+		3;1285,1239,1259;,
+		3;1270,1239,1285;,
+		3;1312,1270,1285;,
+		3;1294,1270,1312;,
+		3;1343,1294,1312;,
+		3;1317,1294,1343;,
+		3;1052,1015,1067;,
+		3;1108,1052,1067;,
+		3;1095,1052,1108;,
+		3;1145,1095,1108;,
+		3;1122,1095,1145;,
+		3;1176,1122,1145;,
+		3;1158,1122,1176;,
+		3;1210,1158,1176;,
+		3;1188,1158,1210;,
+		3;1239,1188,1210;,
+		3;1216,1188,1239;,
+		3;1270,1216,1239;,
+		3;1244,1216,1270;,
+		3;1294,1244,1270;,
+		3;1272,1244,1294;,
+		3;1317,1272,1294;,
+		3;1295,1272,1317;,
+		3;687,635,644;,
+		3;672,618,635;,
+		3;687,672,635;,
+		3;728,672,687;,
+		3;659,604,618;,
+		3;672,659,618;,
+		3;712,659,672;,
+		3;728,712,672;,
+		3;773,712,728;,
+		3;643,591,604;,
+		3;659,643,604;,
+		3;697,643,659;,
+		3;712,697,659;,
+		3;757,697,712;,
+		3;773,757,712;,
+		3;812,757,773;,
+		3;631,583,591;,
+		3;643,631,591;,
+		3;682,631,643;,
+		3;697,682,643;,
+		3;737,682,697;,
+		3;757,737,697;,
+		3;798,737,757;,
+		3;812,798,757;,
+		3;856,798,812;,
+		3;621,569,583;,
+		3;631,621,583;,
+		3;670,621,631;,
+		3;682,670,631;,
+		3;723,670,682;,
+		3;737,723,682;,
+		3;779,723,737;,
+		3;798,779,737;,
+		3;839,779,798;,
+		3;856,839,798;,
+		3;900,839,856;,
+		3;607,560,569;,
+		3;621,607,569;,
+		3;661,607,621;,
+		3;670,661,621;,
+		3;710,661,670;,
+		3;723,710,670;,
+		3;765,710,723;,
+		3;779,765,723;,
+		3;823,765,779;,
+		3;839,823,779;,
+		3;876,823,839;,
+		3;900,876,839;,
+		3;937,876,900;,
+		3;601,554,560;,
+		3;607,601,560;,
+		3;651,601,607;,
+		3;661,651,607;,
+		3;704,651,661;,
+		3;710,704,661;,
+		3;754,704,710;,
+		3;765,754,710;,
+		3;810,754,765;,
+		3;823,810,765;,
+		3;866,810,823;,
+		3;876,866,823;,
+		3;926,866,876;,
+		3;937,926,876;,
+		3;980,926,937;,
+		3;595,547,554;,
+		3;601,595,554;,
+		3;641,595,601;,
+		3;651,641,601;,
+		3;694,641,651;,
+		3;704,694,651;,
+		3;743,694,704;,
+		3;754,743,704;,
+		3;796,743,754;,
+		3;810,796,754;,
+		3;848,796,810;,
+		3;866,848,810;,
+		3;905,848,866;,
+		3;926,905,866;,
+		3;965,905,926;,
+		3;980,965,926;,
+		3;1015,965,980;,
+		3;201,202,168;,
+		3;237,241,202;,
+		3;201,237,202;,
+		3;238,237,201;,
+		3;277,278,241;,
+		3;237,277,241;,
+		3;276,277,237;,
+		3;238,276,237;,
+		3;279,265,265;,
+		3;316,319,278;,
+		3;277,316,278;,
+		3;314,316,277;,
+		3;276,314,277;,
+		3;315,314,276;,
+		3;279,288,288;,
+		3;320,307,279;,
+		3;358,366,319;,
+		3;316,358,319;,
+		3;356,358,316;,
+		3;314,356,316;,
+		3;355,356,314;,
+		3;315,355,314;,
+		3;357,346,346;,
+		3;320,357,331;,
+		3;365,357,320;,
+		3;402,409,366;,
+		3;358,402,366;,
+		3;401,402,358;,
+		3;356,401,358;,
+		3;399,401,356;,
+		3;355,399,356;,
+		3;400,399,355;,
+		3;357,369,369;,
+		3;403,388,357;,
+		3;365,403,357;,
+		3;408,403,365;,
+		3;448,455,409;,
+		3;402,448,409;,
+		3;442,448,402;,
+		3;401,442,402;,
+		3;439,442,401;,
+		3;399,439,401;,
+		3;438,439,399;,
+		3;400,438,399;,
+		3;443,431,431;,
+		3;403,443,416;,
+		3;449,443,403;,
+		3;408,449,403;,
+		3;454,449,408;,
+		3;493,499,455;,
+		3;448,493,455;,
+		3;491,493,448;,
+		3;442,491,448;,
+		3;486,491,442;,
+		3;439,486,442;,
+		3;484,486,439;,
+		3;438,484,439;,
+		3;485,484,438;,
+		3;443,460,460;,
+		3;492,471,443;,
+		3;449,492,443;,
+		3;494,492,449;,
+		3;454,494,449;,
+		3;500,494,454;,
+		3;543,548,499;,
+		3;493,543,499;,
+		3;537,543,493;,
+		3;491,537,493;,
+		3;536,537,491;,
+		3;486,536,491;,
+		3;531,536,486;,
+		3;484,531,486;,
+		3;519,531,484;,
+		3;485,505,484;,
+		3;535,532,520;,
+		3;492,535,508;,
+		3;538,535,492;,
+		3;494,538,492;,
+		3;544,538,494;,
+		3;500,544,494;,
+		3;547,544,500;,
+		3;636,688,645;,
+		3;673,729,688;,
+		3;636,673,688;,
+		3;619,673,636;,
+		3;713,772,729;,
+		3;673,713,729;,
+		3;660,713,673;,
+		3;619,660,673;,
+		3;605,660,619;,
+		3;758,813,772;,
+		3;713,758,772;,
+		3;698,758,713;,
+		3;660,698,713;,
+		3;642,698,660;,
+		3;605,642,660;,
+		3;592,642,605;,
+		3;799,855,813;,
+		3;758,799,813;,
+		3;738,799,758;,
+		3;698,738,758;,
+		3;681,738,698;,
+		3;642,681,698;,
+		3;632,681,642;,
+		3;592,632,642;,
+		3;582,632,592;,
+		3;840,899,855;,
+		3;799,840,855;,
+		3;780,840,799;,
+		3;738,780,799;,
+		3;724,780,738;,
+		3;681,724,738;,
+		3;671,724,681;,
+		3;632,671,681;,
+		3;620,671,632;,
+		3;582,620,632;,
+		3;570,620,582;,
+		3;877,936,899;,
+		3;840,877,899;,
+		3;824,877,840;,
+		3;780,824,840;,
+		3;764,824,780;,
+		3;724,764,780;,
+		3;711,764,724;,
+		3;671,711,724;,
+		3;662,711,671;,
+		3;620,662,671;,
+		3;606,662,620;,
+		3;570,606,620;,
+		3;561,606,570;,
+		3;925,979,936;,
+		3;877,925,936;,
+		3;867,925,877;,
+		3;824,867,877;,
+		3;809,867,824;,
+		3;764,809,824;,
+		3;753,809,764;,
+		3;711,753,764;,
+		3;705,753,711;,
+		3;662,705,711;,
+		3;650,705,662;,
+		3;606,650,662;,
+		3;602,650,606;,
+		3;561,602,606;,
+		3;555,602,561;,
+		3;964,1016,979;,
+		3;925,964,979;,
+		3;906,964,925;,
+		3;867,906,925;,
+		3;849,906,867;,
+		3;809,849,867;,
+		3;797,849,809;,
+		3;753,797,809;,
+		3;744,797,753;,
+		3;705,744,753;,
+		3;693,744,705;,
+		3;650,693,705;,
+		3;640,693,650;,
+		3;602,640,650;,
+		3;596,640,602;,
+		3;555,596,602;,
+		3;548,596,555;,
+		3;1417,1450,1457;,
+		3;1403,1432,1450;,
+		3;1417,1403,1450;,
+		3;1371,1403,1417;,
+		3;1388,1420,1432;,
+		3;1403,1388,1432;,
+		3;1355,1388,1403;,
+		3;1371,1355,1403;,
+		3;1325,1355,1371;,
+		3;1377,1398,1420;,
+		3;1388,1377,1420;,
+		3;1347,1377,1388;,
+		3;1355,1347,1388;,
+		3;1310,1347,1355;,
+		3;1325,1310,1355;,
+		3;1277,1310,1325;,
+		3;1353,1380,1398;,
+		3;1377,1353,1398;,
+		3;1327,1353,1377;,
+		3;1347,1327,1377;,
+		3;1298,1327,1347;,
+		3;1310,1298,1347;,
+		3;1265,1298,1310;,
+		3;1277,1265,1310;,
+		3;1228,1265,1277;,
+		3;1337,1360,1380;,
+		3;1353,1337,1380;,
+		3;1307,1337,1353;,
+		3;1327,1307,1353;,
+		3;1280,1307,1327;,
+		3;1298,1280,1327;,
+		3;1247,1280,1298;,
+		3;1265,1247,1298;,
+		3;1215,1247,1265;,
+		3;1228,1215,1265;,
+		3;1179,1215,1228;,
+		3;1313,1344,1360;,
+		3;1337,1313,1360;,
+		3;1286,1313,1337;,
+		3;1307,1286,1337;,
+		3;1260,1286,1307;,
+		3;1280,1260,1307;,
+		3;1231,1260,1280;,
+		3;1247,1231,1280;,
+		3;1194,1231,1247;,
+		3;1215,1194,1247;,
+		3;1161,1194,1215;,
+		3;1179,1161,1215;,
+		3;1125,1161,1179;,
+		3;1293,1316,1344;,
+		3;1313,1293,1344;,
+		3;1269,1293,1313;,
+		3;1286,1269,1313;,
+		3;1238,1269,1286;,
+		3;1260,1238,1286;,
+		3;1209,1238,1260;,
+		3;1231,1209,1260;,
+		3;1175,1209,1231;,
+		3;1194,1175,1231;,
+		3;1144,1175,1194;,
+		3;1161,1144,1194;,
+		3;1107,1144,1161;,
+		3;1125,1107,1161;,
+		3;1066,1107,1125;,
+		3;1271,1295,1316;,
+		3;1293,1271,1316;,
+		3;1245,1271,1293;,
+		3;1269,1245,1293;,
+		3;1217,1245,1269;,
+		3;1238,1217,1269;,
+		3;1187,1217,1238;,
+		3;1209,1187,1238;,
+		3;1159,1187,1209;,
+		3;1175,1159,1209;,
+		3;1123,1159,1175;,
+		3;1144,1123,1175;,
+		3;1096,1123,1144;,
+		3;1107,1096,1144;,
+		3;1053,1096,1107;,
+		3;1066,1053,1107;,
+		3;1016,1053,1066;,
+		3;1338,1316,1295;,
+		3;1358,1344,1316;,
+		3;1338,1358,1316;,
+		3;1379,1358,1338;,
+		3;1383,1360,1344;,
+		3;1358,1383,1344;,
+		3;1396,1383,1358;,
+		3;1379,1396,1358;,
+		3;1418,1396,1379;,
+		3;1404,1380,1360;,
+		3;1383,1404,1360;,
+		3;1421,1404,1383;,
+		3;1396,1421,1383;,
+		3;1439,1421,1396;,
+		3;1418,1439,1396;,
+		3;1453,1439,1418;,
+		3;1425,1398,1380;,
+		3;1404,1425,1380;,
+		3;1447,1425,1404;,
+		3;1421,1447,1404;,
+		3;1460,1447,1421;,
+		3;1439,1460,1421;,
+		3;1478,1460,1439;,
+		3;1453,1478,1439;,
+		3;1490,1478,1453;,
+		3;1445,1420,1398;,
+		3;1425,1445,1398;,
+		3;1462,1445,1425;,
+		3;1447,1462,1425;,
+		3;1485,1462,1447;,
+		3;1460,1485,1447;,
+		3;1496,1485,1460;,
+		3;1478,1496,1460;,
+		3;1514,1496,1478;,
+		3;1490,1514,1478;,
+		3;1523,1514,1490;,
+		3;1455,1432,1420;,
+		3;1445,1455,1420;,
+		3;1483,1455,1445;,
+		3;1462,1483,1445;,
+		3;1498,1483,1462;,
+		3;1485,1498,1462;,
+		3;1518,1498,1485;,
+		3;1496,1518,1485;,
+		3;1529,1518,1496;,
+		3;1514,1529,1496;,
+		3;1547,1529,1514;,
+		3;1523,1547,1514;,
+		3;1556,1547,1523;,
+		3;1470,1450,1432;,
+		3;1455,1470,1432;,
+		3;1492,1470,1455;,
+		3;1483,1492,1455;,
+		3;1516,1492,1483;,
+		3;1498,1516,1483;,
+		3;1531,1516,1498;,
+		3;1518,1531,1498;,
+		3;1550,1531,1518;,
+		3;1529,1550,1518;,
+		3;1559,1550,1529;,
+		3;1547,1559,1529;,
+		3;1576,1559,1547;,
+		3;1556,1576,1547;,
+		3;1585,1576,1556;,
+		3;1486,1457,1450;,
+		3;1470,1486,1450;,
+		3;1507,1486,1470;,
+		3;1492,1507,1470;,
+		3;1526,1507,1492;,
+		3;1516,1526,1492;,
+		3;1548,1526,1516;,
+		3;1531,1548,1516;,
+		3;1563,1548,1531;,
+		3;1550,1563,1531;,
+		3;1579,1563,1550;,
+		3;1559,1579,1550;,
+		3;1590,1579,1559;,
+		3;1576,1590,1559;,
+		3;1604,1590,1576;,
+		3;1585,1604,1576;,
+		3;1612,1604,1585;,
+		3;1317,1338,1295;,
+		3;1357,1379,1338;,
+		3;1317,1357,1338;,
+		3;1343,1357,1317;,
+		3;1397,1418,1379;,
+		3;1357,1397,1379;,
+		3;1382,1397,1357;,
+		3;1343,1382,1357;,
+		3;1359,1382,1343;,
+		3;1440,1453,1418;,
+		3;1397,1440,1418;,
+		3;1422,1440,1397;,
+		3;1382,1422,1397;,
+		3;1405,1422,1382;,
+		3;1359,1405,1382;,
+		3;1381,1405,1359;,
+		3;1479,1490,1453;,
+		3;1440,1479,1453;,
+		3;1461,1479,1440;,
+		3;1422,1461,1440;,
+		3;1448,1461,1422;,
+		3;1405,1448,1422;,
+		3;1426,1448,1405;,
+		3;1381,1426,1405;,
+		3;1399,1426,1381;,
+		3;1513,1523,1490;,
+		3;1479,1513,1490;,
+		3;1495,1513,1479;,
+		3;1461,1495,1479;,
+		3;1484,1495,1461;,
+		3;1448,1484,1461;,
+		3;1463,1484,1448;,
+		3;1426,1463,1448;,
+		3;1446,1463,1426;,
+		3;1399,1446,1426;,
+		3;1419,1446,1399;,
+		3;1546,1556,1523;,
+		3;1513,1546,1523;,
+		3;1528,1546,1513;,
+		3;1495,1528,1513;,
+		3;1517,1528,1495;,
+		3;1484,1517,1495;,
+		3;1497,1517,1484;,
+		3;1463,1497,1484;,
+		3;1482,1497,1463;,
+		3;1446,1482,1463;,
+		3;1454,1482,1446;,
+		3;1419,1454,1446;,
+		3;1431,1454,1419;,
+		3;1575,1585,1556;,
+		3;1546,1575,1556;,
+		3;1560,1575,1546;,
+		3;1528,1560,1546;,
+		3;1551,1560,1528;,
+		3;1517,1551,1528;,
+		3;1530,1551,1517;,
+		3;1497,1530,1517;,
+		3;1515,1530,1497;,
+		3;1482,1515,1497;,
+		3;1491,1515,1482;,
+		3;1454,1491,1482;,
+		3;1471,1491,1454;,
+		3;1431,1471,1454;,
+		3;1449,1471,1431;,
+		3;1605,1612,1585;,
+		3;1575,1605,1585;,
+		3;1591,1605,1575;,
+		3;1560,1591,1575;,
+		3;1580,1591,1560;,
+		3;1551,1580,1560;,
+		3;1564,1580,1551;,
+		3;1530,1564,1551;,
+		3;1549,1564,1530;,
+		3;1515,1549,1530;,
+		3;1527,1549,1515;,
+		3;1491,1527,1515;,
+		3;1508,1527,1491;,
+		3;1471,1508,1491;,
+		3;1487,1508,1471;,
+		3;1449,1487,1471;,
+		3;1456,1487,1449;,
+		3;1031,1067,1015;,
+		3;1085,1124,1067;,
+		3;1031,1085,1067;,
+		3;1046,1085,1031;,
+		3;1141,1180,1124;,
+		3;1085,1141,1124;,
+		3;1097,1141,1085;,
+		3;1046,1097,1085;,
+		3;1062,1097,1046;,
+		3;1192,1229,1180;,
+		3;1141,1192,1180;,
+		3;1155,1192,1141;,
+		3;1097,1155,1141;,
+		3;1116,1155,1097;,
+		3;1062,1116,1097;,
+		3;1078,1116,1062;,
+		3;1241,1278,1229;,
+		3;1192,1241,1229;,
+		3;1204,1241,1192;,
+		3;1155,1204,1192;,
+		3;1168,1204,1155;,
+		3;1116,1168,1155;,
+		3;1130,1168,1116;,
+		3;1078,1130,1116;,
+		3;1087,1130,1078;,
+		3;1291,1324,1278;,
+		3;1241,1291,1278;,
+		3;1255,1291,1241;,
+		3;1204,1255,1241;,
+		3;1223,1255,1204;,
+		3;1168,1223,1204;,
+		3;1186,1223,1168;,
+		3;1130,1186,1168;,
+		3;1143,1186,1130;,
+		3;1087,1143,1130;,
+		3;1099,1143,1087;,
+		3;1341,1372,1324;,
+		3;1291,1341,1324;,
+		3;1304,1341,1291;,
+		3;1255,1304,1291;,
+		3;1273,1304,1255;,
+		3;1223,1273,1255;,
+		3;1234,1273,1223;,
+		3;1186,1234,1223;,
+		3;1196,1234,1186;,
+		3;1143,1196,1186;,
+		3;1157,1196,1143;,
+		3;1099,1157,1143;,
+		3;1111,1157,1099;,
+		3;1387,1416,1372;,
+		3;1341,1387,1372;,
+		3;1352,1387,1341;,
+		3;1304,1352,1341;,
+		3;1320,1352,1304;,
+		3;1273,1320,1304;,
+		3;1282,1320,1273;,
+		3;1234,1282,1273;,
+		3;1248,1282,1234;,
+		3;1196,1248,1234;,
+		3;1213,1248,1196;,
+		3;1157,1213,1196;,
+		3;1165,1213,1157;,
+		3;1111,1165,1157;,
+		3;1127,1165,1111;,
+		3;1427,1456,1416;,
+		3;1387,1427,1416;,
+		3;1395,1427,1387;,
+		3;1352,1395,1387;,
+		3;1366,1395,1352;,
+		3;1320,1366,1352;,
+		3;1331,1366,1320;,
+		3;1282,1331,1320;,
+		3;1301,1331,1282;,
+		3;1248,1301,1282;,
+		3;1257,1301,1248;,
+		3;1213,1257,1248;,
+		3;1220,1257,1213;,
+		3;1165,1220,1213;,
+		3;1177,1220,1165;,
+		3;1127,1177,1165;,
+		3;1133,1177,1127;,
+		3;980,1031,1015;,
+		3;994,1046,1031;,
+		3;980,994,1031;,
+		3;937,994,980;,
+		3;1006,1062,1046;,
+		3;994,1006,1046;,
+		3;957,1006,994;,
+		3;937,957,994;,
+		3;900,957,937;,
+		3;1022,1078,1062;,
+		3;1006,1022,1062;,
+		3;967,1022,1006;,
+		3;957,967,1006;,
+		3;911,967,957;,
+		3;900,911,957;,
+		3;856,911,900;,
+		3;1035,1087,1078;,
+		3;1022,1035,1078;,
+		3;984,1035,1022;,
+		3;967,984,1022;,
+		3;927,984,967;,
+		3;911,927,967;,
+		3;868,927,911;,
+		3;856,868,911;,
+		3;812,868,856;,
+		3;1049,1099,1087;,
+		3;1035,1049,1087;,
+		3;991,1049,1035;,
+		3;984,991,1035;,
+		3;935,991,984;,
+		3;927,935,984;,
+		3;881,935,927;,
+		3;868,881,927;,
+		3;828,881,868;,
+		3;812,828,868;,
+		3;773,828,812;,
+		3;1061,1111,1099;,
+		3;1049,1061,1099;,
+		3;1003,1061,1049;,
+		3;991,1003,1049;,
+		3;952,1003,991;,
+		3;935,952,991;,
+		3;896,952,935;,
+		3;881,896,935;,
+		3;837,896,881;,
+		3;828,837,881;,
+		3;785,837,828;,
+		3;773,785,828;,
+		3;728,785,773;,
+		3;1069,1127,1111;,
+		3;1061,1069,1111;,
+		3;1017,1069,1061;,
+		3;1003,1017,1061;,
+		3;962,1017,1003;,
+		3;952,962,1003;,
+		3;904,962,952;,
+		3;896,904,952;,
+		3;847,904,896;,
+		3;837,847,896;,
+		3;792,847,837;,
+		3;785,792,837;,
+		3;739,792,785;,
+		3;728,739,785;,
+		3;687,739,728;,
+		3;1084,1133,1127;,
+		3;1069,1084,1127;,
+		3;1028,1084,1069;,
+		3;1017,1028,1069;,
+		3;972,1028,1017;,
+		3;962,972,1017;,
+		3;924,972,962;,
+		3;904,924,962;,
+		3;864,924,904;,
+		3;847,864,904;,
+		3;805,864,847;,
+		3;792,805,847;,
+		3;752,805,792;,
+		3;739,752,792;,
+		3;703,752,739;,
+		3;687,703,739;,
+		3;644,703,687;,
+		3;509,554,547;,
+		3;518,560,554;,
+		3;509,518,554;,
+		3;472,518,509;,
+		3;525,569,560;,
+		3;518,525,560;,
+		3;483,525,518;,
+		3;472,483,518;,
+		3;436,483,472;,
+		3;533,583,569;,
+		3;525,533,569;,
+		3;487,533,525;,
+		3;483,487,525;,
+		3;451,487,483;,
+		3;436,451,483;,
+		3;407,451,436;,
+		3;545,591,583;,
+		3;533,545,583;,
+		3;497,545,533;,
+		3;487,497,533;,
+		3;457,497,487;,
+		3;451,457,487;,
+		3;415,457,451;,
+		3;407,415,451;,
+		3;374,415,407;,
+		3;556,604,591;,
+		3;545,556,591;,
+		3;512,556,545;,
+		3;497,512,545;,
+		3;467,512,497;,
+		3;457,467,497;,
+		3;424,467,457;,
+		3;415,424,457;,
+		3;384,424,415;,
+		3;374,384,415;,
+		3;340,384,374;,
+		3;567,618,604;,
+		3;556,567,604;,
+		3;523,567,556;,
+		3;512,523,556;,
+		3;476,523,512;,
+		3;467,476,512;,
+		3;434,476,467;,
+		3;424,434,467;,
+		3;389,434,424;,
+		3;384,389,424;,
+		3;353,389,384;,
+		3;340,353,384;,
+		3;311,353,340;,
+		3;587,635,618;,
+		3;567,587,618;,
+		3;539,587,567;,
+		3;523,539,567;,
+		3;489,539,523;,
+		3;476,489,523;,
+		3;444,489,476;,
+		3;434,444,476;,
+		3;405,444,434;,
+		3;389,405,434;,
+		3;362,405,389;,
+		3;353,362,389;,
+		3;324,362,353;,
+		3;311,324,353;,
+		3;283,324,311;,
+		3;598,644,635;,
+		3;587,598,635;,
+		3;550,598,587;,
+		3;539,550,587;,
+		3;504,550,539;,
+		3;489,504,539;,
+		3;459,504,489;,
+		3;444,459,489;,
+		3;413,459,444;,
+		3;405,413,444;,
+		3;373,413,405;,
+		3;362,373,405;,
+		3;333,373,362;,
+		3;324,333,362;,
+		3;290,333,324;,
+		3;283,290,324;,
+		3;258,290,283;,
+		3;500,509,547;,
+		3;463,472,509;,
+		3;500,463,509;,
+		3;454,463,500;,
+		3;430,436,472;,
+		3;463,430,472;,
+		3;418,430,463;,
+		3;454,418,463;,
+		3;408,418,454;,
+		3;394,407,436;,
+		3;430,394,436;,
+		3;383,394,430;,
+		3;418,383,430;,
+		3;371,383,418;,
+		3;408,371,418;,
+		3;365,371,408;,
+		3;359,374,407;,
+		3;394,359,407;,
+		3;349,359,394;,
+		3;383,349,394;,
+		3;338,349,383;,
+		3;371,338,383;,
+		3;325,338,371;,
+		3;365,325,371;,
+		3;320,325,365;,
+		3;327,340,374;,
+		3;359,327,374;,
+		3;312,327,359;,
+		3;349,312,359;,
+		3;304,312,349;,
+		3;338,304,349;,
+		3;292,304,338;,
+		3;325,292,338;,
+		3;285,292,325;,
+		3;320,285,325;,
+		3;279,285,320;,
+		3;300,311,340;,
+		3;327,300,340;,
+		3;281,300,327;,
+		3;312,281,327;,
+		3;271,281,312;,
+		3;304,271,312;,
+		3;262,271,304;,
+		3;292,262,304;,
+		3;247,262,292;,
+		3;285,247,292;,
+		3;245,247,285;,
+		3;279,245,285;,
+		3;252,245,279;,
+		3;269,283,311;,
+		3;300,269,311;,
+		3;249,269,300;,
+		3;281,249,300;,
+		3;236,249,281;,
+		3;271,236,281;,
+		3;229,236,271;,
+		3;262,229,271;,
+		3;217,229,262;,
+		3;247,217,262;,
+		3;212,217,247;,
+		3;245,212,247;,
+		3;206,212,245;,
+		3;230,206,245;,
+		3;215,206,215;,
+		3;240,258,283;,
+		3;269,240,283;,
+		3;222,240,269;,
+		3;249,222,269;,
+		3;207,222,249;,
+		3;236,207,249;,
+		3;197,207,236;,
+		3;229,197,236;,
+		3;185,197,229;,
+		3;217,185,229;,
+		3;179,185,217;,
+		3;212,179,217;,
+		3;175,179,212;,
+		3;206,175,212;,
+		3;170,175,206;,
+		3;192,170,206;,
+		3;168,181,201;,
+		3;510,499,548;,
+		3;464,455,499;,
+		3;510,464,499;,
+		3;473,464,510;,
+		3;417,409,455;,
+		3;464,417,455;,
+		3;429,417,464;,
+		3;473,429,464;,
+		3;437,429,473;,
+		3;370,366,409;,
+		3;417,370,409;,
+		3;382,370,417;,
+		3;429,382,417;,
+		3;393,382,429;,
+		3;437,393,429;,
+		3;406,393,437;,
+		3;326,319,366;,
+		3;370,326,366;,
+		3;339,326,370;,
+		3;382,339,370;,
+		3;350,339,382;,
+		3;393,350,382;,
+		3;360,350,393;,
+		3;406,360,393;,
+		3;375,360,406;,
+		3;284,278,319;,
+		3;326,284,319;,
+		3;291,284,326;,
+		3;339,291,326;,
+		3;303,291,339;,
+		3;350,303,339;,
+		3;313,303,350;,
+		3;360,313,350;,
+		3;328,313,360;,
+		3;375,328,360;,
+		3;341,328,375;,
+		3;244,241,278;,
+		3;284,244,278;,
+		3;246,244,284;,
+		3;291,246,284;,
+		3;261,246,291;,
+		3;303,261,291;,
+		3;270,261,303;,
+		3;313,270,303;,
+		3;280,270,313;,
+		3;328,280,313;,
+		3;299,280,328;,
+		3;341,299,328;,
+		3;310,299,341;,
+		3;205,202,241;,
+		3;244,205,241;,
+		3;211,205,244;,
+		3;246,211,244;,
+		3;216,211,246;,
+		3;261,216,246;,
+		3;228,216,261;,
+		3;270,228,261;,
+		3;235,228,270;,
+		3;280,235,270;,
+		3;248,235,280;,
+		3;299,248,280;,
+		3;268,248,299;,
+		3;310,268,299;,
+		3;282,268,310;,
+		3;169,168,202;,
+		3;205,169,202;,
+		3;176,169,205;,
+		3;211,176,205;,
+		3;180,176,211;,
+		3;216,180,211;,
+		3;184,180,216;,
+		3;228,184,216;,
+		3;198,184,228;,
+		3;235,198,228;,
+		3;208,198,235;,
+		3;248,208,235;,
+		3;223,208,248;,
+		3;268,223,248;,
+		3;239,223,268;,
+		3;282,239,268;,
+		3;257,239,282;,
+		3;555,510,548;,
+		3;517,473,510;,
+		3;555,517,510;,
+		3;561,517,555;,
+		3;482,437,473;,
+		3;517,482,473;,
+		3;526,482,517;,
+		3;561,526,517;,
+		3;570,526,561;,
+		3;450,406,437;,
+		3;482,450,437;,
+		3;488,450,482;,
+		3;526,488,482;,
+		3;534,488,526;,
+		3;570,534,526;,
+		3;582,534,570;,
+		3;414,375,406;,
+		3;450,414,406;,
+		3;456,414,450;,
+		3;488,456,450;,
+		3;498,456,488;,
+		3;534,498,488;,
+		3;546,498,534;,
+		3;582,546,534;,
+		3;592,546,582;,
+		3;385,341,375;,
+		3;414,385,375;,
+		3;423,385,414;,
+		3;456,423,414;,
+		3;468,423,456;,
+		3;498,468,456;,
+		3;511,468,498;,
+		3;546,511,498;,
+		3;557,511,546;,
+		3;592,557,546;,
+		3;605,557,592;,
+		3;354,310,341;,
+		3;385,354,341;,
+		3;390,354,385;,
+		3;423,390,385;,
+		3;435,390,423;,
+		3;468,435,423;,
+		3;477,435,468;,
+		3;511,477,468;,
+		3;524,477,511;,
+		3;557,524,511;,
+		3;568,524,557;,
+		3;605,568,557;,
+		3;619,568,605;,
+		3;323,282,310;,
+		3;354,323,310;,
+		3;361,323,354;,
+		3;390,361,354;,
+		3;404,361,390;,
+		3;435,404,390;,
+		3;445,404,435;,
+		3;477,445,435;,
+		3;490,445,477;,
+		3;524,490,477;,
+		3;540,490,524;,
+		3;568,540,524;,
+		3;586,540,568;,
+		3;619,586,568;,
+		3;636,586,619;,
+		3;289,257,282;,
+		3;323,289,282;,
+		3;332,289,323;,
+		3;361,332,323;,
+		3;372,332,361;,
+		3;404,372,361;,
+		3;412,372,404;,
+		3;445,412,404;,
+		3;458,412,445;,
+		3;490,458,445;,
+		3;503,458,490;,
+		3;540,503,490;,
+		3;551,503,540;,
+		3;586,551,540;,
+		3;597,551,586;,
+		3;636,597,586;,
+		3;645,597,636;,
+		3;1030,979,1016;,
+		3;993,936,979;,
+		3;1030,993,979;,
+		3;1047,993,1030;,
+		3;956,899,936;,
+		3;993,956,936;,
+		3;1005,956,993;,
+		3;1047,1005,993;,
+		3;1063,1005,1047;,
+		3;912,855,899;,
+		3;956,912,899;,
+		3;966,912,956;,
+		3;1005,966,956;,
+		3;1021,966,1005;,
+		3;1063,1021,1005;,
+		3;1077,1021,1063;,
+		3;869,813,855;,
+		3;912,869,855;,
+		3;928,869,912;,
+		3;966,928,912;,
+		3;983,928,966;,
+		3;1021,983,966;,
+		3;1034,983,1021;,
+		3;1077,1034,1021;,
+		3;1088,1034,1077;,
+		3;829,772,813;,
+		3;869,829,813;,
+		3;880,829,869;,
+		3;928,880,869;,
+		3;934,880,928;,
+		3;983,934,928;,
+		3;992,934,983;,
+		3;1034,992,983;,
+		3;1048,992,1034;,
+		3;1088,1048,1034;,
+		3;1100,1048,1088;,
+		3;786,729,772;,
+		3;829,786,772;,
+		3;838,786,829;,
+		3;880,838,829;,
+		3;895,838,880;,
+		3;934,895,880;,
+		3;953,895,934;,
+		3;992,953,934;,
+		3;1004,953,992;,
+		3;1048,1004,992;,
+		3;1060,1004,1048;,
+		3;1100,1060,1048;,
+		3;1112,1060,1100;,
+		3;740,688,729;,
+		3;786,740,729;,
+		3;793,740,786;,
+		3;838,793,786;,
+		3;846,793,838;,
+		3;895,846,838;,
+		3;903,846,895;,
+		3;953,903,895;,
+		3;963,903,953;,
+		3;1004,963,953;,
+		3;1018,963,1004;,
+		3;1060,1018,1004;,
+		3;1068,1018,1060;,
+		3;1112,1068,1060;,
+		3;1126,1068,1112;,
+		3;702,645,688;,
+		3;740,702,688;,
+		3;751,702,740;,
+		3;793,751,740;,
+		3;806,751,793;,
+		3;846,806,793;,
+		3;865,806,846;,
+		3;903,865,846;,
+		3;923,865,903;,
+		3;963,923,903;,
+		3;973,923,963;,
+		3;1018,973,963;,
+		3;1029,973,1018;,
+		3;1068,1029,1018;,
+		3;1083,1029,1068;,
+		3;1126,1083,1068;,
+		3;1132,1083,1126;,
+		3;1066,1030,1016;,
+		3;1086,1047,1030;,
+		3;1066,1086,1030;,
+		3;1125,1086,1066;,
+		3;1098,1063,1047;,
+		3;1086,1098,1047;,
+		3;1140,1098,1086;,
+		3;1125,1140,1086;,
+		3;1179,1140,1125;,
+		3;1115,1077,1063;,
+		3;1098,1115,1063;,
+		3;1154,1115,1098;,
+		3;1140,1154,1098;,
+		3;1191,1154,1140;,
+		3;1179,1191,1140;,
+		3;1228,1191,1179;,
+		3;1131,1088,1077;,
+		3;1115,1131,1077;,
+		3;1167,1131,1115;,
+		3;1154,1167,1115;,
+		3;1203,1167,1154;,
+		3;1191,1203,1154;,
+		3;1240,1203,1191;,
+		3;1228,1240,1191;,
+		3;1277,1240,1228;,
+		3;1142,1100,1088;,
+		3;1131,1142,1088;,
+		3;1185,1142,1131;,
+		3;1167,1185,1131;,
+		3;1222,1185,1167;,
+		3;1203,1222,1167;,
+		3;1256,1222,1203;,
+		3;1240,1256,1203;,
+		3;1292,1256,1240;,
+		3;1277,1292,1240;,
+		3;1325,1292,1277;,
+		3;1156,1112,1100;,
+		3;1142,1156,1100;,
+		3;1195,1156,1142;,
+		3;1185,1195,1142;,
+		3;1235,1195,1185;,
+		3;1222,1235,1185;,
+		3;1274,1235,1222;,
+		3;1256,1274,1222;,
+		3;1305,1274,1256;,
+		3;1292,1305,1256;,
+		3;1342,1305,1292;,
+		3;1325,1342,1292;,
+		3;1371,1342,1325;,
+		3;1166,1126,1112;,
+		3;1156,1166,1112;,
+		3;1212,1166,1156;,
+		3;1195,1212,1156;,
+		3;1249,1212,1195;,
+		3;1235,1249,1195;,
+		3;1281,1249,1235;,
+		3;1274,1281,1235;,
+		3;1321,1281,1274;,
+		3;1305,1321,1274;,
+		3;1351,1321,1305;,
+		3;1342,1351,1305;,
+		3;1386,1351,1342;,
+		3;1371,1386,1342;,
+		3;1417,1386,1371;,
+		3;1178,1132,1126;,
+		3;1166,1178,1126;,
+		3;1221,1178,1166;,
+		3;1212,1221,1166;,
+		3;1258,1221,1212;,
+		3;1249,1258,1212;,
+		3;1300,1258,1249;,
+		3;1281,1300,1249;,
+		3;1330,1300,1281;,
+		3;1321,1330,1281;,
+		3;1365,1330,1321;,
+		3;1351,1365,1321;,
+		3;1394,1365,1351;,
+		3;1386,1394,1351;,
+		3;1428,1394,1386;,
+		3;1417,1428,1386;,
+		3;1457,1428,1417;,
+		3;1692,1674,1687;,
+		3;1680,1661,1674;,
+		3;1692,1680,1674;,
+		3;1695,1680,1692;,
+		3;1663,1646,1661;,
+		3;1680,1663,1661;,
+		3;1678,1663,1680;,
+		3;1695,1678,1680;,
+		3;1689,1678,1695;,
+		3;1642,1620,1646;,
+		3;1663,1642,1646;,
+		3;1659,1642,1663;,
+		3;1678,1659,1663;,
+		3;1673,1659,1678;,
+		3;1689,1673,1678;,
+		3;1686,1673,1689;,
+		3;1615,1592,1620;,
+		3;1642,1615,1620;,
+		3;1633,1615,1642;,
+		3;1659,1633,1642;,
+		3;1652,1633,1659;,
+		3;1673,1652,1659;,
+		3;1666,1652,1673;,
+		3;1686,1666,1673;,
+		3;1677,1666,1686;,
+		3;1587,1565,1592;,
+		3;1615,1587,1592;,
+		3;1606,1587,1615;,
+		3;1633,1606,1615;,
+		3;1627,1606,1633;,
+		3;1652,1627,1633;,
+		3;1639,1627,1652;,
+		3;1666,1639,1652;,
+		3;1654,1639,1666;,
+		3;1677,1654,1666;,
+		3;1664,1654,1677;,
+		3;1555,1533,1565;,
+		3;1587,1555,1565;,
+		3;1578,1555,1587;,
+		3;1606,1578,1587;,
+		3;1595,1578,1606;,
+		3;1627,1595,1606;,
+		3;1614,1595,1627;,
+		3;1639,1614,1627;,
+		3;1629,1614,1639;,
+		3;1654,1629,1639;,
+		3;1637,1629,1654;,
+		3;1664,1637,1654;,
+		3;1649,1637,1664;,
+		3;1521,1494,1533;,
+		3;1555,1521,1533;,
+		3;1545,1521,1555;,
+		3;1578,1545,1555;,
+		3;1562,1545,1578;,
+		3;1595,1562,1578;,
+		3;1582,1562,1595;,
+		3;1614,1582,1595;,
+		3;1599,1582,1614;,
+		3;1629,1599,1614;,
+		3;1611,1599,1629;,
+		3;1637,1611,1629;,
+		3;1624,1611,1637;,
+		3;1649,1624,1637;,
+		3;1631,1624,1649;,
+		3;1487,1456,1494;,
+		3;1521,1487,1494;,
+		3;1508,1487,1521;,
+		3;1545,1508,1521;,
+		3;1527,1508,1545;,
+		3;1562,1527,1545;,
+		3;1549,1527,1562;,
+		3;1582,1549,1562;,
+		3;1564,1549,1582;,
+		3;1599,1564,1582;,
+		3;1580,1564,1599;,
+		3;1611,1580,1599;,
+		3;1591,1580,1611;,
+		3;1624,1591,1611;,
+		3;1605,1591,1624;,
+		3;1631,1605,1624;,
+		3;1612,1605,1631;,
+		3;1434,1391,1415;,
+		3;1413,1364,1391;,
+		3;1434,1413,1391;,
+		3;1452,1413,1434;,
+		3;1384,1339,1364;,
+		3;1413,1384,1364;,
+		3;1424,1384,1413;,
+		3;1452,1424,1413;,
+		3;1465,1424,1452;,
+		3;1349,1308,1339;,
+		3;1384,1349,1339;,
+		3;1392,1349,1384;,
+		3;1424,1392,1384;,
+		3;1430,1392,1424;,
+		3;1465,1430,1424;,
+		3;1469,1430,1465;,
+		3;1322,1275,1308;,
+		3;1349,1322,1308;,
+		3;1361,1322,1349;,
+		3;1392,1361,1349;,
+		3;1400,1361,1392;,
+		3;1430,1400,1392;,
+		3;1437,1400,1430;,
+		3;1469,1437,1430;,
+		3;1474,1437,1469;,
+		3;1287,1243,1275;,
+		3;1322,1287,1275;,
+		3;1328,1287,1322;,
+		3;1361,1328,1322;,
+		3;1369,1328,1361;,
+		3;1400,1369,1361;,
+		3;1408,1369,1400;,
+		3;1437,1408,1400;,
+		3;1443,1408,1437;,
+		3;1474,1443,1437;,
+		3;1477,1443,1474;,
+		3;1252,1208,1243;,
+		3;1287,1252,1243;,
+		3;1296,1252,1287;,
+		3;1328,1296,1287;,
+		3;1332,1296,1328;,
+		3;1369,1332,1328;,
+		3;1376,1332,1369;,
+		3;1408,1376,1369;,
+		3;1410,1376,1408;,
+		3;1443,1410,1408;,
+		3;1441,1410,1443;,
+		3;1477,1441,1443;,
+		3;1473,1441,1477;,
+		3;1218,1171,1208;,
+		3;1252,1218,1208;,
+		3;1262,1218,1252;,
+		3;1296,1262,1252;,
+		3;1302,1262,1296;,
+		3;1332,1302,1296;,
+		3;1334,1302,1332;,
+		3;1376,1334,1332;,
+		3;1373,1334,1376;,
+		3;1410,1373,1376;,
+		3;1406,1373,1410;,
+		3;1441,1406,1410;,
+		3;1435,1406,1441;,
+		3;1473,1435,1441;,
+		3;1466,1435,1473;,
+		3;1177,1133,1171;,
+		3;1218,1177,1171;,
+		3;1220,1177,1218;,
+		3;1262,1220,1218;,
+		3;1257,1220,1262;,
+		3;1302,1257,1262;,
+		3;1301,1257,1302;,
+		3;1334,1301,1302;,
+		3;1331,1301,1334;,
+		3;1373,1331,1334;,
+		3;1366,1331,1373;,
+		3;1406,1366,1373;,
+		3;1395,1366,1406;,
+		3;1435,1395,1406;,
+		3;1427,1395,1435;,
+		3;1466,1427,1435;,
+		3;1456,1427,1466;,
+		3;915,845,879;,
+		3;884,819,845;,
+		3;915,884,845;,
+		3;950,884,915;,
+		3;851,787,819;,
+		3;884,851,819;,
+		3;913,851,884;,
+		3;950,913,884;,
+		3;981,913,950;,
+		3;822,760,787;,
+		3;851,822,787;,
+		3;886,822,851;,
+		3;913,886,851;,
+		3;944,886,913;,
+		3;981,944,913;,
+		3;1010,944,981;,
+		3;795,735,760;,
+		3;822,795,760;,
+		3;854,795,822;,
+		3;886,854,822;,
+		3;917,854,886;,
+		3;944,917,886;,
+		3;974,917,944;,
+		3;1010,974,944;,
+		3;1037,974,1010;,
+		3;768,709,735;,
+		3;795,768,735;,
+		3;826,768,795;,
+		3;854,826,795;,
+		3;887,826,854;,
+		3;917,887,854;,
+		3;942,887,917;,
+		3;974,942,917;,
+		3;1001,942,974;,
+		3;1037,1001,974;,
+		3;1065,1001,1037;,
+		3;746,683,709;,
+		3;768,746,709;,
+		3;800,746,768;,
+		3;826,800,768;,
+		3;857,800,826;,
+		3;887,857,826;,
+		3;920,857,887;,
+		3;942,920,887;,
+		3;970,920,942;,
+		3;1001,970,942;,
+		3;1033,970,1001;,
+		3;1065,1033,1001;,
+		3;1092,1033,1065;,
+		3;720,666,683;,
+		3;746,720,683;,
+		3;776,720,746;,
+		3;800,776,746;,
+		3;830,776,800;,
+		3;857,830,800;,
+		3;891,830,857;,
+		3;920,891,857;,
+		3;941,891,920;,
+		3;970,941,920;,
+		3;999,941,970;,
+		3;1033,999,970;,
+		3;1059,999,1033;,
+		3;1092,1059,1033;,
+		3;1113,1059,1092;,
+		3;703,644,666;,
+		3;720,703,666;,
+		3;752,703,720;,
+		3;776,752,720;,
+		3;805,752,776;,
+		3;830,805,776;,
+		3;864,805,830;,
+		3;891,864,830;,
+		3;924,864,891;,
+		3;941,924,891;,
+		3;972,924,941;,
+		3;999,972,941;,
+		3;1028,972,999;,
+		3;1059,1028,999;,
+		3;1084,1028,1059;,
+		3;1113,1084,1059;,
+		3;1133,1084,1113;,
+		3;367,321,344;,
+		3;348,305,321;,
+		3;367,348,321;,
+		3;395,348,367;,
+		3;329,286,305;,
+		3;348,329,305;,
+		3;379,329,348;,
+		3;395,379,348;,
+		3;428,379,395;,
+		3;318,273,286;,
+		3;329,318,286;,
+		3;364,318,329;,
+		3;379,364,329;,
+		3;410,364,379;,
+		3;428,410,379;,
+		3;462,410,428;,
+		3;309,266,273;,
+		3;318,309,273;,
+		3;352,309,318;,
+		3;364,352,318;,
+		3;398,352,364;,
+		3;410,398,364;,
+		3;440,398,410;,
+		3;462,440,410;,
+		3;495,440,462;,
+		3;301,263,266;,
+		3;309,301,266;,
+		3;343,301,309;,
+		3;352,343,309;,
+		3;387,343,352;,
+		3;398,387,352;,
+		3;432,387,398;,
+		3;440,432,398;,
+		3;480,432,440;,
+		3;495,480,440;,
+		3;530,480,495;,
+		3;295,255,263;,
+		3;301,295,263;,
+		3;337,295,301;,
+		3;343,337,301;,
+		3;380,337,343;,
+		3;387,380,343;,
+		3;426,380,387;,
+		3;432,426,387;,
+		3;469,426,432;,
+		3;480,469,432;,
+		3;522,469,480;,
+		3;530,522,480;,
+		3;572,522,530;,
+		3;294,253,255;,
+		3;295,294,255;,
+		3;335,294,295;,
+		3;337,335,295;,
+		3;377,335,337;,
+		3;380,377,337;,
+		3;420,377,380;,
+		3;426,420,380;,
+		3;466,420,426;,
+		3;469,466,426;,
+		3;514,466,469;,
+		3;522,514,469;,
+		3;559,514,522;,
+		3;572,559,522;,
+		3;608,559,572;,
+		3;290,258,253;,
+		3;294,290,253;,
+		3;333,290,294;,
+		3;335,333,294;,
+		3;373,333,335;,
+		3;377,373,335;,
+		3;413,373,377;,
+		3;420,413,377;,
+		3;459,413,420;,
+		3;466,459,420;,
+		3;504,459,466;,
+		3;514,504,466;,
+		3;550,504,514;,
+		3;559,550,514;,
+		3;598,550,559;,
+		3;608,598,559;,
+		3;644,598,608;,
+		3;49,34,40;,
+		3;47,36,34;,
+		3;49,47,34;,
+		3;64,47,49;,
+		3;53,41,36;,
+		3;47,53,36;,
+		3;66,53,47;,
+		3;64,66,47;,
+		3;80,66,64;,
+		3;59,52,41;,
+		3;53,59,41;,
+		3;73,59,53;,
+		3;66,73,53;,
+		3;86,73,66;,
+		3;80,86,66;,
+		3;101,86,80;,
+		3;74,68,52;,
+		3;59,74,52;,
+		3;81,74,59;,
+		3;73,81,59;,
+		3;94,81,73;,
+		3;86,94,73;,
+		3;110,94,86;,
+		3;101,110,86;,
+		3;128,110,101;,
+		3;92,87,68;,
+		3;74,92,68;,
+		3;98,92,74;,
+		3;81,98,74;,
+		3;109,98,81;,
+		3;94,109,81;,
+		3;121,109,94;,
+		3;110,121,94;,
+		3;134,121,110;,
+		3;128,134,110;,
+		3;159,134,128;,
+		3;116,113,87;,
+		3;92,116,87;,
+		3;119,116,92;,
+		3;98,119,92;,
+		3;125,119,98;,
+		3;109,125,98;,
+		3;139,125,109;,
+		3;121,139,109;,
+		3;151,139,121;,
+		3;134,151,121;,
+		3;167,151,134;,
+		3;159,167,134;,
+		3;189,167,159;,
+		3;142,141,113;,
+		3;116,142,113;,
+		3;146,142,116;,
+		3;119,146,116;,
+		3;149,146,119;,
+		3;125,149,119;,
+		3;160,149,125;,
+		3;139,160,125;,
+		3;171,160,139;,
+		3;151,171,139;,
+		3;182,171,151;,
+		3;167,182,151;,
+		3;199,182,167;,
+		3;189,199,167;,
+		3;224,199,189;,
+		3;157,168,157;,
+		3;142,170,141;,
+		3;175,170,142;,
+		3;146,175,142;,
+		3;179,175,146;,
+		3;149,179,146;,
+		3;185,179,149;,
+		3;160,185,149;,
+		3;197,185,160;,
+		3;171,197,160;,
+		3;207,197,171;,
+		3;182,207,171;,
+		3;222,207,182;,
+		3;199,222,182;,
+		3;240,222,199;,
+		3;224,240,199;,
+		3;258,240,224;,
+		3;35,50,39;,
+		3;48,63,50;,
+		3;35,48,50;,
+		3;37,48,35;,
+		3;65,79,63;,
+		3;48,65,63;,
+		3;54,65,48;,
+		3;37,54,48;,
+		3;42,54,37;,
+		3;85,102,79;,
+		3;65,85,79;,
+		3;72,85,65;,
+		3;54,72,65;,
+		3;60,72,54;,
+		3;42,60,54;,
+		3;51,60,42;,
+		3;111,129,102;,
+		3;85,111,102;,
+		3;95,111,85;,
+		3;72,95,85;,
+		3;82,95,72;,
+		3;60,82,72;,
+		3;75,82,60;,
+		3;51,75,60;,
+		3;67,75,51;,
+		3;135,158,129;,
+		3;111,135,129;,
+		3;122,135,111;,
+		3;95,122,111;,
+		3;108,122,95;,
+		3;82,108,95;,
+		3;99,108,82;,
+		3;75,99,82;,
+		3;93,99,75;,
+		3;67,93,75;,
+		3;88,93,67;,
+		3;166,188,158;,
+		3;135,166,158;,
+		3;152,166,135;,
+		3;122,152,135;,
+		3;140,152,122;,
+		3;108,140,122;,
+		3;126,140,108;,
+		3;99,126,108;,
+		3;120,126,99;,
+		3;93,120,99;,
+		3;117,120,93;,
+		3;88,117,93;,
+		3;112,117,88;,
+		3;200,225,188;,
+		3;166,200,188;,
+		3;183,200,166;,
+		3;152,183,166;,
+		3;172,183,152;,
+		3;140,172,152;,
+		3;161,172,140;,
+		3;126,161,140;,
+		3;150,161,126;,
+		3;120,150,126;,
+		3;147,150,120;,
+		3;117,147,120;,
+		3;143,147,117;,
+		3;112,143,117;,
+		3;136,143,112;,
+		3;239,257,225;,
+		3;200,239,225;,
+		3;223,239,200;,
+		3;183,223,200;,
+		3;208,223,183;,
+		3;172,208,183;,
+		3;198,208,172;,
+		3;161,198,172;,
+		3;184,198,161;,
+		3;150,184,161;,
+		3;180,184,150;,
+		3;147,180,150;,
+		3;176,180,147;,
+		3;143,176,147;,
+		3;169,176,143;,
+		3;136,169,143;,
+		3;168,169,136;,
+		3;322,368,345;,
+		3;347,396,368;,
+		3;322,347,368;,
+		3;306,347,322;,
+		3;378,427,396;,
+		3;347,378,396;,
+		3;330,378,347;,
+		3;306,330,347;,
+		3;287,330,306;,
+		3;411,461,427;,
+		3;378,411,427;,
+		3;363,411,378;,
+		3;330,363,378;,
+		3;317,363,330;,
+		3;287,317,330;,
+		3;272,317,287;,
+		3;441,496,461;,
+		3;411,441,461;,
+		3;397,441,411;,
+		3;363,397,411;,
+		3;351,397,363;,
+		3;317,351,363;,
+		3;308,351,317;,
+		3;272,308,317;,
+		3;267,308,272;,
+		3;481,529,496;,
+		3;441,481,496;,
+		3;433,481,441;,
+		3;397,433,441;,
+		3;386,433,397;,
+		3;351,386,397;,
+		3;342,386,351;,
+		3;308,342,351;,
+		3;302,342,308;,
+		3;267,302,308;,
+		3;264,302,267;,
+		3;521,571,529;,
+		3;481,521,529;,
+		3;470,521,481;,
+		3;433,470,481;,
+		3;425,470,433;,
+		3;386,425,433;,
+		3;381,425,386;,
+		3;342,381,386;,
+		3;336,381,342;,
+		3;302,336,342;,
+		3;296,336,302;,
+		3;264,296,302;,
+		3;256,296,264;,
+		3;558,609,571;,
+		3;521,558,571;,
+		3;513,558,521;,
+		3;470,513,521;,
+		3;465,513,470;,
+		3;425,465,470;,
+		3;419,465,425;,
+		3;381,419,425;,
+		3;376,419,381;,
+		3;336,376,381;,
+		3;334,376,336;,
+		3;296,334,336;,
+		3;293,334,296;,
+		3;256,293,296;,
+		3;254,293,256;,
+		3;597,645,609;,
+		3;558,597,609;,
+		3;551,597,558;,
+		3;513,551,558;,
+		3;503,551,513;,
+		3;465,503,513;,
+		3;458,503,465;,
+		3;419,458,465;,
+		3;412,458,419;,
+		3;376,412,419;,
+		3;372,412,376;,
+		3;334,372,376;,
+		3;332,372,334;,
+		3;293,332,334;,
+		3;289,332,293;,
+		3;254,289,293;,
+		3;257,289,254;,
+		3;844,916,878;,
+		3;883,951,916;,
+		3;844,883,916;,
+		3;818,883,844;,
+		3;914,982,951;,
+		3;883,914,951;,
+		3;852,914,883;,
+		3;818,852,883;,
+		3;788,852,818;,
+		3;945,1009,982;,
+		3;914,945,982;,
+		3;885,945,914;,
+		3;852,885,914;,
+		3;825,885,852;,
+		3;788,825,852;,
+		3;761,825,788;,
+		3;975,1036,1009;,
+		3;945,975,1009;,
+		3;918,975,945;,
+		3;885,918,945;,
+		3;853,918,885;,
+		3;825,853,885;,
+		3;794,853,825;,
+		3;761,794,825;,
+		3;734,794,761;,
+		3;1002,1064,1036;,
+		3;975,1002,1036;,
+		3;943,1002,975;,
+		3;918,943,975;,
+		3;888,943,918;,
+		3;853,888,918;,
+		3;827,888,853;,
+		3;794,827,853;,
+		3;769,827,794;,
+		3;734,769,794;,
+		3;708,769,734;,
+		3;1032,1091,1064;,
+		3;1002,1032,1064;,
+		3;971,1032,1002;,
+		3;943,971,1002;,
+		3;919,971,943;,
+		3;888,919,943;,
+		3;858,919,888;,
+		3;827,858,888;,
+		3;801,858,827;,
+		3;769,801,827;,
+		3;745,801,769;,
+		3;708,745,769;,
+		3;684,745,708;,
+		3;1058,1114,1091;,
+		3;1032,1058,1091;,
+		3;1000,1058,1032;,
+		3;971,1000,1032;,
+		3;940,1000,971;,
+		3;919,940,971;,
+		3;892,940,919;,
+		3;858,892,919;,
+		3;831,892,858;,
+		3;801,831,858;,
+		3;775,831,801;,
+		3;745,775,801;,
+		3;719,775,745;,
+		3;684,719,745;,
+		3;667,719,684;,
+		3;1083,1132,1114;,
+		3;1058,1083,1114;,
+		3;1029,1083,1058;,
+		3;1000,1029,1058;,
+		3;973,1029,1000;,
+		3;940,973,1000;,
+		3;923,973,940;,
+		3;892,923,940;,
+		3;865,923,892;,
+		3;831,865,892;,
+		3;806,865,831;,
+		3;775,806,831;,
+		3;751,806,775;,
+		3;719,751,775;,
+		3;702,751,719;,
+		3;667,702,719;,
+		3;645,702,667;,
+		3;1390,1433,1414;,
+		3;1412,1451,1433;,
+		3;1390,1412,1433;,
+		3;1363,1412,1390;,
+		3;1423,1464,1451;,
+		3;1412,1423,1451;,
+		3;1385,1423,1412;,
+		3;1363,1385,1412;,
+		3;1340,1385,1363;,
+		3;1429,1468,1464;,
+		3;1423,1429,1464;,
+		3;1393,1429,1423;,
+		3;1385,1393,1423;,
+		3;1350,1393,1385;,
+		3;1340,1350,1385;,
+		3;1309,1350,1340;,
+		3;1438,1475,1468;,
+		3;1429,1438,1468;,
+		3;1401,1438,1429;,
+		3;1393,1401,1429;,
+		3;1362,1401,1393;,
+		3;1350,1362,1393;,
+		3;1323,1362,1350;,
+		3;1309,1323,1350;,
+		3;1276,1323,1309;,
+		3;1444,1476,1475;,
+		3;1438,1444,1475;,
+		3;1409,1444,1438;,
+		3;1401,1409,1438;,
+		3;1370,1409,1401;,
+		3;1362,1370,1401;,
+		3;1329,1370,1362;,
+		3;1323,1329,1362;,
+		3;1288,1329,1323;,
+		3;1276,1288,1323;,
+		3;1242,1288,1276;,
+		3;1442,1472,1476;,
+		3;1444,1442,1476;,
+		3;1411,1442,1444;,
+		3;1409,1411,1444;,
+		3;1375,1411,1409;,
+		3;1370,1375,1409;,
+		3;1333,1375,1370;,
+		3;1329,1333,1370;,
+		3;1297,1333,1329;,
+		3;1288,1297,1329;,
+		3;1251,1297,1288;,
+		3;1242,1251,1288;,
+		3;1207,1251,1242;,
+		3;1436,1467,1472;,
+		3;1442,1436,1472;,
+		3;1407,1436,1442;,
+		3;1411,1407,1442;,
+		3;1374,1407,1411;,
+		3;1375,1374,1411;,
+		3;1335,1374,1375;,
+		3;1333,1335,1375;,
+		3;1303,1335,1333;,
+		3;1297,1303,1333;,
+		3;1261,1303,1297;,
+		3;1251,1261,1297;,
+		3;1219,1261,1251;,
+		3;1207,1219,1251;,
+		3;1172,1219,1207;,
+		3;1428,1457,1467;,
+		3;1436,1428,1467;,
+		3;1394,1428,1436;,
+		3;1407,1394,1436;,
+		3;1365,1394,1407;,
+		3;1374,1365,1407;,
+		3;1330,1365,1374;,
+		3;1335,1330,1374;,
+		3;1300,1330,1335;,
+		3;1303,1300,1335;,
+		3;1258,1300,1303;,
+		3;1261,1258,1303;,
+		3;1221,1258,1261;,
+		3;1219,1221,1261;,
+		3;1178,1221,1219;,
+		3;1172,1178,1219;,
+		3;1132,1178,1172;,
+		3;1675,1691,1688;,
+		3;1681,1696,1691;,
+		3;1675,1681,1691;,
+		3;1660,1681,1675;,
+		3;1679,1690,1696;,
+		3;1681,1679,1696;,
+		3;1662,1679,1681;,
+		3;1660,1662,1681;,
+		3;1645,1662,1660;,
+		3;1672,1685,1690;,
+		3;1679,1672,1690;,
+		3;1658,1672,1679;,
+		3;1662,1658,1679;,
+		3;1641,1658,1662;,
+		3;1645,1641,1662;,
+		3;1619,1641,1645;,
+		3;1667,1676,1685;,
+		3;1672,1667,1685;,
+		3;1653,1667,1672;,
+		3;1658,1653,1672;,
+		3;1634,1653,1658;,
+		3;1641,1634,1658;,
+		3;1616,1634,1641;,
+		3;1619,1616,1641;,
+		3;1593,1616,1619;,
+		3;1655,1665,1676;,
+		3;1667,1655,1676;,
+		3;1640,1655,1667;,
+		3;1653,1640,1667;,
+		3;1628,1640,1653;,
+		3;1634,1628,1653;,
+		3;1607,1628,1634;,
+		3;1616,1607,1634;,
+		3;1586,1607,1616;,
+		3;1593,1586,1616;,
+		3;1566,1586,1593;,
+		3;1638,1650,1665;,
+		3;1655,1638,1665;,
+		3;1630,1638,1655;,
+		3;1640,1630,1655;,
+		3;1613,1630,1640;,
+		3;1628,1613,1640;,
+		3;1594,1613,1628;,
+		3;1607,1594,1628;,
+		3;1577,1594,1607;,
+		3;1586,1577,1607;,
+		3;1554,1577,1586;,
+		3;1566,1554,1586;,
+		3;1532,1554,1566;,
+		3;1623,1632,1650;,
+		3;1638,1623,1650;,
+		3;1610,1623,1638;,
+		3;1630,1610,1638;,
+		3;1598,1610,1630;,
+		3;1613,1598,1630;,
+		3;1581,1598,1613;,
+		3;1594,1581,1613;,
+		3;1561,1581,1594;,
+		3;1577,1561,1594;,
+		3;1544,1561,1577;,
+		3;1554,1544,1577;,
+		3;1522,1544,1554;,
+		3;1532,1522,1554;,
+		3;1493,1522,1532;,
+		3;1604,1612,1632;,
+		3;1623,1604,1632;,
+		3;1590,1604,1623;,
+		3;1610,1590,1623;,
+		3;1579,1590,1610;,
+		3;1598,1579,1610;,
+		3;1563,1579,1598;,
+		3;1581,1563,1598;,
+		3;1548,1563,1581;,
+		3;1561,1548,1581;,
+		3;1526,1548,1561;,
+		3;1544,1526,1561;,
+		3;1507,1526,1544;,
+		3;1522,1507,1544;,
+		3;1486,1507,1522;,
+		3;1493,1486,1522;,
+		3;1457,1486,1493;,
+		3;1631,1632,1612;,
+		3;1651,1650,1632;,
+		3;1631,1651,1632;,
+		3;1649,1651,1631;,
+		3;1668,1665,1650;,
+		3;1651,1668,1650;,
+		3;1669,1668,1651;,
+		3;1649,1669,1651;,
+		3;1664,1669,1649;,
+		3;1682,1676,1665;,
+		3;1668,1682,1665;,
+		3;1684,1682,1668;,
+		3;1669,1684,1668;,
+		3;1683,1684,1669;,
+		3;1664,1683,1669;,
+		3;1677,1683,1664;,
+		3;1694,1685,1676;,
+		3;1682,1694,1676;,
+		3;1698,1694,1682;,
+		3;1684,1698,1682;,
+		3;1697,1698,1684;,
+		3;1683,1697,1684;,
+		3;1693,1697,1683;,
+		3;1677,1693,1683;,
+		3;1686,1693,1677;,
+		3;1701,1690,1685;,
+		3;1694,1701,1685;,
+		3;1707,1701,1694;,
+		3;1698,1707,1694;,
+		3;1709,1707,1698;,
+		3;1697,1709,1698;,
+		3;1708,1709,1697;,
+		3;1693,1708,1697;,
+		3;1702,1708,1693;,
+		3;1686,1702,1693;,
+		3;1689,1702,1686;,
+		3;1705,1696,1690;,
+		3;1701,1705,1690;,
+		3;1712,1705,1701;,
+		3;1707,1712,1701;,
+		3;1716,1712,1707;,
+		3;1709,1716,1707;,
+		3;1717,1716,1709;,
+		3;1708,1717,1709;,
+		3;1713,1717,1708;,
+		3;1702,1713,1708;,
+		3;1706,1713,1702;,
+		3;1689,1706,1702;,
+		3;1695,1706,1689;,
+		3;1703,1691,1696;,
+		3;1705,1703,1696;,
+		3;1714,1703,1705;,
+		3;1712,1714,1705;,
+		3;1720,1714,1712;,
+		3;1716,1720,1712;,
+		3;1722,1720,1716;,
+		3;1717,1722,1716;,
+		3;1721,1722,1717;,
+		3;1713,1721,1717;,
+		3;1715,1721,1713;,
+		3;1706,1715,1713;,
+		3;1704,1715,1706;,
+		3;1695,1704,1706;,
+		3;1692,1704,1695;,
+		3;1699,1688,1691;,
+		3;1703,1699,1691;,
+		3;1710,1699,1703;,
+		3;1714,1710,1703;,
+		3;1718,1710,1714;,
+		3;1720,1718,1714;,
+		3;1723,1718,1720;,
+		3;1722,1723,1720;,
+		3;1724,1723,1722;,
+		3;1721,1724,1722;,
+		3;1719,1724,1721;,
+		3;1715,1719,1721;,
+		3;1711,1719,1715;,
+		3;1704,1711,1715;,
+		3;1700,1711,1704;,
+		3;1692,1700,1704;,
+		3;1687,1700,1692;,
+		3;1466,1494,1456;,
+		3;1504,1533,1494;,
+		3;1466,1504,1494;,
+		3;1473,1504,1466;,
+		3;1539,1565,1533;,
+		3;1504,1539,1533;,
+		3;1510,1539,1504;,
+		3;1473,1510,1504;,
+		3;1477,1510,1473;,
+		3;1571,1592,1565;,
+		3;1539,1571,1565;,
+		3;1542,1571,1539;,
+		3;1510,1542,1539;,
+		3;1511,1542,1510;,
+		3;1477,1511,1510;,
+		3;1474,1511,1477;,
+		3;1601,1620,1592;,
+		3;1571,1601,1592;,
+		3;1573,1601,1571;,
+		3;1542,1573,1571;,
+		3;1540,1573,1542;,
+		3;1511,1540,1542;,
+		3;1505,1540,1511;,
+		3;1474,1505,1511;,
+		3;1469,1505,1474;,
+		3;1622,1646,1620;,
+		3;1601,1622,1620;,
+		3;1597,1622,1601;,
+		3;1573,1597,1601;,
+		3;1568,1597,1573;,
+		3;1540,1568,1573;,
+		3;1536,1568,1540;,
+		3;1505,1536,1540;,
+		3;1501,1536,1505;,
+		3;1469,1501,1505;,
+		3;1465,1501,1469;,
+		3;1643,1661,1646;,
+		3;1622,1643,1646;,
+		3;1618,1643,1622;,
+		3;1597,1618,1622;,
+		3;1589,1618,1597;,
+		3;1568,1589,1597;,
+		3;1558,1589,1568;,
+		3;1536,1558,1568;,
+		3;1524,1558,1536;,
+		3;1501,1524,1536;,
+		3;1489,1524,1501;,
+		3;1465,1489,1501;,
+		3;1452,1489,1465;,
+		3;1656,1674,1661;,
+		3;1643,1656,1661;,
+		3;1635,1656,1643;,
+		3;1618,1635,1643;,
+		3;1609,1635,1618;,
+		3;1589,1609,1618;,
+		3;1584,1609,1589;,
+		3;1558,1584,1589;,
+		3;1553,1584,1558;,
+		3;1524,1553,1558;,
+		3;1520,1553,1524;,
+		3;1489,1520,1524;,
+		3;1481,1520,1489;,
+		3;1452,1481,1489;,
+		3;1434,1481,1452;,
+		3;1671,1687,1674;,
+		3;1656,1671,1674;,
+		3;1647,1671,1656;,
+		3;1635,1647,1656;,
+		3;1625,1647,1635;,
+		3;1609,1625,1635;,
+		3;1603,1625,1609;,
+		3;1584,1603,1609;,
+		3;1570,1603,1584;,
+		3;1553,1570,1584;,
+		3;1534,1570,1553;,
+		3;1520,1534,1553;,
+		3;1500,1534,1520;,
+		3;1481,1500,1520;,
+		3;1459,1500,1481;,
+		3;1434,1459,1481;,
+		3;1415,1459,1434;,
+		3;1113,1171,1133;,
+		3;1150,1208,1171;,
+		3;1113,1150,1171;,
+		3;1092,1150,1113;,
+		3;1189,1243,1208;,
+		3;1150,1189,1208;,
+		3;1129,1189,1150;,
+		3;1092,1129,1150;,
+		3;1065,1129,1092;,
+		3;1224,1275,1243;,
+		3;1189,1224,1243;,
+		3;1163,1224,1189;,
+		3;1129,1163,1189;,
+		3;1102,1163,1129;,
+		3;1065,1102,1129;,
+		3;1037,1102,1065;,
+		3;1254,1308,1275;,
+		3;1224,1254,1275;,
+		3;1200,1254,1224;,
+		3;1163,1200,1224;,
+		3;1136,1200,1163;,
+		3;1102,1136,1163;,
+		3;1073,1136,1102;,
+		3;1037,1073,1102;,
+		3;1010,1073,1037;,
+		3;1283,1339,1308;,
+		3;1254,1283,1308;,
+		3;1233,1283,1254;,
+		3;1200,1233,1254;,
+		3;1173,1233,1200;,
+		3;1136,1173,1200;,
+		3;1109,1173,1136;,
+		3;1073,1109,1136;,
+		3;1045,1109,1073;,
+		3;1010,1045,1073;,
+		3;981,1045,1010;,
+		3;1314,1364,1339;,
+		3;1283,1314,1339;,
+		3;1263,1314,1283;,
+		3;1233,1263,1283;,
+		3;1202,1263,1233;,
+		3;1173,1202,1233;,
+		3;1146,1202,1173;,
+		3;1109,1146,1173;,
+		3;1079,1146,1109;,
+		3;1045,1079,1109;,
+		3;1014,1079,1045;,
+		3;981,1014,1045;,
+		3;950,1014,981;,
+		3;1345,1391,1364;,
+		3;1314,1345,1364;,
+		3;1289,1345,1314;,
+		3;1263,1289,1314;,
+		3;1237,1289,1263;,
+		3;1202,1237,1263;,
+		3;1182,1237,1202;,
+		3;1146,1182,1202;,
+		3;1117,1182,1146;,
+		3;1079,1117,1146;,
+		3;1051,1117,1079;,
+		3;1014,1051,1079;,
+		3;986,1051,1014;,
+		3;950,986,1014;,
+		3;915,986,950;,
+		3;1368,1415,1391;,
+		3;1345,1368,1391;,
+		3;1318,1368,1345;,
+		3;1289,1318,1345;,
+		3;1267,1318,1289;,
+		3;1237,1267,1289;,
+		3;1206,1267,1237;,
+		3;1182,1206,1237;,
+		3;1148,1206,1182;,
+		3;1117,1148,1182;,
+		3;1081,1148,1117;,
+		3;1051,1081,1117;,
+		3;1020,1081,1051;,
+		3;986,1020,1051;,
+		3;955,1020,986;,
+		3;915,955,986;,
+		3;879,955,915;,
+		3;608,666,644;,
+		3;629,683,666;,
+		3;608,629,666;,
+		3;572,629,608;,
+		3;646,709,683;,
+		3;629,646,683;,
+		3;590,646,629;,
+		3;572,590,629;,
+		3;530,590,572;,
+		3;674,735,709;,
+		3;646,674,709;,
+		3;610,674,646;,
+		3;590,610,646;,
+		3;553,610,590;,
+		3;530,553,590;,
+		3;495,553,530;,
+		3;700,760,735;,
+		3;674,700,735;,
+		3;637,700,674;,
+		3;610,637,674;,
+		3;574,637,610;,
+		3;553,574,610;,
+		3;515,574,553;,
+		3;495,515,553;,
+		3;462,515,495;,
+		3;722,787,760;,
+		3;700,722,760;,
+		3;663,722,700;,
+		3;637,663,700;,
+		3;599,663,637;,
+		3;574,599,637;,
+		3;541,599,574;,
+		3;515,541,574;,
+		3;478,541,515;,
+		3;462,478,515;,
+		3;428,478,462;,
+		3;750,819,787;,
+		3;722,750,787;,
+		3;685,750,722;,
+		3;663,685,722;,
+		3;628,685,663;,
+		3;599,628,663;,
+		3;565,628,599;,
+		3;541,565,599;,
+		3;506,565,541;,
+		3;478,506,541;,
+		3;452,506,478;,
+		3;428,452,478;,
+		3;395,452,428;,
+		3;782,845,819;,
+		3;750,782,819;,
+		3;715,782,750;,
+		3;685,715,750;,
+		3;655,715,685;,
+		3;628,655,685;,
+		3;593,655,628;,
+		3;565,593,628;,
+		3;527,593,565;,
+		3;506,527,565;,
+		3;474,527,506;,
+		3;452,474,506;,
+		3;421,474,452;,
+		3;395,421,452;,
+		3;367,421,395;,
+		3;815,879,845;,
+		3;782,815,845;,
+		3;748,815,782;,
+		3;715,748,782;,
+		3;679,748,715;,
+		3;655,679,715;,
+		3;624,679,655;,
+		3;593,624,655;,
+		3;562,624,593;,
+		3;527,562,593;,
+		3;502,562,527;,
+		3;474,502,527;,
+		3;446,502,474;,
+		3;421,446,474;,
+		3;391,446,421;,
+		3;367,391,421;,
+		3;344,391,367;,
+		3;224,253,258;,
+		3;218,255,253;,
+		3;224,218,253;,
+		3;189,218,224;,
+		3;220,263,255;,
+		3;218,220,255;,
+		3;186,220,218;,
+		3;189,186,218;,
+		3;159,186,189;,
+		3;227,266,263;,
+		3;220,227,263;,
+		3;190,227,220;,
+		3;186,190,220;,
+		3;156,190,186;,
+		3;159,156,186;,
+		3;128,156,159;,
+		3;233,273,266;,
+		3;227,233,266;,
+		3;195,233,227;,
+		3;190,195,227;,
+		3;162,195,190;,
+		3;156,162,190;,
+		3;130,162,156;,
+		3;128,130,156;,
+		3;101,130,128;,
+		3;242,286,273;,
+		3;233,242,273;,
+		3;203,242,233;,
+		3;195,203,233;,
+		3;164,203,195;,
+		3;162,164,195;,
+		3;132,164,162;,
+		3;130,132,162;,
+		3;103,132,130;,
+		3;101,103,130;,
+		3;80,103,101;,
+		3;260,305,286;,
+		3;242,260,286;,
+		3;213,260,242;,
+		3;203,213,242;,
+		3;177,213,203;,
+		3;164,177,203;,
+		3;145,177,164;,
+		3;132,145,164;,
+		3;114,145,132;,
+		3;103,114,132;,
+		3;90,114,103;,
+		3;80,90,103;,
+		3;64,90,80;,
+		3;275,321,305;,
+		3;260,275,305;,
+		3;232,275,260;,
+		3;213,232,260;,
+		3;193,232,213;,
+		3;177,193,213;,
+		3;153,193,177;,
+		3;145,153,177;,
+		3;123,153,145;,
+		3;114,123,145;,
+		3;96,123,114;,
+		3;90,96,114;,
+		3;71,96,90;,
+		3;64,71,90;,
+		3;49,71,64;,
+		3;297,344,321;,
+		3;275,297,321;,
+		3;251,297,275;,
+		3;232,251,275;,
+		3;210,251,232;,
+		3;193,210,232;,
+		3;173,210,193;,
+		3;153,173,193;,
+		3;137,173,153;,
+		3;123,137,153;,
+		3;105,137,123;,
+		3;96,105,123;,
+		3;78,105,96;,
+		3;71,78,96;,
+		3;56,78,71;,
+		3;49,56,71;,
+		3;40,56,49;,
+		3;136,148,168;,
+		3;107,118,118;,
+		3;136,107,127;,
+		3;112,107,136;,
+		3;84,87,113;,
+		3;107,100,100;,
+		3;83,91,107;,
+		3;112,83,107;,
+		3;88,83,112;,
+		3;62,68,87;,
+		3;84,62,87;,
+		3;58,69,69;,
+		3;83,58,76;,
+		3;61,58,83;,
+		3;88,61,83;,
+		3;67,61,88;,
+		3;45,52,68;,
+		3;62,45,68;,
+		3;43,45,62;,
+		3;58,55,55;,
+		3;38,46,58;,
+		3;61,38,58;,
+		3;44,38,61;,
+		3;67,44,61;,
+		3;51,44,67;,
+		3;32,41,52;,
+		3;45,32,52;,
+		3;29,32,45;,
+		3;43,29,45;,
+		3;23,30,30;,
+		3;38,23,33;,
+		3;26,23,38;,
+		3;44,26,38;,
+		3;31,26,44;,
+		3;51,31,44;,
+		3;42,31,51;,
+		3;25,36,41;,
+		3;32,25,41;,
+		3;19,25,32;,
+		3;29,19,32;,
+		3;14,19,29;,
+		3;23,20,20;,
+		3;13,17,23;,
+		3;26,13,23;,
+		3;18,13,26;,
+		3;31,18,26;,
+		3;24,18,31;,
+		3;42,24,31;,
+		3;37,24,42;,
+		3;22,34,36;,
+		3;25,22,36;,
+		3;12,22,25;,
+		3;19,12,25;,
+		3;9,12,19;,
+		3;14,9,19;,
+		3;4,8,8;,
+		3;13,4,10;,
+		3;5,4,13;,
+		3;18,5,13;,
+		3;11,5,18;,
+		3;24,11,18;,
+		3;21,11,24;,
+		3;37,21,24;,
+		3;35,21,37;,
+		3;27,40,34;,
+		3;22,27,34;,
+		3;16,27,22;,
+		3;12,16,22;,
+		3;6,16,12;,
+		3;9,6,12;,
+		3;3,6,9;,
+		3;4,2,2;,
+		3;1,0,4;,
+		3;5,1,4;,
+		3;7,1,5;,
+		3;11,7,5;,
+		3;15,7,11;,
+		3;21,15,11;,
+		3;28,15,21;,
+		3;35,28,21;,
+		3;39,28,35;,
+		3;254,225,257;,
+		3;219,188,225;,
+		3;254,219,225;,
+		3;256,219,254;,
+		3;187,158,188;,
+		3;219,187,188;,
+		3;221,187,219;,
+		3;256,221,219;,
+		3;264,221,256;,
+		3;155,129,158;,
+		3;187,155,158;,
+		3;191,155,187;,
+		3;221,191,187;,
+		3;226,191,221;,
+		3;264,226,221;,
+		3;267,226,264;,
+		3;131,102,129;,
+		3;155,131,129;,
+		3;163,131,155;,
+		3;191,163,155;,
+		3;196,163,191;,
+		3;226,196,191;,
+		3;234,196,226;,
+		3;267,234,226;,
+		3;272,234,267;,
+		3;104,79,102;,
+		3;131,104,102;,
+		3;133,104,131;,
+		3;163,133,131;,
+		3;165,133,163;,
+		3;196,165,163;,
+		3;204,165,196;,
+		3;234,204,196;,
+		3;243,204,234;,
+		3;272,243,234;,
+		3;287,243,272;,
+		3;89,63,79;,
+		3;104,89,79;,
+		3;115,89,104;,
+		3;133,115,104;,
+		3;144,115,133;,
+		3;165,144,133;,
+		3;178,144,165;,
+		3;204,178,165;,
+		3;214,178,204;,
+		3;243,214,204;,
+		3;259,214,243;,
+		3;287,259,243;,
+		3;306,259,287;,
+		3;70,50,63;,
+		3;89,70,63;,
+		3;97,70,89;,
+		3;115,97,89;,
+		3;124,97,115;,
+		3;144,124,115;,
+		3;154,124,144;,
+		3;178,154,144;,
+		3;194,154,178;,
+		3;214,194,178;,
+		3;231,194,214;,
+		3;259,231,214;,
+		3;274,231,259;,
+		3;306,274,259;,
+		3;322,274,306;,
+		3;57,39,50;,
+		3;70,57,50;,
+		3;77,57,70;,
+		3;97,77,70;,
+		3;106,77,97;,
+		3;124,106,97;,
+		3;138,106,124;,
+		3;154,138,124;,
+		3;174,138,154;,
+		3;194,174,154;,
+		3;209,174,194;,
+		3;231,209,194;,
+		3;250,209,231;,
+		3;274,250,231;,
+		3;298,250,274;,
+		3;322,298,274;,
+		3;345,298,322;,
+		3;667,609,645;,
+		3;630,571,609;,
+		3;667,630,609;,
+		3;684,630,667;,
+		3;589,529,571;,
+		3;630,589,571;,
+		3;647,589,630;,
+		3;684,647,630;,
+		3;708,647,684;,
+		3;552,496,529;,
+		3;589,552,529;,
+		3;611,552,589;,
+		3;647,611,589;,
+		3;675,611,647;,
+		3;708,675,647;,
+		3;734,675,708;,
+		3;516,461,496;,
+		3;552,516,496;,
+		3;575,516,552;,
+		3;611,575,552;,
+		3;638,575,611;,
+		3;675,638,611;,
+		3;699,638,675;,
+		3;734,699,675;,
+		3;761,699,734;,
+		3;479,427,461;,
+		3;516,479,461;,
+		3;542,479,516;,
+		3;575,542,516;,
+		3;600,542,575;,
+		3;638,600,575;,
+		3;664,600,638;,
+		3;699,664,638;,
+		3;721,664,699;,
+		3;761,721,699;,
+		3;788,721,761;,
+		3;453,396,427;,
+		3;479,453,427;,
+		3;507,453,479;,
+		3;542,507,479;,
+		3;566,507,542;,
+		3;600,566,542;,
+		3;627,566,600;,
+		3;664,627,600;,
+		3;686,627,664;,
+		3;721,686,664;,
+		3;749,686,721;,
+		3;788,749,721;,
+		3;818,749,788;,
+		3;422,368,396;,
+		3;453,422,396;,
+		3;475,422,453;,
+		3;507,475,453;,
+		3;528,475,507;,
+		3;566,528,507;,
+		3;594,528,566;,
+		3;627,594,566;,
+		3;656,594,627;,
+		3;686,656,627;,
+		3;714,656,686;,
+		3;749,714,686;,
+		3;781,714,749;,
+		3;818,781,749;,
+		3;844,781,818;,
+		3;392,345,368;,
+		3;422,392,368;,
+		3;447,392,422;,
+		3;475,447,422;,
+		3;501,447,475;,
+		3;528,501,475;,
+		3;563,501,528;,
+		3;594,563,528;,
+		3;625,563,594;,
+		3;656,625,594;,
+		3;680,625,656;,
+		3;714,680,656;,
+		3;747,680,714;,
+		3;781,747,714;,
+		3;814,747,781;,
+		3;844,814,781;,
+		3;878,814,844;,
+		3;1172,1114,1132;,
+		3;1151,1091,1114;,
+		3;1172,1151,1114;,
+		3;1207,1151,1172;,
+		3;1128,1064,1091;,
+		3;1151,1128,1091;,
+		3;1190,1128,1151;,
+		3;1207,1190,1151;,
+		3;1242,1190,1207;,
+		3;1101,1036,1064;,
+		3;1128,1101,1064;,
+		3;1162,1101,1128;,
+		3;1190,1162,1128;,
+		3;1225,1162,1190;,
+		3;1242,1225,1190;,
+		3;1276,1225,1242;,
+		3;1074,1009,1036;,
+		3;1101,1074,1036;,
+		3;1137,1074,1101;,
+		3;1162,1137,1101;,
+		3;1199,1137,1162;,
+		3;1225,1199,1162;,
+		3;1253,1199,1225;,
+		3;1276,1253,1225;,
+		3;1309,1253,1276;,
+		3;1044,982,1009;,
+		3;1074,1044,1009;,
+		3;1110,1044,1074;,
+		3;1137,1110,1074;,
+		3;1174,1110,1137;,
+		3;1199,1174,1137;,
+		3;1232,1174,1199;,
+		3;1253,1232,1199;,
+		3;1284,1232,1253;,
+		3;1309,1284,1253;,
+		3;1340,1284,1309;,
+		3;1013,951,982;,
+		3;1044,1013,982;,
+		3;1080,1013,1044;,
+		3;1110,1080,1044;,
+		3;1147,1080,1110;,
+		3;1174,1147,1110;,
+		3;1201,1147,1174;,
+		3;1232,1201,1174;,
+		3;1264,1201,1232;,
+		3;1284,1264,1232;,
+		3;1315,1264,1284;,
+		3;1340,1315,1284;,
+		3;1363,1315,1340;,
+		3;985,916,951;,
+		3;1013,985,951;,
+		3;1050,985,1013;,
+		3;1080,1050,1013;,
+		3;1118,1050,1080;,
+		3;1147,1118,1080;,
+		3;1181,1118,1147;,
+		3;1201,1181,1147;,
+		3;1236,1181,1201;,
+		3;1264,1236,1201;,
+		3;1290,1236,1264;,
+		3;1315,1290,1264;,
+		3;1346,1290,1315;,
+		3;1363,1346,1315;,
+		3;1390,1346,1363;,
+		3;954,878,916;,
+		3;985,954,916;,
+		3;1019,954,985;,
+		3;1050,1019,985;,
+		3;1082,1019,1050;,
+		3;1118,1082,1050;,
+		3;1149,1082,1118;,
+		3;1181,1149,1118;,
+		3;1205,1149,1181;,
+		3;1236,1205,1181;,
+		3;1268,1205,1236;,
+		3;1290,1268,1236;,
+		3;1319,1268,1290;,
+		3;1346,1319,1290;,
+		3;1367,1319,1346;,
+		3;1390,1367,1346;,
+		3;1414,1367,1390;,
+		3;1493,1467,1457;,
+		3;1503,1472,1467;,
+		3;1493,1503,1467;,
+		3;1532,1503,1493;,
+		3;1509,1476,1472;,
+		3;1503,1509,1472;,
+		3;1538,1509,1503;,
+		3;1532,1538,1503;,
+		3;1566,1538,1532;,
+		3;1512,1475,1476;,
+		3;1509,1512,1476;,
+		3;1543,1512,1509;,
+		3;1538,1543,1509;,
+		3;1572,1543,1538;,
+		3;1566,1572,1538;,
+		3;1593,1572,1566;,
+		3;1506,1468,1475;,
+		3;1512,1506,1475;,
+		3;1541,1506,1512;,
+		3;1543,1541,1512;,
+		3;1574,1541,1543;,
+		3;1572,1574,1543;,
+		3;1600,1574,1572;,
+		3;1593,1600,1572;,
+		3;1619,1600,1593;,
+		3;1502,1464,1468;,
+		3;1506,1502,1468;,
+		3;1537,1502,1506;,
+		3;1541,1537,1506;,
+		3;1567,1537,1541;,
+		3;1574,1567,1541;,
+		3;1596,1567,1574;,
+		3;1600,1596,1574;,
+		3;1621,1596,1600;,
+		3;1619,1621,1600;,
+		3;1645,1621,1619;,
+		3;1488,1451,1464;,
+		3;1502,1488,1464;,
+		3;1525,1488,1502;,
+		3;1537,1525,1502;,
+		3;1557,1525,1537;,
+		3;1567,1557,1537;,
+		3;1588,1557,1567;,
+		3;1596,1588,1567;,
+		3;1617,1588,1596;,
+		3;1621,1617,1596;,
+		3;1644,1617,1621;,
+		3;1645,1644,1621;,
+		3;1660,1644,1645;,
+		3;1480,1433,1451;,
+		3;1488,1480,1451;,
+		3;1519,1480,1488;,
+		3;1525,1519,1488;,
+		3;1552,1519,1525;,
+		3;1557,1552,1525;,
+		3;1583,1552,1557;,
+		3;1588,1583,1557;,
+		3;1608,1583,1588;,
+		3;1617,1608,1588;,
+		3;1636,1608,1617;,
+		3;1644,1636,1617;,
+		3;1657,1636,1644;,
+		3;1660,1657,1644;,
+		3;1675,1657,1660;,
+		3;1458,1414,1433;,
+		3;1480,1458,1433;,
+		3;1499,1458,1480;,
+		3;1519,1499,1480;,
+		3;1535,1499,1519;,
+		3;1552,1535,1519;,
+		3;1569,1535,1552;,
+		3;1583,1569,1552;,
+		3;1602,1569,1583;,
+		3;1608,1602,1583;,
+		3;1626,1602,1608;,
+		3;1636,1626,1608;,
+		3;1648,1626,1636;,
+		3;1657,1648,1636;,
+		3;1670,1648,1657;,
+		3;1675,1670,1657;,
+		3;1688,1670,1675;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;,
+		3;882,882,882;;
+	}  // End of Normals
+
+	MeshTextureCoords {
+		1930; // 1930 texture coords
+		0.005556;0.500000;,
+		0.005556;0.500000;,
+		-0.005556;0.500000;,
+		0.994444;0.500000;,
+		-0.005556;0.500000;,
+		-0.005556;0.500000;,
+		0.994444;0.500000;,
+		0.000000;0.520693;,
+		-0.011257;0.520642;,
+		-0.011257;0.520642;,
+		0.988743;0.520642;,
+		0.011257;0.520642;,
+		0.016667;0.500000;,
+		0.016667;0.500000;,
+		0.983333;0.500000;,
+		0.983333;0.500000;,
+		0.005718;0.540975;,
+		-0.005718;0.540975;,
+		-0.005718;0.540975;,
+		-0.005718;0.540975;,
+		-0.005718;0.540975;,
+		0.994282;0.540975;,
+		0.977486;0.520487;,
+		0.022514;0.520487;,
+		0.017152;0.540766;,
+		0.982848;0.540766;,
+		0.027778;0.500000;,
+		0.027778;0.500000;,
+		0.972222;0.500000;,
+		0.972222;0.500000;,
+		0.000000;0.560967;,
+		0.011645;0.560808;,
+		-0.011645;0.560808;,
+		-0.011645;0.560808;,
+		0.988355;0.560808;,
+		0.028583;0.540349;,
+		0.971417;0.540349;,
+		0.033770;0.520230;,
+		0.966230;0.520230;,
+		0.023285;0.560331;,
+		0.976715;0.560331;,
+		0.038889;0.500000;,
+		0.038889;0.500000;,
+		0.961111;0.500000;,
+		0.961111;0.500000;,
+		0.005944;0.580581;,
+		-0.005944;0.580581;,
+		-0.005944;0.580581;,
+		-0.005944;0.580581;,
+		-0.005944;0.580581;,
+		0.994056;0.580581;,
+		0.017829;0.580151;,
+		0.982171;0.580151;,
+		0.040010;0.539726;,
+		0.959990;0.539726;,
+		0.034916;0.559540;,
+		0.965084;0.559540;,
+		0.954975;0.519873;,
+		0.045024;0.519873;,
+		0.029701;0.579293;,
+		0.970299;0.579293;,
+		0.950000;0.500000;,
+		0.950000;0.500000;,
+		0.050000;0.500000;,
+		0.050000;0.500000;,
+		0.000000;0.600053;,
+		0.012166;0.599780;,
+		-0.012166;0.599780;,
+		-0.012166;0.599780;,
+		0.987834;0.599780;,
+		0.954831;0.556546;,
+		0.045169;0.556546;,
+		0.949818;0.536580;,
+		0.050182;0.536580;,
+		0.024319;0.598961;,
+		0.975681;0.598961;,
+		0.040071;0.576529;,
+		0.959929;0.576529;,
+		0.944849;0.516652;,
+		0.055151;0.516652;,
+		0.034841;0.596507;,
+		0.965159;0.596507;,
+		0.006243;0.619186;,
+		-0.006243;0.619186;,
+		-0.006243;0.619186;,
+		-0.006243;0.619186;,
+		-0.006243;0.619186;,
+		0.993757;0.619186;,
+		0.061111;0.500000;,
+		0.061111;0.500000;,
+		0.938889;0.500000;,
+		0.938889;0.500000;,
+		0.944614;0.553323;,
+		0.055386;0.553323;,
+		0.949606;0.573454;,
+		0.050394;0.573454;,
+		0.018719;0.618520;,
+		0.981281;0.618520;,
+		0.939669;0.533286;,
+		0.060331;0.533286;,
+		0.954691;0.593659;,
+		0.045309;0.593659;,
+		0.029431;0.616457;,
+		0.970569;0.616457;,
+		0.933638;0.516949;,
+		0.066362;0.516949;,
+		0.040084;0.613916;,
+		0.959916;0.613916;,
+		0.000000;0.638334;,
+		0.939332;0.570082;,
+		0.060668;0.570082;,
+		0.065568;0.549885;,
+		0.934433;0.549885;,
+		0.012845;0.637938;,
+		-0.012845;0.637938;,
+		-0.012845;0.637938;,
+		0.987155;0.637938;,
+		0.944284;0.590431;,
+		0.055716;0.590431;,
+		0.976216;0.636351;,
+		0.023784;0.636351;,
+		0.072222;0.500000;,
+		0.072222;0.500000;,
+		0.927778;0.500000;,
+		0.927778;0.500000;,
+		0.928338;0.533800;,
+		0.071662;0.533800;,
+		0.050668;0.610910;,
+		0.949332;0.610910;,
+		0.965336;0.634199;,
+		0.034664;0.634199;,
+		0.929109;0.566430;,
+		0.070891;0.566430;,
+		0.077574;0.517163;,
+		0.922426;0.517163;,
+		0.933941;0.586839;,
+		0.066059;0.586839;,
+		0.006631;0.657181;,
+		-0.006630;0.657181;,
+		-0.006630;0.657181;,
+		-0.006630;0.657181;,
+		-0.006630;0.657181;,
+		0.993370;0.657181;,
+		0.045471;0.631495;,
+		0.954529;0.631495;,
+		0.017833;0.656157;,
+		0.982167;0.656157;,
+		0.938826;0.607455;,
+		0.061174;0.607455;,
+		0.077040;0.550534;,
+		0.922960;0.550534;,
+		0.028986;0.654480;,
+		0.971014;0.654480;,
+		0.083333;0.500000;,
+		0.083333;0.500000;,
+		0.916667;0.500000;,
+		0.916667;0.500000;,
+		0.056189;0.628257;,
+		0.943811;0.628257;,
+		0.917004;0.534145;,
+		0.082996;0.534145;,
+		0.959936;0.652162;,
+		0.040064;0.652162;,
+		0.923667;0.582901;,
+		0.076333;0.582901;,
+		0.928405;0.603571;,
+		0.071595;0.603571;,
+		0.000000;0.676208;,
+		0.917471;0.567129;,
+		0.082529;0.567129;,
+		-0.011503;0.675836;,
+		-0.011503;0.675836;,
+		0.988497;0.675836;,
+		0.011503;0.675836;,
+		0.911213;0.517291;,
+		0.088787;0.517291;,
+		0.948951;0.649220;,
+		0.051049;0.649220;,
+		0.977028;0.674724;,
+		0.022972;0.674724;,
+		0.933193;0.624502;,
+		0.066807;0.624502;,
+		0.911481;0.550925;,
+		0.088518;0.550925;,
+		0.965623;0.672879;,
+		0.034377;0.672879;,
+		0.938080;0.645672;,
+		0.061920;0.645672;,
+		0.094444;0.500000;,
+		0.094444;0.500000;,
+		0.905556;0.500000;,
+		0.905556;0.500000;,
+		0.918073;0.599276;,
+		0.081927;0.599276;,
+		0.954314;0.670317;,
+		0.045686;0.670317;,
+		0.905668;0.534318;,
+		0.094332;0.534318;,
+		0.922683;0.620253;,
+		0.077317;0.620253;,
+		0.088162;0.583563;,
+		0.911838;0.583563;,
+		0.007136;0.694969;,
+		0.992864;0.694969;,
+		0.992864;0.694969;,
+		-0.007136;0.694969;,
+		0.980795;0.694334;,
+		0.019205;0.694334;,
+		0.905824;0.567479;,
+		0.094176;0.567479;,
+		0.943126;0.667058;,
+		0.056874;0.667058;,
+		0.927337;0.641543;,
+		0.072663;0.641543;,
+		0.900000;0.517334;,
+		0.100000;0.517334;,
+		0.031217;0.692842;,
+		0.968783;0.692842;,
+		0.900000;0.551055;,
+		0.100000;0.551055;,
+		0.912291;0.615534;,
+		0.087709;0.615534;,
+		0.956870;0.690508;,
+		0.043130;0.690508;,
+		0.932083;0.663125;,
+		0.067917;0.663125;,
+		0.906027;0.599812;,
+		0.093973;0.599812;,
+		0.105556;0.500000;,
+		0.105556;0.500000;,
+		0.894444;0.500000;,
+		0.894444;0.500000;,
+		0.916734;0.636859;,
+		0.083266;0.636859;,
+		0.894332;0.534318;,
+		0.105668;0.534318;,
+		0.054904;0.687353;,
+		0.945096;0.687353;,
+		0.000000;0.714083;,
+		0.900000;0.583784;,
+		0.100000;0.583784;,
+		0.985117;0.713404;,
+		0.985117;0.713404;,
+		0.985117;0.713404;,
+		0.985117;0.713404;,
+		-0.014883;0.713404;,
+		0.014883;0.713404;,
+		0.972424;0.712374;,
+		0.027576;0.712374;,
+		0.921205;0.658547;,
+		0.078795;0.658547;,
+		0.894175;0.567479;,
+		0.105825;0.567479;,
+		0.933497;0.683405;,
+		0.066503;0.683405;,
+		0.888787;0.517291;,
+		0.111213;0.517291;,
+		0.959826;0.710367;,
+		0.040174;0.710367;,
+		0.906281;0.631646;,
+		0.093719;0.631646;,
+		0.900000;0.615849;,
+		0.100000;0.615849;,
+		0.888518;0.550925;,
+		0.111482;0.550925;,
+		0.947380;0.707405;,
+		0.052620;0.707405;,
+		0.910507;0.653355;,
+		0.089493;0.653355;,
+		0.893973;0.599812;,
+		0.106027;0.599812;,
+		0.922100;0.678698;,
+		0.077900;0.678698;,
+		0.116667;0.500000;,
+		0.116667;0.500000;,
+		0.883333;0.500000;,
+		0.883333;0.500000;,
+		0.007812;0.732956;,
+		0.992188;0.732956;,
+		0.992188;0.732956;,
+		-0.007812;0.732956;,
+		0.023369;0.731436;,
+		0.976631;0.731436;,
+		0.882996;0.534145;,
+		0.117004;0.534145;,
+		0.888162;0.583563;,
+		0.111838;0.583563;,
+		0.935136;0.703519;,
+		0.064864;0.703519;,
+		0.963257;0.729867;,
+		0.036743;0.729867;,
+		0.910929;0.673270;,
+		0.089071;0.673270;,
+		0.900000;0.647584;,
+		0.100000;0.647584;,
+		0.882529;0.567129;,
+		0.117471;0.567129;,
+		0.893718;0.631646;,
+		0.106282;0.631646;,
+		0.049961;0.727195;,
+		0.950039;0.727195;,
+		0.923138;0.698748;,
+		0.076862;0.698748;,
+		0.877574;0.517163;,
+		0.122426;0.517163;,
+		0.887709;0.615534;,
+		0.112291;0.615534;,
+		0.877040;0.550534;,
+		0.122960;0.550534;,
+		0.062951;0.723454;,
+		0.937049;0.723454;,
+		0.000000;0.752363;,
+		0.881927;0.599277;,
+		0.118073;0.599276;,
+		0.900000;0.667162;,
+		0.100000;0.667162;,
+		0.016459;0.751511;,
+		0.983541;0.751511;,
+		0.983541;0.751511;,
+		0.983541;0.751511;,
+		0.983541;0.751511;,
+		-0.016459;0.751511;,
+		0.911418;0.693138;,
+		0.088582;0.693138;,
+		0.872222;0.500000;,
+		0.872222;0.500000;,
+		0.127778;0.500000;,
+		0.127778;0.500000;,
+		0.032742;0.748971;,
+		0.967258;0.748971;,
+		0.876333;0.582901;,
+		0.123667;0.582901;,
+		0.871662;0.533800;,
+		0.128338;0.533800;,
+		0.924349;0.718690;,
+		0.075651;0.718690;,
+		0.953151;0.746700;,
+		0.046849;0.746700;,
+		0.889493;0.653355;,
+		0.110507;0.653355;,
+		0.883266;0.636859;,
+		0.116734;0.636859;,
+		0.900000;0.686741;,
+		0.100000;0.686741;,
+		0.870891;0.566430;,
+		0.129109;0.566430;,
+		0.939293;0.743198;,
+		0.060707;0.743198;,
+		0.911988;0.712958;,
+		0.088012;0.712958;,
+		0.866362;0.516949;,
+		0.133638;0.516949;,
+		0.877316;0.620253;,
+		0.122684;0.620253;,
+		0.008753;0.771543;,
+		0.991247;0.771543;,
+		0.991247;0.771543;,
+		-0.008753;0.771543;,
+		0.889071;0.673270;,
+		0.110929;0.673270;,
+		0.865568;0.549885;,
+		0.134433;0.549885;,
+		0.871595;0.603571;,
+		0.128405;0.603571;,
+		0.074229;0.738519;,
+		0.925771;0.738519;,
+		0.973860;0.769643;,
+		0.026140;0.769643;,
+		0.956819;0.765892;,
+		0.043181;0.765892;,
+		0.900000;0.706320;,
+		0.100000;0.706320;,
+		0.861111;0.500000;,
+		0.861111;0.500000;,
+		0.138889;0.500000;,
+		0.138889;0.500000;,
+		0.866059;0.586839;,
+		0.133941;0.586839;,
+		0.878795;0.658547;,
+		0.121205;0.658547;,
+		0.860331;0.533286;,
+		0.139669;0.533286;,
+		0.912657;0.732728;,
+		0.087343;0.732728;,
+		0.941946;0.762736;,
+		0.058054;0.762736;,
+		0.872663;0.641543;,
+		0.127337;0.641543;,
+		0.111418;0.693138;,
+		0.888582;0.693138;,
+		0.860668;0.570082;,
+		0.139332;0.570082;,
+		0.866807;0.624502;,
+		0.133193;0.624502;,
+		0.927455;0.758228;,
+		0.072545;0.758228;,
+		0.900000;0.725898;,
+		0.100000;0.725898;,
+		0.855151;0.516652;,
+		0.144849;0.516652;,
+		0.877900;0.678698;,
+		0.122100;0.678698;,
+		0.000000;0.791449;,
+		0.018709;0.790383;,
+		0.981291;0.790383;,
+		0.981291;0.790383;,
+		0.981291;0.790383;,
+		0.981291;0.790383;,
+		-0.018709;0.790383;,
+		0.861174;0.607455;,
+		0.138826;0.607455;,
+		0.855386;0.553323;,
+		0.144614;0.553323;,
+		0.962900;0.787218;,
+		0.037100;0.787218;,
+		0.913448;0.752445;,
+		0.086552;0.752445;,
+		0.888012;0.712958;,
+		0.111988;0.712958;,
+		0.054892;0.782047;,
+		0.945108;0.782047;,
+		0.855716;0.590431;,
+		0.144284;0.590431;,
+		0.867917;0.663125;,
+		0.132083;0.663125;,
+		0.850000;0.500000;,
+		0.850000;0.500000;,
+		0.150000;0.500000;,
+		0.150000;0.500000;,
+		0.850182;0.536580;,
+		0.149818;0.536580;,
+		0.070535;0.777808;,
+		0.929465;0.777808;,
+		0.876862;0.698748;,
+		0.123138;0.698748;,
+		0.900000;0.745477;,
+		0.100000;0.745477;,
+		0.861920;0.645672;,
+		0.138080;0.645672;,
+		0.850394;0.573454;,
+		0.149606;0.573454;,
+		0.856189;0.628257;,
+		0.143811;0.628257;,
+		0.887343;0.732728;,
+		0.112657;0.732728;,
+		0.085606;0.772108;,
+		0.914394;0.772108;,
+		0.845024;0.519873;,
+		0.154976;0.519873;,
+		0.866503;0.683405;,
+		0.133497;0.683405;,
+		0.010145;0.811115;,
+		0.989855;0.811115;,
+		0.989855;0.811115;,
+		-0.010145;0.811115;,
+		0.850668;0.610910;,
+		0.149332;0.610910;,
+		0.969788;0.808733;,
+		0.030212;0.808733;,
+		0.845169;0.556546;,
+		0.154831;0.556546;,
+		0.950358;0.804057;,
+		0.049642;0.804057;,
+		0.875651;0.718690;,
+		0.124349;0.718690;,
+		0.900000;0.765056;,
+		0.100000;0.765056;,
+		0.931893;0.797248;,
+		0.068107;0.797248;,
+		0.845309;0.593659;,
+		0.154691;0.593659;,
+		0.856874;0.667058;,
+		0.143126;0.667058;,
+		0.840010;0.539726;,
+		0.159990;0.539726;,
+		0.886551;0.752445;,
+		0.113448;0.752445;,
+		0.864864;0.703519;,
+		0.135137;0.703519;,
+		0.838889;0.500000;,
+		0.838889;0.500000;,
+		0.161111;0.500000;,
+		0.161111;0.500000;,
+		0.851049;0.649220;,
+		0.148952;0.649220;,
+		0.915535;0.791714;,
+		0.084465;0.791714;,
+		0.840071;0.576529;,
+		0.159929;0.576529;,
+		0.845471;0.631495;,
+		0.154529;0.631495;,
+		0.874229;0.738519;,
+		0.125771;0.738519;,
+		0.854904;0.687353;,
+		0.145097;0.687353;,
+		0.900000;0.784634;,
+		0.100000;0.784634;,
+		0.000000;0.831723;,
+		0.022165;0.830371;,
+		0.977835;0.830371;,
+		0.977835;0.830371;,
+		0.977835;0.830371;,
+		0.977835;0.830371;,
+		-0.022165;0.830371;,
+		0.840084;0.613916;,
+		0.159916;0.613916;,
+		0.833770;0.520230;,
+		0.166230;0.520230;,
+		0.834916;0.559540;,
+		0.165084;0.559540;,
+		0.043710;0.826379;,
+		0.956290;0.826379;,
+		0.862951;0.723454;,
+		0.137049;0.723454;,
+		0.885606;0.772108;,
+		0.114394;0.772108;,
+		0.935877;0.819923;,
+		0.064123;0.819923;,
+		0.845686;0.670317;,
+		0.154314;0.670317;,
+		0.834841;0.596507;,
+		0.165159;0.596507;,
+		0.916932;0.811260;,
+		0.083068;0.811260;,
+		0.872545;0.758228;,
+		0.127455;0.758228;,
+		0.852620;0.707405;,
+		0.147380;0.707405;,
+		0.840064;0.652162;,
+		0.159936;0.652162;,
+		0.828583;0.540349;,
+		0.171417;0.540349;,
+		0.827778;0.500000;,
+		0.827778;0.500000;,
+		0.172222;0.500000;,
+		0.172222;0.500000;,
+		0.900000;0.804213;,
+		0.100000;0.804213;,
+		0.829701;0.579293;,
+		0.170299;0.579293;,
+		0.834664;0.634199;,
+		0.165336;0.634199;,
+		0.860707;0.743198;,
+		0.139293;0.743198;,
+		0.843130;0.690508;,
+		0.156870;0.690508;,
+		0.884465;0.791714;,
+		0.115535;0.791714;,
+		0.829431;0.616457;,
+		0.170569;0.616457;,
+		0.012403;0.852029;,
+		-0.012402;0.852029;,
+		-0.012402;0.852029;,
+		-0.012402;0.852029;,
+		-0.012402;0.852029;,
+		0.987598;0.852029;,
+		0.963262;0.848966;,
+		0.036738;0.848966;,
+		0.849961;0.727195;,
+		0.150039;0.727195;,
+		0.870535;0.777808;,
+		0.129465;0.777808;,
+		0.059773;0.843021;,
+		0.940227;0.843021;,
+		0.822514;0.520487;,
+		0.177486;0.520487;,
+		0.823285;0.560331;,
+		0.176715;0.560331;,
+		0.080945;0.834504;,
+		0.919055;0.834504;,
+		0.834377;0.672879;,
+		0.165623;0.672879;,
+		0.824319;0.598961;,
+		0.175681;0.598961;,
+		0.858054;0.762736;,
+		0.141946;0.762736;,
+		0.900000;0.823792;,
+		0.100000;0.823792;,
+		0.840174;0.710367;,
+		0.159826;0.710367;,
+		0.828986;0.654480;,
+		0.171015;0.654480;,
+		0.883068;0.811260;,
+		0.116932;0.811260;,
+		0.846849;0.746700;,
+		0.153151;0.746700;,
+		0.823784;0.636351;,
+		0.176216;0.636351;,
+		0.816667;0.500000;,
+		0.816667;0.500000;,
+		0.183333;0.500000;,
+		0.183333;0.500000;,
+		0.817152;0.540766;,
+		0.182848;0.540766;,
+		0.868107;0.797248;,
+		0.131893;0.797248;,
+		0.831217;0.692842;,
+		0.168783;0.692842;,
+		0.817829;0.580151;,
+		0.182171;0.580151;,
+		0.000000;0.869750;,
+		-0.027898;0.867947;,
+		-0.027898;0.867947;,
+		0.972102;0.867947;,
+		0.027898;0.867947;,
+		0.054430;0.862678;,
+		0.945570;0.862678;,
+		0.818719;0.618520;,
+		0.181281;0.618520;,
+		0.921386;0.854321;,
+		0.078614;0.854321;,
+		0.836743;0.729867;,
+		0.163257;0.729867;,
+		0.854892;0.782047;,
+		0.145108;0.782047;,
+		0.900000;0.843370;,
+		0.100000;0.843370;,
+		0.822972;0.674724;,
+		0.177028;0.674724;,
+		0.811257;0.520642;,
+		0.188743;0.520642;,
+		0.811645;0.560808;,
+		0.188355;0.560808;,
+		0.843181;0.765892;,
+		0.156819;0.765892;,
+		0.827576;0.712374;,
+		0.172424;0.712374;,
+		0.817833;0.656157;,
+		0.182167;0.656157;,
+		0.880945;0.834504;,
+		0.119055;0.834504;,
+		0.812166;0.599780;,
+		0.187834;0.599780;,
+		0.832742;0.748971;,
+		0.167258;0.748971;,
+		0.864123;0.819923;,
+		0.135877;0.819923;,
+		0.812845;0.637938;,
+		0.187155;0.637938;,
+		0.016131;0.886220;,
+		-0.016131;0.886220;,
+		-0.016131;0.886220;,
+		-0.016131;0.886220;,
+		-0.016131;0.886220;,
+		0.983869;0.886220;,
+		0.047280;0.882022;,
+		0.952720;0.882022;,
+		0.819205;0.694334;,
+		0.180795;0.694334;,
+		0.924478;0.874045;,
+		0.075522;0.874045;,
+		0.805556;0.500000;,
+		0.805556;0.500000;,
+		0.194444;0.500000;,
+		0.194444;0.500000;,
+		0.805718;0.540975;,
+		0.194282;0.540975;,
+		0.849642;0.804057;,
+		0.150358;0.804057;,
+		0.900000;0.862949;,
+		0.100000;0.862949;,
+		0.805944;0.580581;,
+		0.194056;0.580581;,
+		0.823369;0.731436;,
+		0.176631;0.731436;,
+		0.837100;0.787218;,
+		0.162900;0.787218;,
+		0.806243;0.619186;,
+		0.193757;0.619186;,
+		0.811503;0.675836;,
+		0.188497;0.675836;,
+		0.878614;0.854321;,
+		0.121386;0.854321;,
+		0.814883;0.713404;,
+		0.185117;0.713404;,
+		0.800000;0.520693;,
+		0.200000;0.520693;,
+		0.806630;0.657181;,
+		0.193370;0.657181;,
+		0.826140;0.769643;,
+		0.173860;0.769643;,
+		0.800000;0.560967;,
+		0.200000;0.560967;,
+		0.859773;0.843021;,
+		0.140227;0.843021;,
+		0.000000;0.903472;,
+		0.037321;0.900926;,
+		-0.037321;0.900926;,
+		-0.037321;0.900926;,
+		0.962679;0.900926;,
+		0.071254;0.893652;,
+		0.928746;0.893652;,
+		0.800000;0.600053;,
+		0.200000;0.600053;,
+		0.900000;0.882528;,
+		0.100000;0.882528;,
+		0.843710;0.826379;,
+		0.156290;0.826379;,
+		0.807136;0.694969;,
+		0.192864;0.694969;,
+		0.816459;0.751511;,
+		0.183541;0.751511;,
+		0.800000;0.638334;,
+		0.200000;0.638334;,
+		0.794444;0.500000;,
+		0.794444;0.500000;,
+		0.205556;0.500000;,
+		0.205556;0.500000;,
+		0.875522;0.874045;,
+		0.124478;0.874045;,
+		0.830212;0.808733;,
+		0.169788;0.808733;,
+		0.794282;0.540975;,
+		0.205718;0.540975;,
+		0.794056;0.580581;,
+		0.205944;0.580581;,
+		0.807812;0.732956;,
+		0.192188;0.732956;,
+		0.800000;0.676208;,
+		0.200000;0.676208;,
+		0.818709;0.790383;,
+		0.181291;0.790383;,
+		0.854430;0.862678;,
+		0.145570;0.862678;,
+		0.793757;0.619186;,
+		0.206243;0.619186;,
+		0.022733;0.919151;,
+		-0.022733;0.919151;,
+		-0.022733;0.919151;,
+		-0.022733;0.919151;,
+		-0.022733;0.919151;,
+		0.977267;0.919151;,
+		0.065026;0.913097;,
+		0.934974;0.913097;,
+		0.100000;0.902107;,
+		0.900000;0.902107;,
+		0.800000;0.714083;,
+		0.200000;0.714083;,
+		0.788743;0.520642;,
+		0.211257;0.520642;,
+		0.808753;0.771543;,
+		0.191247;0.771543;,
+		0.793370;0.657181;,
+		0.206631;0.657181;,
+		0.836738;0.848966;,
+		0.163262;0.848966;,
+		0.788355;0.560808;,
+		0.211645;0.560808;,
+		0.871254;0.893652;,
+		0.128746;0.893652;,
+		0.787834;0.599780;,
+		0.212166;0.599780;,
+		0.822165;0.830371;,
+		0.177835;0.830371;,
+		0.792864;0.694969;,
+		0.207136;0.694969;,
+		0.800000;0.752363;,
+		0.200000;0.752363;,
+		0.787155;0.637938;,
+		0.212845;0.637938;,
+		0.783333;0.500000;,
+		0.783333;0.500000;,
+		0.216667;0.500000;,
+		0.216667;0.500000;,
+		0.847280;0.882022;,
+		0.152720;0.882022;,
+		0.810145;0.811115;,
+		0.189855;0.811115;,
+		0.788497;0.675836;,
+		0.211503;0.675836;,
+		0.782848;0.540766;,
+		0.217152;0.540766;,
+		0.000000;0.936200;,
+		-0.055193;0.932279;,
+		-0.055193;0.932279;,
+		0.944807;0.932279;,
+		0.055193;0.932279;,
+		0.900000;0.921685;,
+		0.100000;0.921685;,
+		0.792188;0.732956;,
+		0.207812;0.732956;,
+		0.782171;0.580151;,
+		0.217829;0.580151;,
+		0.827898;0.867947;,
+		0.172102;0.867947;,
+		0.800000;0.791449;,
+		0.200000;0.791449;,
+		0.781281;0.618520;,
+		0.218719;0.618520;,
+		0.134974;0.913097;,
+		0.865026;0.913097;,
+		0.782167;0.656157;,
+		0.217833;0.656157;,
+		0.785117;0.713404;,
+		0.214883;0.713404;,
+		0.777486;0.520487;,
+		0.222514;0.520487;,
+		0.812402;0.852029;,
+		0.187598;0.852029;,
+		0.791247;0.771543;,
+		0.208753;0.771543;,
+		0.776715;0.560331;,
+		0.223285;0.560331;,
+		0.837321;0.900926;,
+		0.162679;0.900926;,
+		0.780795;0.694334;,
+		0.219205;0.694334;,
+		0.800000;0.831723;,
+		0.200000;0.831723;,
+		0.775681;0.598961;,
+		0.224319;0.598961;,
+		-0.037690;0.950947;,
+		-0.037690;0.950947;,
+		-0.037690;0.950947;,
+		-0.037690;0.950947;,
+		0.962310;0.950947;,
+		0.037690;0.950947;,
+		0.776216;0.636351;,
+		0.223784;0.636351;,
+		0.900000;0.941264;,
+		0.100000;0.941264;,
+		0.783541;0.751511;,
+		0.216459;0.751511;,
+		0.777028;0.674724;,
+		0.222972;0.674724;,
+		0.816131;0.886220;,
+		0.183869;0.886220;,
+		0.772222;0.500000;,
+		0.772222;0.500000;,
+		0.227778;0.500000;,
+		0.227778;0.500000;,
+		0.789855;0.811115;,
+		0.210145;0.811115;,
+		0.771417;0.540349;,
+		0.228583;0.540349;,
+		0.855193;0.932279;,
+		0.144807;0.932279;,
+		0.776631;0.731436;,
+		0.223369;0.731436;,
+		0.770299;0.579293;,
+		0.229701;0.579293;,
+		0.800000;0.869750;,
+		0.200000;0.869750;,
+		0.770569;0.616457;,
+		0.229431;0.616457;,
+		0.781291;0.790383;,
+		0.218709;0.790383;,
+		0.771015;0.654480;,
+		0.228986;0.654480;,
+		0.822733;0.919151;,
+		0.177267;0.919151;,
+		0.772424;0.712374;,
+		0.227576;0.712374;,
+		0.787597;0.852029;,
+		0.212403;0.852029;,
+		0.766230;0.520230;,
+		0.233770;0.520230;,
+		0.000000;0.968266;,
+		-0.100000;0.960842;,
+		-0.100000;0.960842;,
+		0.900000;0.960842;,
+		0.100000;0.960842;,
+		0.773860;0.769643;,
+		0.226140;0.769643;,
+		0.768783;0.692842;,
+		0.231217;0.692842;,
+		0.765084;0.559540;,
+		0.234916;0.559540;,
+		0.800000;0.903472;,
+		0.200000;0.903472;,
+		0.765159;0.596507;,
+		0.234841;0.596507;,
+		0.777835;0.830371;,
+		0.222165;0.830371;,
+		0.765336;0.634199;,
+		0.234664;0.634199;,
+		0.765623;0.672879;,
+		0.234377;0.672879;,
+		0.837690;0.950947;,
+		0.162310;0.950947;,
+		0.767258;0.748971;,
+		0.232742;0.748971;,
+		0.783869;0.886220;,
+		0.216131;0.886220;,
+		0.769788;0.808733;,
+		0.230212;0.808733;,
+		0.761111;0.500000;,
+		0.761111;0.500000;,
+		0.238889;0.500000;,
+		0.238889;0.500000;,
+		0.763257;0.729867;,
+		0.236743;0.729867;,
+		0.759990;0.539726;,
+		0.240010;0.539726;,
+		0.800000;0.936200;,
+		0.200000;0.936200;,
+		0.759929;0.576529;,
+		0.240071;0.576529;,
+		0.759916;0.613916;,
+		0.240084;0.613916;,
+		0.772102;0.867947;,
+		0.227898;0.867947;,
+		0.759936;0.652162;,
+		0.240064;0.652162;,
+		0.762900;0.787218;,
+		0.237100;0.787218;,
+		-0.100000;0.980421;,
+		-0.100000;0.980421;,
+		-0.100000;0.980421;,
+		0.900000;0.980421;,
+		0.100000;0.980421;,
+		0.759826;0.710367;,
+		0.240174;0.710367;,
+		0.777267;0.919151;,
+		0.222733;0.919151;,
+		0.763262;0.848966;,
+		0.236738;0.848966;,
+		0.756870;0.690508;,
+		0.243130;0.690508;,
+		0.754975;0.519873;,
+		0.245025;0.519873;,
+		0.800000;0.968266;,
+		0.200000;0.968266;,
+		0.754831;0.556546;,
+		0.245169;0.556546;,
+		0.756819;0.765892;,
+		0.243181;0.765892;,
+		0.754691;0.593659;,
+		0.245309;0.593659;,
+		0.754529;0.631495;,
+		0.245471;0.631495;,
+		0.762679;0.900926;,
+		0.237321;0.900926;,
+		0.754314;0.670317;,
+		0.245686;0.670317;,
+		0.756290;0.826379;,
+		0.243710;0.826379;,
+		0.753151;0.746700;,
+		0.246849;0.746700;,
+		0.762310;0.950947;,
+		0.237690;0.950947;,
+		0.752720;0.882022;,
+		0.247280;0.882022;,
+		0.750358;0.804057;,
+		0.249642;0.804057;,
+		0.750039;0.727195;,
+		0.249961;0.727195;,
+		0.750000;0.500000;,
+		0.750000;0.500000;,
+		0.400000;1.000000;,
+		0.200000;1.000000;,
+		0.000000;1.000000;,
+		0.800000;1.000000;,
+		0.600000;1.000000;,
+		0.444444;0.500000;,
+		0.433333;0.500000;,
+		0.422222;0.500000;,
+		0.411111;0.500000;,
+		0.400000;0.500000;,
+		0.388889;0.500000;,
+		0.377778;0.500000;,
+		0.366667;0.500000;,
+		0.355556;0.500000;,
+		0.344445;0.500000;,
+		0.333333;0.500000;,
+		0.322222;0.500000;,
+		0.311111;0.500000;,
+		0.300000;0.500000;,
+		0.288889;0.500000;,
+		0.277778;0.500000;,
+		0.266667;0.500000;,
+		0.255556;0.500000;,
+		0.244444;0.500000;,
+		0.233333;0.500000;,
+		0.222222;0.500000;,
+		0.211111;0.500000;,
+		0.200000;0.500000;,
+		0.188889;0.500000;,
+		0.177778;0.500000;,
+		0.166667;0.500000;,
+		0.155556;0.500000;,
+		0.144444;0.500000;,
+		0.133333;0.500000;,
+		0.122222;0.500000;,
+		0.111111;0.500000;,
+		0.100000;0.500000;,
+		0.088889;0.500000;,
+		0.077778;0.500000;,
+		0.066667;0.500000;,
+		0.055556;0.500000;,
+		0.044444;0.500000;,
+		0.033333;0.500000;,
+		0.022222;0.500000;,
+		0.011111;0.500000;,
+		-0.000000;0.500000;,
+		0.988889;0.500000;,
+		0.977778;0.500000;,
+		0.966667;0.500000;,
+		0.955556;0.500000;,
+		0.944444;0.500000;,
+		0.933333;0.500000;,
+		0.922222;0.500000;,
+		0.911111;0.500000;,
+		0.900000;0.500000;,
+		0.888889;0.500000;,
+		0.877778;0.500000;,
+		0.866667;0.500000;,
+		0.855556;0.500000;,
+		0.844444;0.500000;,
+		0.833333;0.500000;,
+		0.822222;0.500000;,
+		0.811111;0.500000;,
+		0.800000;0.500000;,
+		0.788889;0.500000;,
+		0.777778;0.500000;,
+		0.766667;0.500000;,
+		0.755556;0.500000;,
+		0.744444;0.500000;,
+		0.733333;0.500000;,
+		0.722222;0.500000;,
+		0.711111;0.500000;,
+		0.700000;0.500000;,
+		0.688889;0.500000;,
+		0.677778;0.500000;,
+		0.666667;0.500000;,
+		0.655556;0.500000;,
+		0.644444;0.500000;,
+		0.633333;0.500000;,
+		0.622222;0.500000;,
+		0.611111;0.500000;,
+		0.600000;0.500000;,
+		0.588889;0.500000;,
+		0.577778;0.500000;,
+		0.566667;0.500000;,
+		0.555556;0.500000;,
+		0.544444;0.500000;,
+		0.533333;0.500000;,
+		0.522222;0.500000;,
+		0.511111;0.500000;,
+		0.500000;0.500000;,
+		0.488889;0.500000;,
+		0.477778;0.500000;,
+		0.466667;0.500000;,
+		0.455556;0.500000;,
+		0.250000;0.500000;,
+		0.250000;0.500000;,
+		0.749818;0.536580;,
+		0.250182;0.536580;,
+		0.749606;0.573454;,
+		0.250394;0.573454;,
+		0.749332;0.610910;,
+		0.250668;0.610910;,
+		0.748951;0.649220;,
+		0.251049;0.649220;,
+		0.744807;0.932279;,
+		0.255193;0.932279;,
+		0.745570;0.862678;,
+		0.254430;0.862678;,
+		0.747380;0.707405;,
+		0.252620;0.707405;,
+		0.700000;0.980421;,
+		0.300000;0.980421;,
+		0.745108;0.782047;,
+		0.254892;0.782047;,
+		0.734974;0.913097;,
+		0.265026;0.913097;,
+		0.745097;0.687353;,
+		0.254904;0.687353;,
+		0.740227;0.843021;,
+		0.259773;0.843021;,
+		0.744849;0.516652;,
+		0.255151;0.516652;,
+		0.744614;0.553323;,
+		0.255386;0.553323;,
+		0.741946;0.762736;,
+		0.258054;0.762736;,
+		0.744284;0.590431;,
+		0.255716;0.590431;,
+		0.743811;0.628257;,
+		0.256189;0.628257;,
+		0.743126;0.667058;,
+		0.256874;0.667058;,
+		0.700000;0.960842;,
+		0.300000;0.960842;,
+		0.728746;0.893652;,
+		0.271254;0.893652;,
+		0.735877;0.819923;,
+		0.264123;0.819923;,
+		0.739293;0.743198;,
+		0.260707;0.743198;,
+		0.700000;0.941264;,
+		0.300000;0.941264;,
+		0.500000;0.980421;,
+		0.724478;0.874045;,
+		0.275522;0.874045;,
+		0.737049;0.723454;,
+		0.262951;0.723454;,
+		0.739669;0.533286;,
+		0.260331;0.533286;,
+		0.739332;0.570082;,
+		0.260668;0.570082;,
+		0.738826;0.607455;,
+		0.261174;0.607455;,
+		0.738080;0.645672;,
+		0.261920;0.645672;,
+		0.731893;0.797248;,
+		0.268107;0.797248;,
+		0.738889;0.500000;,
+		0.738889;0.500000;,
+		0.261111;0.500000;,
+		0.261111;0.500000;,
+		0.735137;0.703519;,
+		0.264864;0.703519;,
+		0.700000;0.921685;,
+		0.300000;0.921685;,
+		0.721386;0.854321;,
+		0.278614;0.854321;,
+		0.600000;0.968266;,
+		0.400000;0.968266;,
+		0.729465;0.777808;,
+		0.270535;0.777808;,
+		0.733497;0.683405;,
+		0.266503;0.683405;,
+		0.700000;0.902107;,
+		0.300000;0.902107;,
+		0.719055;0.834504;,
+		0.280945;0.834504;,
+		0.734433;0.549885;,
+		0.265568;0.549885;,
+		0.733941;0.586839;,
+		0.266059;0.586839;,
+		0.727455;0.758228;,
+		0.272545;0.758228;,
+		0.733193;0.624502;,
+		0.266807;0.624502;,
+		0.732083;0.663125;,
+		0.267917;0.663125;,
+		0.637690;0.950947;,
+		0.362310;0.950947;,
+		0.733638;0.516949;,
+		0.266362;0.516949;,
+		0.725771;0.738519;,
+		0.274229;0.738519;,
+		0.700000;0.882528;,
+		0.300000;0.882528;,
+		0.716932;0.811260;,
+		0.283068;0.811260;,
+		0.655193;0.932279;,
+		0.344807;0.932279;,
+		0.500000;0.960842;,
+		0.724349;0.718690;,
+		0.275651;0.718690;,
+		0.729109;0.566430;,
+		0.270891;0.566430;,
+		0.727337;0.641543;,
+		0.272663;0.641543;,
+		0.728405;0.603571;,
+		0.271595;0.603571;,
+		0.700000;0.862949;,
+		0.300000;0.862949;,
+		0.715535;0.791714;,
+		0.284465;0.791714;,
+		0.728338;0.533800;,
+		0.271662;0.533800;,
+		0.723138;0.698748;,
+		0.276862;0.698748;,
+		0.665026;0.913097;,
+		0.334974;0.913097;,
+		0.727778;0.500000;,
+		0.727778;0.500000;,
+		0.272222;0.500000;,
+		0.272222;0.500000;,
+		0.562310;0.950947;,
+		0.437690;0.950947;,
+		0.714394;0.772108;,
+		0.285606;0.772108;,
+		0.700000;0.843370;,
+		0.300000;0.843370;,
+		0.722100;0.678698;,
+		0.277900;0.678698;,
+		0.671254;0.893652;,
+		0.328746;0.893652;,
+		0.721205;0.658547;,
+		0.278795;0.658547;,
+		0.722683;0.620253;,
+		0.277317;0.620253;,
+		0.723667;0.582901;,
+		0.276333;0.582901;,
+		0.713448;0.752445;,
+		0.286552;0.752445;,
+		0.600000;0.936200;,
+		0.400000;0.936200;,
+		0.700000;0.823792;,
+		0.300000;0.823792;,
+		0.722960;0.550534;,
+		0.277040;0.550534;,
+		0.722426;0.517163;,
+		0.277574;0.517163;,
+		0.712657;0.732728;,
+		0.287343;0.732728;,
+		0.675522;0.874045;,
+		0.324478;0.874045;,
+		0.700000;0.804213;,
+		0.300000;0.804213;,
+		0.622733;0.919151;,
+		0.377267;0.919151;,
+		0.500000;0.941264;,
+		0.711988;0.712958;,
+		0.288012;0.712958;,
+		0.716734;0.636859;,
+		0.283266;0.636859;,
+		0.718073;0.599277;,
+		0.281927;0.599277;,
+		0.678614;0.854321;,
+		0.321386;0.854321;,
+		0.700000;0.784634;,
+		0.300000;0.784634;,
+		0.711418;0.693138;,
+		0.288582;0.693138;,
+		0.717471;0.567129;,
+		0.282529;0.567129;,
+		0.637321;0.900926;,
+		0.362679;0.900926;,
+		0.544807;0.932279;,
+		0.455193;0.932279;,
+		0.717004;0.534145;,
+		0.282996;0.534145;,
+		0.710929;0.673270;,
+		0.289071;0.673270;,
+		0.716667;0.500000;,
+		0.716667;0.500000;,
+		0.283333;0.500000;,
+		0.283333;0.500000;,
+		0.700000;0.765056;,
+		0.300000;0.765056;,
+		0.680945;0.834504;,
+		0.319055;0.834504;,
+		0.710507;0.653355;,
+		0.289493;0.653355;,
+		0.647280;0.882022;,
+		0.352720;0.882022;,
+		0.712291;0.615534;,
+		0.287709;0.615534;,
+		0.700000;0.745477;,
+		0.300000;0.745477;,
+		0.577267;0.919151;,
+		0.422733;0.919151;,
+		0.683068;0.811260;,
+		0.316932;0.811260;,
+		0.711838;0.583563;,
+		0.288162;0.583563;,
+		0.700000;0.725898;,
+		0.300000;0.725898;,
+		0.654430;0.862678;,
+		0.345570;0.862678;,
+		0.711482;0.550925;,
+		0.288519;0.550925;,
+		0.711213;0.517291;,
+		0.288787;0.517291;,
+		0.400000;0.903472;,
+		0.600000;0.903472;,
+		0.500000;0.921685;,
+		0.684465;0.791714;,
+		0.315535;0.791714;,
+		0.700000;0.706320;,
+		0.300000;0.706320;,
+		0.706281;0.631646;,
+		0.293719;0.631646;,
+		0.659773;0.843021;,
+		0.340227;0.843021;,
+		0.700000;0.686741;,
+		0.300000;0.686741;,
+		0.685606;0.772108;,
+		0.314394;0.772108;,
+		0.706027;0.599812;,
+		0.293973;0.599812;,
+		0.383869;0.886220;,
+		0.616131;0.886220;,
+		0.465026;0.913097;,
+		0.534974;0.913097;,
+		0.700000;0.667162;,
+		0.300000;0.667162;,
+		0.705824;0.567479;,
+		0.294176;0.567479;,
+		0.686552;0.752445;,
+		0.313449;0.752445;,
+		0.705668;0.534318;,
+		0.294332;0.534318;,
+		0.664123;0.819923;,
+		0.335877;0.819923;,
+		0.705556;0.500000;,
+		0.705556;0.500000;,
+		0.294444;0.500000;,
+		0.294444;0.500000;,
+		0.700000;0.647584;,
+		0.300000;0.647584;,
+		0.627898;0.867947;,
+		0.372102;0.867947;,
+		0.437321;0.900926;,
+		0.562679;0.900926;,
+		0.687343;0.732728;,
+		0.312657;0.732728;,
+		0.700000;0.615849;,
+		0.300000;0.615849;,
+		0.668107;0.797248;,
+		0.331893;0.797248;,
+		0.688012;0.712958;,
+		0.311988;0.712958;,
+		0.700000;0.583784;,
+		0.300000;0.583784;,
+		0.636738;0.848966;,
+		0.363262;0.848966;,
+		0.583869;0.886220;,
+		0.416131;0.886220;,
+		0.500000;0.902107;,
+		0.700000;0.551055;,
+		0.300000;0.551055;,
+		0.670535;0.777808;,
+		0.329465;0.777808;,
+		0.700000;0.517334;,
+		0.300000;0.517334;,
+		0.688582;0.693138;,
+		0.311418;0.693138;,
+		0.693718;0.631646;,
+		0.306282;0.631646;,
+		0.689071;0.673270;,
+		0.310929;0.673270;,
+		0.643710;0.826379;,
+		0.356290;0.826379;,
+		0.600000;0.869750;,
+		0.400000;0.869750;,
+		0.672545;0.758228;,
+		0.327455;0.758228;,
+		0.471254;0.893652;,
+		0.528746;0.893652;,
+		0.693973;0.599812;,
+		0.306027;0.599812;,
+		0.689493;0.653355;,
+		0.310507;0.653355;,
+		0.674229;0.738519;,
+		0.325771;0.738519;,
+		0.694175;0.567479;,
+		0.305825;0.567479;,
+		0.649642;0.804057;,
+		0.350358;0.804057;,
+		0.694332;0.534318;,
+		0.305668;0.534318;,
+		0.387598;0.852029;,
+		0.612402;0.852029;,
+		0.694444;0.500000;,
+		0.694444;0.500000;,
+		0.305556;0.500000;,
+		0.305556;0.500000;,
+		0.552720;0.882022;,
+		0.447280;0.882022;,
+		0.675651;0.718690;,
+		0.324349;0.718690;,
+		0.654892;0.782047;,
+		0.345108;0.782047;,
+		0.687709;0.615534;,
+		0.312291;0.615534;,
+		0.676862;0.698748;,
+		0.323138;0.698748;,
+		0.500000;0.882528;,
+		0.572102;0.867947;,
+		0.427898;0.867947;,
+		0.622165;0.830371;,
+		0.377835;0.830371;,
+		0.688162;0.583563;,
+		0.311838;0.583563;,
+		0.683266;0.636859;,
+		0.316734;0.636859;,
+		0.658054;0.762736;,
+		0.341946;0.762736;,
+		0.677900;0.678698;,
+		0.322100;0.678698;,
+		0.688518;0.550925;,
+		0.311482;0.550925;,
+		0.688787;0.517291;,
+		0.311213;0.517291;,
+		0.678795;0.658547;,
+		0.321205;0.658547;,
+		0.524478;0.874045;,
+		0.475522;0.874045;,
+		0.412402;0.852029;,
+		0.587597;0.852029;,
+		0.660707;0.743198;,
+		0.339293;0.743198;,
+		0.630212;0.808733;,
+		0.369788;0.808733;,
+		0.681927;0.599277;,
+		0.318073;0.599276;,
+		0.662951;0.723454;,
+		0.337049;0.723454;,
+		0.545570;0.862678;,
+		0.454430;0.862678;,
+		0.682529;0.567129;,
+		0.317471;0.567129;,
+		0.637100;0.787218;,
+		0.362900;0.787218;,
+		0.682996;0.534145;,
+		0.317004;0.534145;,
+		0.683333;0.500000;,
+		0.683333;0.500000;,
+		0.316667;0.500000;,
+		0.316667;0.500000;,
+		0.600000;0.831723;,
+		0.400000;0.831723;,
+		0.664863;0.703518;,
+		0.335137;0.703518;,
+		0.677316;0.620253;,
+		0.322684;0.620253;,
+		0.643181;0.765892;,
+		0.356819;0.765892;,
+		0.500000;0.862949;,
+		0.666503;0.683405;,
+		0.333497;0.683405;,
+		0.436738;0.848966;,
+		0.563262;0.848966;,
+		0.672663;0.641543;,
+		0.327337;0.641543;,
+		0.667917;0.663125;,
+		0.332083;0.663125;,
+		0.610145;0.811115;,
+		0.389855;0.811115;,
+		0.646849;0.746700;,
+		0.353151;0.746700;,
+		0.676333;0.582901;,
+		0.323667;0.582901;,
+		0.677040;0.550534;,
+		0.322960;0.550534;,
+		0.478614;0.854321;,
+		0.521386;0.854321;,
+		0.677574;0.517163;,
+		0.322426;0.517163;,
+		0.649961;0.727195;,
+		0.350039;0.727195;,
+		0.671595;0.603571;,
+		0.328405;0.603571;,
+		0.577835;0.830371;,
+		0.422165;0.830371;,
+		0.618709;0.790383;,
+		0.381291;0.790383;,
+		0.652620;0.707405;,
+		0.347380;0.707405;,
+		0.459773;0.843021;,
+		0.540227;0.843021;,
+		0.666807;0.624502;,
+		0.333193;0.624502;,
+		0.626140;0.769643;,
+		0.373860;0.769643;,
+		0.670891;0.566430;,
+		0.329109;0.566430;,
+		0.654903;0.687353;,
+		0.345096;0.687353;,
+		0.672222;0.500000;,
+		0.672222;0.500000;,
+		0.327778;0.500000;,
+		0.327778;0.500000;,
+		0.671662;0.533800;,
+		0.328338;0.533800;,
+		0.661920;0.645672;,
+		0.338080;0.645672;,
+		0.589855;0.811115;,
+		0.410145;0.811115;,
+		0.500000;0.843370;,
+		0.632742;0.748971;,
+		0.367258;0.748971;,
+		0.656874;0.667058;,
+		0.343126;0.667058;,
+		0.666059;0.586839;,
+		0.333941;0.586839;,
+		0.556290;0.826379;,
+		0.443710;0.826379;,
+		0.636743;0.729867;,
+		0.363257;0.729867;,
+		0.600000;0.791449;,
+		0.400000;0.791449;,
+		0.480945;0.834504;,
+		0.519055;0.834504;,
+		0.661174;0.607455;,
+		0.338826;0.607455;,
+		0.665568;0.549885;,
+		0.334433;0.549885;,
+		0.666362;0.516949;,
+		0.333638;0.516949;,
+		0.640174;0.710367;,
+		0.359826;0.710367;,
+		0.391247;0.771543;,
+		0.608753;0.771543;,
+		0.656189;0.628257;,
+		0.343811;0.628257;,
+		0.430212;0.808733;,
+		0.569788;0.808733;,
+		0.643130;0.690508;,
+		0.356870;0.690508;,
+		0.660668;0.570082;,
+		0.339332;0.570082;,
+		0.651048;0.649220;,
+		0.348952;0.649220;,
+		0.535877;0.819923;,
+		0.464123;0.819923;,
+		0.616459;0.751511;,
+		0.383541;0.751511;,
+		0.645686;0.670317;,
+		0.354314;0.670317;,
+		0.500000;0.823792;,
+		0.661111;0.500000;,
+		0.661111;0.500000;,
+		0.338889;0.500000;,
+		0.338889;0.500000;,
+		0.660331;0.533286;,
+		0.339669;0.533286;,
+		0.623369;0.731436;,
+		0.376631;0.731436;,
+		0.581291;0.790383;,
+		0.418709;0.790383;,
+		0.655716;0.590431;,
+		0.344284;0.590431;,
+		0.372424;0.712374;,
+		0.627576;0.712374;,
+		0.449642;0.804057;,
+		0.550358;0.804057;,
+		0.650668;0.610910;,
+		0.349332;0.610910;,
+		0.655386;0.553323;,
+		0.344614;0.553323;,
+		0.408753;0.771543;,
+		0.591247;0.771543;,
+		0.516932;0.811260;,
+		0.483068;0.811260;,
+		0.631217;0.692842;,
+		0.368783;0.692842;,
+		0.645471;0.631495;,
+		0.354529;0.631495;,
+		0.655151;0.516652;,
+		0.344849;0.516652;,
+		0.640064;0.652162;,
+		0.359936;0.652162;,
+		0.600000;0.752363;,
+		0.400000;0.752363;,
+		0.634377;0.672879;,
+		0.365623;0.672879;,
+		0.650394;0.573454;,
+		0.349606;0.573454;,
+		0.437100;0.787218;,
+		0.562900;0.787218;,
+		0.500000;0.804213;,
+		0.607812;0.732956;,
+		0.392188;0.732956;,
+		0.468107;0.797248;,
+		0.531893;0.797248;,
+		0.650182;0.536580;,
+		0.349818;0.536580;,
+		0.645309;0.593659;,
+		0.354691;0.593659;,
+		0.650000;0.500000;,
+		0.650000;0.500000;,
+		0.350000;0.500000;,
+		0.350000;0.500000;,
+		0.614883;0.713404;,
+		0.385117;0.713404;,
+		0.426140;0.769643;,
+		0.573860;0.769643;,
+		0.640084;0.613916;,
+		0.359916;0.613916;,
+		0.380795;0.694334;,
+		0.619205;0.694334;,
+		0.645169;0.556546;,
+		0.354831;0.556546;,
+		0.634664;0.634199;,
+		0.365336;0.634199;,
+		0.484465;0.791714;,
+		0.515535;0.791714;,
+		0.454892;0.782047;,
+		0.545108;0.782047;,
+		0.416459;0.751511;,
+		0.583541;0.751511;,
+		0.628985;0.654480;,
+		0.371015;0.654480;,
+		0.622972;0.674724;,
+		0.377028;0.674724;,
+		0.645024;0.519873;,
+		0.354976;0.519873;,
+		0.640071;0.576529;,
+		0.359929;0.576529;,
+		0.592188;0.732956;,
+		0.407812;0.732956;,
+		0.500000;0.784634;,
+		0.443181;0.765892;,
+		0.556819;0.765892;,
+		0.470535;0.777808;,
+		0.529465;0.777808;,
+		0.634841;0.596507;,
+		0.365159;0.596507;,
+		0.640010;0.539726;,
+		0.359990;0.539726;,
+		0.600000;0.714083;,
+		0.400000;0.714083;,
+		0.607136;0.694969;,
+		0.392864;0.694969;,
+		0.629431;0.616457;,
+		0.370569;0.616457;,
+		0.638889;0.500000;,
+		0.638889;0.500000;,
+		0.361111;0.500000;,
+		0.361111;0.500000;,
+		0.432742;0.748971;,
+		0.567258;0.748971;,
+		0.376216;0.636351;,
+		0.623784;0.636351;,
+		0.634916;0.559540;,
+		0.365084;0.559540;,
+		0.611503;0.675836;,
+		0.388497;0.675836;,
+		0.617833;0.656157;,
+		0.382167;0.656157;,
+		0.485606;0.772108;,
+		0.514394;0.772108;,
+		0.458054;0.762736;,
+		0.541946;0.762736;,
+		0.576631;0.731436;,
+		0.423369;0.731436;,
+		0.629701;0.579293;,
+		0.370299;0.579293;,
+		0.633770;0.520230;,
+		0.366230;0.520230;,
+		0.500000;0.765056;,
+		0.585117;0.713404;,
+		0.414883;0.713404;,
+		0.446849;0.746700;,
+		0.553151;0.746700;,
+		0.624319;0.598961;,
+		0.375681;0.598961;,
+		0.472545;0.758228;,
+		0.527455;0.758228;,
+		0.407136;0.694969;,
+		0.592864;0.694969;,
+		0.618719;0.618520;,
+		0.381281;0.618520;,
+		0.628583;0.540349;,
+		0.371417;0.540349;,
+		0.600000;0.676208;,
+		0.400000;0.676208;,
+		0.387155;0.637938;,
+		0.612845;0.637938;,
+		0.606630;0.657181;,
+		0.393370;0.657181;,
+		0.563257;0.729867;,
+		0.436743;0.729867;,
+		0.627778;0.500000;,
+		0.627778;0.500000;,
+		0.372222;0.500000;,
+		0.372222;0.500000;,
+		0.486551;0.752445;,
+		0.513448;0.752445;,
+		0.539293;0.743198;,
+		0.460707;0.743198;,
+		0.623285;0.560331;,
+		0.376715;0.560331;,
+		0.427576;0.712374;,
+		0.572424;0.712374;,
+		0.617829;0.580151;,
+		0.382171;0.580151;,
+		0.419205;0.694334;,
+		0.580795;0.694334;,
+		0.622514;0.520487;,
+		0.377486;0.520487;,
+		0.500000;0.745477;,
+		0.550039;0.727195;,
+		0.449961;0.727195;,
+		0.474229;0.738519;,
+		0.525771;0.738519;,
+		0.411503;0.675836;,
+		0.588497;0.675836;,
+		0.612166;0.599780;,
+		0.387834;0.599780;,
+		0.606243;0.619186;,
+		0.393757;0.619186;,
+		0.593369;0.657181;,
+		0.406631;0.657181;,
+		0.400000;0.638334;,
+		0.600000;0.638334;,
+		0.559826;0.710367;,
+		0.440174;0.710367;,
+		0.617152;0.540766;,
+		0.382848;0.540766;,
+		0.487343;0.732728;,
+		0.512657;0.732728;,
+		0.462951;0.723454;,
+		0.537049;0.723454;,
+		0.616667;0.500000;,
+		0.616667;0.500000;,
+		0.383333;0.500000;,
+		0.383333;0.500000;,
+		0.431217;0.692842;,
+		0.568783;0.692842;,
+		0.388355;0.560808;,
+		0.611645;0.560808;,
+		0.577028;0.674724;,
+		0.422972;0.674724;,
+		0.500000;0.725898;,
+		0.547380;0.707405;,
+		0.452620;0.707405;,
+		0.394056;0.580581;,
+		0.605944;0.580581;,
+		0.611257;0.520642;,
+		0.388743;0.520642;,
+		0.524349;0.718690;,
+		0.475651;0.718690;,
+		0.582167;0.656157;,
+		0.417833;0.656157;,
+		0.400000;0.600053;,
+		0.600000;0.600053;,
+		0.593757;0.619186;,
+		0.406243;0.619186;,
+		0.443130;0.690508;,
+		0.556870;0.690508;,
+		0.587155;0.637938;,
+		0.412845;0.637938;,
+		0.394282;0.540975;,
+		0.605718;0.540975;,
+		0.488012;0.712958;,
+		0.511988;0.712958;,
+		0.535137;0.703519;,
+		0.464863;0.703518;,
+		0.434377;0.672879;,
+		0.565623;0.672879;,
+		0.605556;0.500000;,
+		0.605556;0.500000;,
+		0.394444;0.500000;,
+		0.394444;0.500000;,
+		0.600000;0.560967;,
+		0.400000;0.560967;,
+		0.500000;0.706320;,
+		0.571014;0.654480;,
+		0.428986;0.654480;,
+		0.454904;0.687353;,
+		0.545096;0.687353;,
+		0.476862;0.698748;,
+		0.523138;0.698748;,
+		0.594056;0.580581;,
+		0.405944;0.580581;,
+		0.600000;0.520693;,
+		0.400000;0.520693;,
+		0.423784;0.636351;,
+		0.576216;0.636351;,
+		0.412166;0.599780;,
+		0.587834;0.599780;,
+		0.445686;0.670317;,
+		0.554314;0.670317;,
+		0.581281;0.618520;,
+		0.418719;0.618520;,
+		0.488582;0.693138;,
+		0.511418;0.693138;,
+		0.466503;0.683405;,
+		0.533497;0.683405;,
+		0.405718;0.540975;,
+		0.594282;0.540975;,
+		0.559936;0.652162;,
+		0.440064;0.652162;,
+		0.594444;0.500000;,
+		0.594444;0.500000;,
+		0.405556;0.500000;,
+		0.405556;0.500000;,
+		0.500000;0.686741;,
+		0.456874;0.667058;,
+		0.543126;0.667058;,
+		0.411645;0.560808;,
+		0.588355;0.560808;,
+		0.565336;0.634199;,
+		0.434664;0.634199;,
+		0.477900;0.678698;,
+		0.522100;0.678698;,
+		0.417829;0.580151;,
+		0.582171;0.580151;,
+		0.570569;0.616457;,
+		0.429431;0.616457;,
+		0.424319;0.598961;,
+		0.575681;0.598961;,
+		0.588743;0.520642;,
+		0.411257;0.520642;,
+		0.548951;0.649220;,
+		0.451049;0.649220;,
+		0.489071;0.673270;,
+		0.510929;0.673270;,
+		0.467917;0.663125;,
+		0.532083;0.663125;,
+		0.582848;0.540766;,
+		0.417152;0.540766;,
+		0.445471;0.631495;,
+		0.554529;0.631495;,
+		0.500000;0.667162;,
+		0.583333;0.500000;,
+		0.583333;0.500000;,
+		0.416667;0.500000;,
+		0.416667;0.500000;,
+		0.576715;0.560331;,
+		0.423285;0.560331;,
+		0.478795;0.658547;,
+		0.521205;0.658547;,
+		0.559916;0.613916;,
+		0.440084;0.613916;,
+		0.538080;0.645672;,
+		0.461920;0.645672;,
+		0.565159;0.596507;,
+		0.434841;0.596507;,
+		0.429701;0.579293;,
+		0.570299;0.579293;,
+		0.577486;0.520487;,
+		0.422514;0.520487;,
+		0.489493;0.653355;,
+		0.510507;0.653355;,
+		0.543811;0.628257;,
+		0.456189;0.628257;,
+		0.472663;0.641543;,
+		0.527337;0.641543;,
+		0.428583;0.540349;,
+		0.571417;0.540349;,
+		0.500000;0.647584;,
+		0.549332;0.610910;,
+		0.450668;0.610910;,
+		0.572222;0.500000;,
+		0.572222;0.500000;,
+		0.427778;0.500000;,
+		0.427778;0.500000;,
+		0.445309;0.593659;,
+		0.554691;0.593659;,
+		0.434916;0.559540;,
+		0.565084;0.559540;,
+		0.440071;0.576529;,
+		0.559929;0.576529;,
+		0.516734;0.636859;,
+		0.483266;0.636859;,
+		0.466807;0.624502;,
+		0.533193;0.624502;,
+		0.433770;0.520230;,
+		0.566230;0.520230;,
+		0.493719;0.631646;,
+		0.506281;0.631646;,
+		0.538826;0.607455;,
+		0.461174;0.607455;,
+		0.522684;0.620253;,
+		0.477316;0.620253;,
+		0.440010;0.539726;,
+		0.559990;0.539726;,
+		0.455716;0.590431;,
+		0.544284;0.590431;,
+		0.554831;0.556546;,
+		0.445169;0.556546;,
+		0.450394;0.573454;,
+		0.549606;0.573454;,
+		0.561111;0.500000;,
+		0.561111;0.500000;,
+		0.438889;0.500000;,
+		0.438889;0.500000;,
+		0.487709;0.615534;,
+		0.512291;0.615534;,
+		0.471595;0.603571;,
+		0.528405;0.603571;,
+		0.500000;0.615849;,
+		0.445024;0.519873;,
+		0.554976;0.519873;,
+		0.466059;0.586839;,
+		0.533941;0.586839;,
+		0.450182;0.536580;,
+		0.549818;0.536580;,
+		0.481927;0.599276;,
+		0.518073;0.599276;,
+		0.460668;0.570082;,
+		0.539332;0.570082;,
+		0.544614;0.553323;,
+		0.455386;0.553323;,
+		0.493973;0.599812;,
+		0.506027;0.599812;,
+		0.450000;0.500000;,
+		0.450000;0.500000;,
+		0.550000;0.500000;,
+		0.550000;0.500000;,
+		0.476333;0.582901;,
+		0.523667;0.582901;,
+		0.455151;0.516652;,
+		0.544849;0.516652;,
+		0.470891;0.566430;,
+		0.529109;0.566430;,
+		0.488162;0.583563;,
+		0.511838;0.583563;,
+		0.460331;0.533286;,
+		0.539669;0.533286;,
+		0.465567;0.549885;,
+		0.534432;0.549885;,
+		0.500000;0.583784;,
+		0.461111;0.500000;,
+		0.461111;0.500000;,
+		0.538889;0.500000;,
+		0.538889;0.500000;,
+		0.482529;0.567129;,
+		0.517471;0.567129;,
+		0.466362;0.516949;,
+		0.533638;0.516949;,
+		0.494175;0.567479;,
+		0.505825;0.567479;,
+		0.477040;0.550534;,
+		0.522960;0.550534;,
+		0.471662;0.533800;,
+		0.528338;0.533800;,
+		0.488518;0.550925;,
+		0.511482;0.550925;,
+		0.472222;0.500000;,
+		0.472222;0.500000;,
+		0.527778;0.500000;,
+		0.527778;0.500000;,
+		0.500000;0.551055;,
+		0.482996;0.534145;,
+		0.517004;0.534145;,
+		0.477574;0.517163;,
+		0.522426;0.517163;,
+		0.494332;0.534318;,
+		0.505668;0.534318;,
+		0.483333;0.500000;,
+		0.483333;0.500000;,
+		0.516667;0.500000;,
+		0.516667;0.500000;,
+		0.488787;0.517291;,
+		0.511213;0.517291;,
+		0.500000;0.517334;,
+		0.494444;0.500000;,
+		0.494444;0.500000;,
+		0.505556;0.500000;,
+		0.505556;0.500000;;
+	}  // End of texture coords
+} // End of Mesh
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDebugEntityPosition_FP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDebugEntityPosition_FP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDebugEntityPosition_FP20.cg	(revision 1493)
@@ -0,0 +1,33 @@
+void main_fp(float2 texCoord: TEXCOORD0, 
+	     float2 subTexCoord: TEXCOORD1,
+	     float4 position : WPOS,
+	     float4 colour: COLOR0,
+             out float4 ocolor: COLOR,
+             uniform sampler2D texture)
+{
+	// Normalmap
+	//normal = normalize(normal);
+	// Convert from [-1,1] to [0,1]
+	//ocolor.r = (normal.r + 1.0) / 2.0;
+	//ocolor.g = (normal.g + 1.0) / 2.0;
+	//ocolor.b = (normal.b + 1.0) / 2.0;
+	//ocolor.a = tex2D(textura,texCoord).a;
+
+	// Depthmap
+	//ocolor.r = position.z;
+	//ocolor.g = position.z;
+	//ocolor.b = position.z;
+	//ocolor.a = 1.0;
+
+	// Texture
+        ocolor.r = tex2D(texture, subTexCoord).r;
+	ocolor.g = tex2D(texture, subTexCoord).g;
+	ocolor.b = tex2D(texture, subTexCoord).b;
+	ocolor.a = tex2D(texture, subTexCoord).b;
+
+	// Debug
+	//ocolor = ocolor + float4(colour.xyz,1.0);
+
+	// Colour
+        //ocolor = colour;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/general.program
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/general.program	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/general.program	(revision 1493)
@@ -0,0 +1,145 @@
+vertex_program diffuseTextureScreenAligned_VP20 cg
+{
+	source diffuseTextureScreenAligned_VP20.cg
+	entry_point main_vp
+	profiles arbvp1 vs_2_0
+}
+
+fragment_program diffuseTextureScreenAligned_FP20 cg
+{
+	source diffuseTextureScreenAligned_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+fragment_program indirectTexturingDebugEntityPosition_FP20 cg
+{
+	source indirectTexturingDebugEntityPosition_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+fragment_program indirectTexturingDebugTextureAtlasFitting_FP20 cg
+{
+	source indirectTexturingDebugTextureAtlasFitting_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+vertex_program diffuseTexturing_VP20 cg
+{
+	source diffuseTexturing_VP20.cg
+	entry_point main_vp
+	profiles arbvp1 vs_2_0
+}
+
+fragment_program diffuseTexturing_FP20 cg
+{
+	source diffuseTexturing_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+fragment_program indirectTexturingPointBasedGeneration_FP20 cg
+{
+	source indirectTexturingPointBasedGeneration_FP20.cg
+	entry_point main
+	profiles ps_2_0 arbfp1
+}
+
+vertex_program indirectTexturingDefault_VP20 cg
+{
+	source indirectTexturingDefault_VP20.cg
+	entry_point main_vp
+	profiles vs_2_0 arbvp1 
+}
+
+fragment_program indirectTexturingDefault_FP20 cg
+{
+	source indirectTexturingDefault_FP20.cg
+	entry_point main_fp
+        profiles ps_2_0 arbfp1
+}
+
+vertex_program indirectTexturingDefault_hlsl_VP20 hlsl
+{
+	source indirectTexturingDefault_hlsl_VP20.shd
+	entry_point main_vp
+	target vs_2_0
+}
+
+fragment_program indirectTexturingDefault_hlsl_FP20 hlsl
+{
+	source indirectTexturingDefault_hlsl_FP20.shd
+	entry_point main_fp
+	target ps_2_0 
+}
+
+vertex_program indirectTexturingLighting_hlsl_VP20 hlsl
+{
+	source indirectTexturingLighting_hlsl_VP20.shd
+	entry_point main_vp
+	target vs_2_0
+}
+
+fragment_program indirectTexturingLighting_hlsl_FP20 hlsl
+{
+	source indirectTexturingLighting_hlsl_FP20.shd
+	entry_point main_fp
+	target ps_2_0 
+}
+
+fragment_program indirectTexturingDebugTexCoordCorrespondence_FP20 cg
+{
+	source indirectTexturingDebugTexCoordCorrespondence_FP20.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1 
+}
+
+vertex_program indirectTexturingDefault_glsl_VP20 glsl
+{
+	source indirectTexturingDefault_glsl_VP20.shd
+}
+
+fragment_program indirectTexturingDefault_glsl_FP20 glsl
+{
+	source indirectTexturingDefault_glsl_FP20.shd
+}
+
+vertex_program LightingWithIndirectTexturingVP cg
+{
+    source v_lighting_indirect_texture_mapping.cg
+    entry_point main
+    profiles arbvp1 vs_2_0
+
+    default_params
+    {
+        param_named_auto p_ModelView worldview_matrix
+        param_named_auto p_Model world_matrix
+        param_named_auto p_InverseModelView inverse_worldview_matrix
+        param_named_auto p_ModelViewProjection worldviewproj_matrix
+        param_named_auto p_LightPosition light_position_object_space 0
+    }
+}
+
+fragment_program LightingWithIndirectTexturingFP cg
+{
+    source f_lighting_indirect_texture_mapping.cg
+    entry_point main
+    profiles arbfp1 ps_2_0
+    
+    default_params
+    {
+        param_named_auto p_LightDiffuse light_diffuse_colour 0
+        param_named_auto p_LightSpecular light_specular_colour 0
+        param_named_auto p_LightPower light_power 0
+	param_named_auto p_Ambient ambient_light_colour
+        param_named p_Diffuse float4 1.0 1.0 1.0 1.0
+	param_named p_Specular float4 0.1 0.1 0.1 16
+
+	param_named sourceTextureSize float 16.0
+	param_named sqrtNumSamples float 4.0
+	param_named epsilonX float -0.35
+	param_named epsilonY float -0.06
+    }
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTexturing_VP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTexturing_VP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTexturing_VP20.cg	(revision 1493)
@@ -0,0 +1,15 @@
+void main_vp(
+      float4 position: POSITION,
+      float2 texCoord: TEXCOORD0,
+      float2 subTexCoord: TEXCOORD1,
+      float4 color: COLOR,
+      uniform float4x4 worldviewproj,
+      out float4 oposition: POSITION,
+      out float2 otexCoord: TEXCOORD0,
+      out float2 osubTexCoord: TEXCOORD1
+      )
+{
+	oposition = mul(worldviewproj, position);
+	osubTexCoord = subTexCoord;
+	otexCoord = color.wx;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDebugTexCoordCorrespondence_FP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDebugTexCoordCorrespondence_FP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDebugTexCoordCorrespondence_FP20.cg	(revision 1493)
@@ -0,0 +1,12 @@
+sampler indirectTexture: register(s0);
+
+void main_fp(float2 texCoord: TEXCOORD0, 
+             float2 subTexCoord: TEXCOORD1,
+             out float4 ocolor: COLOR,
+             uniform sampler2D indirectTexture)
+{
+
+   float2 coords = texCoord + (float2(1.0, 1.0) - tex2D(indirectTexture, subTexCoord).xy); 
+   ocolor = float4(coords, 0.0, 1.0);
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_glsl_FP20.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_glsl_FP20.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_glsl_FP20.shd	(revision 1493)
@@ -0,0 +1,24 @@
+uniform sampler2D indirectTexture;
+uniform sampler2D sourceTexture;
+uniform float epsilonX;
+uniform float epsilonY;
+uniform float sourceTextureSize;
+uniform float numSamples;
+uniform float sqrtNumSamples;
+
+void main(void)
+{
+   vec4 ocolor = vec4(0.0, 0.0, 0.0, 0.0);	
+   vec2 epsilon = vec2(epsilonX, epsilonY);
+   vec2 texCoord = gl_TexCoord[0].xy;
+   vec2 subTexCoord = gl_TexCoord[1].xy;   
+   vec4 value = texture2D(indirectTexture, subTexCoord).xyzw;
+   vec2 coords = vec2(0.0, 1.0) - abs(texCoord - ( value.xy - epsilon ) );
+
+   if (value.z != 0.0) 
+   {	   
+	vec2 newcoord = (vec2(1.0, 1.0) - value.zw) + ((coords * sourceTextureSize) / sqrtNumSamples);
+	ocolor = vec4(texture2D(sourceTexture, newcoord).xyzw);
+   }
+   gl_FragColor = ocolor; 
+}   
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_hlsl_FP20.shd
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_hlsl_FP20.shd	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingDefault_hlsl_FP20.shd	(revision 1493)
@@ -0,0 +1,25 @@
+sampler indirectTexture: register(s0);
+sampler sourceTexture: register(s1);
+
+uniform float epsilonX;
+uniform float epsilonY;
+uniform float sourceTextureSize;
+uniform float numSamples;
+uniform float sqrtNumSamples;
+
+float4 main_fp(float2 texCoord: TEXCOORD0, 
+               float2 subTexCoord: TEXCOORD1) : COLOR
+{
+   float4 ocolor = float4(0.0, 0.0, 0.0, 0.0);
+   float2 epsilon = float2(epsilonX, epsilonY);
+   float4 value = tex2D(indirectTexture, subTexCoord).xyzw;
+   float2 coords = float2(0.0, 1.0) - abs(texCoord - ( value.xy - epsilon ) );
+
+   if (value.w != 0.0) 
+   {	
+	float2 newcoord = (float2(1.0, 1.0) - value.zw) + ((coords * sourceTextureSize) / sqrtNumSamples);
+	ocolor = float4(tex2D(sourceTexture, newcoord).xyzw);
+   }
+
+   return  ocolor;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingWithAmbientOcclusion_hlsl_FP20.shd.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingWithAmbientOcclusion_hlsl_FP20.shd.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/indirectTexturingWithAmbientOcclusion_hlsl_FP20.shd.bak	(revision 1493)
@@ -0,0 +1,50 @@
+sampler indirectTexture: register(s0);
+sampler sourceTexture: register(s1);
+sampler visibilityTexture: register(s2);
+
+uniform float epsilonX;
+uniform float epsilonY;
+uniform float sourceTextureSize;
+uniform float numSamples;
+uniform float sqrtNumSamples;
+
+float4 main_fp(float2 texCoord: TEXCOORD0, 
+               float2 subTexCoord: TEXCOORD1): COLOR
+{
+   float4 ocolor = float4(0.0, 0.0, 0.0, 0.0);	
+   float2 epsilon = float2(epsilonX, epsilonY);  
+   float4 value = tex2D(indirectTexture, subTexCoord).xyzw;
+   float2 coords = texCoord - ( value.xy - epsilon );
+
+   if (value.w != 0.0) 
+   {	
+        float2 unifcoord;
+        float2 scale;
+        unifcoord = (texCoord - value.xy) * float2(sourceTextureSize, sourceTextureSize); 
+        scale = coords * float2(sourceTextureSize, sourceTextureSize) / float2(sqrtNumSamples, sqrtNumSamples);
+	float2 newcoord = float2(1.0, 1.0) - value.zw + scale;
+	ocolor = tex2D(sourceTexture, newcoord).xyzw;
+	
+	if (ocolor.w != 0.0)
+	{
+		float4 visibility = tex2D(visibilityTexture, subTexCoord).xyzw;
+		float greyRange = 12.9107;
+		float absGreyMin = abs(min(-6.47313, 0.0));
+		visibility.xyzw = (visibility.xyzw * float4(greyRange, greyRange, greyRange, greyRange)) - float4(absGreyMin, absGreyMin, absGreyMin, absGreyMin);
+		float e = lerp(visibility.x, visibility.y, unifcoord.x);
+		float f = lerp(visibility.w, visibility.z, unifcoord.x);
+		float g = lerp(e, f, unifcoord.y);
+		ocolor.xyz =  g * ( ocolor.xyz );
+	}
+	// Debugging values...
+	//ocolor.xyz = float3( epsilon.x, epsilon.y, 0.0 );
+	//ocolor.xyz = float3( unifcoord.x, unifcoord.y, 0.0 );
+	//ocolor.xyz =  float3( unifcoord.x, 0.0, 0.0 );
+	//ocolor.xyz = float3( 0.0, unifcoord.y, 0.0 );
+	//ocolor.xyz = float3( g, g, g );
+	//ocolor.xyz = visibility.xyz;
+	//ocolor.w = 1.0;
+   }
+
+   return  ocolor;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTextureScreenAligned_FP20.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTextureScreenAligned_FP20.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/diffuseTextureScreenAligned_FP20.cg	(revision 1493)
@@ -0,0 +1,34 @@
+void main_fp(float2 texCoord: TEXCOORD0, 
+	     float2 subTexCoord: TEXCOORD1,
+	     float4 position : WPOS,
+	     float4 colour: COLOR0,
+             out float4 ocolor: COLOR,
+             uniform sampler2D texture)
+{
+	// Normalmap
+	//normal = normalize(normal);
+	// Convert from [-1,1] to [0,1]
+	//ocolor.r = (normal.r + 1.0) / 2.0;
+	//ocolor.g = (normal.g + 1.0) / 2.0;
+	//ocolor.b = (normal.b + 1.0) / 2.0;
+	//ocolor.a = tex2D(textura,texCoord).a;
+
+	// Depthmap
+	//ocolor.r = position.z;
+	//ocolor.g = position.z;
+	//ocolor.b = position.z;
+	//ocolor.a = 1.0;
+
+	// Texture
+        ocolor.r = tex2D(texture, texCoord).r;
+	ocolor.g = tex2D(texture, texCoord).g;
+	ocolor.b = tex2D(texture, texCoord).b;
+	ocolor.a = tex2D(texture, texCoord).a;
+
+	// Debug
+	//ocolor = ocolor + float4(colour.xyz,1.0);
+
+	// Colour
+        //ocolor = colour;
+
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/general.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/general.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/general.material	(revision 1493)
@@ -0,0 +1,24 @@
+material billboardCloudIndirectPointMaterial
+{
+	technique
+	{
+		pass
+		{
+			fragment_program_ref indirectTexturingPointBasedGeneration_FP20
+			{
+			}
+			
+			polygon_mode points
+			point_size 1.0
+			cull_software none
+			cull_hardware none
+			lighting off
+
+			texture_unit
+			{
+				texture customNormalMap128x128.png
+				filtering none none none
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/f_lighting_indirect_texture_mapping.cg.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/f_lighting_indirect_texture_mapping.cg.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/f_lighting_indirect_texture_mapping.cg.bak	(revision 1493)
@@ -0,0 +1,114 @@
+// Shadow map always comes in texture unit 0,
+// so we have to decal all other textures if any...
+
+  sampler2D indirectTexture : TEXUNIT0;
+  sampler2D sourceTexture : TEXUNIT1;
+  sampler2D visibilityTexture : TEXUNIT2;
+
+
+struct Vertex
+{
+  float4 position       : POSITION;     // Fragment's position in screen-space
+  float2 texCoord       : TEXCOORD0;    // Fragment's texture coordinates
+  float2 subTexCoord    : TEXCOORD1;    // Fragment's texture coordinates
+  float3 normal         : TEXCOORD2;    // Fragment's normal in eye-space
+  float3 halfVector     : TEXCOORD3;    // Fragment's half angle vector in eye-space
+  float3 lightVector    : TEXCOORD4;    // Fragment's light vector in eye-space
+  float4 wposition      : TEXCOORD5;    // Vertex position in world-space
+};
+
+struct Fragment
+{
+    float4 color  : COLOR0;
+};
+
+Fragment main(Vertex p_In,
+              uniform float4 p_LightDiffuse,        // Light diffuse component
+              uniform float  p_LightPower,          // Light power
+              uniform float4 p_Diffuse,             // Material diffuse component
+              uniform float4 p_LightSpecular,       // Light specular component
+              uniform float4 p_Specular,            // Material specular component + specular exponent
+      	      uniform float4 p_Ambient,
+	      uniform float epsilonX,
+	      uniform float epsilonY,
+	      uniform float sourceTextureSize,
+	      uniform float sqrtNumSamples,
+	      uniform float greyRange,
+	      uniform float absGreyMin
+              )
+{
+    Fragment l_Out;
+
+   l_Out.color = float4(0.0, 0.0, 0.0, 0.0);	
+   float2 epsilon = float2(epsilonX, epsilonY);  
+   float4 value = tex2D(indirectTexture, p_In.subTexCoord).xyzw;
+   float2 coords = p_In.texCoord - ( value.xy - epsilon );
+
+   if (value.w != 0.0) 
+   {	
+            float2 unifcoord;
+            float2 scale;
+            unifcoord = (p_In.texCoord - value.xy) * float2(sourceTextureSize, sourceTextureSize); 
+            //scale = coords * float2(sourceTextureSize, sourceTextureSize) / float2(sqrtNumSamples, sqrtNumSamples);
+	    //float2 newcoord = float2(1.0, 1.0) - value.zw + scale;
+	    //float4 diffuseColor = tex2D(sourceTexture, newcoord).xyzw;
+	    float4 diffuseColor = tex2D(sourceTexture, unifcoord  / float2(sqrtNumSamples, sqrtNumSamples) - epsilon).xyzw;
+
+	    // Normalized normal.
+	    float3 l_Normal = normalize(p_In.normal);
+
+	    // Normalized light vector.
+	    float3 l_LightVector = normalize(p_In.lightVector);
+	    
+	    // Normalized half angle vector.
+	    float3 l_HalfVector = normalize(p_In.halfVector);
+	    
+	    // Ambient component
+	    //------------------
+	    float3 ambientColor = float3(p_Ambient.xyz); 
+	    if (diffuseColor.w != 0.0)
+	    {
+		float4 visibility = tex2D(visibilityTexture, p_In.subTexCoord).xyzw;
+		//greyRange = greyRange - 0.20;
+		visibility.xyzw = (visibility.xyzw * float4(greyRange, greyRange, greyRange, greyRange)) - float4(absGreyMin, absGreyMin, absGreyMin, absGreyMin);
+		float e = lerp(visibility.x, visibility.y, unifcoord.x);
+		float f = lerp(visibility.w, visibility.z, unifcoord.x);
+		float g = clamp(lerp(e, f, unifcoord.y), 0.3, 1.0);
+		ambientColor *=  float3(g, g, g);
+	    }	    
+	    
+	    l_Out.color.rgb = (ambientColor * diffuseColor.rgb);
+
+	    // Diffuse component
+	    // -----------------
+
+	    // Angle between normal and light vector
+	    float l_CosNL = saturate(dot(l_Normal, l_LightVector)) + saturate(-dot(l_Normal, l_LightVector));
+
+	    // No light can reach back surfaces...
+	    //if (l_CosNL == 0)
+	    //    discard;
+	    
+	    l_Out.color.rgb += (p_Diffuse.rgb * diffuseColor.rgb) * p_LightDiffuse.rgb * l_CosNL;
+	    
+	    // Specular component
+	    // ------------------
+
+	    // Apply cosine power distribution around mirror direction
+	    float l_CosNH = saturate(dot(l_Normal, l_HalfVector)) + saturate(-dot(l_Normal, l_HalfVector));
+		
+	    float l_SpecularPower = pow(l_CosNH, p_Specular.a);
+	    
+	    float3 l_Specular = (p_Specular.rgb * diffuseColor.rgb) * p_LightSpecular.rgb * l_SpecularPower;
+
+	    // Add specular component
+	    l_Out.color.rgb += l_Specular.rgb;
+
+	    // Modulate by light incoming power
+	    l_Out.color.rgb *= p_LightPower;
+
+    	    l_Out.color.a = diffuseColor.a;
+    }
+
+    return l_Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/skybox.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/skybox.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/skybox.material	(revision 1493)
@@ -0,0 +1,17 @@
+material CloudsSkyBox
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+
+			texture_unit
+			{
+				cubic_texture Clouds.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/f_lighting_indirect_texture_mapping.cg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/f_lighting_indirect_texture_mapping.cg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/general/f_lighting_indirect_texture_mapping.cg	(revision 1493)
@@ -0,0 +1,114 @@
+// Shadow map always comes in texture unit 0,
+// so we have to decal all other textures if any...
+
+  sampler2D indirectTexture : TEXUNIT0;
+  sampler2D sourceTexture : TEXUNIT1;
+  sampler2D visibilityTexture : TEXUNIT2;
+
+
+struct Vertex
+{
+  float4 position       : POSITION;     // Fragment's position in screen-space
+  float2 texCoord       : TEXCOORD0;    // Fragment's texture coordinates
+  float2 subTexCoord    : TEXCOORD1;    // Fragment's texture coordinates
+  float3 normal         : TEXCOORD2;    // Fragment's normal in eye-space
+  float3 halfVector     : TEXCOORD3;    // Fragment's half angle vector in eye-space
+  float3 lightVector    : TEXCOORD4;    // Fragment's light vector in eye-space
+  float4 wposition      : TEXCOORD5;    // Vertex position in world-space
+};
+
+struct Fragment
+{
+    float4 color  : COLOR0;
+};
+
+Fragment main(Vertex p_In,
+              uniform float4 p_LightDiffuse,        // Light diffuse component
+              uniform float  p_LightPower,          // Light power
+              uniform float4 p_Diffuse,             // Material diffuse component
+              uniform float4 p_LightSpecular,       // Light specular component
+              uniform float4 p_Specular,            // Material specular component + specular exponent
+      	      uniform float4 p_Ambient,
+	      uniform float epsilonX,
+	      uniform float epsilonY,
+	      uniform float sourceTextureSize,
+	      uniform float sqrtNumSamples,
+	      uniform float greyRange,
+	      uniform float absGreyMin
+              )
+{
+    Fragment l_Out;
+
+   l_Out.color = float4(0.0, 0.0, 0.0, 0.0);	
+   float2 epsilon = float2(epsilonX, epsilonY);  
+   float4 value = tex2D(indirectTexture, p_In.subTexCoord).xyzw;
+   float2 coords = p_In.texCoord - ( value.xy - epsilon );
+
+   if (value.w != 0.0) 
+   {	
+            float2 unifcoord;
+            float2 scale;
+            unifcoord = (p_In.texCoord - value.xy) * float2(sourceTextureSize, sourceTextureSize); 
+            //scale = coords * float2(sourceTextureSize, sourceTextureSize) / float2(sqrtNumSamples, sqrtNumSamples);
+	    //float2 newcoord = float2(1.0, 1.0) - value.zw + scale;
+	    //float4 diffuseColor = tex2D(sourceTexture, newcoord).xyzw;
+	    float4 diffuseColor = tex2D(sourceTexture, unifcoord  / float2(sqrtNumSamples, sqrtNumSamples) - epsilon).xyzw;
+
+	    // Normalized normal.
+	    float3 l_Normal = normalize(p_In.normal);
+
+	    // Normalized light vector.
+	    float3 l_LightVector = normalize(p_In.lightVector);
+	    
+	    // Normalized half angle vector.
+	    float3 l_HalfVector = normalize(p_In.halfVector);
+	    
+	    // Ambient component
+	    //------------------
+	    float3 ambientColor = float3(p_Ambient.xyz); 
+	    if (diffuseColor.w != 0.0)
+	    {
+		float4 visibility = tex2D(visibilityTexture, p_In.subTexCoord).xyzw;
+		//greyRange = greyRange - 0.20;
+		visibility.xyzw = (visibility.xyzw * float4(greyRange, greyRange, greyRange, greyRange)) - float4(absGreyMin, absGreyMin, absGreyMin, absGreyMin);
+		float e = lerp(visibility.x, visibility.y, unifcoord.x);
+		float f = lerp(visibility.w, visibility.z, unifcoord.x);
+		float g = clamp(lerp(e, f, unifcoord.y), 0.3, 1.0);
+		ambientColor +=  float3(g, g, g);
+	    }	    
+	    
+	    l_Out.color.rgb = (ambientColor * diffuseColor.rgb);
+
+	    // Diffuse component
+	    // -----------------
+
+	    // Angle between normal and light vector
+	    float l_CosNL = saturate(dot(l_Normal, l_LightVector)) + saturate(-dot(l_Normal, l_LightVector));
+
+	    // No light can reach back surfaces...
+	    //if (l_CosNL == 0)
+	    //    discard;
+	    
+	    l_Out.color.rgb += (p_Diffuse.rgb * diffuseColor.rgb) * p_LightDiffuse.rgb * l_CosNL;
+	    
+	    // Specular component
+	    // ------------------
+
+	    // Apply cosine power distribution around mirror direction
+	    float l_CosNH = saturate(dot(l_Normal, l_HalfVector)) + saturate(-dot(l_Normal, l_HalfVector));
+		
+	    float l_SpecularPower = pow(l_CosNH, p_Specular.a);
+	    
+	    float3 l_Specular = (p_Specular.rgb * diffuseColor.rgb) * p_LightSpecular.rgb * l_SpecularPower;
+
+	    // Add specular component
+	    l_Out.color.rgb += l_Specular.rgb;
+
+	    // Modulate by light incoming power
+	    l_Out.color.rgb *= p_LightPower;
+
+    	    l_Out.color.a = diffuseColor.a;
+    }
+
+    return l_Out;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/ruin/ruin.material
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/ruin/ruin.material	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/ruin/ruin.material	(revision 1493)
@@ -0,0 +1,36 @@
+material Gile[s]_Ruin1 
+{ 
+	technique 
+	{ 
+		pass 
+		{ 
+			texture_unit
+			{
+				texture RuinT05.tga
+				filtering bilinear 
+				scroll -1.000000 -1.000000 
+				colour_op modulate 
+			} 
+		} 
+	} 
+} 
+
+
+material Gile[s]_Ruin5 
+{ 
+	technique 
+	{ 
+		pass 
+		{ 	
+			texture_unit
+			{
+				texture RuinT03.tga
+				filtering bilinear 
+				scroll -1.000000 -1.000000 
+				colour_op modulate 
+			} 			
+		} 
+	} 
+}
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/scene/scene.OSM.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/scene/scene.OSM.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/scene/scene.OSM.bak	(revision 1493)
@@ -0,0 +1,962 @@
+<oe_scene>
+    <sceneManager type="0" />
+    <bkgcolor r="0" g="0" b="0" />
+    <lightColor r="1.0" g="0.1" b="1.0" />
+    <shadowTechnique type="0" tex_size="512" tex_count="1">
+        <color r="0" g="0" b="1" />
+    </shadowTechnique>
+    <skyTechnique type="2" material="CloudsSkyBox" drawFirst="yes" tiling="10" scale="2000" dist="5000" bow="0" xSegments="16" ySegments="16" />
+    <lights>
+        <light name="Light01" type="directional" on="true" CastShadows="yes" hotspot="43" falloff="45" intensity="1.0">
+
+            <position x="422.804" y="1000" z="6.80393" />	    
+	    <rotation x="0" y="0" z="0" w="-1" />
+            <scale x="3" y="3" z="3" />
+            <color r="1" g="1" b="1" />
+            <specular r="1" g="1" b="1" />
+            <target name="Light01.Target">
+                <position x="0" y="0" z="0" />
+                <rotation x="0" y="0" z="0" w="-1" />
+                <scale x="3" y="3" z="3" />
+            </target>
+            <animations>
+                <animation name="Walk" loop="false" length="3.33333">
+                    <keyframe time="0">
+                        <position x="422.804" y="1000" z="6.80393" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.0333333">
+                        <position x="420.814" y="1000" z="-19.5328" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.0666667">
+                        <position x="417.178" y="1000" z="-45.6929" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.1">
+                        <position x="411.899" y="1000" z="-71.5717" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.133333">
+                        <position x="404.994" y="1000" z="-97.0647" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.166667">
+                        <position x="396.488" y="1000" z="-122.069" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.2">
+                        <position x="386.417" y="1000" z="-146.486" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.233333">
+                        <position x="374.826" y="1000" z="-170.218" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.266667">
+                        <position x="361.764" y="1000" z="-193.174" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.3">
+                        <position x="347.289" y="1000" z="-215.265" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.333333">
+                        <position x="331.46" y="1000" z="-236.409" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.366667">
+                        <position x="314.344" y="1000" z="-256.524" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.4">
+                        <position x="296.007" y="1000" z="-275.534" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.433333">
+                        <position x="276.522" y="1000" z="-293.365" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.466667">
+                        <position x="255.961" y="1000" z="-309.943" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.5">
+                        <position x="234.402" y="1000" z="-325.202" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.533333">
+                        <position x="211.931" y="1000" z="-339.082" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.566667">
+                        <position x="188.633" y="1000" z="-351.524" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.6">
+                        <position x="164.598" y="1000" z="-362.474" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.633333">
+                        <position x="139.92" y="1000" z="-371.884" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.666667">
+                        <position x="114.695" y="1000" z="-379.713" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.7">
+                        <position x="89.0256" y="1000" z="-385.931" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.733333">
+                        <position x="63.0145" y="1000" z="-390.515" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.766667">
+                        <position x="36.7664" y="1000" z="-393.454" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.8">
+                        <position x="10.3855" y="1000" z="-394.742" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.833333">
+                        <position x="-16.0242" y="1000" z="-394.388" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.866667">
+                        <position x="-42.3609" y="1000" z="-392.398" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.9">
+                        <position x="-68.5211" y="1000" z="-388.762" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.933333">
+                        <position x="-94.3999" y="1000" z="-383.484" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.966667">
+                        <position x="-119.893" y="1000" z="-376.578" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1">
+                        <position x="-144.897" y="1000" z="-368.072" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.03333">
+                        <position x="-169.314" y="1000" z="-358.002" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.06667">
+                        <position x="-193.046" y="1000" z="-346.41" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.1">
+                        <position x="-216.002" y="1000" z="-333.349" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.13333">
+                        <position x="-238.093" y="1000" z="-318.873" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.16667">
+                        <position x="-259.237" y="1000" z="-303.045" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.2">
+                        <position x="-279.352" y="1000" z="-285.928" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.23333">
+                        <position x="-298.362" y="1000" z="-267.592" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.26667">
+                        <position x="-316.193" y="1000" z="-248.107" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.3">
+                        <position x="-332.771" y="1000" z="-227.545" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.33333">
+                        <position x="-348.031" y="1000" z="-205.987" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.36667">
+                        <position x="-361.91" y="1000" z="-183.516" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.4">
+                        <position x="-374.352" y="1000" z="-160.218" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.43333">
+                        <position x="-385.302" y="1000" z="-136.183" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.46667">
+                        <position x="-394.712" y="1000" z="-111.504" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.5">
+                        <position x="-402.541" y="1000" z="-86.2795" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.53333">
+                        <position x="-408.759" y="1000" z="-60.6099" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.56667">
+                        <position x="-413.343" y="1000" z="-34.5989" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.6">
+                        <position x="-416.283" y="1000" z="-8.35089" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.63333">
+                        <position x="-417.571" y="1000" z="18.0301" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.66667">
+                        <position x="-417.217" y="1000" z="44.44" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.7">
+                        <position x="-415.226" y="1000" z="70.7767" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.73333">
+                        <position x="-411.59" y="1000" z="96.9368" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.76667">
+                        <position x="-406.312" y="1000" z="122.816" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.8">
+                        <position x="-399.406" y="1000" z="148.309" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.83333">
+                        <position x="-390.9" y="1000" z="173.313" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.86667">
+                        <position x="-380.83" y="1000" z="197.729" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.9">
+                        <position x="-369.238" y="1000" z="221.462" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.93333">
+                        <position x="-356.177" y="1000" z="244.417" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.96667">
+                        <position x="-341.701" y="1000" z="266.509" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2">
+                        <position x="-325.873" y="1000" z="287.653" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.03333">
+                        <position x="-308.756" y="1000" z="307.768" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.06667">
+                        <position x="-290.42" y="1000" z="326.778" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.1">
+                        <position x="-270.935" y="1000" z="344.609" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.13333">
+                        <position x="-250.373" y="1000" z="361.187" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.16667">
+                        <position x="-228.815" y="1000" z="376.446" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.2">
+                        <position x="-206.344" y="1000" z="390.326" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.23333">
+                        <position x="-183.046" y="1000" z="402.768" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.26667">
+                        <position x="-159.011" y="1000" z="413.718" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.3">
+                        <position x="-134.332" y="1000" z="423.128" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.33333">
+                        <position x="-109.108" y="1000" z="430.957" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.36667">
+                        <position x="-83.4381" y="1000" z="437.175" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.4">
+                        <position x="-57.4269" y="1000" z="441.758" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.43333">
+                        <position x="-31.1789" y="1000" z="444.698" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.46667">
+                        <position x="-4.79801" y="1000" z="445.986" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.5">
+                        <position x="21.6118" y="1000" z="445.632" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.53333">
+                        <position x="47.9485" y="1000" z="443.642" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.56667">
+                        <position x="74.1086" y="1000" z="440.006" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.6">
+                        <position x="99.9874" y="1000" z="434.727" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.63333">
+                        <position x="125.48" y="1000" z="427.822" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.66667">
+                        <position x="150.485" y="1000" z="419.316" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.7">
+                        <position x="174.901" y="1000" z="409.245" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.73333">
+                        <position x="198.633" y="1000" z="397.654" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.76667">
+                        <position x="221.589" y="1000" z="384.592" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.8">
+                        <position x="243.681" y="1000" z="370.117" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.83333">
+                        <position x="264.825" y="1000" z="354.288" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.86667">
+                        <position x="284.94" y="1000" z="337.172" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.9">
+                        <position x="303.949" y="1000" z="318.835" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.93333">
+                        <position x="321.78" y="1000" z="299.35" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.96667">
+                        <position x="338.359" y="1000" z="278.789" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3">
+                        <position x="353.618" y="1000" z="257.231" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.03333">
+                        <position x="367.498" y="1000" z="234.759" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.06667">
+                        <position x="379.94" y="1000" z="211.462" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.1">
+                        <position x="390.889" y="1000" z="187.426" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.13333">
+                        <position x="400.299" y="1000" z="162.748" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.16667">
+                        <position x="408.129" y="1000" z="137.523" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.2">
+                        <position x="414.346" y="1000" z="111.854" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.23333">
+                        <position x="418.93" y="1000" z="85.8425" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.26667">
+                        <position x="421.87" y="1000" z="59.5945" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.3">
+                        <position x="423.158" y="1000" z="33.2136" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.33333">
+                        <position x="422.804" y="1000" z="6.80385" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                </animation>
+            </animations>
+        </light>
+
+    </lights>
+    <cameras>
+
+    </cameras>
+    <entities>
+	
+        <entity name="Plane01" hidden="false" filename="ground.mesh" CastShadows="no" ReceiveShadows="no">
+            <position x="-3.20215" y="-172.8" z="-1.35986" />
+            <rotation x="0" y="-0.381989" z="0" w="-0.924167" />
+            <scale x="3" y="3" z="3" />
+        </entity>	
+	
+        
+	<entity name="chestnutTrunkNode2" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="0" y="0.0" z="0" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+
+	<!--
+	<entity name="chestnutTrunkNode05" hidden="false" filename="chestnutTrunkLevels345.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="0" y="0.0" z="0" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+	-->
+
+        <entity name="chestnutTrunkNode05" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="0" y="0.0" z="-1079.1" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode14" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-663.594" y="0.0" z="-604.582" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode04" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-497.571" y="0.0" z="-504.222" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode15" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="218.023" y="0.0" z="-684.798" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode06" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="95.6585" y="0.0" z="-247.035" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode03" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-874.418" y="0.0" z="296.152" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode13" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-645.468" y="0.0" z="276.211" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode09" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-374.593" y="0.0" z="175.918" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode12" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-134.092" y="0.0" z="423.524" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode10" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-30.5922" y="0.0" z="804.431" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode11" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="707.207" y="0.0" z="434.285" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode07" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="932.902" y="0.0" z="38.6128" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode16" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="447.349" y="0.0" z="33.6902" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode08" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="293.106" y="0.0" z="40.3622" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode17" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-199.853" y="0.0" z="-211.619" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode18" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-199.853" y="0.0" z="-618.765" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode19" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-428.843" y="0.0" z="-948.965" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode20" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-362.112" y="0.0" z="-1230.94" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode21" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-38.4516" y="0.0" z="-1477.95" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode22" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="295.275" y="0.0" z="-1268.18" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode23" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="593.794" y="0.0" z="-1022.59" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode24" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="488.887" y="0.0" z="-629.196" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode25" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="605.647" y="0.0" z="-307.987" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode26" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="700.983" y="0.0" z="41.257" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode27" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="479.076" y="0.0" z="314.493" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode28" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="105.379" y="0.0" z="297.166" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode29" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="82.8663" y="0.0" z="459.88" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode30" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="281.79" y="0.0" z="813.872" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode31" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="356.272" y="0.0" z="1040.39" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode32" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-40.5859" y="0.0" z="1131.33" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode33" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-208.098" y="0.0" z="892.272" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode34" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-385.105" y="0.0" z="581.74" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode35" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-744.004" y="0.0" z="513.124" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode36" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1032.28" y="0.0" z="601.343" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode37" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1271.26" y="0.0" z="271.713" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode38" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1104.19" y="0.0" z="76.1075" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode39" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-710.954" y="0.0" z="-23.6659" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode40" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-480.61" y="0.0" z="-122.267" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode41" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-801.057" y="0.0" z="-373.427" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode42" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1171.43" y="0.0" z="-390.206" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode43" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1566.42" y="0.0" z="-291.459" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode44" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1682.17" y="0.0" z="-9.62393" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode45" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1615.23" y="0.0" z="391.982" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode46" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1389.93" y="0.0" z="730.21" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode47" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1089.2" y="0.0" z="1001.58" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode48" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-820.957" y="0.0" z="1053.59" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode49" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-628.222" y="0.0" z="865.497" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode50" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-332.108" y="0.0" z="1132.27" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode51" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="18.4145" y="0.0" z="1339.4" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode52" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="402.036" y="0.0" z="1288.75" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode53" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="757.799" y="0.0" z="1145.9" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode54" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="838.709" y="0.0" z="753.325" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode55" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="1090.68" y="0.0" z="433.515" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode56" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="1220.04" y="0.0" z="56.5284" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode57" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="1261.38" y="0.0" z="-317.64" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode58" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="873.134" y="0.0" z="-440.244" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode59" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="979.851" y="0.0" z="-704.186" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode60" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="891.169" y="0.0" z="-846.816" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode61" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="484.087" y="0.0" z="-839.547" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode62" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="108.844" y="0.0" z="-894.154" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode63" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="314.941" y="0.0" z="-1245.28" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode64" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="526.834" y="0.0" z="-1413.76" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode65" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="754.777" y="0.0" z="-1076.41" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode66" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="982.721" y="0.0" z="-739.049" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode67" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="1210.66" y="0.0" z="-592.586" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode68" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="1438.61" y="0.0" z="-929.942" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode69" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="1236.36" y="0.0" z="-1204.05" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode70" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="920.964" y="0.0" z="-1461.52" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode71" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="545.787" y="0.0" z="-1581.59" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode72" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="142.409" y="0.0" z="-1636.85" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode73" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-253.638" y="0.0" z="-1642.76" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode74" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-623.526" y="0.0" z="-1472.61" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode75" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-991.23" y="0.0" z="-1297.92" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode76" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1355.39" y="0.0" z="-1115.84" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode77" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1273.33" y="0.0" z="-979.501" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode78" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-879.796" y="0.0" z="-875.094" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode79" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1192.41" y="0.0" z="-774.247" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode80" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1586.59" y="0.0" z="-673.583" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode81" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-1368.07" y="0.0" z="-486.81" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+        <entity name="chestnutTrunkNode82" hidden="false" filename="chestnutTrunkLevel1Scene.mesh" CastShadows="yes" ReceiveShadows="no">
+            <position x="-974.837" y="0.0" z="-592.313" />
+            
+            <scale x="3" y="3" z="3" />
+        </entity>
+
+    </entities>
+</oe_scene>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/scene/scene.OSM
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/scene/scene.OSM	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/scene/scene.OSM	(revision 1493)
@@ -0,0 +1,542 @@
+<oe_scene>
+    <sceneManager type="0" />
+    <bkgcolor r="0" g="0" b="0" />
+    <lightColor r="1.0" g="0.1" b="1.0" />
+    <shadowTechnique type="0" tex_size="512" tex_count="1">
+        <color r="0" g="0" b="1" />
+    </shadowTechnique>
+    <skyTechnique type="2" material="CloudsSkyBox" drawFirst="yes" tiling="10" scale="2000" dist="5000" bow="0" xSegments="16" ySegments="16" />
+    <lights>
+        <light name="Light01" type="directional" on="true" CastShadows="yes" hotspot="43" falloff="45" intensity="1.0">
+
+            <position x="422.804" y="1000" z="6.80393" />	    
+	    <rotation x="0" y="0" z="0" w="-1" />
+            <scale x="3" y="3" z="3" />
+            <color r="1" g="1" b="1" />
+            <specular r="1" g="1" b="1" />
+            <target name="Light01.Target">
+                <position x="0" y="0" z="0" />
+                <rotation x="0" y="0" z="0" w="-1" />
+                <scale x="3" y="3" z="3" />
+            </target>
+            <animations>
+                <animation name="Walk" loop="false" length="3.33333">
+                    <keyframe time="0">
+                        <position x="422.804" y="1000" z="6.80393" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.0333333">
+                        <position x="420.814" y="1000" z="-19.5328" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.0666667">
+                        <position x="417.178" y="1000" z="-45.6929" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.1">
+                        <position x="411.899" y="1000" z="-71.5717" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.133333">
+                        <position x="404.994" y="1000" z="-97.0647" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.166667">
+                        <position x="396.488" y="1000" z="-122.069" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.2">
+                        <position x="386.417" y="1000" z="-146.486" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.233333">
+                        <position x="374.826" y="1000" z="-170.218" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.266667">
+                        <position x="361.764" y="1000" z="-193.174" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.3">
+                        <position x="347.289" y="1000" z="-215.265" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.333333">
+                        <position x="331.46" y="1000" z="-236.409" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.366667">
+                        <position x="314.344" y="1000" z="-256.524" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.4">
+                        <position x="296.007" y="1000" z="-275.534" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.433333">
+                        <position x="276.522" y="1000" z="-293.365" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.466667">
+                        <position x="255.961" y="1000" z="-309.943" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.5">
+                        <position x="234.402" y="1000" z="-325.202" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.533333">
+                        <position x="211.931" y="1000" z="-339.082" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.566667">
+                        <position x="188.633" y="1000" z="-351.524" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.6">
+                        <position x="164.598" y="1000" z="-362.474" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.633333">
+                        <position x="139.92" y="1000" z="-371.884" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.666667">
+                        <position x="114.695" y="1000" z="-379.713" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.7">
+                        <position x="89.0256" y="1000" z="-385.931" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.733333">
+                        <position x="63.0145" y="1000" z="-390.515" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.766667">
+                        <position x="36.7664" y="1000" z="-393.454" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.8">
+                        <position x="10.3855" y="1000" z="-394.742" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.833333">
+                        <position x="-16.0242" y="1000" z="-394.388" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.866667">
+                        <position x="-42.3609" y="1000" z="-392.398" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.9">
+                        <position x="-68.5211" y="1000" z="-388.762" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.933333">
+                        <position x="-94.3999" y="1000" z="-383.484" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="0.966667">
+                        <position x="-119.893" y="1000" z="-376.578" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1">
+                        <position x="-144.897" y="1000" z="-368.072" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.03333">
+                        <position x="-169.314" y="1000" z="-358.002" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.06667">
+                        <position x="-193.046" y="1000" z="-346.41" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.1">
+                        <position x="-216.002" y="1000" z="-333.349" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.13333">
+                        <position x="-238.093" y="1000" z="-318.873" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.16667">
+                        <position x="-259.237" y="1000" z="-303.045" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.2">
+                        <position x="-279.352" y="1000" z="-285.928" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.23333">
+                        <position x="-298.362" y="1000" z="-267.592" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.26667">
+                        <position x="-316.193" y="1000" z="-248.107" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.3">
+                        <position x="-332.771" y="1000" z="-227.545" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.33333">
+                        <position x="-348.031" y="1000" z="-205.987" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.36667">
+                        <position x="-361.91" y="1000" z="-183.516" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.4">
+                        <position x="-374.352" y="1000" z="-160.218" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.43333">
+                        <position x="-385.302" y="1000" z="-136.183" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.46667">
+                        <position x="-394.712" y="1000" z="-111.504" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.5">
+                        <position x="-402.541" y="1000" z="-86.2795" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.53333">
+                        <position x="-408.759" y="1000" z="-60.6099" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.56667">
+                        <position x="-413.343" y="1000" z="-34.5989" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.6">
+                        <position x="-416.283" y="1000" z="-8.35089" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.63333">
+                        <position x="-417.571" y="1000" z="18.0301" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.66667">
+                        <position x="-417.217" y="1000" z="44.44" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.7">
+                        <position x="-415.226" y="1000" z="70.7767" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.73333">
+                        <position x="-411.59" y="1000" z="96.9368" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.76667">
+                        <position x="-406.312" y="1000" z="122.816" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.8">
+                        <position x="-399.406" y="1000" z="148.309" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.83333">
+                        <position x="-390.9" y="1000" z="173.313" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.86667">
+                        <position x="-380.83" y="1000" z="197.729" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.9">
+                        <position x="-369.238" y="1000" z="221.462" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.93333">
+                        <position x="-356.177" y="1000" z="244.417" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="1.96667">
+                        <position x="-341.701" y="1000" z="266.509" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2">
+                        <position x="-325.873" y="1000" z="287.653" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.03333">
+                        <position x="-308.756" y="1000" z="307.768" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.06667">
+                        <position x="-290.42" y="1000" z="326.778" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.1">
+                        <position x="-270.935" y="1000" z="344.609" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.13333">
+                        <position x="-250.373" y="1000" z="361.187" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.16667">
+                        <position x="-228.815" y="1000" z="376.446" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.2">
+                        <position x="-206.344" y="1000" z="390.326" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.23333">
+                        <position x="-183.046" y="1000" z="402.768" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.26667">
+                        <position x="-159.011" y="1000" z="413.718" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.3">
+                        <position x="-134.332" y="1000" z="423.128" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.33333">
+                        <position x="-109.108" y="1000" z="430.957" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.36667">
+                        <position x="-83.4381" y="1000" z="437.175" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.4">
+                        <position x="-57.4269" y="1000" z="441.758" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.43333">
+                        <position x="-31.1789" y="1000" z="444.698" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.46667">
+                        <position x="-4.79801" y="1000" z="445.986" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.5">
+                        <position x="21.6118" y="1000" z="445.632" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.53333">
+                        <position x="47.9485" y="1000" z="443.642" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.56667">
+                        <position x="74.1086" y="1000" z="440.006" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.6">
+                        <position x="99.9874" y="1000" z="434.727" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.63333">
+                        <position x="125.48" y="1000" z="427.822" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.66667">
+                        <position x="150.485" y="1000" z="419.316" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.7">
+                        <position x="174.901" y="1000" z="409.245" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.73333">
+                        <position x="198.633" y="1000" z="397.654" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.76667">
+                        <position x="221.589" y="1000" z="384.592" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.8">
+                        <position x="243.681" y="1000" z="370.117" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.83333">
+                        <position x="264.825" y="1000" z="354.288" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.86667">
+                        <position x="284.94" y="1000" z="337.172" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.9">
+                        <position x="303.949" y="1000" z="318.835" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.93333">
+                        <position x="321.78" y="1000" z="299.35" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="2.96667">
+                        <position x="338.359" y="1000" z="278.789" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3">
+                        <position x="353.618" y="1000" z="257.231" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.03333">
+                        <position x="367.498" y="1000" z="234.759" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.06667">
+                        <position x="379.94" y="1000" z="211.462" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.1">
+                        <position x="390.889" y="1000" z="187.426" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.13333">
+                        <position x="400.299" y="1000" z="162.748" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.16667">
+                        <position x="408.129" y="1000" z="137.523" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.2">
+                        <position x="414.346" y="1000" z="111.854" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.23333">
+                        <position x="418.93" y="1000" z="85.8425" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.26667">
+                        <position x="421.87" y="1000" z="59.5945" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.3">
+                        <position x="423.158" y="1000" z="33.2136" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                    <keyframe time="3.33333">
+                        <position x="422.804" y="1000" z="6.80385" />
+                        <rotation x="0" y="0" z="0" w="-1" />
+                        <scale x="3" y="3" z="3" />
+                    </keyframe>
+                </animation>
+            </animations>
+        </light>
+
+    </lights>
+    
+    <cameras>
+
+    </cameras>
+    
+    <entities>
+
+    </entities>
+</oe_scene>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/scene/configScene.cfg.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/scene/configScene.cfg.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/media/scene/configScene.cfg.bak	(revision 1493)
@@ -0,0 +1,1 @@
+NumTrees=500
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/ExtendedCamera.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/ExtendedCamera.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/ExtendedCamera.h	(revision 1493)
@@ -0,0 +1,190 @@
+// Generic Character class
+class Character {
+// Attributes ------------------------------------------------------------------------------
+	protected:
+		SceneNode *mMainNode; // Main character node
+		SceneNode *mSightNode; // "Sight" node - The character is supposed to be looking here
+		SceneNode *mCameraNode; // Node for the chase camera
+		Entity *mEntity; // Character entity
+		SceneManager *mSceneMgr;
+	public:
+// Methods ---------------------------------------------------------------------------------
+	protected:
+	public:
+		// Updates the character (movement...)
+		virtual void update (Real elapsedTime, InputReader *input) = 0;
+		// The three methods below returns the two camera-related nodes, 
+		// and the current position of the character (for the 1st person camera)
+		SceneNode *getSightNode () {
+			return mSightNode;
+		}
+		SceneNode *getCameraNode () {
+			return mCameraNode;
+		}
+		Vector3 getWorldPosition () {
+			return mMainNode->getWorldPosition ();
+		}
+
+		Entity* getEntity()
+		{
+			return mEntity;
+		}
+};
+
+// Specialization of the Character class - Our dear Ogre :D
+class OgreCharacter : public Character {
+// Attributes ------------------------------------------------------------------------------
+	protected:
+		String mName;
+	public:
+// Methods ---------------------------------------------------------------------------------
+	protected:
+	public:
+		OgreCharacter (String name, SceneManager *sceneMgr) {
+			// Setup basic member references
+			mName = name;
+			mSceneMgr = sceneMgr;
+
+			// Setup basic node structure to handle 3rd person cameras
+			mMainNode = mSceneMgr->getRootSceneNode ()->createChildSceneNode (mName);
+			mSightNode = mMainNode->createChildSceneNode (mName + "_sight", Vector3 (0, 0, 100));
+			mCameraNode = mMainNode->createChildSceneNode (mName + "_camera", Vector3 (0, 50, -100));
+			
+
+			// Give this character a shape :)
+			mEntity = mSceneMgr->createEntity (mName, "butterfly_bones_animated.mesh");
+			mMainNode->attachObject(mEntity);
+			
+		}
+		~OgreCharacter () {
+			mMainNode->detachAllObjects ();
+			delete mEntity;
+			mMainNode->removeAndDestroyAllChildren ();
+			mSceneMgr->destroySceneNode (mName);
+		}
+
+		void update (Real elapsedTime, InputReader *input) {
+			// Handle movement
+			if (input->isKeyDown (KC_W)) {
+				mMainNode->translate (mMainNode->getOrientation () * Vector3 (0, 0, 100.0 * elapsedTime));
+			}
+
+			if (input->isKeyDown (KC_S)) {
+				mMainNode->translate (mMainNode->getOrientation () * Vector3 (0, 0, -50.0 * elapsedTime));
+			}
+
+			if (input->isKeyDown (KC_PGUP)) {
+				mMainNode->translate (mMainNode->getOrientation () * Vector3 (0, 50 * elapsedTime, 0));
+			}
+
+			if (input->isKeyDown (KC_PGDOWN)) {
+				mMainNode->translate (mMainNode->getOrientation () * Vector3 (0, -50 * elapsedTime, 0));
+			}
+
+			if (input->isKeyDown (KC_A)) {
+				mMainNode->yaw (Radian (2 * elapsedTime));
+			}
+			if (input->isKeyDown (KC_D)) {
+				mMainNode->yaw (Radian (-2 * elapsedTime));
+			}
+
+			Degree mRotX = Degree(-input->getMouseRelativeX() * 0.13);
+			Degree mRotY = Degree(-input->getMouseRelativeY() * 0.13);
+			mMainNode->yaw(mRotX);
+			mMainNode->pitch(mRotY);
+		}
+
+		// Change visibility - Useful for 1st person view ;)
+		void setVisible (bool visible) {
+			mMainNode->setVisible (visible);
+		}
+};
+
+// Our extended camera class
+class ExtendedCamera {
+// Attributes ------------------------------------------------------------------------------
+	protected:
+		SceneNode *mTargetNode; // The camera target
+		SceneNode *mCameraNode; // The camera itself
+		Camera *mCamera; // Ogre camera
+
+		SceneManager *mSceneMgr;
+		String mName;
+
+		bool mOwnCamera; // To know if the ogre camera binded has been created outside or inside of this class
+
+		Real mTightness; // Determines the movement of the camera - 1 means tight movement, while 0 means no movement
+	public:
+// Methods ---------------------------------------------------------------------------------
+	protected:
+	public:
+		ExtendedCamera (String name, SceneManager *sceneMgr, Camera *camera = 0) {
+			// Basic member references setup
+			mName = name;
+			mSceneMgr = sceneMgr;
+
+			// Create the camera's node structure
+			mCameraNode = mSceneMgr->getRootSceneNode ()->createChildSceneNode (mName);
+			mTargetNode = mSceneMgr->getRootSceneNode ()->createChildSceneNode (mName + "_target");
+			mCameraNode->setAutoTracking (true, mTargetNode); // The camera will always look at the camera target
+			mCameraNode->setFixedYawAxis (true); // Needed because of auto tracking
+
+			// Create our camera if it wasn't passed as a parameter
+			if (camera == 0) {
+				mCamera = mSceneMgr->createCamera (mName);
+				mOwnCamera = true;
+			}
+			else {
+				mCamera = camera;
+				mOwnCamera = false;
+			}
+
+			mCamera->setFOVy(Radian(Degree(12.0)));
+			// ... and attach the Ogre camera to the camera node
+			mCameraNode->attachObject (mCamera);
+
+			// Default tightness
+			mTightness = 0.01f;
+		}
+		~ExtendedCamera () {
+			mCameraNode->detachAllObjects ();
+			if (mOwnCamera)
+				delete mCamera;
+			mSceneMgr->destroySceneNode (mName);
+			mSceneMgr->destroySceneNode (mName + "_target");
+		}
+
+		void setFOVy(Ogre::Radian fovy)
+		{
+			mCamera->setFOVy(Radian(Degree(fovy)));
+		}
+
+		void setTightness (Real tightness) {
+			mTightness = tightness;
+		}
+
+		Real getTightness () {
+			return mTightness;
+		}
+
+		Vector3 getCameraPosition () {
+			return mCameraNode->getPosition ();
+		}
+
+		void instantUpdate (Vector3 cameraPosition, Vector3 targetPosition) {
+			mCameraNode->setPosition (cameraPosition);
+			mTargetNode->setPosition (targetPosition);
+		}
+
+		void update (Real elapsedTime, Vector3 cameraPosition, Vector3 targetPosition) {
+			// Handle movement
+			Vector3 displacement;
+
+			displacement = (cameraPosition - mCameraNode->getPosition ()) * mTightness;
+			mCameraNode->translate (displacement);
+
+			displacement = (targetPosition - mTargetNode->getPosition ()) * mTightness;
+			mTargetNode->translate (displacement);
+		}
+};
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/OgreOSMScene.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/OgreOSMScene.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/OgreOSMScene.h	(revision 1493)
@@ -0,0 +1,95 @@
+/**********************************************************************
+ *<
+	oExporter plugin Private Beta (see License.txt)
+
+	FILE: ogreAnimationCompiler.h
+
+	DESCRIPTION: OE_XMLScene reader (oe_scene) include header	
+
+	IMPLEMENTED BY: Lioric
+
+	HISTORY: 
+
+		Original implementation by Lasse Tassing (Channex)
+		2005 ITE ApS, Lasse Tassing
+
+ *>	Copyright (c) 2005, All Rights Reserved.
+ **********************************************************************/
+
+
+#ifndef __OGRE_XML_SCENE__
+#define __OGRE_XML_SCENE__
+
+
+#include "Ogre.h"
+#include "OgreSharedPtr.h"
+#include "tinyxml.h"
+
+#include "IOSMSceneCallbacks.h"
+
+class TiXmlDocumentPtr : public Ogre::SharedPtr<TiXmlDocument> {
+public:
+	TiXmlDocumentPtr() : Ogre::SharedPtr<TiXmlDocument>() {}	
+	explicit TiXmlDocumentPtr(TiXmlDocument* rep) : Ogre::SharedPtr<TiXmlDocument>(rep) {}
+	
+};
+
+class OSMScene
+{
+public:
+
+	typedef std::vector<Ogre::Camera*>	CameraList;
+	typedef std::vector<Ogre::Light*>	LightList;
+	typedef std::vector<Ogre::Entity*>	EntityList;
+
+	OSMScene(Ogre::SceneManager* pSceneMgr = 0, Ogre::RenderWindow* win = 0);
+	~OSMScene(void);
+
+	// Initialise
+	bool	initialise(const char *pszXMLFile, OSMSceneCallbacks* pCallbacks = NULL);
+
+	// Declare all resources used in the scene
+	void	declareResources(void);
+
+	// Create scene, optionally attaching it to a parent node
+	bool	createScene(Ogre::SceneNode *pParent = NULL);
+
+	// Get list of cameras in this scene
+	CameraList&	getCameraList(void);
+
+	// Get list of lights in this scene
+	LightList&	getLightList(void);
+
+	// Get list of lights in this scene
+	EntityList&	getEntityList(void);
+
+	// Get created scene manager
+	Ogre::SceneManager* getSceneManager(void) { return mSceneMgr; }
+
+private:
+	// Create node from information
+	Ogre::SceneNode* createNode(TiXmlElement* pElem, Ogre::SceneNode *pSceneRoot);
+
+	// Creation helpers
+	void	setSceneProperties(TiXmlElement* sceneProp);
+	void	createEntities(TiXmlElement* pEntityNode, Ogre::SceneNode *pSceneRoot);
+	void	createLights(TiXmlElement* pLightNode, Ogre::SceneNode *pSceneRoot);
+	void	createCameras(TiXmlElement* pCameraNode, Ogre::SceneNode *pSceneRoot);
+
+	// Created objects
+	CameraList	mCameras;
+	LightList	mLights;
+	EntityList	mEntities;
+
+	// Callback interface
+	OSMSceneCallbacks* mCallbacks;
+
+	// Scene manager
+	Ogre::SceneManager* mSceneMgr;
+	Ogre::RenderWindow* mWindow;
+
+	// Scene XML document
+	TiXmlDocumentPtr mXMLDoc;
+};
+
+#endif
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/LightComposite.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/LightComposite.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/LightComposite.h	(revision 1493)
@@ -0,0 +1,445 @@
+#include <OgreLight.h>
+#include "windows.h"
+//#include <imdebug.h>
+#include <OgreHardwarePixelBuffer.h>
+#include <OgrePixelFormat.h>
+
+# define MAX(A,B) ((A)>(B)?(A):(B)) /* Definición macro de Max */
+# define MIN(A,B) ((A)>(B)?(B):(A)) /* Definición macro de Min */
+
+class LightComposite
+{
+protected:
+	std::vector<Light*> mLightList;
+	bool mShadowMapOverlayEnabled;
+	Overlay* mShadowMapOverlay;
+	Overlay* mLightingInfo;
+	Light *mCurrentLight;
+	unsigned int idCurrentLight;
+	bool mShadowsEnabled;
+	SceneManager *mSceneMgr;
+	Real exposure;
+	Camera *mCamera;
+	ColourValue mDayLight;
+	ColourValue mNightLight;
+	ColourValue mFactorLight;
+	ColourValue mRangeLight;
+
+public:
+
+	ColourValue getDayLight()
+	{
+		return mDayLight;
+	}
+
+	ColourValue getNightLight()
+	{
+		return mNightLight;
+	}
+
+	void init(SceneManager *sceneMgr, Camera *camera)
+	{
+		mShadowMapOverlay = OverlayManager::getSingleton().getByName("shadowMapMain");  
+		mLightingInfo = OverlayManager::getSingleton().getByName("lightOptions");   		
+		mCurrentLight = 0;
+		mShadowMapOverlayEnabled = true;
+
+		Ogre::String shadowsEnabled;
+		Ogre::ConfigFile config;
+		config.load("configScene.cfg");
+		Ogre::String sShadowsEnabled = config.getSetting("ShadowsEnabled");
+		mShadowsEnabled = Ogre::StringConverter::parseBool(sShadowsEnabled);
+
+		idCurrentLight = 0;
+		exposure = 4.5;
+		mSceneMgr = sceneMgr;
+		if (mShadowsEnabled)
+		{
+			mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE);	
+
+			mSceneMgr->setShadowDirectionalLightExtrusionDistance(10000.0);
+			mSceneMgr->setShadowFarDistance(2000);
+			mSceneMgr->setShadowTextureFadeStart(0.8);
+			mSceneMgr->setShadowTextureFadeEnd(0.9);
+
+
+			{
+				Camera* pTextureCam = mSceneMgr->getCamera("Ogre/ShadowTextureCam0");
+				pTextureCam->setNearClipDistance(5.0);
+				pTextureCam->setFarClipDistance(12000);
+			}
+		}
+		mCamera = camera;
+		mFactorLight = (mDayLight - mNightLight) / 1000.0;
+		mCamera->getViewport()->setBackgroundColour(mSceneMgr->getAmbientLight() * mDayLight);
+		mRangeLight = mDayLight - mNightLight;
+	}
+
+	ColourValue getRangeLight()
+	{
+		return mRangeLight;
+	}
+
+	void showDebugShadowMap(int idShadowMap)
+	{
+		TexturePtr tex = TextureManager::getSingleton().getByName("Ogre/ShadowTexture" + StringConverter::toString(idShadowMap));
+		HardwarePixelBufferSharedPtr hpb = tex->getBuffer(0,0);
+		LogManager::getSingleton().logMessage(" -- WIDTH = " + StringConverter::toString(hpb->getWidth()));
+		LogManager::getSingleton().logMessage(" -- HEIGHT = " + StringConverter::toString(hpb->getHeight()));		
+		LogManager::getSingleton().logMessage(" -- DEPTH = " + StringConverter::toString(hpb->getDepth()));
+		LogManager::getSingleton().logMessage(" -- FORMAT = " + StringConverter::toString(hpb->getFormat()));
+		LogManager::getSingleton().logMessage(" -- SIZE = " + StringConverter::toString(hpb->getSizeInBytes()));
+		float *tex01 = new float[tex->getHeight()*tex->getWidth()*4];
+		PixelBox pBox(tex->getWidth(),tex->getHeight(),tex->getDepth(),PF_FLOAT32_RGBA,tex01);
+		LogManager::getSingleton().logMessage(" --PBOX WIDTH = " + StringConverter::toString(pBox.getWidth()));
+		LogManager::getSingleton().logMessage(" --PBOX HEIGHT = " + StringConverter::toString(pBox.getHeight()));		
+		hpb->blitToMemory(pBox);	
+		//imdebug("rgba w=%d h=%d %p b=32f",pBox.getWidth(),pBox.getHeight(),pBox.data);
+		delete tex01;
+	}
+
+	void setDayLight(ColourValue dayLight)
+	{
+		mDayLight = dayLight;
+	}
+
+	void setNightLight(ColourValue nightLight)
+	{
+		mNightLight = nightLight;
+	}
+
+	void setAmbientColour(ColourValue colour)
+	{
+		mSceneMgr->setAmbientLight(colour);
+		MaterialPtr materialSky = MaterialManager::getSingleton().getByName("Examples/SpaceSkyPlaneNight");
+		if (!materialSky.isNull())
+		{
+			if (materialSky->getTechnique(0)->getPass(0)->isProgrammable())
+			{
+				GpuProgramParametersSharedPtr fragParams = materialSky->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
+				ColourValue ambientColour = mSceneMgr->getAmbientLight();
+				fragParams->setNamedConstant("ambientlight",Vector4(ambientColour.val[0],ambientColour.val[1],ambientColour.val[2],ambientColour.val[3]));
+			}
+		}		
+		mCamera->getViewport()->setBackgroundColour(mSceneMgr->getAmbientLight() * ColourValue(0.85,0.88,0.96));
+	}
+
+	void setCurrentLight(unsigned int idLight)
+	{
+		mCurrentLight = mLightList[idLight];
+	}
+
+	void update(InputReader *input)
+	{
+		/*
+		if (input->isKeyDown(KC_RETURN))
+		{
+			if (!mShadowsEnabled)
+			{
+				mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE);
+				mShadowsEnabled = true;
+			}
+			else
+			{
+				mSceneMgr->setShadowTechnique(SHADOWTYPE_NONE);
+				mShadowsEnabled = false;
+			}
+		}
+
+		if (input->isKeyDown(KC_SPACE))
+		{
+			idCurrentLight++;
+			if (idCurrentLight == mLightList.size())
+			{
+				idCurrentLight = 0;
+			}
+		}
+
+		if (input->isKeyDown(KC_Q))
+		{
+			exposure = MIN(exposure+0.05,10.0);
+	        OverlayElement *oInfo = OverlayManager::getSingleton().getOverlayElement("ObscuranceExposure");
+			oInfo->setCaption("Obscurance Exposure: " + StringConverter::toString(exposure));
+		}
+		if (input->isKeyDown(KC_E))
+		{
+			exposure = MAX(exposure-0.05,-10.0);
+	        OverlayElement *oInfo = OverlayManager::getSingleton().getOverlayElement("ObscuranceExposure");
+			oInfo->setCaption("Obscurance Exposure: " + StringConverter::toString(exposure));
+		}
+
+		if (input->isKeyDown(KC_F1))
+		{
+			mCurrentLight->setDiffuseColour(MIN(mCurrentLight->getDiffuseColour().r+0.05,1.0),MIN(mCurrentLight->getDiffuseColour().g,1.0),MIN(mCurrentLight->getDiffuseColour().b,1.0));
+			OverlayElement *dInfo = OverlayManager::getSingleton().getOverlayElement("LightDiffuseColour");
+			dInfo->setCaption("Diffuse Col.: " + StringConverter::toString(mCurrentLight->getDiffuseColour()));
+		}
+		if (input->isKeyDown(KC_F2))
+		{
+			mCurrentLight->setDiffuseColour(MIN(mCurrentLight->getDiffuseColour().r,1.0),MIN(mCurrentLight->getDiffuseColour().g+0.05,1.0),MIN(mCurrentLight->getDiffuseColour().b,1.0));
+			OverlayElement *dInfo = OverlayManager::getSingleton().getOverlayElement("LightDiffuseColour");
+			dInfo->setCaption("Diffuse Col.: " + StringConverter::toString(mCurrentLight->getDiffuseColour()));
+		}
+		if (input->isKeyDown(KC_F3))
+		{
+			mCurrentLight->setDiffuseColour(MIN(mCurrentLight->getDiffuseColour().r,1.0),MIN(mCurrentLight->getDiffuseColour().g,1.0),MIN(mCurrentLight->getDiffuseColour().b+0.05,1.0));
+			OverlayElement *dInfo = OverlayManager::getSingleton().getOverlayElement("LightDiffuseColour");
+			dInfo->setCaption("Diffuse Col.: " + StringConverter::toString(mCurrentLight->getDiffuseColour()));
+		}
+		if (input->isKeyDown(KC_F4))
+		{
+			mCurrentLight->setDiffuseColour(MAX(mCurrentLight->getDiffuseColour().r-0.05,0.0),MAX(mCurrentLight->getDiffuseColour().g,0.0),MAX(mCurrentLight->getDiffuseColour().b,0.0));
+			OverlayElement *dInfo = OverlayManager::getSingleton().getOverlayElement("LightDiffuseColour");
+			dInfo->setCaption("Diffuse Col.: " + StringConverter::toString(mCurrentLight->getDiffuseColour()));
+		}
+		if (input->isKeyDown(KC_F5))
+		{
+			mCurrentLight->setDiffuseColour(MAX(mCurrentLight->getDiffuseColour().r,0.0),MAX(mCurrentLight->getDiffuseColour().g-0.05,0.0),MAX(mCurrentLight->getDiffuseColour().b,0.0));
+			OverlayElement *dInfo = OverlayManager::getSingleton().getOverlayElement("LightDiffuseColour");
+			dInfo->setCaption("Diffuse Col.: " + StringConverter::toString(mCurrentLight->getDiffuseColour()));
+		}
+		if (input->isKeyDown(KC_F6))
+		{
+			mCurrentLight->setDiffuseColour(MAX(mCurrentLight->getDiffuseColour().r,0.0),MAX(mCurrentLight->getDiffuseColour().g,0.0),MAX(mCurrentLight->getDiffuseColour().b-0.05,0.0));
+			OverlayElement *dInfo = OverlayManager::getSingleton().getOverlayElement("LightDiffuseColour");
+			dInfo->setCaption("Diffuse Col.: " + StringConverter::toString(mCurrentLight->getDiffuseColour()));
+		}
+
+
+
+		if (input->isKeyDown(KC_F7))
+		{
+			mSceneMgr->setShadowColour(ColourValue(MIN(mSceneMgr->getShadowColour().r+0.05,1.0),MIN(mSceneMgr->getShadowColour().g,1.0),MIN(mSceneMgr->getShadowColour().b,1.0)));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightShadowColour");
+			sInfo->setCaption("Shadow Col.: " + StringConverter::toString(mSceneMgr->getShadowColour()));
+		}
+		if (input->isKeyDown(KC_F8))
+		{
+			mSceneMgr->setShadowColour(ColourValue(MIN(mSceneMgr->getShadowColour().r,1.0),MIN(mSceneMgr->getShadowColour().g+0.05,1.0),MIN(mSceneMgr->getShadowColour().b,1.0)));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightShadowColour");
+			sInfo->setCaption("Shadow Col.: " + StringConverter::toString(mSceneMgr->getShadowColour()));
+		}
+		if (input->isKeyDown(KC_F9))
+		{
+			mSceneMgr->setShadowColour(ColourValue(MIN(mSceneMgr->getShadowColour().r,1.0),MIN(mSceneMgr->getShadowColour().g,1.0),MIN(mSceneMgr->getShadowColour().b+0.05,1.0)));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightShadowColour");
+			sInfo->setCaption("Shadow Col.: " + StringConverter::toString(mSceneMgr->getShadowColour()));
+		}
+		if (input->isKeyDown(KC_F10))
+		{
+			mSceneMgr->setShadowColour(ColourValue(MAX(mSceneMgr->getShadowColour().r-0.05,0.0),MAX(mSceneMgr->getShadowColour().g,0.0),MAX(mSceneMgr->getShadowColour().b,0.0)));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightShadowColour");
+			sInfo->setCaption("Shadow Col.: " + StringConverter::toString(mSceneMgr->getShadowColour()));
+		}
+		if (input->isKeyDown(KC_F11))
+		{
+			mSceneMgr->setShadowColour(ColourValue(MAX(mSceneMgr->getShadowColour().r,0.0),MAX(mSceneMgr->getShadowColour().g-0.05,0.0),MAX(mSceneMgr->getShadowColour().b,0.0)));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightShadowColour");
+			sInfo->setCaption("Shadow Col.: " + StringConverter::toString(mSceneMgr->getShadowColour()));
+		}
+		if (input->isKeyDown(KC_F12))
+		{
+			mSceneMgr->setShadowColour(ColourValue(MAX(mSceneMgr->getShadowColour().r,0.0),MAX(mSceneMgr->getShadowColour().g,0.0),MAX(mSceneMgr->getShadowColour().b-0.05,0.0)));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightShadowColour");
+			sInfo->setCaption("Shadow Col.: " + StringConverter::toString(mSceneMgr->getShadowColour()));
+		}
+
+		if (input->isKeyDown(KC_1))
+		{
+			mCurrentLight->setSpecularColour(MIN(mCurrentLight->getSpecularColour().r+0.05,1.0),MIN(mCurrentLight->getSpecularColour().g,1.0),MIN(mCurrentLight->getSpecularColour().b,1.0));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightSpecularColour");
+			sInfo->setCaption("Specular Col.: " + StringConverter::toString(mCurrentLight->getSpecularColour()));
+		}
+		if (input->isKeyDown(KC_2))
+		{
+			mCurrentLight->setSpecularColour(MIN(mCurrentLight->getSpecularColour().r,1.0),MIN(mCurrentLight->getSpecularColour().g+0.05,1.0),MIN(mCurrentLight->getSpecularColour().b,1.0));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightSpecularColour");
+			sInfo->setCaption("Specular Col.: " + StringConverter::toString(mCurrentLight->getSpecularColour()));
+		}
+		if (input->isKeyDown(KC_3))
+		{
+			mCurrentLight->setSpecularColour(MIN(mCurrentLight->getSpecularColour().r,1.0),MIN(mCurrentLight->getSpecularColour().g,1.0),MIN(mCurrentLight->getSpecularColour().b+0.05,1.0));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightSpecularColour");
+			sInfo->setCaption("Specular Col.: " + StringConverter::toString(mCurrentLight->getSpecularColour()));
+		}
+		if (input->isKeyDown(KC_4))
+		{
+			mCurrentLight->setSpecularColour(MAX(mCurrentLight->getSpecularColour().r-0.05,0.0),MAX(mCurrentLight->getSpecularColour().g,0.0),MAX(mCurrentLight->getSpecularColour().b,0.0));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightSpecularColour");
+			sInfo->setCaption("Specular Col.: " + StringConverter::toString(mCurrentLight->getSpecularColour()));
+		}
+		if (input->isKeyDown(KC_5))
+		{
+			mCurrentLight->setSpecularColour(MAX(mCurrentLight->getSpecularColour().r,0.0),MAX(mCurrentLight->getSpecularColour().g-0.05,0.0),MAX(mCurrentLight->getSpecularColour().b,0.0));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightSpecularColour");
+			sInfo->setCaption("Specular Col.: " + StringConverter::toString(mCurrentLight->getSpecularColour()));
+		}
+		if (input->isKeyDown(KC_6))
+		{
+			mCurrentLight->setSpecularColour(MAX(mCurrentLight->getSpecularColour().r,0.0),MAX(mCurrentLight->getSpecularColour().g,0.0),MAX(mCurrentLight->getSpecularColour().b-0.05,0.0));
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("LightSpecularColour");
+			sInfo->setCaption("Specular Col.: " + StringConverter::toString(mCurrentLight->getSpecularColour()));
+		}
+
+		if (input->isKeyDown(KC_Z))
+		{
+			mSceneMgr->setAmbientLight(ColourValue(MIN(mSceneMgr->getAmbientLight().r+0.05,1.0),MIN(mSceneMgr->getAmbientLight().g,1.0),MIN(mSceneMgr->getAmbientLight().b,1.0)));
+			mCamera->getViewport()->setBackgroundColour(mSceneMgr->getAmbientLight() * mDayLight);
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("AmbientLight");
+			sInfo->setCaption("Ambient Col.: " + StringConverter::toString(mSceneMgr->getAmbientLight()));
+			MaterialPtr materialSky = MaterialManager::getSingleton().getByName("Examples/SpaceSkyPlaneNight");
+			if (!materialSky.isNull())
+			{
+				if (materialSky->getTechnique(0)->getPass(0)->isProgrammable())
+				{
+					GpuProgramParametersSharedPtr fragParams = materialSky->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
+					ColourValue ambientColour = mSceneMgr->getAmbientLight();
+					fragParams->setNamedConstant("ambientlight",Vector4(ambientColour.val[0],ambientColour.val[1],ambientColour.val[2],ambientColour.val[3]));
+				}
+			}
+		}
+		if (input->isKeyDown(KC_X))
+		{
+			mSceneMgr->setAmbientLight(ColourValue(MIN(mSceneMgr->getAmbientLight().r,1.0),MIN(mSceneMgr->getAmbientLight().g+0.05,1.0),MIN(mSceneMgr->getAmbientLight().b,1.0)));
+			mCamera->getViewport()->setBackgroundColour(mSceneMgr->getAmbientLight() * mDayLight);
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("AmbientLight");	
+			sInfo->setCaption("Ambient Col.: " + StringConverter::toString(mSceneMgr->getAmbientLight()));
+			MaterialPtr materialSky = MaterialManager::getSingleton().getByName("Examples/SpaceSkyPlaneNight");
+			if (!materialSky.isNull())
+			{
+				if (materialSky->getTechnique(0)->getPass(0)->isProgrammable())
+				{
+					GpuProgramParametersSharedPtr fragParams = materialSky->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
+					ColourValue ambientColour = mSceneMgr->getAmbientLight();
+					fragParams->setNamedConstant("ambientlight",Vector4(ambientColour.val[0],ambientColour.val[1],ambientColour.val[2],ambientColour.val[3]));
+				}
+			}
+		}
+		if (input->isKeyDown(KC_C))
+		{
+			mSceneMgr->setAmbientLight(ColourValue(MIN(mSceneMgr->getAmbientLight().r,1.0),MIN(mSceneMgr->getAmbientLight().g,1.0),MIN(mSceneMgr->getAmbientLight().b+0.05,1.0)));
+			mCamera->getViewport()->setBackgroundColour(mSceneMgr->getAmbientLight() * mDayLight);
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("AmbientLight");
+			sInfo->setCaption("Ambient Col.: " + StringConverter::toString(mSceneMgr->getAmbientLight()));
+			MaterialPtr materialSky = MaterialManager::getSingleton().getByName("Examples/SpaceSkyPlaneNight");
+			if (!materialSky.isNull())
+			{
+				if (materialSky->getTechnique(0)->getPass(0)->isProgrammable())
+				{
+					GpuProgramParametersSharedPtr fragParams = materialSky->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
+					ColourValue ambientColour = mSceneMgr->getAmbientLight();
+					fragParams->setNamedConstant("ambientlight",Vector4(ambientColour.val[0],ambientColour.val[1],ambientColour.val[2],ambientColour.val[3]));
+				}
+			}
+		}
+		if (input->isKeyDown(KC_V))
+		{
+			mSceneMgr->setAmbientLight(ColourValue(MAX(mSceneMgr->getAmbientLight().r-0.05,0.0),MAX(mSceneMgr->getAmbientLight().g,0.0),MAX(mSceneMgr->getAmbientLight().b,0.0)));
+			mCamera->getViewport()->setBackgroundColour(mSceneMgr->getAmbientLight() * mDayLight);
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("AmbientLight");
+			sInfo->setCaption("Ambient Col.: " + StringConverter::toString(mSceneMgr->getAmbientLight()));
+			MaterialPtr materialSky = MaterialManager::getSingleton().getByName("Examples/SpaceSkyPlaneNight");
+			if (!materialSky.isNull())
+			{
+				if (materialSky->getTechnique(0)->getPass(0)->isProgrammable())
+				{
+					GpuProgramParametersSharedPtr fragParams = materialSky->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
+					ColourValue ambientColour = mSceneMgr->getAmbientLight();
+					fragParams->setNamedConstant("ambientlight",Vector4(ambientColour.val[0],ambientColour.val[1],ambientColour.val[2],ambientColour.val[3]));
+				}
+			}
+		}
+		if (input->isKeyDown(KC_B))
+		{
+			mSceneMgr->setAmbientLight(ColourValue(MAX(mSceneMgr->getAmbientLight().r,0.0),MAX(mSceneMgr->getAmbientLight().g-0.05,0.0),MAX(mSceneMgr->getAmbientLight().b,0.0)));
+			mCamera->getViewport()->setBackgroundColour(mSceneMgr->getAmbientLight() * mDayLight);
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("AmbientLight");
+			sInfo->setCaption("Ambient Col.: " + StringConverter::toString(mSceneMgr->getAmbientLight()));
+			MaterialPtr materialSky = MaterialManager::getSingleton().getByName("Examples/SpaceSkyPlaneNight");
+			if (!materialSky.isNull())
+			{
+				if (materialSky->getTechnique(0)->getPass(0)->isProgrammable())
+				{
+					GpuProgramParametersSharedPtr fragParams = materialSky->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
+					ColourValue ambientColour = mSceneMgr->getAmbientLight();
+					fragParams->setNamedConstant("ambientlight",Vector4(ambientColour.val[0],ambientColour.val[1],ambientColour.val[2],ambientColour.val[3]));
+				}
+			}
+		}
+		if (input->isKeyDown(KC_N))
+		{
+			mSceneMgr->setAmbientLight(ColourValue(MAX(mSceneMgr->getAmbientLight().r,0.0),MAX(mSceneMgr->getAmbientLight().g,0.0),MAX(mSceneMgr->getAmbientLight().b-0.05,0.0)));
+			mCamera->getViewport()->setBackgroundColour(mSceneMgr->getAmbientLight() * mDayLight);
+			OverlayElement *sInfo = OverlayManager::getSingleton().getOverlayElement("AmbientLight");
+			sInfo->setCaption("Ambient Col.: " + StringConverter::toString(mSceneMgr->getAmbientLight()));
+			MaterialPtr materialSky = MaterialManager::getSingleton().getByName("Examples/SpaceSkyPlaneNight");
+			if (!materialSky.isNull())
+			{
+				if (materialSky->getTechnique(0)->getPass(0)->isProgrammable())
+				{
+					GpuProgramParametersSharedPtr fragParams = materialSky->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
+					ColourValue ambientColour = mSceneMgr->getAmbientLight();
+					fragParams->setNamedConstant("ambientlight",Vector4(ambientColour.val[0],ambientColour.val[1],ambientColour.val[2],ambientColour.val[3]));
+				}
+			}
+		}
+		*/
+	}
+
+	void createShadowMapOverlay(unsigned int idShadowMap)
+	{
+		MaterialPtr matShadowImage = MaterialManager::getSingleton().getByName("shadoMapImage");
+		matShadowImage->getTechnique(0)->getPass(0)->removeAllTextureUnitStates();
+		matShadowImage->getTechnique(0)->getPass(0)->createTextureUnitState("Ogre/ShadowTexture" + StringConverter::toString(idShadowMap));
+	}
+
+	void showShadowMapOverlay(bool show)
+	{
+		if (show)
+		{
+			mShadowMapOverlay->show();
+			mLightingInfo->show();
+			mShadowMapOverlayEnabled = true;
+		}
+		else
+		{
+			mShadowMapOverlay->hide();
+			mLightingInfo->hide();
+			mShadowMapOverlayEnabled = false;
+		}
+	}
+	void addLight(Light *light)
+	{
+		mLightList.push_back(light);
+
+		if (mShadowsEnabled)
+		{
+			mSceneMgr->setShadowTextureCount(mLightList.size());			
+		}
+	}
+
+	void setShadowTexturePixelFormat(PixelFormat fmt)
+	{
+		mSceneMgr->setShadowTexturePixelFormat(fmt);
+	}
+
+	void setShadowColour(ColourValue colour)
+	{
+		mSceneMgr->setShadowColour(colour);
+	}
+
+	ColourValue getShadowColour()
+	{
+		return mSceneMgr->getShadowColour();
+	}
+
+	void setShadowTextureSize(ushort size)
+	{
+		mSceneMgr->setShadowTextureSize(size);
+	}
+
+	Light* getLight(int idLight)
+	{
+		return mLightList[idLight];
+	}
+};
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/IndirectTexturing.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/IndirectTexturing.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/IndirectTexturing.h	(revision 1493)
@@ -0,0 +1,592 @@
+#include "ExampleApplication.h"
+#include "ExtendedCamera.h"
+#include "Grass.h"
+#include <vector>
+#include <OgreVector3.h>
+#include "LightComposite.h"
+#include <OgreOSMScene.h>
+#include <OgreConfigFile.h>
+
+/**
+	Callback handler to post-process created objects.
+*/
+class OSceneCallback : public OSMSceneCallbacks
+{
+	public:
+		// We override the OnCreate method for cameras (See IXMLSceneCallbacks class)
+		void OnCameraCreate(Ogre::Camera* pCamera, TiXmlElement* pCameraDesc) 
+		{
+			// If a camera of name "FirstCamera" is loaded, it will be set as the default current 
+			if(pCamera->getName() == "FirstCamera")
+				Ogre::Root::getSingleton().getAutoCreatedWindow()->getViewport(0)->setCamera(pCamera);
+		}
+
+
+};
+
+class SampleListener : public ExampleFrameListener
+{
+protected:
+	// References to the main character and the camera
+	Character *mChar;
+	ExtendedCamera *mExCamera;
+
+	// Camera mode - Now supports 1st person, 3rd person (chasing) and 3rd person (fixed)
+	unsigned int mMode;
+	AnimationState* mCharacterAnimState;
+
+public:
+
+	SampleListener(RenderWindow* win, Camera* cam)
+		: ExampleFrameListener(win, cam)
+	{
+		mChar = 0;
+		mExCamera = 0;
+		mMode = 0;
+		mMoveSpeed = 1000;
+	}
+
+	void setCharacter (Character *character) {
+		mChar = character;
+		mCharacterAnimState = mChar->getEntity()->getAnimationState("Fly");
+		mCharacterAnimState->setEnabled(true);
+		mCharacterAnimState->setLoop(true);
+	}
+
+	void setExtendedCamera (ExtendedCamera *cam) {
+		mExCamera = cam;
+	}
+
+	bool frameStarted(const FrameEvent& evt)
+	{
+		mInputDevice->capture ();
+
+		if (mChar) {
+			mChar->update (evt.timeSinceLastFrame, mInputDevice);
+
+			if (mExCamera) {
+				mExCamera->update (evt.timeSinceLastFrame, 
+					mChar->getCameraNode ()->getWorldPosition (), 
+					mChar->getSightNode ()->getWorldPosition ());
+
+			}
+		}
+
+		mCharacterAnimState->addTime(evt.timeSinceLastFrame);
+
+		// Exit if we press Esc
+		if (mInputDevice->isKeyDown (KC_ESCAPE))
+			return false;
+
+		return true;
+	}
+};
+
+class SkyPlaneListener : public ExampleFrameListener
+{
+protected:
+	// References to the main character and the camera
+	SceneManager *mSceneMgr;
+	Grass *mGrass;
+	LightComposite *mLightComposite;
+
+	// Create the scene loader
+	OSMScene* mOScene;
+
+	// Camera mode - Now supports 1st person, 3rd person (chasing) and 3rd person (fixed)
+	unsigned int mMode;
+	AnimationState *mAnimState;
+
+	// Gametools 8/11/2005 - Isma
+	Real mAnimationSpeed;
+	AnimationState* mCharacterAnimState;
+	Real mFactorAnimationSpeed;
+	Real mAngle;
+	Real mStepAngle;
+
+	unsigned int mFrame;
+public:
+
+
+	void loadScene(Ogre::String filename)
+	{
+		// Create an oE_Loader Callback object to post-process created objects
+		OSceneCallback oeCallback;
+		
+		mOScene = new OSMScene(mSceneMgr, mWindow);
+
+		// Initialises with the scene to be loaded and the callback if requiered
+		mOScene->initialise(filename.c_str(), &oeCallback);
+
+		// create and setup the scene in the root node
+		mOScene->createScene();
+	}
+
+	SkyPlaneListener(RenderWindow* win, Camera* cam, SceneManager *sceneMgr)
+		: ExampleFrameListener(win, cam)
+	{
+		//showDebugOverlay(false);
+		mSceneMgr = sceneMgr;
+		mMoveScale = 1;
+		mRotScale = 0.025;
+		mAngle = 0.0;
+		mStepAngle = 10.0;
+
+		Ogre::ConfigFile config;
+		config.load("configScene.cfg");
+		Ogre::String moveSpeed = config.getSetting("MoveSpeed");
+		mMoveSpeed = Ogre::StringConverter::parseReal(moveSpeed);
+
+		showDebugOverlay(false);
+		//createCameraAutoTracking();	
+
+		SceneNode *snButterfly = mSceneMgr->getSceneNode("butterflyNode");
+		Entity *entityButterfly = (Entity*) snButterfly->getAttachedObject(0);
+		mCharacterAnimState = entityButterfly->getAnimationState("Fly");
+		mCharacterAnimState->setEnabled(true);
+		mCharacterAnimState->setLoop(true);
+
+		mFrame = 0;
+		mFactorAnimationSpeed = 2.0;
+		//mFactorAnimationSpeed = 0.1;
+	}
+
+	void createCameraAutoTracking()
+	{
+		SceneNode *cameraSceneNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("CamNode");
+		cameraSceneNode->attachObject(mCamera);
+		SceneNode *entitySceneNode = mSceneMgr->getSceneNode("butterflyNode");
+		SceneNode *targetNode = mSceneMgr->getSceneNode("targetNode");
+		//SceneNode *snLight = mSceneMgr->getSceneNode("lightNode");
+		cameraSceneNode->setAutoTracking(true,targetNode);
+		//cameraSceneNode->setAutoTracking(true,snLight);
+		cameraSceneNode->translate(Vector3(300.0,0.0,0.0));
+		// set up spline animation of node
+		Animation* anim = mSceneMgr->createAnimation("CameraTrack",10);
+		// Spline it for nice curves
+		anim->setInterpolationMode(Animation::IM_SPLINE);
+		// Create a track to animate the camera's node
+		NodeAnimationTrack* track = anim->createNodeTrack(0, cameraSceneNode);
+		//AnimationTrack* track = anim->createTrack(0, snLight);		
+		// Setup keyframes
+		TransformKeyFrame* key = track->createNodeKeyFrame(0); // startposition
+		key->setTranslate(Vector3(0.0,0.0,300.0));
+		key = track->createNodeKeyFrame(2.5);
+		key->setTranslate(Vector3(-600.0,0.0,0.0));
+		key = track->createNodeKeyFrame(5);
+		key->setTranslate(Vector3(0.0,0.0,-600.0));
+		key = track->createNodeKeyFrame(7.5);
+		key->setTranslate(Vector3(600.0,0.0,0.0));	
+		key = track->createNodeKeyFrame(10);
+		key->setTranslate(Vector3(0.0,0.0,300.0));
+
+		// Create a new animation state to track this
+		mAnimState = mSceneMgr->createAnimationState("CameraTrack");
+		mAnimState->setEnabled(true);
+		mAnimState->setLoop(true);
+	}
+
+	void setGrass(Grass *grass)
+	{
+		mGrass = grass;
+	}
+
+	void setLightComposite(LightComposite *lightComposite)
+	{
+		loadScene("../../media/scene/scene.OSM");
+		mLightComposite = lightComposite;
+	}
+
+	bool frameStarted(const FrameEvent& evt)
+	{
+		mLightComposite->update(mInputDevice);
+
+		/*
+		mAnimState->addTime(evt.timeSinceLastFrame * 0.5 * mFactorAnimationSpeed);
+		//mGrass->waveGrass(evt.timeSinceLastFrame);
+		//SceneNode *snLight = mSceneMgr->getSceneNode("bulletaLanternNode");
+		SceneNode *snLight = mSceneMgr->getSceneNode("lightNode");		
+
+		if (mInputDevice->isKeyDown(KC_I))
+		{
+			snLight->setPosition(snLight->getPosition() + Vector3(0.0,0.0,10.0));	
+		}
+		if (mInputDevice->isKeyDown(KC_K))
+		{
+			snLight->setPosition(snLight->getPosition() + Vector3(0.0,0.0,-10.0));	
+		}
+		if (mInputDevice->isKeyDown(KC_J))
+		{
+			snLight->translate(-10.0,0.0,0.0);			
+		}
+		if (mInputDevice->isKeyDown(KC_L))
+		{
+			snLight->translate(10.0,0.0,0.0);			
+		}
+		if (mInputDevice->isKeyDown(KC_U))
+		{
+			snLight->translate(0.0,10.0,0.0);
+		}
+		if (mInputDevice->isKeyDown(KC_O))
+		{
+			snLight->translate(0.0,-10.0,0.0);			
+		}
+
+		if ((mAngle < -45) && (mStepAngle < 0))
+		{			
+			mStepAngle = -mStepAngle;
+		}
+		if ((mAngle > 45) && (mStepAngle > 0))
+		{
+			mStepAngle = -mStepAngle;
+		}
+		mAngle = mAngle + mStepAngle;
+		snLight->rotate(Vector3::UNIT_X,Radian(Degree(mStepAngle)));
+		Real sunHeight;
+		Real sunShift;
+		SceneNode *snSun = mSceneMgr->getSceneNode("sunNode");
+		sunHeight = -mAngle * 20.0;
+		sunShift = -mAngle * 400.0;
+		snSun->setPosition(0.0,2000.0,0.0);
+		snSun->translate(0.0,sunHeight,sunShift);
+		//LogManager::getSingleton().logMessage("sunHeight:" + StringConverter::toString(sunHeight));
+
+		//ColourValue newColour;
+		//Real intensity;
+		//intensity = 1.0 - (Math::Abs(mAngle) + 45.0) / 90.0;
+		//newColour.r = mLightComposite->getNightLight().r + (mLightComposite->getRangeLight().r * intensity);
+		//newColour.g = mLightComposite->getNightLight().g + (mLightComposite->getRangeLight().g * intensity);
+		//newColour.b = mLightComposite->getNightLight().b + (mLightComposite->getRangeLight().b * intensity);
+		//mLightComposite->setAmbientColour(newColour);
+
+		Light *light = mLightComposite->getLight(0);
+
+		//ColourValue newDiffuseColour;
+		//ColourValue diffuseDarkColour(0.0,0.0,0.0);
+		//ColourValue diffuseBrightColour(0.7,0.8,1.0);
+		//ColourValue diffuseRange = diffuseBrightColour - diffuseDarkColour;
+		//newDiffuseColour.r = diffuseDarkColour.r + (diffuseRange.r * intensity);
+		//newDiffuseColour.g = diffuseDarkColour.g + (diffuseRange.g * intensity);
+		//newDiffuseColour.b = diffuseDarkColour.b + (diffuseRange.b * intensity);
+		light->setDiffuseColour(ColourValue(1.0,1.0,1.0));
+		light->setSpecularColour(ColourValue(1.0,1.0,1.0));
+
+		Vector3 dir=Vector3(snSun->getPosition());
+		dir.normalise();
+		light->setDirection(dir);
+		LogManager::getSingleton().logMessage("LightDirection:" + StringConverter::toString(light->getDirection()));
+
+		GpuProgramParametersSharedPtr vertParams,fragParams;
+		MaterialPtr mat = MaterialManager::getSingleton().getByName("chestnutLeavesBillboardCloudGroupMaterial0");
+		vertParams = mat->getBestTechnique()->getPass(0)->getVertexProgramParameters();
+		//vertParams->setNamedConstant("lightDirection",dir);
+		fragParams = mat->getBestTechnique()->getPass(0)->getFragmentProgramParameters();
+		//fragParams->setNamedConstant("Kd",intensity);
+
+		//ColourValue newShadowColour;
+		//ColourValue darkShadow(0.4,0.4,0.4);
+		//ColourValue lightShadow(0.8,0.8,0.8);
+		//ColourValue shadowRange = lightShadow - darkShadow;
+		//newShadowColour.r = darkShadow.r + (shadowRange.r * intensity);
+		//newShadowColour.g = darkShadow.g + (shadowRange.g * intensity);
+		//newShadowColour.b = darkShadow.b + (shadowRange.b * intensity);
+		//mLightComposite->setShadowColour(newShadowColour);
+
+		//BillboardSet *bbs = mSceneMgr->getBillboardSet("lightbbs");
+		//bbs->getBillboard(0)->setColour(newColour);
+
+		// Gametools 8/11/2005 - Isma
+		// When recording....
+		//mAnimationSpeed = Math::RangeRandom(0.25*evt.timeSinceLastFrame,0.5*evt.timeSinceLastFrame);
+		mAnimationSpeed = Math::RangeRandom(evt.timeSinceLastFrame*1000.0,evt.timeSinceLastFrame*1200.0);
+		
+		//mLightComposite->showDebugShadowMap(0);
+		*/
+		SceneNode *butterflyNode = mSceneMgr->getSceneNode("butterflyNode");
+		Entity* butterfly = (Entity*)butterflyNode->getAttachedObject(0);
+		Ogre::AnimationState* characterAnimState = butterfly ->getAnimationState("Fly");
+		characterAnimState->setEnabled(true);
+		characterAnimState->setLoop(true);
+		characterAnimState->addTime(evt.timeSinceLastFrame);
+
+
+		static Ogre::Real currentTime = 0;
+
+		// We update all loaded animations each frame
+		Ogre::SceneManager::AnimationIterator animationIt = mSceneMgr->getAnimationIterator();
+
+		while(animationIt.hasMoreElements()) 
+		{
+			Ogre::Animation* animation = animationIt.getNext();
+			
+			const Ogre::Animation::NodeTrackList& trackList = animation->_getNodeTrackList();
+			
+			Ogre::Animation::NodeTrackList::const_iterator it = trackList.begin();
+			Ogre::Animation::NodeTrackList::const_iterator iend = trackList.end();
+
+			for(; it != iend; ++it) {
+				const Ogre::NodeAnimationTrack* track = it->second;
+				track->getAssociatedNode()->resetToInitialState();
+			}
+			
+			currentTime += evt.timeSinceLastFrame;
+			animation->apply(currentTime);
+		}		
+
+		return ExampleFrameListener::frameStarted(evt);
+	}
+
+	bool frameEnded(const FrameEvent& evt)
+	{
+		return ExampleFrameListener::frameEnded(evt);
+	}
+};
+
+class SkyPlaneApplication : public ExampleApplication
+{
+public:
+	std::vector<Vector3> vVertexs;
+
+	SkyPlaneApplication() 
+	{
+	}
+
+
+
+
+protected:
+
+	// Gametools 8/11/2005
+	// Main character
+	OgreCharacter *ogre;
+	ExtendedCamera *exCamera;
+	Grass *mGrass;
+	LightComposite *mLightComposite;
+	Ogre::ConfigFile config;
+	Ogre::String mNumTrees;
+
+	// Just override the mandatory create scene method
+	void createScene(void)
+	{
+		
+		config.load("configScene.cfg");
+		mNumTrees = config.getSetting("NumTrees");
+
+		SceneManager *mSceneMgr = Root::getSingleton().getSceneManager("ExampleSMInstance");
+
+		ColourValue nightLight(0.09,0.07,0.27);
+		ColourValue dayLight(1.0,1.0,1.0);
+		//ColourValue dayLight(0.85,0.88,0.96);
+		ColourValue shadow(0.6,0.6,0.6,1.0);
+		mLightComposite = new LightComposite();
+		//mLightComposite->setDayLight(nightLight);
+		mLightComposite->setDayLight(dayLight);
+		mLightComposite->setNightLight(nightLight);
+		mLightComposite->init(mSceneMgr,mCamera);
+		mLightComposite->setShadowTexturePixelFormat(PF_A8R8G8B8);
+		// ATI
+		// Seems that NVIDIA don't support at all 16 bits FLOAT RGBA textures...!
+		//mLightComposite->setShadowTexturePixelFormat(PF_FLOAT16_RGBA);
+		// NVIDIA
+		//mLightComposite->setShadowTexturePixelFormat(PF_FLOAT32_RGBA);
+		mLightComposite->setShadowTextureSize(1024);
+		//mLightComposite->setShadowTextureSize(2048);
+		mLightComposite->setShadowColour(shadow);
+		//mLightComposite->setAmbientColour(nightLight);
+		mLightComposite->setAmbientColour(dayLight);
+		mLightComposite->showShadowMapOverlay(false);
+		mLightComposite->createShadowMapOverlay(0);	
+
+		//mLightComposite->setDayLight(Vector3(1.0,1.0,1.0));
+		//mLightComposite->setNightLight(Vector3(0.0,0.0,0.0));
+
+		//// Define the required skyplane
+		//Plane skyPlane;
+		//// 5000 world units from the camera
+		//skyPlane.d = 5000;
+		//// Above the camera, facing down
+		//skyPlane.normal = -Vector3::UNIT_Y;
+		//// Create the plane 10000 units wide, tile the texture 3 times
+		//mSceneMgr->setSkyPlane(true, skyPlane,"Examples/SpaceSkyPlaneNight",150000,500);
+
+		mSceneMgr->setSkyBox(true, "CloudsSkyBox");
+
+		// Floor plane
+		Plane plane;
+		plane.normal = Vector3::UNIT_Y;
+		plane.d = 100;
+		MeshManager::getSingleton().createPlane("Ground", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane, 
+			15000, 15000, 200, 200, true, 1, 60, 60, Vector3::UNIT_Z);
+		Entity* pPlaneEnt = mSceneMgr->createEntity("Ground", "Ground");
+		pPlaneEnt->setMaterialName("Examples/GrassFloor");
+		pPlaneEnt->setCastShadows(false);
+
+		SceneNode *terrain = mSceneMgr->getRootSceneNode()->createChildSceneNode();
+		terrain->attachObject(pPlaneEnt);
+		terrain->setPosition(Vector3(0.0,0.0,0.0));
+
+		SceneNode *forestNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("forestNode");
+
+		for (unsigned int i = 0; i < Ogre::StringConverter::parseInt(mNumTrees); i++)
+		{
+			Real xPos = Math::RangeRandom(-5000.0, 5000.0);
+			Real zPos = Math::RangeRandom(-5000.0, 5000.0);
+
+			if (i == 0)
+			{
+				xPos = 200;
+				zPos = 0;
+			}
+			else if (i == 1)
+			{
+				xPos = -200;
+				zPos = 0;
+			}			
+
+			if ((i == 0) || (i == 1) || !(((xPos < 1000) && (xPos > -2000)) && ((zPos < 1000) && (zPos > -2000))))
+			{				
+				Entity *leaves = mSceneMgr->createEntity("leavesNode_" + StringConverter::toString(i),"chestnutLeavesVisibilityBillboardCloudGroupedIndirectTexturingLOD02.mesh");
+				leaves->setCastShadows(true);				
+				SceneNode *leavesNode = forestNode->createChildSceneNode();
+				leavesNode->setPosition(xPos,120.0,zPos);
+				leavesNode->attachObject(leaves);
+				leavesNode->scale(4.0,4.0,4.0);		
+				leaves->setNormaliseNormals(true);
+
+				SceneNode *trunkNode;
+				Entity* trunk;
+				trunk = mSceneMgr->createEntity("head1_" + StringConverter::toString(i), "chestnutTrunkLevel2.mesh");
+				trunkNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("trunkNode_" + StringConverter::toString(i));
+				trunkNode->attachObject(trunk);				
+				trunkNode->setPosition(xPos,120.0,zPos);
+				trunkNode->scale(4.0,4.0,4.0);
+				trunk->setNormaliseNormals(true);
+			}
+		}
+
+		StaticGeometry* s = mSceneMgr->createStaticGeometry("forestStatic");
+		s->setRegionDimensions(Vector3(1000, 1000, 1000));
+		s->setOrigin(Vector3(-500, 500, 500));
+		s->addSceneNode(forestNode);
+		s->build();
+		forestNode->setVisible(false, true);
+		s->setCastShadows(true);
+		s->setVisible(true);
+
+		// Point light, movable, reddish
+		//ColourValue mMinLightColour(0.7, 0.9, 0.4);
+		//ColourValue mMaxLightColour(0.8, 0.9, 0.4);
+		//Real mMinFlareSize = 400;
+		//Real mMaxFlareSize = 500;
+		//Light *mLight = mSceneMgr->createLight("Light2");
+		//mLight->setType(Light::LT_DIRECTIONAL);
+		//mLight->setDirection(Vector3(-0.5, -1.0, 0.5));
+		//mLight->setCastShadows(true);
+		//mLight->setDiffuseColour(1.0, 1.0, 1.0);	
+		//mLight->setSpecularColour(1.0, 1.0, 1.0);
+
+		//SceneNode *lightNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("lightNode");
+		//lightNode->attachObject(mLight);
+		//mLightComposite->addLight(mLight);
+		//mLightComposite->setCurrentLight(0);
+
+		//SceneNode *sunNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("sunNode");
+		//BillboardSet* bbsSun = mSceneMgr->createBillboardSet("lightbbs", 1);
+		//bbsSun->setMaterialName("Examples/Flare");
+		//Billboard* bb = bbsSun->createBillboard(0,0,0,dayLight);
+		//bb->setDimensions(1500.0,1500.0);
+		//sunNode->attachObject(bbsSun);
+
+		//lightNode->setDirection(Vector3::UNIT_Z);
+		//lightNode->setPosition(Vector3(186.65,561.971,216.371));
+
+		Entity *entityRuinMesh = mSceneMgr->createEntity("ruin","ruin.mesh");
+		entityRuinMesh->setCastShadows(true);
+		SceneNode *snRuinMesh = mSceneMgr->getRootSceneNode()->createChildSceneNode();
+		snRuinMesh->attachObject(entityRuinMesh);		
+		snRuinMesh->translate(0,-110.0,105.0+150.0);
+		snRuinMesh->scale(2.0,2.0,2.0);
+
+		Entity *barrel = mSceneMgr->createEntity("barrel","barrel.mesh");
+		SceneNode *barrelNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("barrelNode");
+		barrelNode->attachObject(barrel);
+		barrelNode->translate(225.0,-20.0,185.0);
+		barrelNode->scale(0.75,0.75,0.75);
+		barrelNode->rotate(Vector3::UNIT_X,Radian(Degree(90.0)));
+		barrel->setCastShadows(true);
+		barrel->setNormaliseNormals(true);
+
+		Entity *butterfly = mSceneMgr->createEntity("butterfly", "butterfly_bones_animated.mesh");
+		SceneNode *butterflyNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("butterflyNode");
+		butterflyNode->setPosition(Vector3(0.0,200.0,3000.0));
+		butterflyNode->attachObject(butterfly);
+		butterflyNode->setPosition(Vector3(-82.5,-45.1,35.0+150.0));
+		butterflyNode->scale(1.0/2.0,1.0/2.0,1.0/2.0);
+		butterfly->setCastShadows(true);
+		butterfly->setNormaliseNormals(true);
+
+		SceneNode *farmNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("farmNode");
+		Entity *farm = mSceneMgr->createEntity("farm","farm.mesh");
+		farm->setCastShadows(true);
+		farm->setNormaliseNormals(true);
+
+		Entity *cow = mSceneMgr->createEntity("cow","cow.mesh");
+		cow->setCastShadows(true);
+		farmNode->attachObject(farm);
+		SceneNode *cowNode = farmNode->createChildSceneNode("cowNode");
+		cowNode->attachObject(cow);
+		cowNode->translate(Vector3(-9.1,7,3.5));
+		farmNode->scale(Vector3(150,150,150));
+		Vector3 positionFarm = Vector3(0.0,200.0,-2200);
+		farmNode->setPosition(positionFarm);
+
+		mCamera->setFOVy(Radian(Degree(60.0)));	
+		mCamera->setPosition(Vector3(44.8621, -2.74644, 282.558));
+		mCamera->setOrientation(Quaternion(0.9296, 0.09672, 0.345428, -0.05414));
+
+		mGrass = new Grass();
+		mGrass->setGrassShadowReceiver(false);
+		mGrass->setGrassScaleRandomRangeMax(Vector3(1.0,1.0,1.0));
+		mGrass->setGrassScaleRandomRangeMin(Vector3(1.0,0.75,1.0));
+		mGrass->setGrassHeight(50.0);
+		mGrass->setGrassWidth(40.0);
+		mGrass->setGrassFrequency(30);
+		mGrass->setGrassInterFrequency(20);
+		mGrass->setGrassMaterial("Examples/GrassBlades");
+		mGrass->setGrassMeshName("grassblades");
+		mGrass->setSceneManager(mSceneMgr);
+		mGrass->setGrassHeightPosition(-100);
+		mGrass->setGrassLandscapeSizeX(4000);
+		mGrass->setGrassLandscapeSizeZ(4000);
+		mGrass->initGrass();
+
+		SceneNode *targetNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("targetNode");
+		targetNode->setPosition(Vector3(0.0,0.0,0.0));
+		SceneNode *targetNodeFrontTrees = mSceneMgr->getRootSceneNode()->createChildSceneNode("targetNodeFrontTrees");
+		targetNodeFrontTrees->setPosition(Vector3(0.0,0.0,200.0));
+
+		////// Main character
+		//OgreCharacter *ogre = new OgreCharacter ("Character", mSceneMgr);
+		//ExtendedCamera *exCamera = new ExtendedCamera ("ExtendedCamera", mSceneMgr, mCamera);
+
+		//mFrameListener = new SampleListener (mWindow, mCamera);
+		//static_cast<SampleListener *>(mFrameListener)->setCharacter (ogre);
+		//static_cast<SampleListener *>(mFrameListener)->setExtendedCamera (exCamera);
+	}
+
+	//  // Create new frame listener
+	  void createFrameListener(void)
+	  {
+	      mFrameListener= new SkyPlaneListener(mWindow, mCamera, mSceneMgr);
+	static_cast<SkyPlaneListener *>(mFrameListener)->setGrass(mGrass);
+
+	static_cast<SkyPlaneListener *>(mFrameListener)->setLightComposite(mLightComposite);		
+	      mRoot->addFrameListener(mFrameListener);
+	  }
+
+	//void createFrameListener(void)
+	//{
+	//	mRoot->addFrameListener(mFrameListener);
+	//}
+
+};
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/ExampleFrameListener.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/ExampleFrameListener.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/ExampleFrameListener.h	(revision 1493)
@@ -0,0 +1,456 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2005 The OGRE Team
+Also see acknowledgements in Readme.html
+
+You may use this sample code for anything you like, it is not covered by the
+LGPL like the rest of the engine.
+-----------------------------------------------------------------------------
+*/
+/*
+-----------------------------------------------------------------------------
+Filename:    ExampleFrameListener.h
+Description: Defines an example frame listener which responds to frame events.
+This frame listener just moves a specified camera around based on
+keyboard and mouse movements.
+Mouse:    Freelook
+W or Up:  Forward
+S or Down:Backward
+A:        Step left
+D:        Step right
+             PgUp:     Move upwards
+             PgDown:   Move downwards
+             F:        Toggle frame rate stats on/off
+			 R:        Render mode
+             T:        Cycle texture filtering
+                       Bilinear, Trilinear, Anisotropic(8)
+             P:        Toggle on/off display of camera position / orientation
+-----------------------------------------------------------------------------
+*/
+
+#ifndef __ExampleFrameListener_H__
+#define __ExampleFrameListener_H__
+
+#include "Ogre.h"
+#include "OgreKeyEvent.h"
+#include "OgreEventListeners.h"
+#include "OgreStringConverter.h"
+#include "OgreException.h"
+
+using namespace Ogre;
+
+class ExampleFrameListener: public FrameListener, public KeyListener
+{
+protected:
+	int mSceneDetailIndex ;
+    Real mMoveSpeed;
+    Degree mRotateSpeed;
+    Overlay* mDebugOverlay;
+
+    void updateStats(void)
+    {
+        static String currFps = "Current FPS: ";
+        static String avgFps = "Average FPS: ";
+        static String bestFps = "Best FPS: ";
+        static String worstFps = "Worst FPS: ";
+        static String tris = "Triangle Count: ";
+
+        // update stats when necessary
+        try {
+            OverlayElement* guiAvg = OverlayManager::getSingleton().getOverlayElement("Core/AverageFps");
+            OverlayElement* guiCurr = OverlayManager::getSingleton().getOverlayElement("Core/CurrFps");
+            OverlayElement* guiBest = OverlayManager::getSingleton().getOverlayElement("Core/BestFps");
+            OverlayElement* guiWorst = OverlayManager::getSingleton().getOverlayElement("Core/WorstFps");
+
+            const RenderTarget::FrameStats& stats = mWindow->getStatistics();
+
+            guiAvg->setCaption(avgFps + StringConverter::toString(stats.avgFPS));
+            guiCurr->setCaption(currFps + StringConverter::toString(stats.lastFPS));
+            guiBest->setCaption(bestFps + StringConverter::toString(stats.bestFPS)
+                +" "+StringConverter::toString(stats.bestFrameTime)+" ms");
+            guiWorst->setCaption(worstFps + StringConverter::toString(stats.worstFPS)
+                +" "+StringConverter::toString(stats.worstFrameTime)+" ms");
+
+            OverlayElement* guiTris = OverlayManager::getSingleton().getOverlayElement("Core/NumTris");
+            guiTris->setCaption(tris + StringConverter::toString(stats.triangleCount));
+
+            OverlayElement* guiDbg = OverlayManager::getSingleton().getOverlayElement("Core/DebugText");
+            guiDbg->setCaption(mWindow->getDebugText());
+        }
+        catch(...)
+        {
+            // ignore
+        }
+    }
+
+public:
+    // Constructor takes a RenderWindow because it uses that to determine input context
+    ExampleFrameListener(RenderWindow* win, Camera* cam, bool useBufferedInputKeys = false, bool useBufferedInputMouse = false)
+    {
+        mDebugOverlay = OverlayManager::getSingleton().getByName("Core/DebugOverlay");
+        mUseBufferedInputKeys = useBufferedInputKeys;
+		mUseBufferedInputMouse = useBufferedInputMouse;
+		mInputTypeSwitchingOn = mUseBufferedInputKeys || mUseBufferedInputMouse;
+        mRotateSpeed = 36;
+        mMoveSpeed = 100;
+
+		if (mInputTypeSwitchingOn)
+		{
+            mEventProcessor = new EventProcessor();
+			mEventProcessor->initialise(win);
+			mEventProcessor->startProcessingEvents();
+			mEventProcessor->addKeyListener(this);
+			mInputDevice = mEventProcessor->getInputReader();
+
+		}
+        else
+        {
+            mInputDevice = PlatformManager::getSingleton().createInputReader();
+            mInputDevice->initialise(win,true, true);
+        }
+
+        mCamera = cam;
+        mWindow = win;
+        mStatsOn = true;
+		mNumScreenShots = 0;
+		mTimeUntilNextToggle = 0;
+        mSceneDetailIndex = 0;
+        mMoveScale = 0.0f;
+        mRotScale = 0.0f;
+	    mTranslateVector = Vector3::ZERO;
+        mAniso = 1;
+        mFiltering = TFO_BILINEAR;
+
+        showDebugOverlay(true);
+    }
+    virtual ~ExampleFrameListener()
+    {
+		if (mInputTypeSwitchingOn)
+		{
+            delete mEventProcessor;
+		}
+        else
+        {
+            PlatformManager::getSingleton().destroyInputReader( mInputDevice );
+        }
+    }
+
+    virtual bool processUnbufferedKeyInput(const FrameEvent& evt)
+    {
+        if (mInputDevice->isKeyDown(KC_A))
+        {
+            // Move camera left
+            mTranslateVector.x = -mMoveScale;
+        }
+
+        if (mInputDevice->isKeyDown(KC_D))
+        {
+            // Move camera RIGHT
+            mTranslateVector.x = mMoveScale;
+        }
+
+        /* Move camera forward by keypress. */
+        if (mInputDevice->isKeyDown(KC_UP) || mInputDevice->isKeyDown(KC_W) )
+        {
+            mTranslateVector.z = -mMoveScale;
+        }
+
+        /* Move camera backward by keypress. */
+        if (mInputDevice->isKeyDown(KC_DOWN) || mInputDevice->isKeyDown(KC_S) )
+        {
+            mTranslateVector.z = mMoveScale;
+        }
+
+        if (mInputDevice->isKeyDown(KC_PGUP))
+        {
+            // Move camera up
+            mTranslateVector.y = mMoveScale;
+        }
+
+        if (mInputDevice->isKeyDown(KC_PGDOWN))
+        {
+            // Move camera down
+            mTranslateVector.y = -mMoveScale;
+        }
+
+        if (mInputDevice->isKeyDown(KC_RIGHT))
+        {
+            mCamera->yaw(-mRotScale);
+        }
+		
+        if (mInputDevice->isKeyDown(KC_LEFT))
+        {
+            mCamera->yaw(mRotScale);
+        }
+
+        if( mInputDevice->isKeyDown( KC_ESCAPE) )
+        {            
+            return false;
+        }
+
+		// see if switching is on, and you want to toggle 
+        if (mInputTypeSwitchingOn && mInputDevice->isKeyDown(KC_M) && mTimeUntilNextToggle <= 0)
+        {
+			switchMouseMode();
+            mTimeUntilNextToggle = 1;
+        }
+
+        if (mInputTypeSwitchingOn && mInputDevice->isKeyDown(KC_K) && mTimeUntilNextToggle <= 0)
+        {
+			// must be going from immediate keyboard to buffered keyboard
+			switchKeyMode();
+            mTimeUntilNextToggle = 1;
+        }
+        if (mInputDevice->isKeyDown(KC_F) && mTimeUntilNextToggle <= 0)
+        {
+            mStatsOn = !mStatsOn;
+            showDebugOverlay(mStatsOn);
+
+            mTimeUntilNextToggle = 1;
+        }
+        if (mInputDevice->isKeyDown(KC_T) && mTimeUntilNextToggle <= 0)
+        {
+            switch(mFiltering)
+            {
+            case TFO_BILINEAR:
+                mFiltering = TFO_TRILINEAR;
+                mAniso = 1;
+                break;
+            case TFO_TRILINEAR:
+                mFiltering = TFO_ANISOTROPIC;
+                mAniso = 8;
+                break;
+            case TFO_ANISOTROPIC:
+                mFiltering = TFO_BILINEAR;
+                mAniso = 1;
+                break;
+            default:
+                break;
+            }
+            MaterialManager::getSingleton().setDefaultTextureFiltering(mFiltering);
+            MaterialManager::getSingleton().setDefaultAnisotropy(mAniso);
+
+
+            showDebugOverlay(mStatsOn);
+
+            mTimeUntilNextToggle = 1;
+        }
+
+        if (mInputDevice->isKeyDown(KC_SYSRQ) && mTimeUntilNextToggle <= 0)
+        {
+			char tmp[20];
+			sprintf(tmp, "screenshot_%d.png", ++mNumScreenShots);
+            mWindow->writeContentsToFile(tmp);
+            mTimeUntilNextToggle = 0.5;
+			mWindow->setDebugText(String("Wrote ") + tmp);
+        }
+		
+		if (mInputDevice->isKeyDown(Ogre::KC_R) && mTimeUntilNextToggle <=0)
+		{
+			mSceneDetailIndex = (mSceneDetailIndex+1)%3 ;
+			switch(mSceneDetailIndex) {
+				case 0 : mCamera->setPolygonMode(Ogre::PM_SOLID) ; break ;
+				case 1 : mCamera->setPolygonMode(Ogre::PM_WIREFRAME) ; break ;
+				case 2 : mCamera->setPolygonMode(Ogre::PM_POINTS) ; break ;
+			}
+			mTimeUntilNextToggle = 0.5;
+		}
+
+        static bool displayCameraDetails = false;
+        if (mInputDevice->isKeyDown(KC_P) && mTimeUntilNextToggle <= 0)
+        {
+            displayCameraDetails = !displayCameraDetails;
+            mTimeUntilNextToggle = 0.5;
+            if (!displayCameraDetails)
+                mWindow->setDebugText("");
+        }
+        if (displayCameraDetails)
+        {
+            // Print camera details
+            mWindow->setDebugText("P: " + StringConverter::toString(mCamera->getDerivedPosition()) + " " + 
+                "O: " + StringConverter::toString(mCamera->getDerivedOrientation()));
+        }
+
+        // Return true to continue rendering
+        return true;
+    }
+
+    bool processUnbufferedMouseInput(const FrameEvent& evt)
+    {
+        /* Rotation factors, may not be used if the second mouse button is pressed. */
+
+        /* If the second mouse button is pressed, then the mouse movement results in 
+           sliding the camera, otherwise we rotate. */
+        if( mInputDevice->getMouseButton( 1 ) )
+        {
+            mTranslateVector.x += mInputDevice->getMouseRelativeX() * 0.13;
+            mTranslateVector.y -= mInputDevice->getMouseRelativeY() * 0.13;
+        }
+        else
+        {
+            mRotX = Degree(-mInputDevice->getMouseRelativeX() * 0.13);
+            mRotY = Degree(-mInputDevice->getMouseRelativeY() * 0.13);
+        }
+
+
+		return true;
+	}
+
+	void moveCamera()
+	{
+
+        // Make all the changes to the camera
+        // Note that YAW direction is around a fixed axis (freelook style) rather than a natural YAW (e.g. airplane)
+        mCamera->yaw(mRotX);
+        mCamera->pitch(mRotY);
+        mCamera->moveRelative(mTranslateVector);
+
+
+	}
+
+    void showDebugOverlay(bool show)
+    {
+        if (mDebugOverlay)
+        {
+            if (show)
+            {
+                mDebugOverlay->show();
+            }
+            else
+            {
+                mDebugOverlay->hide();
+            }
+        }
+    }
+
+    // Override frameStarted event to process that (don't care about frameEnded)
+    bool frameStarted(const FrameEvent& evt)
+    {
+        if(mWindow->isClosed())
+            return false;
+
+        if (!mInputTypeSwitchingOn)
+    	{
+            mInputDevice->capture();
+        }
+
+
+		if ( !mUseBufferedInputMouse || !mUseBufferedInputKeys)
+		{
+			// one of the input modes is immediate, so setup what is needed for immediate mouse/key movement
+			if (mTimeUntilNextToggle >= 0) 
+				mTimeUntilNextToggle -= evt.timeSinceLastFrame;
+
+			// If this is the first frame, pick a speed
+			if (evt.timeSinceLastFrame == 0)
+			{
+				mMoveScale = 1;
+				mRotScale = 0.1;
+			}
+			// Otherwise scale movement units by time passed since last frame
+			else
+			{
+				// Move about 100 units per second,
+				mMoveScale = mMoveSpeed * evt.timeSinceLastFrame;
+				// Take about 10 seconds for full rotation
+				mRotScale = mRotateSpeed * evt.timeSinceLastFrame;
+			}
+			mRotX = 0;
+            mRotY = 0;
+	        mTranslateVector = Vector3::ZERO;
+		}
+
+        if (mUseBufferedInputKeys)
+        {
+            // no need to do any processing here, it is handled by event processor and 
+			// you get the results as KeyEvents
+        }
+        else
+        {
+            if (processUnbufferedKeyInput(evt) == false)
+			{
+				return false;
+			}
+        }
+        if (mUseBufferedInputMouse)
+        {
+            // no need to do any processing here, it is handled by event processor and 
+			// you get the results as MouseEvents
+        }
+        else
+        {
+            if (processUnbufferedMouseInput(evt) == false)
+			{
+				return false;
+			}
+        }
+
+		if ( !mUseBufferedInputMouse || !mUseBufferedInputKeys)
+		{
+			// one of the input modes is immediate, so update the movement vector
+
+			moveCamera();
+
+		}
+
+		return true;
+    }
+
+    bool frameEnded(const FrameEvent& evt)
+    {
+        updateStats();
+        return true;
+    }
+
+	void switchMouseMode() 
+	{
+        mUseBufferedInputMouse = !mUseBufferedInputMouse;
+		mInputDevice->setBufferedInput(mUseBufferedInputKeys, mUseBufferedInputMouse);
+	}
+	void switchKeyMode() 
+	{
+        mUseBufferedInputKeys = !mUseBufferedInputKeys;
+		mInputDevice->setBufferedInput(mUseBufferedInputKeys, mUseBufferedInputMouse);
+	}
+
+	void keyClicked(KeyEvent* e) 
+	{
+		if (e->getKeyChar() == 'm')
+		{
+			switchMouseMode();
+		}
+		else if (e->getKeyChar() == 'k')
+		{
+
+			switchKeyMode();
+		}
+
+	}
+	void keyPressed(KeyEvent* e) {}
+	void keyReleased(KeyEvent* e) {}
+
+protected:
+    EventProcessor* mEventProcessor;
+    InputReader* mInputDevice;
+    Camera* mCamera;
+
+    Vector3 mTranslateVector;
+    RenderWindow* mWindow;
+    bool mStatsOn;
+    bool mUseBufferedInputKeys, mUseBufferedInputMouse, mInputTypeSwitchingOn;
+	unsigned int mNumScreenShots;
+    float mMoveScale;
+    Degree mRotScale;
+    // just to stop toggles flipping too fast
+    Real mTimeUntilNextToggle ;
+    Radian mRotX, mRotY;
+    TextureFilterOptions mFiltering;
+    int mAniso;
+
+};
+
+#endif
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/tinystr.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/tinystr.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/tinystr.h	(revision 1493)
@@ -0,0 +1,228 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original file by Yves Berquin.
+
+This software is provided 'as-is', without any express or implied 
+warranty. In no event will the authors be held liable for any 
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any 
+purpose, including commercial applications, and to alter it and 
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must 
+not claim that you wrote the original software. If you use this 
+software in a product, an acknowledgment in the product documentation 
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source 
+distribution.
+*/
+
+#include "tinyxml.h"
+
+
+#ifndef TIXML_USE_STL
+
+#ifndef TIXML_STRING_INCLUDED
+#define TIXML_STRING_INCLUDED
+
+#pragma warning( disable : 4514 )
+
+#include <assert.h>
+
+/*
+   TiXmlString is an emulation of the std::string template.
+   Its purpose is to allow compiling TinyXML on compilers with no or poor STL support.
+   Only the member functions relevant to the TinyXML project have been implemented.
+   The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase
+   a string and there's no more room, we allocate a buffer twice as big as we need.
+*/
+class TiXmlString
+{
+  public :
+    // TiXmlString constructor, based on a string
+    TiXmlString (const char * instring);
+
+    // TiXmlString empty constructor
+    TiXmlString ()
+    {
+        allocated = 0;
+        cstring = NULL;
+    }
+
+    // TiXmlString copy constructor
+    TiXmlString (const TiXmlString& copy);
+
+    // TiXmlString destructor
+    ~ TiXmlString ()
+    {
+        empty_it ();
+    }
+
+    // Convert a TiXmlString into a classical char *
+    const char * c_str () const
+    {
+        if (allocated)
+            return cstring;
+        return "";
+    }
+
+    // Return the length of a TiXmlString
+    unsigned length () const;
+
+    // TiXmlString = operator
+    void operator = (const char * content);
+
+    // = operator
+    void operator = (const TiXmlString & copy);
+
+    // += operator. Maps to append
+    TiXmlString& operator += (const char * suffix)
+    {
+        append (suffix);
+		return *this;
+    }
+
+    // += operator. Maps to append
+    TiXmlString& operator += (char single)
+    {
+        append (single);
+		return *this;
+    }
+
+    // += operator. Maps to append
+    TiXmlString& operator += (TiXmlString & suffix)
+    {
+        append (suffix);
+		return *this;
+    }
+    bool operator == (const TiXmlString & compare) const;
+    bool operator < (const TiXmlString & compare) const;
+    bool operator > (const TiXmlString & compare) const;
+
+    // Checks if a TiXmlString is empty
+    bool empty () const
+    {
+        return length () ? false : true;
+    }
+
+    // Checks if a TiXmlString contains only whitespace (same rules as isspace)
+	// Not actually used in tinyxml. Conflicts with a C macro, "isblank",
+	// which is a problem. Commenting out. -lee
+//    bool isblank () const;
+
+    // single char extraction
+    const char& at (unsigned index) const
+    {
+        assert( index < length ());
+        return cstring [index];
+    }
+
+    // find a char in a string. Return TiXmlString::notfound if not found
+    unsigned find (char lookup) const
+    {
+        return find (lookup, 0);
+    }
+
+    // find a char in a string from an offset. Return TiXmlString::notfound if not found
+    unsigned find (char tofind, unsigned offset) const;
+
+    /*	Function to reserve a big amount of data when we know we'll need it. Be aware that this
+		function clears the content of the TiXmlString if any exists.
+    */
+    void reserve (unsigned size)
+    {
+        empty_it ();
+        if (size)
+        {
+            allocated = size;
+            cstring = new char [size];
+            cstring [0] = 0;
+        }
+    }
+
+    // [] operator 
+    char& operator [] (unsigned index) const
+    {
+        assert( index < length ());
+        return cstring [index];
+    }
+
+    // Error value for find primitive 
+    enum {	notfound = 0xffffffff,
+            npos = notfound };
+
+    void append (const char *str, int len );
+
+  protected :
+
+    // The base string
+    char * cstring;
+    // Number of chars allocated
+    unsigned allocated;
+
+    // New size computation. It is simplistic right now : it returns twice the amount
+    // we need
+    unsigned assign_new_size (unsigned minimum_to_allocate)
+    {
+        return minimum_to_allocate * 2;
+    }
+
+    // Internal function that clears the content of a TiXmlString
+    void empty_it ()
+    {
+        if (cstring)
+            delete [] cstring;
+        cstring = NULL;
+        allocated = 0;
+    }
+
+    void append (const char *suffix );
+
+    // append function for another TiXmlString
+    void append (const TiXmlString & suffix)
+    {
+        append (suffix . c_str ());
+    }
+
+    // append for a single char. This could be improved a lot if needed
+    void append (char single)
+    {
+        char smallstr [2];
+        smallstr [0] = single;
+        smallstr [1] = 0;
+        append (smallstr);
+    }
+
+} ;
+
+/* 
+   TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString.
+   Only the operators that we need for TinyXML have been developped.
+*/
+class TiXmlOutStream : public TiXmlString
+{
+public :
+    TiXmlOutStream () : TiXmlString () {}
+
+    // TiXmlOutStream << operator. Maps to TiXmlString::append
+    TiXmlOutStream & operator << (const char * in)
+    {
+        append (in);
+        return (* this);
+    }
+
+    // TiXmlOutStream << operator. Maps to TiXmlString::append
+    TiXmlOutStream & operator << (const TiXmlString & in)
+    {
+        append (in . c_str ());
+        return (* this);
+    }
+} ;
+
+#endif	// TIXML_STRING_INCLUDED
+#endif	// TIXML_USE_STL
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/ExampleApplication.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/ExampleApplication.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/ExampleApplication.h	(revision 1493)
@@ -0,0 +1,207 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+(Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2005 The OGRE Team
+Also see acknowledgements in Readme.html
+
+You may use this sample code for anything you like, it is not covered by the
+LGPL like the rest of the engine.
+-----------------------------------------------------------------------------
+*/
+/*
+-----------------------------------------------------------------------------
+Filename:    ExampleApplication.h
+Description: Base class for all the OGRE examples
+-----------------------------------------------------------------------------
+*/
+
+#ifndef __ExampleApplication_H__
+#define __ExampleApplication_H__
+
+#include "Ogre.h"
+#include "OgreConfigFile.h"
+#include "ExampleFrameListener.h"
+
+
+using namespace Ogre;
+
+/** Base class which manages the standard startup of an Ogre application.
+    Designed to be subclassed for specific examples if required.
+*/
+class ExampleApplication
+{
+public:
+    /// Standard constructor
+    ExampleApplication()
+    {
+        mFrameListener = 0;
+        mRoot = 0;
+    }
+    /// Standard destructor
+    virtual ~ExampleApplication()
+    {
+        if (mFrameListener)
+            delete mFrameListener;
+        if (mRoot)
+            delete mRoot;
+    }
+
+    /// Start the example
+    virtual void go(void)
+    {
+        if (!setup())
+            return;
+
+        mRoot->startRendering();
+
+        // clean up
+        destroyScene();
+    }
+
+protected:
+    Root *mRoot;
+    Camera* mCamera;
+    SceneManager* mSceneMgr;
+    ExampleFrameListener* mFrameListener;
+    RenderWindow* mWindow;
+
+    // These internal methods package up the stages in the startup process
+    /** Sets up the application - returns false if the user chooses to abandon configuration. */
+    virtual bool setup(void)
+    {
+        mRoot = new Root();
+
+        setupResources();
+
+        bool carryOn = configure();
+        if (!carryOn) return false;
+
+        chooseSceneManager();
+        createCamera();
+        createViewports();
+
+        // Set default mipmap level (NB some APIs ignore this)
+        TextureManager::getSingleton().setDefaultNumMipmaps(5);
+
+		// Create any resource listeners (for loading screens)
+		createResourceListener();
+		// Load resources
+		loadResources();
+
+		// Create the scene
+        createScene();
+
+        createFrameListener();
+
+        return true;
+
+    }
+    /** Configures the application - returns false if the user chooses to abandon configuration. */
+    virtual bool configure(void)
+    {
+        // Show the configuration dialog and initialise the system
+        // You can skip this and use root.restoreConfig() to load configuration
+        // settings if you were sure there are valid ones saved in ogre.cfg
+        if(mRoot->showConfigDialog())
+        {
+            // If returned true, user clicked OK so initialise
+            // Here we choose to let the system create a default rendering window by passing 'true'
+            mWindow = mRoot->initialise(true);
+            return true;
+        }
+        else
+        {
+            return false;
+        }
+    }
+
+    virtual void chooseSceneManager(void)
+    {
+        // Create the SceneManager, in this case a generic one
+        mSceneMgr = mRoot->createSceneManager(ST_GENERIC, "ExampleSMInstance");
+    }
+
+    virtual void createCamera(void)
+    {
+        // Create the camera
+        mCamera = mSceneMgr->createCamera("PlayerCam");
+
+        // Position it at 500 in Z direction
+        mCamera->setPosition(Vector3(0,0,500));
+        // Look back along -Z
+        mCamera->lookAt(Vector3(0,0,-300));
+        mCamera->setNearClipDistance(5);
+
+    }
+    virtual void createFrameListener(void)
+    {
+        mFrameListener= new ExampleFrameListener(mWindow, mCamera);
+        mFrameListener->showDebugOverlay(true);
+        mRoot->addFrameListener(mFrameListener);
+    }
+
+    virtual void createScene(void) = 0;    // pure virtual - this has to be overridden
+
+    virtual void destroyScene(void){}    // Optional to override this
+
+    virtual void createViewports(void)
+    {
+        // Create one viewport, entire window
+        Viewport* vp = mWindow->addViewport(mCamera);
+        vp->setBackgroundColour(ColourValue(0,0,0));
+
+        // Alter the camera aspect ratio to match the viewport
+        mCamera->setAspectRatio(
+            Real(vp->getActualWidth()) / Real(vp->getActualHeight()));
+    }
+
+    /// Method which will define the source of resources (other than current folder)
+    virtual void setupResources(void)
+    {
+        // Load resource paths from config file
+        ConfigFile cf;
+        cf.load("resources.cfg");
+
+        // Go through all sections & settings in the file
+        ConfigFile::SectionIterator seci = cf.getSectionIterator();
+
+        String secName, typeName, archName;
+        while (seci.hasMoreElements())
+        {
+            secName = seci.peekNextKey();
+            ConfigFile::SettingsMultiMap *settings = seci.getNext();
+            ConfigFile::SettingsMultiMap::iterator i;
+            for (i = settings->begin(); i != settings->end(); ++i)
+            {
+                typeName = i->first;
+                archName = i->second;
+                ResourceGroupManager::getSingleton().addResourceLocation(
+                    archName, typeName, secName);
+            }
+        }
+    }
+
+	/// Optional override method where you can create resource listeners (e.g. for loading screens)
+	virtual void createResourceListener(void)
+	{
+
+	}
+
+	/// Optional override method where you can perform resource group loading
+	/// Must at least do ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
+	virtual void loadResources(void)
+	{
+		// Initialise, parse scripts etc
+		ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
+
+	}
+
+
+
+};
+
+
+#endif
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/Grass.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/Grass.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/Grass.h	(revision 1493)
@@ -0,0 +1,363 @@
+#include "Ogre.h"
+
+
+	class Grass
+	{
+	protected:
+		StaticGeometry* mStaticGeom;
+		Real mGrassHeight;
+		Real mGrassWidth;
+		String mGrassMeshName;
+		String mGrassMaterial;
+		Real mOffsetParam;
+		SceneManager *mSceneMgr;
+		Real mHeightPosition;
+		Real mGrassFrequency;
+		Real mGrassInterFrequency;
+		Vector3 mGrassScaleRandomRangeMin;
+		Vector3 mGrassScaleRandomRangeMax;
+		Real mGrassLandscapeSizeX;
+		Real mGrassLandscapeSizeZ;
+		bool mShadowCaster;
+		bool mGrassShadowReceiver;
+
+	public:
+		Grass()
+		{
+			mOffsetParam = 999;
+			mGrassMeshName = String("grassblades");
+			mGrassMaterial = String("Examples/GrassBlades");
+			mShadowCaster = false;
+		}
+
+		void setGrassCastShadows(bool shadowCaster)
+		{
+			if (shadowCaster)
+			{
+				mStaticGeom->setCastShadows(true);
+				mShadowCaster = true;
+			}
+			else
+			{
+				mStaticGeom->setCastShadows(false);
+				mShadowCaster = false;
+			}
+		}
+
+		void setGrassLandscapeSizeX(Real landscapeSizeX)
+		{
+			mGrassLandscapeSizeX = landscapeSizeX;
+		}
+
+		void setGrassLandscapeSizeZ(Real landscapeSizeZ)
+		{
+			mGrassLandscapeSizeZ = landscapeSizeZ;
+		}
+
+		Real getGrassLandscapeSizeX()
+		{
+			return mGrassLandscapeSizeX;
+		}
+
+		Real getGrassLandscapeSizeZ()
+		{
+			return mGrassLandscapeSizeZ;
+		}
+
+		void setGrassScaleRandomRangeMin(Vector3 scaleRRmin)
+		{
+			mGrassScaleRandomRangeMin = scaleRRmin;
+		}
+
+		Vector3 getGrassScaleRandomRangeMin()
+		{
+			return mGrassScaleRandomRangeMin;
+		}
+
+		void setGrassScaleRandomRangeMax(Vector3 scaleRRmax)
+		{
+			mGrassScaleRandomRangeMax = scaleRRmax;
+		}
+
+		Vector3 getGrassScaleRandomRangeMax()
+		{
+			return mGrassScaleRandomRangeMax;
+		}
+
+		void setGrassInterFrequency(Real interFrequency)
+		{
+			mGrassInterFrequency = interFrequency;
+		}
+
+		Real getGrassInterFrequency()
+		{
+			return mGrassInterFrequency;
+		}
+
+		void setGrassFrequency(Real frequency)
+		{
+			mGrassFrequency = frequency;
+		}
+
+		Real getGrassFrequency()
+		{
+			return mGrassFrequency;
+		}
+
+		void setGrassHeightPosition(Real heightPosition)
+		{
+			mHeightPosition = heightPosition;
+		}
+
+		Real getGrassHeightPosition()
+		{
+			return mHeightPosition;
+		}
+
+		void setSceneManager(SceneManager* sceneMgr)
+		{
+			mSceneMgr = sceneMgr;
+		}
+
+		Real getGrassHeight()
+		{
+			return mGrassHeight;
+		}
+
+		Real getGrassWidth()
+		{
+			return mGrassWidth;
+		}
+
+		String getGrassMeshName()
+		{
+			return mGrassMeshName;
+		}
+
+		String getGrassMaterial()
+		{
+			return mGrassMaterial;
+		}
+
+		StaticGeometry* getStaticGeometry()
+		{
+			return mStaticGeom;
+		}
+
+		void setGrassHeight(Real height)
+		{
+			mGrassHeight = height;
+		}
+
+		void setGrassWidth(Real width)
+		{
+			mGrassWidth = width;
+		}
+
+		void setGrassMeshName(String meshName)
+		{
+			mGrassMeshName = meshName;
+		}
+
+		void setGrassMaterial(String material)
+		{
+			mGrassMaterial = material;
+		}
+
+		void waveGrass(Real timeElapsed)
+		{
+			static Real xinc = Math::PI * 0.4;
+			static Real zinc = Math::PI * 0.55;
+			static Real xpos = Math::RangeRandom(-Math::PI, Math::PI);
+			static Real zpos = Math::RangeRandom(-Math::PI, Math::PI);
+
+			xpos += xinc * timeElapsed;
+			zpos += zinc * timeElapsed;
+
+			// Update vertex program parameters by binding a value to each renderable
+			static Vector4 offset(0,0,0,0);
+
+			StaticGeometry::RegionIterator rit =  mStaticGeom->getRegionIterator();
+			while (rit.hasMoreElements())
+			{
+				StaticGeometry::Region* reg = rit.getNext();
+
+				// a little randomness
+				xpos += reg->getCentre().x * 0.001;
+				zpos += reg->getCentre().z * 0.001;
+				offset.x = Math::Sin(xpos) * 0.05;
+				offset.z = Math::Sin(zpos) * 0.05;
+
+				StaticGeometry::Region::LODIterator lodit = reg->getLODIterator();
+				while (lodit.hasMoreElements())
+				{
+					StaticGeometry::LODBucket* lod = lodit.getNext();
+					StaticGeometry::LODBucket::MaterialIterator matit = 
+						lod->getMaterialIterator();
+					while (matit.hasMoreElements())
+					{
+						StaticGeometry::MaterialBucket* mat = matit.getNext();
+						StaticGeometry::MaterialBucket::GeometryIterator geomit = 
+							mat->getGeometryIterator();
+						while (geomit.hasMoreElements())
+						{
+							StaticGeometry::GeometryBucket* geom = geomit.getNext();
+							geom->setCustomParameter(mOffsetParam, offset);
+
+						}
+					}
+				}
+			}
+		}
+
+		void createGrassMesh()
+		{
+			// Each grass section is 3 planes at 60 degrees to each other
+			// Normals point straight up to simulate correct lighting
+			MeshPtr msh = MeshManager::getSingleton().createManual(mGrassMeshName, 
+				ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+			SubMesh* sm = msh->createSubMesh();
+			sm->useSharedVertices = false;
+			sm->vertexData = new VertexData();
+			sm->vertexData->vertexStart = 0;
+			sm->vertexData->vertexCount = 12;
+			VertexDeclaration* dcl = sm->vertexData->vertexDeclaration;
+			size_t offset = 0;
+			dcl->addElement(0, offset, VET_FLOAT3, VES_POSITION);
+			offset += VertexElement::getTypeSize(VET_FLOAT3);
+			dcl->addElement(0, offset, VET_FLOAT3, VES_NORMAL);
+			offset += VertexElement::getTypeSize(VET_FLOAT3);
+			dcl->addElement(0, offset, VET_FLOAT2, VES_TEXTURE_COORDINATES);
+			offset += VertexElement::getTypeSize(VET_FLOAT2);
+
+			HardwareVertexBufferSharedPtr vbuf = HardwareBufferManager::getSingleton()
+				.createVertexBuffer(
+					offset, 12, HardwareBuffer::HBU_STATIC_WRITE_ONLY);
+			float* pReal = static_cast<float*>(vbuf->lock(HardwareBuffer::HBL_DISCARD));
+			Vector3 baseVec(mGrassWidth/2, 0, 0);
+			Vector3 vec = baseVec;
+			Quaternion rot;
+			rot.FromAngleAxis(Degree(60), Vector3::UNIT_Y);
+			int i;
+			for (i = 0; i < 3; ++i)
+			{
+				// position
+				*pReal++ = -vec.x;
+				*pReal++ = mGrassHeight;
+				*pReal++ = -vec.z;
+				// normal
+				*pReal++ = 0;
+				*pReal++ = 1;
+				*pReal++ = 0;
+				// uv
+				*pReal++ = 0;
+				*pReal++ = 0;
+
+				// position
+				*pReal++ = vec.x;
+				*pReal++ = mGrassHeight;
+				*pReal++ = vec.z;
+				// normal
+				*pReal++ = 0;
+				*pReal++ = 1;
+				*pReal++ = 0;
+				// uv
+				*pReal++ = 1;
+				*pReal++ = 0;
+
+				// position
+				*pReal++ = -vec.x;
+				*pReal++ = 0;
+				*pReal++ = -vec.z;
+				// normal
+				*pReal++ = 0;
+				*pReal++ = 1;
+				*pReal++ = 0;
+				// uv
+				*pReal++ = 0;
+				*pReal++ = 1;
+
+				// position
+				*pReal++ = vec.x;
+				*pReal++ = 0;
+				*pReal++ = vec.z;
+				// normal
+				*pReal++ = 0;
+				*pReal++ = 1;
+				*pReal++ = 0;
+				// uv
+				*pReal++ = 1;
+				*pReal++ = 1;
+
+				vec = rot * vec;
+			}
+			vbuf->unlock();
+			sm->vertexData->vertexBufferBinding->setBinding(0, vbuf);
+			sm->indexData->indexCount = 6*3;
+			sm->indexData->indexBuffer = HardwareBufferManager::getSingleton()
+				.createIndexBuffer(HardwareIndexBuffer::IT_16BIT, 6*3,
+					HardwareBuffer::HBU_STATIC_WRITE_ONLY);
+			uint16* pI = static_cast<uint16*>(
+				sm->indexData->indexBuffer->lock(HardwareBuffer::HBL_DISCARD));
+			for (i = 0; i < 3; ++i)
+			{
+				int off = i*4;
+				*pI++ = 0 + off;
+				*pI++ = 3 + off;
+				*pI++ = 1 + off;
+
+				*pI++ = 0 + off;
+				*pI++ = 2 + off;
+				*pI++ = 3 + off;
+			}
+
+			sm->indexData->indexBuffer->unlock();			
+			sm->setMaterialName(mGrassMaterial);
+			MaterialPtr material = MaterialManager::getSingleton().getByName(mGrassMaterial);
+			material->setReceiveShadows(mGrassShadowReceiver); 
+			msh->load();
+
+		}
+
+		// This method should be called in the createScene method...
+		void initGrass()
+		{
+			createGrassMesh();
+
+			Entity* e = mSceneMgr->createEntity("1", mGrassMeshName);
+
+			StaticGeometry* s = mSceneMgr->createStaticGeometry("bing");
+			s->setRegionDimensions(Vector3(1000,1000,1000));
+			// Set the region origin so the centre is at 0 world
+			s->setOrigin(Vector3(-500, 500, -500));
+
+			for (int x = -mGrassLandscapeSizeX; x < mGrassLandscapeSizeX; x += mGrassFrequency)
+			{
+				for (int z = -mGrassLandscapeSizeZ; z < mGrassLandscapeSizeZ; z += mGrassFrequency)
+				{
+					Vector3 pos(
+						x + Math::RangeRandom(-mGrassInterFrequency,mGrassInterFrequency), 
+						mHeightPosition, 
+						z + Math::RangeRandom(-mGrassInterFrequency,mGrassInterFrequency));
+					Quaternion orientation;
+					orientation.FromAngleAxis(
+						Degree(Math::RangeRandom(0, 359)),
+						Vector3::UNIT_Y);
+					Vector3 grassScale = Vector3(Math::RangeRandom(mGrassScaleRandomRangeMin[0],mGrassScaleRandomRangeMax[0]),
+										 Math::RangeRandom(mGrassScaleRandomRangeMin[1],mGrassScaleRandomRangeMax[1]),
+										 Math::RangeRandom(mGrassScaleRandomRangeMin[2],mGrassScaleRandomRangeMax[2]));
+					Vector3 scale(grassScale);
+					s->addEntity(e, pos, orientation, scale);
+				}
+
+			}
+
+			s->build();
+			mStaticGeom = s;
+		}
+
+		void setGrassShadowReceiver(bool value)
+		{
+			mGrassShadowReceiver = value; 
+		}
+	};
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/tinyxml.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/tinyxml.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/tinyxml.h	(revision 1493)
@@ -0,0 +1,956 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code (2.0 and earlier )copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+
+#ifndef TINYXML_INCLUDED
+#define TINYXML_INCLUDED
+
+#ifdef _MSC_VER
+#pragma warning( disable : 4530 )
+#pragma warning( disable : 4786 )
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+// Help out windows:
+#if defined( _DEBUG ) && !defined( DEBUG )
+#define DEBUG
+#endif
+
+#if defined( DEBUG ) && defined( _MSC_VER )
+#define NOMINMAX
+#include <windows.h>
+#define TIXML_LOG OutputDebugString
+#else
+#define TIXML_LOG printf
+#endif
+
+
+#ifdef TIXML_USE_STL
+	#include <string>
+    #include <iostream>
+	#define TIXML_STRING	std::string
+	#define TIXML_ISTREAM	std::istream
+	#define TIXML_OSTREAM	std::ostream
+#else
+	#include "tinystr.h"
+	#define TIXML_STRING	TiXmlString
+	#define TIXML_OSTREAM	TiXmlOutStream
+#endif
+
+class TiXmlDocument;
+class TiXmlElement;
+class TiXmlComment;
+class TiXmlUnknown;
+class TiXmlAttribute;
+class TiXmlText;
+class TiXmlDeclaration;
+
+
+/** TiXmlBase is a base class for every class in TinyXml.
+	It does little except to establish that TinyXml classes
+	can be printed and provide some utility functions.
+
+	In XML, the document and elements can contain
+	other elements and other types of nodes.
+
+	@verbatim
+	A Document can contain:	Element	(container or leaf)
+							Comment (leaf)
+							Unknown (leaf)
+							Declaration( leaf )
+
+	An Element can contain:	Element (container or leaf)
+							Text	(leaf)
+							Attributes (not on tree)
+							Comment (leaf)
+							Unknown (leaf)
+
+	A Decleration contains: Attributes (not on tree)
+	@endverbatim
+*/
+class TiXmlBase
+{
+	friend class TiXmlNode;
+	friend class TiXmlElement;
+	friend class TiXmlDocument;
+
+public:
+	TiXmlBase()								{}
+	virtual ~TiXmlBase()					{}
+
+	/**	All TinyXml classes can print themselves to a filestream.
+		This is a formatted print, and will insert tabs and newlines.
+		
+		(For an unformatted stream, use the << operator.)
+	*/
+	virtual void Print( FILE* cfile, int depth ) const = 0;
+
+	/**	The world does not agree on whether white space should be kept or
+		not. In order to make everyone happy, these global, static functions
+		are provided to set whether or not TinyXml will condense all white space
+		into a single space or not. The default is to condense. Note changing these
+		values is not thread safe.
+	*/
+	static void SetCondenseWhiteSpace( bool condense )		{ condenseWhiteSpace = condense; }
+
+	/// Return the current white space setting.
+	static bool IsWhiteSpaceCondensed()						{ return condenseWhiteSpace; }
+
+protected:
+
+	static const char*	SkipWhiteSpace( const char* );
+	inline static bool	IsWhiteSpace( int c )		{ return ( isspace( c ) || c == '\n' || c == '\r' ); }
+
+	virtual void StreamOut (TIXML_OSTREAM *) const = 0;
+
+	#ifdef TIXML_USE_STL
+	    static bool	StreamWhiteSpace( TIXML_ISTREAM * in, TIXML_STRING * tag );
+	    static bool StreamTo( TIXML_ISTREAM * in, int character, TIXML_STRING * tag );
+	#endif
+
+	/*	Reads an XML name into the string provided. Returns
+		a pointer just past the last character of the name,
+		or 0 if the function has an error.
+	*/
+	static const char* ReadName( const char* p, TIXML_STRING* name );
+
+	/*	Reads text. Returns a pointer past the given end tag.
+		Wickedly complex options, but it keeps the (sensitive) code in one place.
+	*/
+	static const char* ReadText(	const char* in,				// where to start
+									TIXML_STRING* text,			// the string read
+									bool ignoreWhiteSpace,		// whether to keep the white space
+									const char* endTag,			// what ends this text
+									bool ignoreCase );			// whether to ignore case in the end tag
+	virtual const char* Parse( const char* p ) = 0;
+
+	// If an entity has been found, transform it into a character.
+	static const char* GetEntity( const char* in, char* value );
+
+	// Get a character, while interpreting entities.
+	inline static const char* GetChar( const char* p, char* value )
+	{
+		assert( p );
+		if ( *p == '&' )
+		{
+			return GetEntity( p, value );
+		}
+		else
+		{
+			*value = *p;
+			return p+1;
+		}
+	}
+
+	// Puts a string to a stream, expanding entities as it goes.
+	// Note this should not contian the '<', '>', etc, or they will be transformed into entities!
+	static void PutString( const TIXML_STRING& str, TIXML_OSTREAM* out );
+
+	static void PutString( const TIXML_STRING& str, TIXML_STRING* out );
+
+	// Return true if the next characters in the stream are any of the endTag sequences.
+	bool static StringEqual(	const char* p,
+								const char* endTag,
+								bool ignoreCase );
+
+
+	enum
+	{
+		TIXML_NO_ERROR = 0,
+		TIXML_ERROR,
+		TIXML_ERROR_OPENING_FILE,
+		TIXML_ERROR_OUT_OF_MEMORY,
+		TIXML_ERROR_PARSING_ELEMENT,
+		TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME,
+		TIXML_ERROR_READING_ELEMENT_VALUE,
+		TIXML_ERROR_READING_ATTRIBUTES,
+		TIXML_ERROR_PARSING_EMPTY,
+		TIXML_ERROR_READING_END_TAG,
+		TIXML_ERROR_PARSING_UNKNOWN,
+		TIXML_ERROR_PARSING_COMMENT,
+		TIXML_ERROR_PARSING_DECLARATION,
+		TIXML_ERROR_DOCUMENT_EMPTY,
+
+		TIXML_ERROR_STRING_COUNT
+	};
+	static const char* errorString[ TIXML_ERROR_STRING_COUNT ];
+
+private:
+	struct Entity
+	{
+		const char*     str;
+		unsigned int	strLength;
+		char		    chr;
+	};
+	enum
+	{
+		NUM_ENTITY = 5,
+		MAX_ENTITY_LENGTH = 6
+
+	};
+	static Entity entity[ NUM_ENTITY ];
+	static bool condenseWhiteSpace;
+};
+
+
+/** The parent class for everything in the Document Object Model.
+	(Except for attributes, which are contained in elements.)
+	Nodes have siblings, a parent, and children. A node can be
+	in a document, or stand on its own. The type of a TiXmlNode
+	can be queried, and it can be cast to its more defined type.
+*/
+class TiXmlNode : public TiXmlBase
+{
+	friend class TiXmlDocument;
+	friend class TiXmlElement;
+
+public:
+	#ifdef TIXML_USE_STL	
+
+	    /** An input stream operator, for every class. Tolerant of newlines and
+		    formatting, but doesn't expect them.
+	    */
+	    friend std::istream& operator >> (std::istream& in, TiXmlNode& base);
+
+	    /** An output stream operator, for every class. Note that this outputs
+		    without any newlines or formatting, as opposed to Print(), which
+		    includes tabs and new lines.
+
+		    The operator<< and operator>> are not completely symmetric. Writing
+		    a node to a stream is very well defined. You'll get a nice stream
+		    of output, without any extra whitespace or newlines.
+		    
+		    But reading is not as well defined. (As it always is.) If you create
+		    a TiXmlElement (for example) and read that from an input stream,
+		    the text needs to define an element or junk will result. This is
+		    true of all input streams, but it's worth keeping in mind.
+
+		    A TiXmlDocument will read nodes until it reads a root element.
+	    */	
+	    friend std::ostream & operator<< (std::ostream& out, const TiXmlNode& base);
+
+	#else
+	    // Used internally, not part of the public API.
+	    friend TIXML_OSTREAM& operator<< (TIXML_OSTREAM& out, const TiXmlNode& base);
+	#endif
+
+	/** The types of XML nodes supported by TinyXml. (All the
+			unsupported types are picked up by UNKNOWN.)
+	*/
+	enum NodeType
+	{
+		DOCUMENT,
+		ELEMENT,
+		COMMENT,
+		UNKNOWN,
+		TEXT,
+		DECLARATION,
+		TYPECOUNT
+	};
+
+	virtual ~TiXmlNode();
+
+	/** The meaning of 'value' changes for the specific type of
+		TiXmlNode.
+		@verbatim
+		Document:	filename of the xml file
+		Element:	name of the element
+		Comment:	the comment text
+		Unknown:	the tag contents
+		Text:		the text string
+		@endverbatim
+
+		The subclasses will wrap this function.
+	*/
+	const char * Value () const { return value.c_str (); }
+
+	/** Changes the value of the node. Defined as:
+		@verbatim
+		Document:	filename of the xml file
+		Element:	name of the element
+		Comment:	the comment text
+		Unknown:	the tag contents
+		Text:		the text string
+		@endverbatim
+	*/
+	void SetValue (const char * _value) { value = _value;}
+
+    #ifdef TIXML_USE_STL
+	/// STL std::string form.
+	void SetValue( const std::string& value )    
+	{	  
+		SetValue( value.c_str() );    	
+	}	
+	#endif
+
+	/// Delete all the children of this node. Does not affect 'this'.
+	void Clear();
+
+	/// One step up the DOM.
+	TiXmlNode* Parent() const					{ return parent; }
+
+	TiXmlNode* FirstChild()	const	{ return firstChild; }		///< The first child of this node. Will be null if there are no children.
+	TiXmlNode* FirstChild( const char * value ) const;			///< The first child of this node with the matching 'value'. Will be null if none found.
+
+	TiXmlNode* LastChild() const	{ return lastChild; }		/// The last child of this node. Will be null if there are no children.
+	TiXmlNode* LastChild( const char * value ) const;			/// The last child of this node matching 'value'. Will be null if there are no children.
+
+    #ifdef TIXML_USE_STL
+	TiXmlNode* FirstChild( const std::string& value ) const	{	return FirstChild (value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* LastChild( const std::string& value ) const	{	return LastChild (value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/** An alternate way to walk the children of a node.
+		One way to iterate over nodes is:
+		@verbatim
+			for( child = parent->FirstChild(); child; child = child->NextSibling() )
+		@endverbatim
+
+		IterateChildren does the same thing with the syntax:
+		@verbatim
+			child = 0;
+			while( child = parent->IterateChildren( child ) )
+		@endverbatim
+
+		IterateChildren takes the previous child as input and finds
+		the next one. If the previous child is null, it returns the
+		first. IterateChildren will return null when done.
+	*/
+	TiXmlNode* IterateChildren( TiXmlNode* previous ) const;
+
+	/// This flavor of IterateChildren searches for children with a particular 'value'
+	TiXmlNode* IterateChildren( const char * value, TiXmlNode* previous ) const;
+
+    #ifdef TIXML_USE_STL
+	TiXmlNode* IterateChildren( const std::string& value, TiXmlNode* previous ) const	{	return IterateChildren (value.c_str (), previous);	}	///< STL std::string form.
+	#endif
+
+	/** Add a new node related to this. Adds a child past the LastChild.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* InsertEndChild( const TiXmlNode& addThis );
+
+	/** Add a new node related to this. Adds a child before the specified child.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis );
+
+	/** Add a new node related to this. Adds a child after the specified child.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* InsertAfterChild(  TiXmlNode* afterThis, const TiXmlNode& addThis );
+
+	/** Replace a child of this node.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis );
+
+	/// Delete a child of this node.
+	bool RemoveChild( TiXmlNode* removeThis );
+
+	/// Navigate to a sibling node.
+	TiXmlNode* PreviousSibling() const			{ return prev; }
+
+	/// Navigate to a sibling node.
+	TiXmlNode* PreviousSibling( const char * ) const;
+
+    #ifdef TIXML_USE_STL
+	TiXmlNode* PreviousSibling( const std::string& value ) const	{	return PreviousSibling (value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* NextSibling( const std::string& value) const	{	return NextSibling (value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/// Navigate to a sibling node.
+	TiXmlNode* NextSibling() const				{ return next; }
+
+	/// Navigate to a sibling node with the given 'value'.
+	TiXmlNode* NextSibling( const char * ) const;
+
+	/** Convenience function to get through elements.
+		Calls NextSibling and ToElement. Will skip all non-Element
+		nodes. Returns 0 if there is not another element.
+	*/
+	TiXmlElement* NextSiblingElement() const;
+
+	/** Convenience function to get through elements.
+		Calls NextSibling and ToElement. Will skip all non-Element
+		nodes. Returns 0 if there is not another element.
+	*/
+	TiXmlElement* NextSiblingElement( const char * ) const;
+
+    #ifdef TIXML_USE_STL
+	TiXmlElement* NextSiblingElement( const std::string& value) const	{	return NextSiblingElement (value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/// Convenience function to get through elements.
+	TiXmlElement* FirstChildElement()	const;
+
+	/// Convenience function to get through elements.
+	TiXmlElement* FirstChildElement( const char * value ) const;
+
+    #ifdef TIXML_USE_STL
+	TiXmlElement* FirstChildElement( const std::string& value ) const	{	return FirstChildElement (value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/// Query the type (as an enumerated value, above) of this node.
+	virtual int Type() const	{ return type; }
+
+	/** Return a pointer to the Document this node lives in.
+		Returns null if not in a document.
+	*/
+	TiXmlDocument* GetDocument() const;
+
+	/// Returns true if this node has no children.
+	bool NoChildren() const						{ return !firstChild; }
+
+	TiXmlDocument* ToDocument()	const		{ return ( this && type == DOCUMENT ) ? (TiXmlDocument*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type.
+	TiXmlElement*  ToElement() const		{ return ( this && type == ELEMENT  ) ? (TiXmlElement*)  this : 0; } ///< Cast to a more defined type. Will return null not of the requested type.
+	TiXmlComment*  ToComment() const		{ return ( this && type == COMMENT  ) ? (TiXmlComment*)  this : 0; } ///< Cast to a more defined type. Will return null not of the requested type.
+	TiXmlUnknown*  ToUnknown() const		{ return ( this && type == UNKNOWN  ) ? (TiXmlUnknown*)  this : 0; } ///< Cast to a more defined type. Will return null not of the requested type.
+	TiXmlText*	   ToText()    const		{ return ( this && type == TEXT     ) ? (TiXmlText*)     this : 0; } ///< Cast to a more defined type. Will return null not of the requested type.
+	TiXmlDeclaration* ToDeclaration() const	{ return ( this && type == DECLARATION ) ? (TiXmlDeclaration*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	virtual TiXmlNode* Clone() const = 0;
+
+	void  SetUserData( void* user )			{ userData = user; }
+	void* GetUserData()						{ return userData; }
+
+protected:
+	TiXmlNode( NodeType type );
+
+	#ifdef TIXML_USE_STL
+	    // The real work of the input operator.
+	    virtual void StreamIn( TIXML_ISTREAM* in, TIXML_STRING* tag ) = 0;
+	#endif
+
+	// The node is passed in by ownership. This object will delete it.
+	TiXmlNode* LinkEndChild( TiXmlNode* addThis );
+
+	// Figure out what is at *p, and parse it. Returns null if it is not an xml node.
+	TiXmlNode* Identify( const char* start );
+	void CopyToClone( TiXmlNode* target ) const	{ target->SetValue (value.c_str() );
+												  target->userData = userData; }
+
+	// Internal Value function returning a TIXML_STRING
+	TIXML_STRING SValue() const	{ return value ; }
+
+	TiXmlNode*		parent;
+	NodeType		type;
+
+	TiXmlNode*		firstChild;
+	TiXmlNode*		lastChild;
+
+	TIXML_STRING	value;
+
+	TiXmlNode*		prev;
+	TiXmlNode*		next;
+	void*			userData;
+};
+
+
+/** An attribute is a name-value pair. Elements have an arbitrary
+	number of attributes, each with a unique name.
+
+	@note The attributes are not TiXmlNodes, since they are not
+		  part of the tinyXML document object model. There are other
+		  suggested ways to look at this problem.
+
+	@note Attributes have a parent
+*/
+class TiXmlAttribute : public TiXmlBase
+{
+	friend class TiXmlAttributeSet;
+
+public:
+	/// Construct an empty attribute.
+	TiXmlAttribute() : prev( 0 ), next( 0 )	{}
+
+	#ifdef TIXML_USE_STL
+	/// std::string constructor.
+	TiXmlAttribute( const std::string& _name, const std::string& _value )
+	{
+		name = _name;
+		value = _value;
+	}
+	#endif
+
+	/// Construct an attribute with a name and value.
+	TiXmlAttribute( const char * _name, const char * _value ): name( _name ), value( _value ), prev( 0 ), next( 0 ) {}
+	const char*		Name()  const		{ return name.c_str (); }		///< Return the name of this attribute.
+	const char*		Value() const		{ return value.c_str (); }		///< Return the value of this attribute.
+	const int       IntValue() const;									///< Return the value of this attribute, converted to an integer.
+	const double	DoubleValue() const;								///< Return the value of this attribute, converted to a double.
+
+	void SetName( const char* _name )	{ name = _name; }				///< Set the name of this attribute.
+	void SetValue( const char* _value )	{ value = _value; }				///< Set the value.
+
+	void SetIntValue( int value );										///< Set the value from an integer.
+	void SetDoubleValue( double value );								///< Set the value from a double.
+
+    #ifdef TIXML_USE_STL
+	/// STL std::string form.
+	void SetName( const std::string& _name )	
+	{	
+		SetName(_name.c_str() );	
+	}
+	/// STL std::string form.	
+	void SetValue( const std::string& _value )	
+	{	
+		SetValue( value.c_str() );	
+	}
+	#endif
+
+	/// Get the next sibling attribute in the DOM. Returns null at end.
+	TiXmlAttribute* Next() const;
+	/// Get the previous sibling attribute in the DOM. Returns null at beginning.
+	TiXmlAttribute* Previous() const;
+
+	bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; }
+	bool operator<( const TiXmlAttribute& rhs )	 const { return name < rhs.name; }
+	bool operator>( const TiXmlAttribute& rhs )  const { return name > rhs.name; }
+
+	/*	[internal use]
+		Attribtue parsing starts: first letter of the name
+						 returns: the next char after the value end quote
+	*/
+	virtual const char* Parse( const char* p );
+
+	// [internal use]
+	virtual void Print( FILE* cfile, int depth ) const;
+
+	virtual void StreamOut( TIXML_OSTREAM * out ) const;
+	// [internal use]
+	// Set the document pointer so the attribute can report errors.
+	void SetDocument( TiXmlDocument* doc )	{ document = doc; }
+
+private:
+	TiXmlDocument*	document;	// A pointer back to a document, for error reporting.
+	TIXML_STRING name;
+	TIXML_STRING value;
+	TiXmlAttribute*	prev;
+	TiXmlAttribute*	next;
+};
+
+
+/*	A class used to manage a group of attributes.
+	It is only used internally, both by the ELEMENT and the DECLARATION.
+	
+	The set can be changed transparent to the Element and Declaration
+	classes that use it, but NOT transparent to the Attribute
+	which has to implement a next() and previous() method. Which makes
+	it a bit problematic and prevents the use of STL.
+
+	This version is implemented with circular lists because:
+		- I like circular lists
+		- it demonstrates some independence from the (typical) doubly linked list.
+*/
+class TiXmlAttributeSet
+{
+public:
+	TiXmlAttributeSet();
+	~TiXmlAttributeSet();
+
+	void Add( TiXmlAttribute* attribute );
+	void Remove( TiXmlAttribute* attribute );
+
+	TiXmlAttribute* First() const	{ return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; }
+	TiXmlAttribute* Last()  const	{ return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; }
+	TiXmlAttribute*	Find( const char * name ) const;
+
+private:
+	TiXmlAttribute sentinel;
+};
+
+
+/** The element is a container class. It has a value, the element name,
+	and can contain other elements, text, comments, and unknowns.
+	Elements also contain an arbitrary number of attributes.
+*/
+class TiXmlElement : public TiXmlNode
+{
+public:
+	/// Construct an element.
+	TiXmlElement (const char * in_value);
+
+	#ifdef TIXML_USE_STL
+	/// std::string constructor.
+	TiXmlElement( const std::string& _value ) : 	TiXmlNode( TiXmlNode::ELEMENT )
+	{
+		firstChild = lastChild = 0;
+		value = _value;
+	}
+	#endif
+
+	virtual ~TiXmlElement();
+
+// OGRE CHANGE 
+// Resolve ambiguity of std::string / const char* conversion of Ogre::String
+#ifndef TIXML_USE_STL
+// OGRE CHANGE
+	/** Given an attribute name, attribute returns the value
+		for the attribute of that name, or null if none exists.
+	*/
+	const char* Attribute( const char* name ) const;
+
+	/** Given an attribute name, attribute returns the value
+		for the attribute of that name, or null if none exists.
+		If the attribute exists and can be converted to an integer,
+		the integer value will be put in the return 'i', if 'i'
+		is non-null.
+	*/
+	const char* Attribute( const char* name, int* i ) const;
+
+	/** Sets an attribute of name to a given value. The attribute
+		will be created if it does not exist, or changed if it does.
+	*/
+	void SetAttribute( const char* name, const char * value );
+// OGRE CHANGE
+#endif
+// OGRE CHANGE
+    #ifdef TIXML_USE_STL
+	const char* Attribute( const std::string& name ) const;
+	const char* Attribute( const std::string& name, int* i ) const;
+
+	/// STL std::string form.
+	void SetAttribute( const std::string& name, const std::string& value );
+	///< STL std::string form.
+	void SetAttribute( const std::string& name, int value );
+	#endif
+
+	/** Sets an attribute of name to a given value. The attribute
+		will be created if it does not exist, or changed if it does.
+	*/
+	void SetAttribute( const char * name, int value );
+
+	/** Deletes an attribute with the given name.
+	*/
+	void RemoveAttribute( const char * name );
+    #ifdef TIXML_USE_STL
+	void RemoveAttribute( const std::string& name )	{	RemoveAttribute (name.c_str ());	}	///< STL std::string form.
+	#endif
+
+	TiXmlAttribute* FirstAttribute() const	{ return attributeSet.First(); }		///< Access the first attribute in this element.
+	TiXmlAttribute* LastAttribute()	const 	{ return attributeSet.Last(); }		///< Access the last attribute in this element.
+
+	// [internal use] Creates a new Element and returs it.
+	virtual TiXmlNode* Clone() const;
+	// [internal use]
+
+	virtual void Print( FILE* cfile, int depth ) const;
+
+protected:
+
+	// Used to be public [internal use]
+	#ifdef TIXML_USE_STL
+	    virtual void StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag );
+	#endif
+	virtual void StreamOut( TIXML_OSTREAM * out ) const;
+
+	/*	[internal use]
+		Attribtue parsing starts: next char past '<'
+						 returns: next char past '>'
+	*/
+	virtual const char* Parse( const char* p );
+
+	/*	[internal use]
+		Reads the "value" of the element -- another element, or text.
+		This should terminate with the current end tag.
+	*/
+	const char* ReadValue( const char* in );
+
+private:
+	TiXmlAttributeSet attributeSet;
+};
+
+
+/**	An XML comment.
+*/
+class TiXmlComment : public TiXmlNode
+{
+public:
+	/// Constructs an empty comment.
+	TiXmlComment() : TiXmlNode( TiXmlNode::COMMENT ) {}
+	virtual ~TiXmlComment()	{}
+
+	// [internal use] Creates a new Element and returs it.
+	virtual TiXmlNode* Clone() const;
+	// [internal use]
+	virtual void Print( FILE* cfile, int depth ) const;
+protected:
+	// used to be public
+	#ifdef TIXML_USE_STL
+	    virtual void StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag );
+	#endif
+	virtual void StreamOut( TIXML_OSTREAM * out ) const;
+	/*	[internal use]
+		Attribtue parsing starts: at the ! of the !--
+						 returns: next char past '>'
+	*/
+	virtual const char* Parse( const char* p );
+};
+
+
+/** XML text. Contained in an element.
+*/
+class TiXmlText : public TiXmlNode
+{
+	friend class TiXmlElement;
+public:
+	/// Constructor.
+	TiXmlText (const char * initValue) : TiXmlNode (TiXmlNode::TEXT)
+	{
+		SetValue( initValue );
+	}
+	virtual ~TiXmlText() {}
+
+	#ifdef TIXML_USE_STL
+	/// Constructor.
+	TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TEXT)
+	{
+		SetValue( initValue );
+	}
+	#endif
+
+protected :
+	// [internal use] Creates a new Element and returns it.
+	virtual TiXmlNode* Clone() const;
+	// [internal use]
+	virtual void Print( FILE* cfile, int depth ) const;
+	virtual void StreamOut ( TIXML_OSTREAM * out ) const;
+	// [internal use]
+	bool Blank() const;	// returns true if all white space and new lines
+	/*	[internal use]
+			Attribtue parsing starts: First char of the text
+							 returns: next char past '>'
+		*/
+	virtual const char* Parse( const char* p );
+	// [internal use]
+	#ifdef TIXML_USE_STL
+	    virtual void StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag );
+	#endif
+};
+
+
+/** In correct XML the declaration is the first entry in the file.
+	@verbatim
+		<?xml version="1.0" standalone="yes"?>
+	@endverbatim
+
+	TinyXml will happily read or write files without a declaration,
+	however. There are 3 possible attributes to the declaration:
+	version, encoding, and standalone.
+
+	Note: In this version of the code, the attributes are
+	handled as special cases, not generic attributes, simply
+	because there can only be at most 3 and they are always the same.
+*/
+class TiXmlDeclaration : public TiXmlNode
+{
+public:
+	/// Construct an empty declaration.
+	TiXmlDeclaration()   : TiXmlNode( TiXmlNode::DECLARATION ) {}
+
+#ifdef TIXML_USE_STL
+	/// Constructor.
+	TiXmlDeclaration(
+						const std::string& _version,
+						const std::string& _encoding,
+						const std::string& _standalone )
+					: TiXmlNode( TiXmlNode::DECLARATION )
+	{
+		version = _version;
+		encoding = _encoding;
+		standalone = _standalone;
+	}
+#endif
+
+	/// Construct.
+	TiXmlDeclaration::TiXmlDeclaration( const char * _version,
+										const char * _encoding,
+										const char * _standalone );
+
+	virtual ~TiXmlDeclaration()	{}
+
+	/// Version. Will return empty if none was found.
+	const char * Version() const		{ return version.c_str (); }
+	/// Encoding. Will return empty if none was found.
+	const char * Encoding() const		{ return encoding.c_str (); }
+	/// Is this a standalone document?
+	const char * Standalone() const		{ return standalone.c_str (); }
+
+	// [internal use] Creates a new Element and returs it.
+	virtual TiXmlNode* Clone() const;
+	// [internal use]
+	virtual void Print( FILE* cfile, int depth ) const;
+
+protected:
+	// used to be public
+	#ifdef TIXML_USE_STL
+	    virtual void StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag );
+	#endif
+	virtual void StreamOut ( TIXML_OSTREAM * out) const;
+	//	[internal use]
+	//	Attribtue parsing starts: next char past '<'
+	//					 returns: next char past '>'
+
+	virtual const char* Parse( const char* p );
+
+private:
+	TIXML_STRING version;
+	TIXML_STRING encoding;
+	TIXML_STRING standalone;
+};
+
+
+/** Any tag that tinyXml doesn't recognize is save as an
+	unknown. It is a tag of text, but should not be modified.
+	It will be written back to the XML, unchanged, when the file
+	is saved.
+*/
+class TiXmlUnknown : public TiXmlNode
+{
+public:
+	TiXmlUnknown() : TiXmlNode( TiXmlNode::UNKNOWN ) {}
+	virtual ~TiXmlUnknown() {}
+
+	// [internal use]
+	virtual TiXmlNode* Clone() const;
+	// [internal use]
+	virtual void Print( FILE* cfile, int depth ) const;
+protected:
+	// used to be public
+	#ifdef TIXML_USE_STL
+	    virtual void StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag );
+	#endif
+	virtual void StreamOut ( TIXML_OSTREAM * out ) const;
+	/*	[internal use]
+		Attribute parsing starts: First char of the text
+						 returns: next char past '>'
+	*/
+	virtual const char* Parse( const char* p );
+};
+
+
+/** Always the top level node. A document binds together all the
+	XML pieces. It can be saved, loaded, and printed to the screen.
+	The 'value' of a document node is the xml file name.
+*/
+class TiXmlDocument : public TiXmlNode
+{
+public:
+	/// Create an empty document, that has no name.
+	TiXmlDocument();
+	/// Create a document with a name. The name of the document is also the filename of the xml.
+	TiXmlDocument( const char * documentName );
+
+	#ifdef TIXML_USE_STL
+	/// Constructor.
+	TiXmlDocument( const std::string& documentName ) :
+	    TiXmlNode( TiXmlNode::DOCUMENT )
+	{
+        value = documentName;
+		error = false;
+	}
+	#endif
+
+	virtual ~TiXmlDocument() {}
+
+	/** Load a file using the current document value.
+		Returns true if successful. Will delete any existing
+		document data before loading.
+	*/
+	bool LoadFile();
+	/// Save a file using the current document value. Returns true if successful.
+	bool SaveFile() const;
+	/// Load a file using the given filename. Returns true if successful.
+	bool LoadFile( const char * filename );
+	/// Save a file using the given filename. Returns true if successful.
+	bool SaveFile( const char * filename ) const;
+
+	#ifdef TIXML_USE_STL
+	bool LoadFile( const std::string& filename )			///< STL std::string version.
+	{
+		return ( LoadFile( filename.c_str() ));
+	}
+	bool SaveFile( const std::string& filename ) const		///< STL std::string version.
+	{
+		//StringToBuffer f( filename );
+		return ( SaveFile( filename.c_str() ));
+	}
+	#endif
+
+	/// Parse the given null terminated block of xml data.
+	virtual const char* Parse( const char* p );
+
+	/** Get the root element -- the only top level element -- of the document.
+		In well formed XML, there should only be one. TinyXml is tolerant of
+		multiple elements at the document level.
+	*/
+	TiXmlElement* RootElement() const		{ return FirstChildElement(); }
+
+	/// If, during parsing, a error occurs, Error will be set to true.
+	bool Error() const						{ return error; }
+
+	/// Contains a textual (english) description of the error if one occurs.
+	const char * ErrorDesc() const	{ return errorDesc.c_str (); }
+
+	/** Generally, you probably want the error string ( ErrorDesc() ). But if you
+			prefer the ErrorId, this function will fetch it.
+		*/
+	const int ErrorId()	const				{ return errorId; }
+
+	/// If you have handled the error, it can be reset with this call.
+	void ClearError()						{ error = false; errorId = 0; errorDesc = ""; }
+
+	/** Dump the document to standard out. */
+	void Print() const						{ Print( stdout, 0 ); }
+
+	// [internal use]
+	virtual void Print( FILE* cfile, int depth = 0 ) const;
+	// [internal use]
+	void SetError( int err ) {		assert( err > 0 && err < TIXML_ERROR_STRING_COUNT );
+		error   = true;
+		errorId = err;
+	errorDesc = errorString[ errorId ]; }
+
+protected :
+	virtual void StreamOut ( TIXML_OSTREAM * out) const;
+	// [internal use]
+	virtual TiXmlNode* Clone() const;
+	#ifdef TIXML_USE_STL
+	    virtual void StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag );
+	#endif
+
+private:
+	bool error;
+	int  errorId;
+	TIXML_STRING errorDesc;
+};
+
+#endif
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/IOSMSceneCallbacks.h
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/IOSMSceneCallbacks.h	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/include/IOSMSceneCallbacks.h	(revision 1493)
@@ -0,0 +1,43 @@
+/**********************************************************************
+ *<
+	oExporter plugin Private Beta (see License.txt)
+
+	FILE: ogreAnimationCompiler.h
+
+	DESCRIPTION: OE_XMLScene callbacks interface	
+
+	IMPLEMENTED BY: Lioric
+
+	HISTORY: 
+
+		Original implementation by Lasse Tassing (Channex)
+		2005 ITE ApS, Lasse Tassing
+
+ *>	Copyright (c) 2005, All Rights Reserved.
+ **********************************************************************/
+
+
+#ifndef __XML_SCENE_CALLBACKS__
+#define __XML_SCENE_CALLBACKS__
+
+// Callback interface. Use this if you want to set special properties on the 
+// objects during creation (and/or read custom attribute values).
+class OSMSceneCallbacks
+{
+public:
+	virtual ~OSMSceneCallbacks() {};
+
+	// Called when a node has been created
+	virtual void OnNodeCreate(Ogre::SceneNode *pNode, TiXmlElement* pNodeDesc) {};
+
+	// Called when an entity has been created
+	virtual void OnEntityCreate(Ogre::Entity *pEntity, TiXmlElement* pEntityDesc) {};
+
+	// Called when a camera has been created
+	virtual void OnCameraCreate(Ogre::Camera *pCamera, TiXmlElement* pCameraDesc) {};
+
+	// Called when a light has been created
+	virtual void OnLightCreate(Ogre::Light *pLight, TiXmlElement* pLightDesc) {};
+};
+
+#endif
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj	(revision 1493)
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Demo_IndirectTexturing"
+	ProjectGUID="{78945224-C703-45EB-9C37-DFECA6CEA734}">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/Zm500 /D &quot;TIXML_USE_STL&quot;"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="_WINDOWS;_DEBUG;WIN32"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\..\obj\Debug/Demo_SkyPlane.pch"
+				AssemblerListingLocation=".\..\obj\Debug/"
+				ObjectFile=".\..\obj\Debug/"
+				ProgramDataBaseFileName=".\..\obj\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain_d.lib"
+				OutputFile="$(OutDir)/Demo_IndirectTexturing.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;"
+				IgnoreDefaultLibraryNames=""
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="..\bin\$(ConfigurationName)\Demo_IndirectTexturing.pdb"
+				SubSystem="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\bin\Debug/Demo_SkyPlane.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="2057"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/D &quot;TIXML_USE_STL&quot;"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="NDEBUG;_WINDOWS;WIN32"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderFile=".\..\obj\Release/Demo_SkyPlane.pch"
+				AssemblerListingLocation=".\..\obj\Release/"
+				ObjectFile=".\..\obj\Release/"
+				ProgramDataBaseFileName=".\..\obj\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain.lib"
+				OutputFile="$(OutDir)/Demo_IndirectTexturing.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;"
+				ProgramDatabaseFile="..\bin\$(ConfigurationName)\Demo_IndirectTexturing.pdb"
+				SubSystem="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\bin\Release/Demo_SkyPlane.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="2057"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="..\src\IndirectTexturing.cpp">
+			</File>
+			<File
+				RelativePath="..\src\OgreOSMScene.cpp">
+			</File>
+			<File
+				RelativePath="..\src\tinystr.cpp">
+			</File>
+			<File
+				RelativePath="..\src\tinyxml.cpp">
+			</File>
+			<File
+				RelativePath="..\src\tinyxmlerror.cpp">
+			</File>
+			<File
+				RelativePath="..\src\tinyxmlparser.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="..\include\ExampleApplication.h">
+			</File>
+			<File
+				RelativePath="..\include\ExtendedCamera.h">
+			</File>
+			<File
+				RelativePath="..\include\Grass.h">
+			</File>
+			<File
+				RelativePath="..\include\IndirectTexturing.h">
+			</File>
+			<File
+				RelativePath="..\include\IOSMSceneCallbacks.h">
+			</File>
+			<File
+				RelativePath="..\include\LightComposite.h">
+			</File>
+			<File
+				RelativePath="..\include\OgreOSMScene.h">
+			</File>
+			<File
+				RelativePath="..\include\tinystr.h">
+			</File>
+			<File
+				RelativePath="..\include\tinyxml.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.7.10.old
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.7.10.old	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.7.10.old	(revision 1493)
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Demo_IndirectTexturing"
+	ProjectGUID="{78945224-C703-45EB-9C37-DFECA6CEA734}"
+	SccProjectName=""
+	SccLocalPath="">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/Zm500 /D &quot;TIXML_USE_STL&quot;"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="_WINDOWS;_DEBUG;WIN32"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\..\obj\Debug/Demo_SkyPlane.pch"
+				AssemblerListingLocation=".\..\obj\Debug/"
+				ObjectFile=".\..\obj\Debug/"
+				ProgramDataBaseFileName=".\..\obj\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain_d.lib"
+				OutputFile="$(OutDir)/Demo_IndirectTexturing.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;"
+				IgnoreDefaultLibraryNames=""
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="..\bin\$(ConfigurationName)\Demo_IndirectTexturing.pdb"
+				SubSystem="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\bin\Debug/Demo_SkyPlane.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="2057"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/D &quot;TIXML_USE_STL&quot;"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="NDEBUG;_WINDOWS;WIN32"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderFile=".\..\obj\Release/Demo_SkyPlane.pch"
+				AssemblerListingLocation=".\..\obj\Release/"
+				ObjectFile=".\..\obj\Release/"
+				ProgramDataBaseFileName=".\..\obj\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain.lib"
+				OutputFile="$(OutDir)/Demo_IndirectTexturing.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;"
+				ProgramDatabaseFile="..\bin\$(ConfigurationName)\Demo_IndirectTexturing.pdb"
+				SubSystem="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\bin\Release/Demo_SkyPlane.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="2057"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="..\src\IndirectTexturing.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="..\include\ExampleApplication.h">
+			</File>
+			<File
+				RelativePath="..\include\ExtendedCamera.h">
+			</File>
+			<File
+				RelativePath="..\include\Grass.h">
+			</File>
+			<File
+				RelativePath="..\include\IndirectTexturing.h">
+			</File>
+			<File
+				RelativePath="..\include\LightComposite.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.TALIESIN.igarcia.user
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.TALIESIN.igarcia.user	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.TALIESIN.igarcia.user	(revision 1493)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioUserFile
+	ProjectType="Visual C++"
+	Version="8,00"
+	ShowAllFiles="false"
+	>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			>
+			<DebugSettings
+				Command="$(TargetPath)"
+				WorkingDirectory=""
+				CommandArguments=""
+				Attach="false"
+				DebuggerType="3"
+				Remote="1"
+				RemoteMachine="TALIESIN"
+				RemoteCommand=""
+				HttpUrl=""
+				PDBPath=""
+				SQLDebugging=""
+				Environment=""
+				EnvironmentMerge="true"
+				DebuggerFlavor=""
+				MPIRunCommand=""
+				MPIRunArguments=""
+				MPIRunWorkingDirectory=""
+				ApplicationCommand=""
+				ApplicationArguments=""
+				ShimCommand=""
+				MPIAcceptMode=""
+				MPIAcceptFilter=""
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			>
+			<DebugSettings
+				Command="$(TargetPath)"
+				WorkingDirectory=""
+				CommandArguments=""
+				Attach="false"
+				DebuggerType="3"
+				Remote="1"
+				RemoteMachine="TALIESIN"
+				RemoteCommand=""
+				HttpUrl=""
+				PDBPath=""
+				SQLDebugging=""
+				Environment=""
+				EnvironmentMerge="true"
+				DebuggerFlavor=""
+				MPIRunCommand=""
+				MPIRunArguments=""
+				MPIRunWorkingDirectory=""
+				ApplicationCommand=""
+				ApplicationArguments=""
+				ShimCommand=""
+				MPIAcceptMode=""
+				MPIAcceptFilter=""
+			/>
+		</Configuration>
+	</Configurations>
+</VisualStudioUserFile>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/_UpgradeReport_Files/UpgradeReport.css
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/_UpgradeReport_Files/UpgradeReport.css	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/_UpgradeReport_Files/UpgradeReport.css	(revision 1493)
@@ -0,0 +1,207 @@
+﻿BODY
+{
+	BACKGROUND-COLOR: white;
+	FONT-FAMILY: "Verdana", sans-serif;
+	FONT-SIZE: 100%;
+	MARGIN-LEFT: 0px;
+	MARGIN-TOP: 0px
+}
+P
+{
+	FONT-FAMILY: "Verdana", sans-serif;
+	FONT-SIZE: 70%;
+	LINE-HEIGHT: 12pt;
+	MARGIN-BOTTOM: 0px;
+	MARGIN-LEFT: 10px;
+	MARGIN-TOP: 10px
+}
+.note
+{
+	BACKGROUND-COLOR:  #ffffff;
+	COLOR: #336699;
+	FONT-FAMILY: "Verdana", sans-serif;
+	FONT-SIZE: 100%;
+	MARGIN-BOTTOM: 0px;
+	MARGIN-LEFT: 0px;
+	MARGIN-TOP: 0px;
+	PADDING-RIGHT: 10px
+}
+.infotable
+{
+	BACKGROUND-COLOR: #f0f0e0;
+	BORDER-BOTTOM: #ffffff 0px solid;
+	BORDER-COLLAPSE: collapse;
+	BORDER-LEFT: #ffffff 0px solid;
+	BORDER-RIGHT: #ffffff 0px solid;
+	BORDER-TOP: #ffffff 0px solid;
+	FONT-SIZE: 70%;
+	MARGIN-LEFT: 10px
+}
+.issuetable
+{
+	BACKGROUND-COLOR: #ffffe8;
+	BORDER-COLLAPSE: collapse;
+	COLOR: #000000;
+	FONT-SIZE: 100%;
+	MARGIN-BOTTOM: 10px;
+	MARGIN-LEFT: 13px;
+	MARGIN-TOP: 0px
+}
+.issuetitle
+{
+	BACKGROUND-COLOR: #ffffff;
+	BORDER-BOTTOM: #dcdcdc 1px solid;
+	BORDER-TOP: #dcdcdc 1px;
+	COLOR: #003366;
+	FONT-WEIGHT: normal
+}
+.header
+{
+	BACKGROUND-COLOR: #cecf9c;
+	BORDER-BOTTOM: #ffffff 1px solid;
+	BORDER-LEFT: #ffffff 1px solid;
+	BORDER-RIGHT: #ffffff 1px solid;
+	BORDER-TOP: #ffffff 1px solid;
+	COLOR: #000000;
+	FONT-WEIGHT: bold
+}
+.issuehdr
+{
+	BACKGROUND-COLOR: #E0EBF5;
+	BORDER-BOTTOM: #dcdcdc 1px solid;
+	BORDER-TOP: #dcdcdc 1px solid;
+	COLOR: #000000;
+	FONT-WEIGHT: normal
+}
+.issuenone
+{
+	BACKGROUND-COLOR: #ffffff;
+	BORDER-BOTTOM: 0px;
+	BORDER-LEFT: 0px;
+	BORDER-RIGHT: 0px;
+	BORDER-TOP: 0px;
+	COLOR: #000000;
+	FONT-WEIGHT: normal
+}
+.content
+{
+	BACKGROUND-COLOR: #e7e7ce;
+	BORDER-BOTTOM: #ffffff 1px solid;
+	BORDER-LEFT: #ffffff 1px solid;
+	BORDER-RIGHT: #ffffff 1px solid;
+	BORDER-TOP: #ffffff 1px solid;
+	PADDING-LEFT: 3px
+}
+.issuecontent
+{
+	BACKGROUND-COLOR: #ffffff;
+	BORDER-BOTTOM: #dcdcdc 1px solid;
+	BORDER-TOP: #dcdcdc 1px solid;
+	PADDING-LEFT: 3px
+}
+A:link
+{
+	COLOR: #cc6633;
+	TEXT-DECORATION: underline
+}
+A:visited
+{
+	COLOR: #cc6633;
+}
+A:active
+{
+	COLOR: #cc6633;
+}
+A:hover
+{
+	COLOR: #cc3300;
+	TEXT-DECORATION: underline
+}
+H1
+{
+	BACKGROUND-COLOR: #003366;
+	BORDER-BOTTOM: #336699 6px solid;
+	COLOR: #ffffff;
+	FONT-SIZE: 130%;
+	FONT-WEIGHT: normal;
+	MARGIN: 0em 0em 0em -20px;
+	PADDING-BOTTOM: 8px;
+	PADDING-LEFT: 30px;
+	PADDING-TOP: 16px
+}
+H2
+{
+	COLOR: #000000;
+	FONT-SIZE: 80%;
+	FONT-WEIGHT: bold;
+	MARGIN-BOTTOM: 3px;
+	MARGIN-LEFT: 10px;
+	MARGIN-TOP: 20px;
+	PADDING-LEFT: 0px
+}
+H3
+{
+	COLOR: #000000;
+	FONT-SIZE: 80%;
+	FONT-WEIGHT: bold;
+	MARGIN-BOTTOM: -5px;
+	MARGIN-LEFT: 10px;
+	MARGIN-TOP: 20px
+}
+H4
+{
+	COLOR: #000000;
+	FONT-SIZE: 70%;
+	FONT-WEIGHT: bold;
+	MARGIN-BOTTOM: 0px;
+	MARGIN-TOP: 15px;
+	PADDING-BOTTOM: 0px
+}
+UL
+{
+	COLOR: #000000;
+	FONT-SIZE: 70%;
+	LIST-STYLE: square;
+	MARGIN-BOTTOM: 0pt;
+	MARGIN-TOP: 0pt
+}
+OL
+{
+	COLOR: #000000;
+	FONT-SIZE: 70%;
+	LIST-STYLE: square;
+	MARGIN-BOTTOM: 0pt;
+	MARGIN-TOP: 0pt
+}
+LI
+{
+	LIST-STYLE: square;
+	MARGIN-LEFT: 0px
+}
+.expandable
+{
+	CURSOR: hand
+}
+.expanded
+{
+	color: black
+}
+.collapsed
+{
+	DISPLAY: none
+}
+.foot
+{
+BACKGROUND-COLOR: #ffffff;
+BORDER-BOTTOM: #cecf9c 1px solid;
+BORDER-TOP: #cecf9c 2px solid
+}
+.settings
+{
+MARGIN-LEFT: 25PX;
+}
+.help
+{
+TEXT-ALIGN: right;
+margin-right: 10px;
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/_UpgradeReport_Files/UpgradeReport.xslt
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/_UpgradeReport_Files/UpgradeReport.xslt	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/_UpgradeReport_Files/UpgradeReport.xslt	(revision 1493)
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
+
+    <xsl:key name="ProjectKey" match="Event" use="@Project" />
+
+    <xsl:template match="Events" mode="createProjects">
+        <projects>
+            <xsl:for-each select="Event">
+                <!--xsl:sort select="@Project" order="descending"/-->
+                <xsl:if test="(1=position()) or (preceding-sibling::*[1]/@Project != @Project)">
+
+                    <xsl:variable name="ProjectName" select="@Project"/>
+
+                    <project>
+                        <xsl:attribute name="name">
+                            <xsl:value-of select="@Project"/>
+                        </xsl:attribute> 
+
+                        <xsl:if test="@Project=''">
+                        <xsl:attribute name="solution">
+                            <xsl:value-of select="@Solution"/>
+                        </xsl:attribute> 
+                        </xsl:if>
+
+                        <xsl:for-each select="key('ProjectKey', $ProjectName)">
+                            <!--xsl:sort select="@Source" /-->
+                            <xsl:if test="(1=position()) or (preceding-sibling::*[1]/@Source != @Source)">
+
+                                <source>
+                                    <xsl:attribute name="name">
+                                        <xsl:value-of select="@Source"/>
+                                    </xsl:attribute>
+
+                                    <xsl:variable name="Source">
+                                        <xsl:value-of select="@Source"/>
+                                    </xsl:variable>
+
+                                    <xsl:for-each select="key('ProjectKey', $ProjectName)[ @Source = $Source ]">
+
+                                        <event>
+                                            <xsl:attribute name="error-level">
+                                                <xsl:value-of select="@ErrorLevel"/>
+                                            </xsl:attribute> 
+                                            <xsl:attribute name="description">
+                                                <xsl:value-of select="@Description"/>
+                                            </xsl:attribute> 
+                                        </event>
+                                    </xsl:for-each>
+                                </source>
+                            </xsl:if>
+                        </xsl:for-each>
+
+                    </project>
+                </xsl:if>
+            </xsl:for-each>
+        </projects>
+    </xsl:template>
+
+    <xsl:template match="projects">
+    <xsl:for-each select="project">
+    <xsl:sort select="@Name" order="ascending"/>
+        <h2>
+        <xsl:if test="@solution">Solution: <xsl:value-of select="@solution"/></xsl:if>
+        <xsl:if test="not(@solution)">Project: <xsl:value-of select="@name"/>
+            <xsl:for-each select="source">
+                <xsl:variable name="Hyperlink" select="@name"/>
+            <xsl:for-each select="event[@error-level='4']">
+            &#32;<A class="note"><xsl:attribute name="HREF"><xsl:value-of select="$Hyperlink"/></xsl:attribute><xsl:value-of select="@description"/></A>
+                </xsl:for-each>
+            </xsl:for-each>
+        </xsl:if>
+        </h2>
+
+        <table cellpadding="2" cellspacing="0" width="98%" border="1" bordercolor="white" class="infotable">
+            <tr>
+                <td nowrap="1" class="header" _locID="Filename">Filename</td>
+                <td nowrap="1" class="header" _locID="Status">Status</td>
+                <td nowrap="1" class="header" _locID="Errors">Errors</td>
+                <td nowrap="1" class="header" _locID="Warnings">Warnings</td>
+            </tr>
+
+            <xsl:for-each select="source">
+                <xsl:sort select="@name" order="ascending"/>
+                <xsl:variable name="source-id" select="generate-id(.)"/>
+
+                <xsl:if test="count(event)!=count(event[@error-level='4'])">
+
+                <tr class="row">
+                    <td class="content">
+                        <A HREF="javascript:"><xsl:attribute name="onClick">javascript:document.images['<xsl:value-of select="$source-id"/>'].click()</xsl:attribute><IMG border="0" alt="expand/collapse section" class="expandable" height="11" onclick="changepic()" src="_UpgradeReport_Files/UpgradeReport_Plus.gif" width="9" ><xsl:attribute name="name"><xsl:value-of select="$source-id"/></xsl:attribute><xsl:attribute name="child">src<xsl:value-of select="$source-id"/></xsl:attribute></IMG></A>&#32;<xsl:value-of select="@name"/> 
+                    </td>
+                    <td class="content">
+                        <xsl:if test="count(event[@error-level='3'])=1">
+                            <xsl:for-each select="event[@error-level='3']">
+                            <xsl:if test="@description='Converted'">Converted</xsl:if>
+                            <xsl:if test="@description!='Converted'"><xsl:value-of select="@description"/></xsl:if>
+                            </xsl:for-each>
+                        </xsl:if>
+                        <xsl:if test="count(event[@error-level='3'])!=1 and count(event[@error-level='3' and @description='Converted'])!=0">Converted
+                        </xsl:if>
+                    </td>
+                    <td class="content"><xsl:value-of select="count(event[@error-level='2'])"/></td>
+                    <td class="content"><xsl:value-of select="count(event[@error-level='1'])"/></td>
+                </tr>
+
+                <tr class="collapsed" bgcolor="#ffffff">
+                    <xsl:attribute name="id">src<xsl:value-of select="$source-id"/></xsl:attribute>
+
+                    <td colspan="7">
+                        <table width="97%" border="1" bordercolor="#dcdcdc" rules="cols" class="issuetable">
+                            <tr>
+                                <td colspan="7" class="issuetitle" _locID="ConversionIssues">Conversion Issues - <xsl:value-of select="@name"/>:</td>
+                            </tr>
+
+                            <xsl:for-each select="event[@error-level!='3']">
+                                <xsl:if test="@error-level!='4'">
+                                <tr>
+                                    <td class="issuenone" style="border-bottom:solid 1 lightgray">
+                                        <xsl:value-of select="@description"/>
+                                    </td>
+                                </tr>
+                                </xsl:if>
+                            </xsl:for-each>
+                        </table>
+                    </td>
+                </tr>
+                </xsl:if>
+            </xsl:for-each>
+
+            <tr valign="top">
+                <td class="foot">
+                    <xsl:if test="count(source)!=1">
+                        <xsl:value-of select="count(source)"/> files
+                    </xsl:if>
+                    <xsl:if test="count(source)=1">
+                        1 file
+                    </xsl:if>
+                </td>
+                <td class="foot">
+                    Converted: <xsl:value-of select="count(source/event[@error-level='3' and @description='Converted'])"/><BR />
+                    Not converted <xsl:value-of select="count(source) - count(source/event[@error-level='3' and @description='Converted'])"/>
+                </td>
+                <td class="foot"><xsl:value-of select="count(source/event[@error-level='2'])"/></td>
+                <td class="foot"><xsl:value-of select="count(source/event[@error-level='1'])"/></td>
+            </tr>
+        </table>
+    </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template match="Property">
+        <xsl:if test="@Name!='Date' and @Name!='Time' and @Name!='LogNumber' and @Name!='Solution'">
+        <tr><td nowrap="1"><b><xsl:value-of select="@Name"/>: </b><xsl:value-of select="@Value"/></td></tr>
+        </xsl:if>
+    </xsl:template>
+
+    <xsl:template match="UpgradeLog">
+        <html>
+            <head>
+                <META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8" />
+                <link rel="stylesheet" href="_UpgradeReport_Files\UpgradeReport.css" />
+                <title>Conversion Report&#32;
+                    <xsl:if test="Properties/Property[@Name='LogNumber']">
+                        <xsl:value-of select="Properties/Property[@Name='LogNumber']/@Value"/>
+                    </xsl:if>
+                </title>
+                <script language="javascript">
+                    function outliner () {
+                        oMe = window.event.srcElement
+                        //get child element
+                        var child = document.all[event.srcElement.getAttribute("child",false)];
+                        //if child element exists, expand or collapse it.
+                        if (null != child)
+                            child.className = child.className == "collapsed" ? "expanded" : "collapsed";
+                    }
+
+                    function changepic() {
+                        uMe = window.event.srcElement;
+                        var check = uMe.src.toLowerCase();
+                        if (check.lastIndexOf("upgradereport_plus.gif") != -1)
+                        {
+                            uMe.src = "_UpgradeReport_Files/UpgradeReport_Minus.gif"
+                        }
+                        else
+                        {
+                            uMe.src = "_UpgradeReport_Files/UpgradeReport_Plus.gif"
+                        }
+                    }
+                </script>
+            </head>
+            <body topmargin="0" leftmargin="0" rightmargin="0" onclick="outliner();">
+                <h1 _locID="ConversionReport">Conversion Report - <xsl:value-of select="Properties/Property[@Name='Solution']/@Value"/></h1>
+
+                <p><span class="note">
+                <b>Time of Conversion:</b>&#32;&#32;<xsl:value-of select="Properties/Property[@Name='Date']/@Value"/>&#32;&#32;<xsl:value-of select="Properties/Property[@Name='Time']/@Value"/><br/>
+                </span></p>
+
+                <xsl:variable name="SortedEvents">
+                    <Events>
+                        <xsl:for-each select="Event">
+                            <xsl:sort select="@Project" order="ascending"/>
+                            <xsl:sort select="@Source" order="ascending"/>
+                            <xsl:sort select="@ErrorLevel" order="ascending"/>
+                            <Event>
+                                <xsl:attribute name="Project"><xsl:value-of select="@Project"/> </xsl:attribute> 
+                                <xsl:attribute name="Solution"><xsl:value-of select="/UpgradeLog/Properties/Property[@Name='Solution']/@Value"/> </xsl:attribute> 
+                                <xsl:attribute name="Source"><xsl:value-of select="@Source"/> </xsl:attribute> 
+                                <xsl:attribute name="ErrorLevel"><xsl:value-of select="@ErrorLevel"/> </xsl:attribute> 
+                                <xsl:attribute name="Description"><xsl:value-of select="@Description"/> </xsl:attribute> 
+                            </Event>
+                        </xsl:for-each>     
+                    </Events>
+                </xsl:variable>
+                
+                <xsl:variable name="Projects">
+                    <xsl:apply-templates select="msxsl:node-set($SortedEvents)/*" mode="createProjects"/>
+                </xsl:variable>
+
+                <xsl:apply-templates select="msxsl:node-set($Projects)/*"/>
+
+                <p></p><p>
+                <table class="note">
+                    <tr>
+                        <td nowrap="1">
+                            <b>Conversion Settings</b>
+                        </td>
+                    </tr>
+                    <xsl:apply-templates select="Properties"/>
+                </table></p>
+            </body>
+        </html>
+    </xsl:template>
+</xsl:stylesheet>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.sln.old
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.sln.old	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.sln.old	(revision 1493)
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_SkyPlane06", "Demo_IndirectTexturing.vcproj", "{78945224-C703-45EB-9C37-DFECA6CEA734}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{78945224-C703-45EB-9C37-DFECA6CEA734}.Debug.ActiveCfg = Debug|Win32
+		{78945224-C703-45EB-9C37-DFECA6CEA734}.Debug.Build.0 = Debug|Win32
+		{78945224-C703-45EB-9C37-DFECA6CEA734}.Release.ActiveCfg = Release|Win32
+		{78945224-C703-45EB-9C37-DFECA6CEA734}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/UpgradeLog.XML
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/UpgradeLog.XML	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/UpgradeLog.XML	(revision 1493)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type='text/xsl' href='_UpgradeReport_Files/UpgradeReport.xslt'?><UpgradeLog>
+<Properties><Property Name="Solution" Value="Demo_IndirectTexturing">
+</Property><Property Name="Solution File" Value="D:\IndirectTexturing\IndirectTexturing\scripts\Demo_IndirectTexturing.sln">
+</Property><Property Name="User Options File" Value="D:\IndirectTexturing\IndirectTexturing\scripts\Demo_IndirectTexturing.suo">
+</Property><Property Name="Date" Value="lunes, 01 de mayo de 2006">
+</Property><Property Name="Time" Value="20:54">
+</Property></Properties><Event ErrorLevel="0" Project="" Source="Demo_IndirectTexturing.sln" Description="File successfully backed up as D:\IndirectTexturing\IndirectTexturing\scripts\Demo_IndirectTexturing.sln.old">
+</Event><Event ErrorLevel="0" Project="" Source="Demo_IndirectTexturing.suo" Description="File successfully backed up as D:\IndirectTexturing\IndirectTexturing\scripts\Demo_IndirectTexturing.suo.old">
+</Event><Event ErrorLevel="0" Project="Demo_IndirectTexturing" Source="Demo_IndirectTexturing.vcproj" Description="Visual C++ now supports a secure version of the C Runtime Library. Use of this library is turned on by default. You may see some warnings about deprecated functions when you build your project. It is advised that you correct these warnings, in order to make your code more secure.">
+</Event><Event ErrorLevel="0" Project="Demo_IndirectTexturing" Source="Demo_IndirectTexturing.vcproj" Description="The C/C++ compiler default settings have been modified to be more compliant with ISO Standard C++. Included in those changes are enforcing Standard C++ for loop scoping and supporting wchar_t as a native type. These changes may cause existing code to no longer compile without changes to the code or the compiler options with which it is built.">
+</Event><Event ErrorLevel="1" Project="Demo_IndirectTexturing" Source="Demo_IndirectTexturing.vcproj" Description="The C/C++ compiler switch /YX is lo longer supported. /YX has been removed from your project settings.">
+</Event><Event ErrorLevel="1" Project="Demo_IndirectTexturing" Source="Demo_IndirectTexturing.vcproj" Description="Due to the requirement that Visual C++ projects produce an embedded (by default) Windows SxS manifest, manifest files in the project are automatically excluded from building with the Manifest Tool.  It is recommended that the dependency information contained in any manifest files be converted to &quot;#pragma comment(linker,&quot;&lt;insert dependency here&gt;&quot;)&quot; in a header file that is included from your source code.  If your project already embeds a manifest in the RT_MANIFEST resource section through a resource (.rc) file, the line will need to be commented out before the project will build correctly.">
+</Event><Event ErrorLevel="1" Project="Demo_IndirectTexturing" Source="Demo_IndirectTexturing.vcproj" Description="Due to a conformance change in the C++ compiler, code change may be required before your project will build without errors.  Previous versions of the C++ compiler allowed specification of member function pointers by member function name (e.g. MemberFunctionName).  The C++ standard requires a fully qualified name with the use of the address-of operator (e.g. &amp;ClassName::MemberFunctionName).  If your project contains forms or controls used in the Windows Forms Designer, you may have to change code in InitializeComponent because the designer generated code used the non-conformant syntax in delegate construction (used in event handlers).">
+</Event><Event ErrorLevel="0" Project="Demo_IndirectTexturing" Source="Demo_IndirectTexturing.vcproj" Description="Project file successfully backed up as 'D:\IndirectTexturing\IndirectTexturing\scripts\Demo_IndirectTexturing.vcproj.7.10.old'.">
+</Event><Event ErrorLevel="0" Project="Demo_IndirectTexturing" Source="Demo_IndirectTexturing.vcproj" Description="Project upgraded successfully.">
+</Event><Event ErrorLevel="3" Project="Demo_IndirectTexturing" Source="Demo_IndirectTexturing.vcproj" Description="Converted">
+</Event><Event ErrorLevel="0" Project="" Source="Demo_IndirectTexturing.sln" Description="Solution converted successfully">
+</Event><Event ErrorLevel="3" Project="" Source="Demo_IndirectTexturing.sln" Description="Converted">
+</Event></UpgradeLog>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.sln
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.sln	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.sln	(revision 1493)
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_IndirectTexturing", "Demo_IndirectTexturing.vcproj", "{78945224-C703-45EB-9C37-DFECA6CEA734}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{78945224-C703-45EB-9C37-DFECA6CEA734}.Debug.ActiveCfg = Debug|Win32
+		{78945224-C703-45EB-9C37-DFECA6CEA734}.Debug.Build.0 = Debug|Win32
+		{78945224-C703-45EB-9C37-DFECA6CEA734}.Release.ActiveCfg = Release|Win32
+		{78945224-C703-45EB-9C37-DFECA6CEA734}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.bak	(revision 1493)
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_IndirectTexturing"
+	ProjectGUID="{78945224-C703-45EB-9C37-DFECA6CEA734}"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\bin\Debug/Demo_SkyPlane.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/Zm500 /D &quot;TIXML_USE_STL&quot;"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="_WINDOWS;_DEBUG;WIN32"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\..\obj\Debug/Demo_SkyPlane.pch"
+				AssemblerListingLocation=".\..\obj\Debug/"
+				ObjectFile=".\..\obj\Debug/"
+				ProgramDataBaseFileName=".\..\obj\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+				CompileAs="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="2057"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="OgreMain_d.lib"
+				OutputFile="$(OutDir)/Demo_IndirectTexturing.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;"
+				IgnoreDefaultLibraryNames=""
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="..\bin\$(ConfigurationName)\Demo_IndirectTexturing.pdb"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\bin\Release/Demo_SkyPlane.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/D &quot;TIXML_USE_STL&quot;"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="NDEBUG;_WINDOWS;WIN32"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderFile=".\..\obj\Release/Demo_SkyPlane.pch"
+				AssemblerListingLocation=".\..\obj\Release/"
+				ObjectFile=".\..\obj\Release/"
+				ProgramDataBaseFileName=".\..\obj\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				CompileAs="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="2057"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="OgreMain.lib"
+				OutputFile="$(OutDir)/Demo_IndirectTexturing.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;"
+				ProgramDatabaseFile="..\bin\$(ConfigurationName)\Demo_IndirectTexturing.pdb"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="..\src\IndirectTexturing.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="..\include\ExampleApplication.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\ExtendedCamera.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\Grass.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\IndirectTexturing.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\LightComposite.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.old
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.old	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/scripts/Demo_IndirectTexturing.vcproj.old	(revision 1493)
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7,00"
+	Name="Demo_IndirectTexturing"
+	ProjectGUID="{78945224-C703-45EB-9C37-DFECA6CEA734}"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\bin\Debug/Demo_SkyPlane.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/Zm500 /D &quot;TIXML_USE_STL&quot;"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="_WINDOWS;_DEBUG;WIN32"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\..\obj\Debug/Demo_SkyPlane.pch"
+				AssemblerListingLocation=".\..\obj\Debug/"
+				ObjectFile=".\..\obj\Debug/"
+				ProgramDataBaseFileName=".\..\obj\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+				CompileAs="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="2057"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="OgreMain_d.lib"
+				OutputFile="$(OutDir)/Demo_IndirectTexturing.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;"
+				IgnoreDefaultLibraryNames=""
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="..\bin\$(ConfigurationName)\Demo_IndirectTexturing.pdb"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\bin\Release/Demo_SkyPlane.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/D &quot;TIXML_USE_STL&quot;"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="NDEBUG;_WINDOWS;WIN32"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderFile=".\..\obj\Release/Demo_SkyPlane.pch"
+				AssemblerListingLocation=".\..\obj\Release/"
+				ObjectFile=".\..\obj\Release/"
+				ProgramDataBaseFileName=".\..\obj\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				CompileAs="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="2057"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="OgreMain.lib"
+				OutputFile="$(OutDir)/Demo_IndirectTexturing.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;"
+				ProgramDatabaseFile="..\bin\$(ConfigurationName)\Demo_IndirectTexturing.pdb"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="..\src\IndirectTexturing.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="..\include\ExampleApplication.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\ExtendedCamera.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\Grass.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\IndirectTexturing.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\LightComposite.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinyxmlerror.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinyxmlerror.cpp	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinyxmlerror.cpp	(revision 1493)
@@ -0,0 +1,50 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code (2.0 and earlier )copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied 
+warranty. In no event will the authors be held liable for any 
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any 
+purpose, including commercial applications, and to alter it and 
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+#include "tinyxml.h"
+
+// The goal of the seperate error file is to make the first
+// step towards localization. tinyxml (currently) only supports
+// latin-1, but at least the error messages could now be translated.
+//
+// It also cleans up the code a bit.
+//
+
+const char* TiXmlBase::errorString[ TIXML_ERROR_STRING_COUNT ] =
+{
+	"No error",
+	"Error",
+	"Failed to open file",
+	"Memory allocation failed.",
+	"Error parsing Element.",
+	"Failed to read Element name",
+	"Error reading Element value.",
+	"Error reading Attributes.",
+	"Error: empty tag.",
+	"Error reading end tag.",
+	"Error parsing Unknown.",
+	"Error parsing Comment.",
+	"Error parsing Declaration.",
+	"Error document empty."
+};
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/Makefile.in
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/Makefile.in	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/Makefile.in	(revision 1493)
@@ -0,0 +1,473 @@
+# Makefile.in generated by automake 1.7.5 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CEGUI_SAMPLE_FALSE = @BUILD_CEGUI_SAMPLE_FALSE@
+BUILD_CEGUI_SAMPLE_TRUE = @BUILD_CEGUI_SAMPLE_TRUE@
+BUILD_CGPLUGIN_FALSE = @BUILD_CGPLUGIN_FALSE@
+BUILD_CGPLUGIN_TRUE = @BUILD_CGPLUGIN_TRUE@
+BUILD_DX9RENDERSYSTEM_FALSE = @BUILD_DX9RENDERSYSTEM_FALSE@
+BUILD_DX9RENDERSYSTEM_TRUE = @BUILD_DX9RENDERSYSTEM_TRUE@
+BUILD_EXRPLUGIN_FALSE = @BUILD_EXRPLUGIN_FALSE@
+BUILD_EXRPLUGIN_TRUE = @BUILD_EXRPLUGIN_TRUE@
+BUILD_UNIT_TESTS_FALSE = @BUILD_UNIT_TESTS_FALSE@
+BUILD_UNIT_TESTS_TRUE = @BUILD_UNIT_TESTS_TRUE@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CEGUI_CFLAGS = @CEGUI_CFLAGS@
+CEGUI_LIBS = @CEGUI_LIBS@
+CFGTK_DEPS_CFLAGS = @CFGTK_DEPS_CFLAGS@
+CFGTK_DEPS_LIBS = @CFGTK_DEPS_LIBS@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FT2_CFLAGS = @FT2_CFLAGS@
+FT2_CONFIG = @FT2_CONFIG@
+FT2_LIBS = @FT2_LIBS@
+GLSUPPORT_CFLAGS = @GLSUPPORT_CFLAGS@
+GLSUPPORT_LIBS = @GLSUPPORT_LIBS@
+GL_LIBS = @GL_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+OGREMAIN_VERSION_INFO = @OGREMAIN_VERSION_INFO@
+OGRE_CFGTK = @OGRE_CFGTK@
+OGRE_CFLAGS = @OGRE_CFLAGS@
+OGRE_GLSUPPORT = @OGRE_GLSUPPORT@
+OGRE_LINUX_FALSE = @OGRE_LINUX_FALSE@
+OGRE_LINUX_TRUE = @OGRE_LINUX_TRUE@
+OGRE_NT_FALSE = @OGRE_NT_FALSE@
+OGRE_NT_TRUE = @OGRE_NT_TRUE@
+OGRE_OSX_FALSE = @OGRE_OSX_FALSE@
+OGRE_OSX_TRUE = @OGRE_OSX_TRUE@
+OGRE_PLATFORM = @OGRE_PLATFORM@
+OGRE_THREAD_LIBS = @OGRE_THREAD_LIBS@
+OPENEXR_CFLAGS = @OPENEXR_CFLAGS@
+OPENEXR_LIBS = @OPENEXR_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_LIBS = @PLATFORM_LIBS@
+PLUGIN_FLAGS = @PLUGIN_FLAGS@
+RANLIB = @RANLIB@
+RC = @RC@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_CONFIG = @SDL_CONFIG@
+SDL_LIBS = @SDL_LIBS@
+SET_MAKE = @SET_MAKE@
+SHARED_FLAGS = @SHARED_FLAGS@
+SHELL = @SHELL@
+STLPORT_CFLAGS = @STLPORT_CFLAGS@
+STLPORT_LIBS = @STLPORT_LIBS@
+STRIP = @STRIP@
+USE_DEVIL_FALSE = @USE_DEVIL_FALSE@
+USE_DEVIL_TRUE = @USE_DEVIL_TRUE@
+VERSION = @VERSION@
+YACC = @YACC@
+ZZIPLIB_CFLAGS = @ZZIPLIB_CFLAGS@
+ZZIPLIB_LIBS = @ZZIPLIB_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_RC = @ac_ct_RC@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+INCLUDES = $(STLPORT_CFLAGS) -I$(top_srcdir)/Samples/SkyPlane/include -I$(top_srcdir)/OgreMain/include -I$(top_srcdir)/Samples/Common/include
+
+noinst_PROGRAMS = SkyPlane
+SkyPlane_SOURCES = SkyPlane.cpp
+SkyPlane_LDFLAGS = -L$(top_builddir)/OgreMain/src
+SkyPlane_LDADD = -lOgreMain
+subdir = Samples/SkyPlane/src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/OgreMain/include/config.h
+CONFIG_CLEAN_FILES =
+noinst_PROGRAMS = SkyPlane$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+
+am_SkyPlane_OBJECTS = SkyPlane.$(OBJEXT)
+SkyPlane_OBJECTS = $(am_SkyPlane_OBJECTS)
+SkyPlane_DEPENDENCIES =
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/OgreMain/include
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/SkyPlane.Po
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(SkyPlane_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(SkyPlane_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign  Samples/SkyPlane/src/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+SkyPlane$(EXEEXT): $(SkyPlane_OBJECTS) $(SkyPlane_DEPENDENCIES) 
+	@rm -f SkyPlane$(EXEEXT)
+	$(CXXLINK) $(SkyPlane_LDFLAGS) $(SkyPlane_OBJECTS) $(SkyPlane_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SkyPlane.Po@am__quote@
+
+distclean-depend:
+	-rm -rf ./$(DEPDIR)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@	fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@	fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@	fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+	mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+	distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-exec-local
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS ctags distclean \
+	distclean-compile distclean-depend distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am info \
+	info-am install install-am install-data install-data-am \
+	install-exec install-exec-am install-exec-local install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am
+
+
+install-exec-local:
+	$(INSTALL_PROGRAM) .libs/SkyPlane $(top_builddir)/Samples/Common/bin/SkyPlane
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinyxmlparser.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinyxmlparser.cpp	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinyxmlparser.cpp	(revision 1493)
@@ -0,0 +1,939 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code (2.0 and earlier )copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied 
+warranty. In no event will the authors be held liable for any 
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any 
+purpose, including commercial applications, and to alter it and 
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must 
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and 
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source 
+distribution.
+*/
+
+#include "tinyxml.h"
+#include <ctype.h>
+
+//#define DEBUG_PARSER
+
+// Note tha "PutString" hardcodes the same list. This
+// is less flexible than it appears. Changing the entries
+// or order will break putstring.	
+TiXmlBase::Entity TiXmlBase::entity[ NUM_ENTITY ] = 
+{
+	{ "&amp;",  5, '&' },
+	{ "&lt;",   4, '<' },
+	{ "&gt;",   4, '>' },
+	{ "&quot;", 6, '\"' },
+	{ "&apos;", 6, '\'' }
+};
+
+
+const char* TiXmlBase::SkipWhiteSpace( const char* p )
+{
+	if ( !p || !*p )
+	{
+		return 0;
+	}
+	while ( p && *p )
+	{
+		if ( isspace( *p ) || *p == '\n' || *p =='\r' )		// Still using old rules for white space.
+			++p;
+		else
+			break;
+	}
+
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+/*static*/ bool TiXmlBase::StreamWhiteSpace( TIXML_ISTREAM * in, TIXML_STRING * tag )
+{
+	for( ;; )
+	{
+		if ( !in->good() ) return false;
+
+		int c = in->peek();
+		if ( !IsWhiteSpace( c ) )
+			return true;
+		*tag += in->get();
+	}
+}
+
+/*static*/ bool TiXmlBase::StreamTo( TIXML_ISTREAM * in, int character, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->peek();
+		if ( c == character )
+			return true;
+
+		in->get();
+		*tag += c;
+	}
+	return false;
+}
+#endif
+
+const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name )
+{
+	*name = "";
+	assert( p );
+
+	// Names start with letters or underscores.
+	// After that, they can be letters, underscores, numbers,
+	// hyphens, or colons. (Colons are valid ony for namespaces,
+	// but tinyxml can't tell namespaces from names.)
+	if (    p && *p 
+		 && ( isalpha( (unsigned char) *p ) || *p == '_' ) )
+	{
+		while(		p && *p
+				&&	(		isalnum( (unsigned char ) *p ) 
+						 || *p == '_'
+						 || *p == '-'
+						 || *p == ':' ) )
+		{
+			(*name) += *p;
+			++p;
+		}
+		return p;
+	}
+	return 0;
+}
+
+const char* TiXmlBase::GetEntity( const char* p, char* value )
+{
+	// Presume an entity, and pull it out.
+    TIXML_STRING ent;
+	int i;
+
+	// Ignore the &#x entities.
+	if (    strncmp( "&#x", p, 3 ) == 0 
+	     && *(p+3) 
+		 && *(p+4) )
+	{
+		*value = 0;
+		
+		if ( isalpha( *(p+3) ) ) *value += ( tolower( *(p+3) ) - 'a' + 10 ) * 16;
+		else				     *value += ( *(p+3) - '0' ) * 16;
+
+		if ( isalpha( *(p+4) ) ) *value += ( tolower( *(p+4) ) - 'a' + 10 );
+		else				     *value += ( *(p+4) - '0' );
+
+		return p+6;
+	}
+
+	// Now try to match it.
+	for( i=0; i<NUM_ENTITY; ++i )
+	{
+		if ( strncmp( entity[i].str, p, entity[i].strLength ) == 0 )
+		{
+			assert( strlen( entity[i].str ) == entity[i].strLength );
+			*value = entity[i].chr;
+			return ( p + entity[i].strLength );
+		}
+	}
+
+	// So it wasn't an entity, its unrecognized, or something like that.
+	*value = *p;	// Don't put back the last one, since we return it!
+	return p+1;
+}
+
+
+bool TiXmlBase::StringEqual( const char* p,
+							 const char* tag,
+							 bool ignoreCase )
+{
+	assert( p );
+	if ( !p || !*p )
+	{
+		assert( 0 );
+		return false;
+	}
+
+    if ( tolower( *p ) == tolower( *tag ) )
+	{
+		const char* q = p;
+
+		if (ignoreCase)
+		{
+			while ( *q && *tag && *q == *tag )
+			{
+				++q;
+				++tag;
+			}
+
+			if ( *tag == 0 )		// Have we found the end of the tag, and everything equal?
+			{
+				return true;
+			}
+		}
+		else
+		{
+			while ( *q && *tag && tolower( *q ) == tolower( *tag ) )
+			{
+				++q;
+				++tag;
+			}
+
+			if ( *tag == 0 )
+			{
+				return true;
+			}
+		}
+	}
+	return false;
+}
+
+const char* TiXmlBase::ReadText(	const char* p, 
+									TIXML_STRING * text, 
+									bool trimWhiteSpace, 
+									const char* endTag, 
+									bool caseInsensitive )
+{
+    *text = "";
+	if (    !trimWhiteSpace			// certain tags always keep whitespace
+		 || !condenseWhiteSpace )	// if true, whitespace is always kept
+	{
+		// Keep all the white space.
+		while (	   p && *p
+				&& !StringEqual( p, endTag, caseInsensitive )
+			  )
+		{
+			char c;
+			p = GetChar( p, &c );
+            (* text) += c;
+		}
+	}
+	else
+	{
+		bool whitespace = false;
+
+		// Remove leading white space:
+		p = SkipWhiteSpace( p );
+		while (	   p && *p
+				&& !StringEqual( p, endTag, caseInsensitive ) )
+		{
+			if ( *p == '\r' || *p == '\n' )
+			{
+				whitespace = true;
+				++p;
+			}
+			else if ( isspace( *p ) )
+			{
+				whitespace = true;
+				++p;
+			}
+			else
+			{
+				// If we've found whitespace, add it before the
+				// new character. Any whitespace just becomes a space.
+				if ( whitespace )
+				{
+               (* text) += ' ';
+					whitespace = false;
+				}
+				char c;
+				p = GetChar( p, &c );
+            (* text) += c;
+			}
+		}
+	}
+	return p + strlen( endTag );
+}
+
+#ifdef TIXML_USE_STL
+
+void TiXmlDocument::StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag )
+{
+	// The basic issue with a document is that we don't know what we're
+	// streaming. Read something presumed to be a tag (and hope), then
+	// identify it, and call the appropriate stream method on the tag.
+	//
+	// This "pre-streaming" will never read the closing ">" so the
+	// sub-tag can orient itself.
+
+	if ( !StreamTo( in, '<', tag ) ) 
+	{
+		SetError( TIXML_ERROR_PARSING_EMPTY );
+		return;
+	}
+
+	while ( in->good() )
+	{
+		size_t tagIndex = tag->length();
+		while ( in->good() && in->peek() != '>' )
+		{
+			int c = in->get();
+			(*tag) += (char) c;
+		}
+
+		if ( in->good() )
+		{
+			// We now have something we presume to be a node of 
+			// some sort. Identify it, and call the node to
+			// continue streaming.
+			TiXmlNode* node = Identify( tag->c_str() + tagIndex );
+
+			if ( node )
+			{
+				node->StreamIn( in, tag );
+				bool isElement = node->ToElement() != 0;
+				delete node;
+				node = 0;
+
+				// If this is the root element, we're done. Parsing will be
+				// done by the >> operator.
+				if ( isElement )
+				{
+					return;
+				}
+			}
+			else
+			{
+				SetError( TIXML_ERROR );
+				return;
+			}
+		}
+	}
+	// We should have returned sooner.
+	SetError( TIXML_ERROR );
+}
+
+#endif
+
+const char* TiXmlDocument::Parse( const char* p )
+{
+	// Parse away, at the document level. Since a document
+	// contains nothing but other tags, most of what happens
+	// here is skipping white space.
+	//
+	// In this variant (as opposed to stream and Parse) we
+	// read everything we can.
+
+
+	if ( !p || !*p )
+	{
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY );
+		return false;
+	}
+
+    p = SkipWhiteSpace( p );
+	if ( !p )
+	{
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY );
+		return false;
+	}
+
+	while ( p && *p )
+	{
+		TiXmlNode* node = Identify( p );
+		if ( node )
+		{
+			p = node->Parse( p );
+			LinkEndChild( node );
+		}
+		else
+		{
+			break;
+		}
+		p = SkipWhiteSpace( p );
+	}
+	// All is well.
+	return p;
+}
+
+
+TiXmlNode* TiXmlNode::Identify( const char* p )
+{
+	TiXmlNode* returnNode = 0;
+
+	p = SkipWhiteSpace( p );
+	if( !p || !*p || *p != '<' )
+	{
+		return 0;
+	}
+
+	TiXmlDocument* doc = GetDocument();
+	p = SkipWhiteSpace( p );
+
+	if ( !p || !*p )
+	{
+		return 0;
+	}
+
+	// What is this thing? 
+	// - Elements start with a letter or underscore, but xml is reserved.
+	// - Comments: <!--
+	// - Decleration: <?xml
+	// - Everthing else is unknown to tinyxml.
+	//
+
+	const char* xmlHeader = { "<?xml" };
+	const char* commentHeader = { "<!--" };
+
+	if ( StringEqual( p, xmlHeader, true ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Declaration\n" );
+		#endif
+		returnNode = new TiXmlDeclaration();
+	}
+	else if (    isalpha( *(p+1) )
+			  || *(p+1) == '_' )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Element\n" );
+		#endif
+		returnNode = new TiXmlElement( "" );
+	}
+	else if ( StringEqual( p, commentHeader, false ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Comment\n" );
+		#endif
+		returnNode = new TiXmlComment();
+	}
+	else
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Unknown\n" );
+		#endif
+		returnNode = new TiXmlUnknown();
+	}
+
+	if ( returnNode )
+	{
+		// Set the parent, so it can report errors
+		returnNode->parent = this;
+		//p = returnNode->Parse( p );
+	}
+	else
+	{
+		if ( doc )
+			doc->SetError( TIXML_ERROR_OUT_OF_MEMORY );
+	}
+	return returnNode;
+}
+
+#ifdef TIXML_USE_STL
+
+void TiXmlElement::StreamIn (TIXML_ISTREAM * in, TIXML_STRING * tag)
+{
+	// We're called with some amount of pre-parsing. That is, some of "this"
+	// element is in "tag". Go ahead and stream to the closing ">"
+	while( in->good() )
+	{
+		int c = in->get();
+		(*tag) += (char) c ;
+		
+		if ( c == '>' )
+			break;
+	}
+
+	if ( tag->length() < 3 ) return;
+
+	// Okay...if we are a "/>" tag, then we're done. We've read a complete tag.
+	// If not, identify and stream.
+
+	if (    tag->at( tag->length() - 1 ) == '>' 
+		 && tag->at( tag->length() - 2 ) == '/' )
+	{
+		// All good!
+		return;
+	}
+	else if ( tag->at( tag->length() - 1 ) == '>' )
+	{
+		// There is more. Could be:
+		//		text
+		//		closing tag
+		//		another node.
+		for ( ;; )
+		{
+			StreamWhiteSpace( in, tag );
+
+			// Do we have text?
+			if ( in->peek() != '<' )
+			{
+				// Yep, text.
+				TiXmlText text( "" );
+				text.StreamIn( in, tag );
+
+				// What follows text is a closing tag or another node.
+				// Go around again and figure it out.
+				continue;
+			}
+
+			// We now have either a closing tag...or another node.
+			// We should be at a "<", regardless.
+			if ( !in->good() ) return;
+			assert( in->peek() == '<' );
+			size_t tagIndex = tag->length();
+
+			bool closingTag = false;
+			bool firstCharFound = false;
+
+			for( ;; )
+			{
+				if ( !in->good() )
+					return;
+
+				int c = in->peek();
+				
+				if ( c == '>' )
+					break;
+
+				*tag += c;
+				in->get();
+
+				if ( !firstCharFound && c != '<' && !IsWhiteSpace( c ) )
+				{
+					firstCharFound = true;
+					if ( c == '/' )
+						closingTag = true;
+				}
+			}
+			// If it was a closing tag, then read in the closing '>' to clean up the input stream.
+			// If it was not, the streaming will be done by the tag.
+			if ( closingTag )
+			{
+				int c = in->get();
+				assert( c == '>' );
+				*tag += c;
+
+				// We are done, once we've found our closing tag.
+				return;
+			}
+			else
+			{
+				// If not a closing tag, id it, and stream.
+				const char* tagloc = tag->c_str() + tagIndex;
+				TiXmlNode* node = Identify( tagloc );
+				if ( !node )
+					return;
+				node->StreamIn( in, tag );
+				delete node;
+				node = 0;
+
+				// No return: go around from the beginning: text, closing tag, or node.
+			}
+		}
+	}
+}
+#endif
+
+const char* TiXmlElement::Parse( const char* p )
+{
+	p = SkipWhiteSpace( p );
+	TiXmlDocument* document = GetDocument();
+
+	if ( !p || !*p || *p != '<' )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT );
+		return false;
+	}
+
+	p = SkipWhiteSpace( p+1 );
+
+	// Read the name.
+    p = ReadName( p, &value );
+	if ( !p || !*p )
+	{
+		if ( document )	document->SetError( TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME );
+		return false;
+	}
+
+    TIXML_STRING endTag ("</");
+	endTag += value;
+	endTag += ">";
+
+	// Check for and read attributes. Also look for an empty
+	// tag or an end tag.
+	while ( p && *p )
+	{
+		p = SkipWhiteSpace( p );
+		if ( !p || !*p )
+		{
+			if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES );
+			return 0;
+		}
+		if ( *p == '/' )
+		{
+			++p;
+			// Empty tag.
+			if ( *p  != '>' )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_PARSING_EMPTY );		
+				return 0;
+			}
+			return (p+1);
+		}
+		else if ( *p == '>' )
+		{
+			// Done with attributes (if there were any.)
+			// Read the value -- which can include other
+			// elements -- read the end tag, and return.
+			++p;
+			p = ReadValue( p );		// Note this is an Element method, and will set the error if one happens.
+			if ( !p || !*p )
+				return 0;
+
+			// We should find the end tag now
+			if ( StringEqual( p, endTag.c_str(), false ) )
+			{
+				p += endTag.length();
+				return p;
+			}
+			else
+			{
+				if ( document ) document->SetError( TIXML_ERROR_READING_END_TAG );
+				return 0;
+			}
+		}
+		else
+		{
+			// Try to read an element:
+			TiXmlAttribute attrib;
+			attrib.SetDocument( document );
+			p = attrib.Parse( p );
+
+			if ( !p || !*p )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT );
+				return 0;
+			}
+			SetAttribute( attrib.Name(), attrib.Value() );
+		}
+	}
+	return p;
+}
+
+
+const char* TiXmlElement::ReadValue( const char* p )
+{
+	TiXmlDocument* document = GetDocument();
+
+	// Read in text and elements in any order.
+	p = SkipWhiteSpace( p );
+	while ( p && *p )
+	{
+		if ( *p != '<' )
+		{
+			// Take what we have, make a text element.
+			TiXmlText* textNode = new TiXmlText( "" );
+
+			if ( !textNode )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY );
+				    return 0;
+			}
+
+			p = textNode->Parse( p );
+
+			if ( !textNode->Blank() )
+				LinkEndChild( textNode );
+			else
+				delete textNode;
+		} 
+		else 
+		{
+			// We hit a '<'
+			// Have we hit a new element or an end tag?
+			if ( StringEqual( p, "</", false ) )
+			{
+				return p;
+			}
+			else
+			{
+				TiXmlNode* node = Identify( p );
+				if ( node )
+				{
+					p = node->Parse( p );
+					LinkEndChild( node );
+				}				
+				else
+				{
+					return 0;
+				}
+			}
+		}
+		p = SkipWhiteSpace( p );
+	}
+
+	if ( !p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ELEMENT_VALUE );
+	}	
+	return p;
+}
+
+
+#ifdef TIXML_USE_STL
+void TiXmlUnknown::StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->get();	
+		(*tag) += c;
+
+		if ( c == '>' )
+		{
+			// All is well.
+			return;		
+		}
+	}
+}
+#endif
+
+
+const char* TiXmlUnknown::Parse( const char* p )
+{
+	TiXmlDocument* document = GetDocument();
+	p = SkipWhiteSpace( p );
+	if ( !p || !*p || *p != '<' )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_UNKNOWN );
+		return 0;
+	}
+	++p;
+    value = "";
+
+	while ( p && *p && *p != '>' )
+	{
+		value += *p;
+		++p;
+	}
+
+	if ( !p )
+	{
+		if ( document )	document->SetError( TIXML_ERROR_PARSING_UNKNOWN );
+	}
+	if ( *p == '>' )
+		return p+1;
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+void TiXmlComment::StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->get();	
+		(*tag) += c;
+
+		if ( c == '>' 
+			 && tag->at( tag->length() - 2 ) == '-'
+			 && tag->at( tag->length() - 3 ) == '-' )
+		{
+			// All is well.
+			return;		
+		}
+	}
+}
+#endif
+
+
+const char* TiXmlComment::Parse( const char* p )
+{
+	TiXmlDocument* document = GetDocument();
+	value = "";
+
+	p = SkipWhiteSpace( p );
+	const char* startTag = "<!--";
+	const char* endTag   = "-->";
+
+	if ( !StringEqual( p, startTag, false ) )
+	{
+		document->SetError( TIXML_ERROR_PARSING_COMMENT );
+		return 0;
+	}
+	p += strlen( startTag );
+	p = ReadText( p, &value, false, endTag, false );
+	return p;
+}
+
+
+const char* TiXmlAttribute::Parse( const char* p )
+{
+	p = SkipWhiteSpace( p );
+	if ( !p || !*p ) return 0;
+
+	// Read the name, the '=' and the value.
+	p = ReadName( p, &name );
+	if ( !p || !*p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES );
+		return 0;
+	}
+	p = SkipWhiteSpace( p );
+	if ( !p || !*p || *p != '=' )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES );
+		return 0;
+	}
+
+	++p;	// skip '='
+	p = SkipWhiteSpace( p );
+	if ( !p || !*p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES );
+		return 0;
+	}
+	
+	const char* end;
+
+	if ( *p == '\'' )
+	{
+		++p;
+		end = "\'";
+		p = ReadText( p, &value, false, end, false );
+	}
+	else if ( *p == '"' )
+	{
+		++p;
+		end = "\"";
+		p = ReadText( p, &value, false, end, false );
+	}
+	else
+	{
+		// All attribute values should be in single or double quotes.
+		// But this is such a common error that the parser will try
+		// its best, even without them.
+		value = "";
+		while (    p && *p										// existence
+				&& !isspace( *p ) && *p != '\n' && *p != '\r'	// whitespace
+				&& *p != '/' && *p != '>' )						// tag end
+		{
+			value += *p;
+			++p;
+		}
+	}
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+void TiXmlText::StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->peek();	
+		if ( c == '<' )
+			return;
+
+		(*tag) += c;
+		in->get();
+	}
+}
+#endif
+
+const char* TiXmlText::Parse( const char* p )
+{
+	value = "";
+
+	//TiXmlDocument* doc = GetDocument();
+	bool ignoreWhite = true;
+//	if ( doc && !doc->IgnoreWhiteSpace() ) ignoreWhite = false;
+
+	const char* end = "<";
+	p = ReadText( p, &value, ignoreWhite, end, false );
+	if ( p )
+		return p-1;	// don't truncate the '<'
+	return 0;
+}
+
+#ifdef TIXML_USE_STL
+void TiXmlDeclaration::StreamIn( TIXML_ISTREAM * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->get();
+		(*tag) += c;
+
+		if ( c == '>' )
+		{
+			// All is well.
+			return;
+		}
+	}
+}
+#endif
+
+const char* TiXmlDeclaration::Parse( const char* p )
+{
+	p = SkipWhiteSpace( p );
+	// Find the beginning, find the end, and look for
+	// the stuff in-between.
+	TiXmlDocument* document = GetDocument();
+	if ( !p || !*p || !StringEqual( p, "<?xml", true ) )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_DECLARATION );
+		return 0;
+	}
+
+	p += 5;
+//	const char* start = p+5;
+//	const char* end  = strstr( start, "?>" );
+
+	version = "";
+	encoding = "";
+	standalone = "";
+
+	while ( p && *p )
+	{
+		if ( *p == '>' )
+		{
+			++p;
+			return p;
+		}
+
+		p = SkipWhiteSpace( p );
+		if ( StringEqual( p, "version", true ) )
+		{
+//			p += 7;
+			TiXmlAttribute attrib;
+			p = attrib.Parse( p );		
+			version = attrib.Value();
+		}
+		else if ( StringEqual( p, "encoding", true ) )
+		{
+//			p += 8;
+			TiXmlAttribute attrib;
+			p = attrib.Parse( p );		
+			encoding = attrib.Value();
+		}
+		else if ( StringEqual( p, "standalone", true ) )
+		{
+//			p += 10;
+			TiXmlAttribute attrib;
+			p = attrib.Parse( p );		
+			standalone = attrib.Value();
+		}
+		else
+		{
+			// Read over whatever it is.
+			while( p && *p && *p != '>' && !isspace( *p ) )
+				++p;
+		}
+	}
+	return 0;
+}
+
+bool TiXmlText::Blank() const
+{
+	for ( unsigned i=0; i<value.length(); i++ )
+		if ( !isspace( value[i] ) )
+			return false;
+	return true;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinyxml.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinyxml.cpp	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinyxml.cpp	(revision 1493)
@@ -0,0 +1,1108 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code (2.0 and earlier )copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+#include <ctype.h>
+#include "tinyxml.h"
+
+bool TiXmlBase::condenseWhiteSpace = true;
+
+void TiXmlBase::PutString( const TIXML_STRING& str, TIXML_OSTREAM* stream )
+{
+	TIXML_STRING buffer;
+	PutString( str, &buffer );
+	(*stream) << buffer;
+}
+
+void TiXmlBase::PutString( const TIXML_STRING& str, TIXML_STRING* outString )
+{
+	int i=0;
+
+	while( i<(int)str.length() )
+	{
+		int c = str[i];
+
+		if (    c == '&' 
+		     && i < ( (int)str.length() - 2 )
+			 && str[i+1] == '#'
+			 && str[i+2] == 'x' )
+		{
+			// Hexadecimal character reference.
+			// Pass through unchanged.
+			// &#xA9;	-- copyright symbol, for example.
+			while ( i<(int)str.length() )
+			{
+				outString->append( str.c_str() + i, 1 );
+				++i;
+				if ( str[i] == ';' )
+					break;
+			}
+		}
+		else if ( c == '&' )
+		{
+			outString->append( entity[0].str, entity[0].strLength );
+			++i;
+		}
+		else if ( c == '<' )
+		{
+			outString->append( entity[1].str, entity[1].strLength );
+			++i;
+		}
+		else if ( c == '>' )
+		{
+			outString->append( entity[2].str, entity[2].strLength );
+			++i;
+		}
+		else if ( c == '\"' )
+		{
+			outString->append( entity[3].str, entity[3].strLength );
+			++i;
+		}
+		else if ( c == '\'' )
+		{
+			outString->append( entity[4].str, entity[4].strLength );
+			++i;
+		}
+		else if ( c < 32 || c > 126 )
+		{
+			// Easy pass at non-alpha/numeric/symbol
+			// 127 is the delete key. Below 32 is symbolic.
+			char buf[ 32 ];
+			sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) );
+			outString->append( buf, strlen( buf ) );
+			++i;
+		}
+		else
+		{
+			char realc = (char) c;
+			outString->append( &realc, 1 );
+			++i;
+		}
+	}
+}
+
+
+TiXmlNode::TiXmlNode( NodeType _type )
+{
+	parent = 0;
+	type = _type;
+	firstChild = 0;
+	lastChild = 0;
+	prev = 0;
+	next = 0;
+	userData = 0;
+}
+
+
+TiXmlNode::~TiXmlNode()
+{
+	TiXmlNode* node = firstChild;
+	TiXmlNode* temp = 0;
+
+	while ( node )
+	{
+		temp = node;
+		node = node->next;
+		delete temp;
+	}	
+}
+
+
+void TiXmlNode::Clear()
+{
+	TiXmlNode* node = firstChild;
+	TiXmlNode* temp = 0;
+
+	while ( node )
+	{
+		temp = node;
+		node = node->next;
+		delete temp;
+	}	
+
+	firstChild = 0;
+	lastChild = 0;
+}
+
+
+TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node )
+{
+	node->parent = this;
+
+	node->prev = lastChild;
+	node->next = 0;
+
+	if ( lastChild )
+		lastChild->next = node;
+	else
+		firstChild = node;			// it was an empty list.
+
+	lastChild = node;
+	return node;
+}
+
+
+TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis )
+{
+	TiXmlNode* node = addThis.Clone();
+	if ( !node )
+		return 0;
+
+	return LinkEndChild( node );
+}
+
+
+TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis )
+{	
+	if ( !beforeThis || beforeThis->parent != this )
+		return 0;
+
+	TiXmlNode* node = addThis.Clone();
+	if ( !node )
+		return 0;
+	node->parent = this;
+
+	node->next = beforeThis;
+	node->prev = beforeThis->prev;
+	if ( beforeThis->prev )
+	{
+		beforeThis->prev->next = node;
+	}
+	else
+	{
+		assert( firstChild == beforeThis );
+		firstChild = node;
+	}
+	beforeThis->prev = node;
+	return node;
+}
+
+
+TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis )
+{
+	if ( !afterThis || afterThis->parent != this )
+		return 0;
+
+	TiXmlNode* node = addThis.Clone();
+	if ( !node )
+		return 0;
+	node->parent = this;
+
+	node->prev = afterThis;
+	node->next = afterThis->next;
+	if ( afterThis->next )
+	{
+		afterThis->next->prev = node;
+	}
+	else
+	{
+		assert( lastChild == afterThis );
+		lastChild = node;
+	}
+	afterThis->next = node;
+	return node;
+}
+
+
+TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis )
+{
+	if ( replaceThis->parent != this )
+		return 0;
+
+	TiXmlNode* node = withThis.Clone();
+	if ( !node )
+		return 0;
+
+	node->next = replaceThis->next;
+	node->prev = replaceThis->prev;
+
+	if ( replaceThis->next )
+		replaceThis->next->prev = node;
+	else
+		lastChild = node;
+
+	if ( replaceThis->prev )
+		replaceThis->prev->next = node;
+	else
+		firstChild = node;
+
+	delete replaceThis;
+	node->parent = this;
+	return node;
+}
+
+
+bool TiXmlNode::RemoveChild( TiXmlNode* removeThis )
+{
+	if ( removeThis->parent != this )
+	{	
+		assert( 0 );
+		return false;
+	}
+
+	if ( removeThis->next )
+		removeThis->next->prev = removeThis->prev;
+	else
+		lastChild = removeThis->prev;
+
+	if ( removeThis->prev )
+		removeThis->prev->next = removeThis->next;
+	else
+		firstChild = removeThis->next;
+
+	delete removeThis;
+	return true;
+}
+
+TiXmlNode* TiXmlNode::FirstChild( const char * value ) const
+{
+	TiXmlNode* node;
+	for ( node = firstChild; node; node = node->next )
+	{
+		if ( node->SValue() == TIXML_STRING( value ))
+			return node;
+	}
+	return 0;
+}
+
+TiXmlNode* TiXmlNode::LastChild( const char * value ) const
+{
+	TiXmlNode* node;
+	for ( node = lastChild; node; node = node->prev )
+	{
+		if ( node->SValue() == TIXML_STRING (value))
+			return node;
+	}
+	return 0;
+}
+
+TiXmlNode* TiXmlNode::IterateChildren( TiXmlNode* previous ) const
+{
+	if ( !previous )
+	{
+		return FirstChild();
+	}
+	else
+	{
+		assert( previous->parent == this );
+		return previous->NextSibling();
+	}
+}
+
+TiXmlNode* TiXmlNode::IterateChildren( const char * val, TiXmlNode* previous ) const
+{
+	if ( !previous )
+	{
+		return FirstChild( val );
+	}
+	else
+	{
+		assert( previous->parent == this );
+		return previous->NextSibling( val );
+	}
+}
+
+TiXmlNode* TiXmlNode::NextSibling( const char * value ) const
+{
+	TiXmlNode* node;
+	for ( node = next; node; node = node->next )
+	{
+		if ( node->SValue() == TIXML_STRING (value))
+			return node;
+	}
+	return 0;
+}
+
+
+TiXmlNode* TiXmlNode::PreviousSibling( const char * value ) const
+{
+	TiXmlNode* node;
+	for ( node = prev; node; node = node->prev )
+	{
+		if ( node->SValue() == TIXML_STRING (value))
+			return node;
+	}
+	return 0;
+}
+
+void TiXmlElement::RemoveAttribute( const char * name )
+{
+	TiXmlAttribute* node = attributeSet.Find( name );
+	if ( node )
+	{
+		attributeSet.Remove( node );
+		delete node;
+	}
+}
+
+TiXmlElement* TiXmlNode::FirstChildElement() const
+{
+	TiXmlNode* node;
+
+	for (	node = FirstChild();
+	node;
+	node = node->NextSibling() )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+TiXmlElement* TiXmlNode::FirstChildElement( const char * value ) const
+{
+	TiXmlNode* node;
+
+	for (	node = FirstChild( value );
+	node;
+	node = node->NextSibling( value ) )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+TiXmlElement* TiXmlNode::NextSiblingElement() const
+{
+	TiXmlNode* node;
+
+	for (	node = NextSibling();
+	node;
+	node = node->NextSibling() )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+TiXmlElement* TiXmlNode::NextSiblingElement( const char * value ) const
+{
+	TiXmlNode* node;
+
+	for (	node = NextSibling( value );
+	node;
+	node = node->NextSibling( value ) )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+
+TiXmlDocument* TiXmlNode::GetDocument() const
+{
+	const TiXmlNode* node;
+
+	for( node = this; node; node = node->parent )
+	{
+		if ( node->ToDocument() )
+			return node->ToDocument();
+	}
+	return 0;
+}
+
+
+TiXmlElement::TiXmlElement (const char * _value)
+: TiXmlNode( TiXmlNode::ELEMENT )
+{
+	firstChild = lastChild = 0;
+	value = _value;
+}
+
+TiXmlElement::~TiXmlElement()
+{
+	while( attributeSet.First() )
+	{
+		TiXmlAttribute* node = attributeSet.First();
+		attributeSet.Remove( node );
+		delete node;
+	}
+}
+
+// BEGIN OGRE CHANGES
+// USE STL ALONE
+#ifndef TIXML_USE_STL
+const char * TiXmlElement::Attribute( const char * name ) const
+{
+	TiXmlAttribute* node = attributeSet.Find( name );
+
+	if ( node )
+		return node->Value();
+
+	return 0;
+}
+
+
+const char * TiXmlElement::Attribute( const char * name, int* i ) const
+{
+	const char * s = Attribute( name );
+	if ( i )
+	{
+		if ( s )
+			*i = atoi( s );
+		else
+			*i = 0;
+	}
+	return s;
+}
+
+
+void TiXmlElement::SetAttribute( const char * name, int val )
+{	
+	char buf[64];
+	sprintf( buf, "%d", val );
+	SetAttribute( name, buf );
+}
+
+
+void TiXmlElement::SetAttribute( const char * name, const char * value )
+{
+	TiXmlAttribute* node = attributeSet.Find( name );
+	if ( node )
+	{
+		node->SetValue( value );
+		return;
+	}
+
+	TiXmlAttribute* attrib = new TiXmlAttribute( name, value );
+	if ( attrib )
+	{
+		attributeSet.Add( attrib );
+	}
+	else
+	{
+		TiXmlDocument* document = GetDocument();
+		if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY );
+	}
+}
+
+#endif
+
+#ifdef TIXML_USE_STL
+
+const char * TiXmlElement::Attribute( const std::string& name ) const
+{
+	TiXmlAttribute* node = attributeSet.Find( name.c_str() );
+
+	if ( node )
+		return node->Value();
+
+	return 0;
+}
+
+
+const char * TiXmlElement::Attribute( const std::string& name, int* i ) const
+{
+	const char * s = Attribute( name );
+	if ( i )
+	{
+		if ( s )
+			*i = atoi( s );
+		else
+			*i = 0;
+	}
+	return s;
+}
+
+
+void TiXmlElement::SetAttribute( const std::string& name, int val )
+{	
+	char buf[64];
+	sprintf( buf, "%d", val );
+	SetAttribute( name, buf );
+}
+
+
+void TiXmlElement::SetAttribute( const std::string& name, const std::string& value )
+{
+	TiXmlAttribute* node = attributeSet.Find( name.c_str() );
+	if ( node )
+	{
+		node->SetValue( value );
+		return;
+	}
+
+	TiXmlAttribute* attrib = new TiXmlAttribute( name, value );
+	if ( attrib )
+	{
+		attributeSet.Add( attrib );
+	}
+	else
+	{
+		TiXmlDocument* document = GetDocument();
+		if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY );
+	}
+}
+
+#endif
+// END OGRE CHANGES
+void TiXmlElement::Print( FILE* cfile, int depth ) const
+{
+	int i;
+	for ( i=0; i<depth; i++ )
+	{
+		fprintf( cfile, "    " );
+	}
+
+	fprintf( cfile, "<%s", value.c_str() );
+
+	TiXmlAttribute* attrib;
+	for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() )
+	{
+		fprintf( cfile, " " );
+		attrib->Print( cfile, depth );
+	}
+
+	// There are 3 different formatting approaches:
+	// 1) An element without children is printed as a <foo /> node
+	// 2) An element with only a text child is printed as <foo> text </foo>
+	// 3) An element with children is printed on multiple lines.
+	TiXmlNode* node;
+	if ( !firstChild )
+	{
+		fprintf( cfile, " />" );
+	}
+	else if ( firstChild == lastChild && firstChild->ToText() )
+	{
+		fprintf( cfile, ">" );
+		firstChild->Print( cfile, depth + 1 );
+		fprintf( cfile, "</%s>", value.c_str() );
+	}
+	else
+	{
+		fprintf( cfile, ">" );
+
+		for ( node = firstChild; node; node=node->NextSibling() )
+		{
+			if ( !node->ToText() )
+			{
+				fprintf( cfile, "\n" );
+			}
+			node->Print( cfile, depth+1 );
+		}
+		fprintf( cfile, "\n" );
+		for( i=0; i<depth; ++i )
+		fprintf( cfile, "    " );
+		fprintf( cfile, "</%s>", value.c_str() );
+	}
+}
+
+void TiXmlElement::StreamOut( TIXML_OSTREAM * stream ) const
+{
+	(*stream) << "<" << value;
+
+	TiXmlAttribute* attrib;
+	for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() )
+	{	
+		(*stream) << " ";
+		attrib->StreamOut( stream );
+	}
+
+	// If this node has children, give it a closing tag. Else
+	// make it an empty tag.
+	TiXmlNode* node;
+	if ( firstChild )
+	{ 		
+		(*stream) << ">";
+
+		for ( node = firstChild; node; node=node->NextSibling() )
+		{
+			node->StreamOut( stream );
+		}
+		(*stream) << "</" << value << ">";
+	}
+	else
+	{
+		(*stream) << " />";
+	}
+}
+
+TiXmlNode* TiXmlElement::Clone() const
+{
+	TiXmlElement* clone = new TiXmlElement( Value() );
+	if ( !clone )
+		return 0;
+
+	CopyToClone( clone );
+
+	// Clone the attributes, then clone the children.
+	TiXmlAttribute* attribute = 0;
+	for(	attribute = attributeSet.First();
+	attribute;
+	attribute = attribute->Next() )
+	{
+		clone->SetAttribute( attribute->Name(), attribute->Value() );
+	}
+
+	TiXmlNode* node = 0;
+	for ( node = firstChild; node; node = node->NextSibling() )
+	{
+		clone->LinkEndChild( node->Clone() );
+	}
+	return clone;
+}
+
+
+TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::DOCUMENT )
+{
+	error = false;
+	//	ignoreWhiteSpace = true;
+}
+
+TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::DOCUMENT )
+{
+	//	ignoreWhiteSpace = true;
+	value = documentName;
+	error = false;
+}
+
+bool TiXmlDocument::LoadFile()
+{
+	if ( LoadFile( value.c_str() ) )
+		return true;
+
+	return false;
+}
+
+
+bool TiXmlDocument::SaveFile() const
+{
+	if ( SaveFile( value.c_str() ) )
+		return true;
+
+	return false;
+}
+
+bool TiXmlDocument::LoadFile( const char* filename )
+{
+	// Delete the existing data:
+	Clear();
+
+	// There was a really terrifying little bug here. The code:
+	//		value = filename
+	// in the STL case, cause the assignment method of the std::string to
+	// be called. What is strange, is that the std::string had the same
+	// address as it's c_str() method, and so bad things happen. Looks
+	// like a bug in the Microsoft STL implementation.
+	// See STL_STRING_BUG above.
+	// Fixed with the StringToBuffer class.
+	value = filename;
+
+	FILE* file = fopen( value.c_str (), "r" );
+
+	if ( file )
+	{
+		// Get the file size, so we can pre-allocate the string. HUGE speed impact.
+		long length = 0;
+		fseek( file, 0, SEEK_END );
+		length = ftell( file );
+		fseek( file, 0, SEEK_SET );
+
+		// Strange case, but good to handle up front.
+		if ( length == 0 )
+		{
+			fclose( file );
+			return false;
+		}
+
+		// If we have a file, assume it is all one big XML file, and read it in.
+		// The document parser may decide the document ends sooner than the entire file, however.
+		TIXML_STRING data;
+		data.reserve( length );
+
+		const int BUF_SIZE = 2048;
+		char buf[BUF_SIZE];
+
+		while( fgets( buf, BUF_SIZE, file ) )
+		{
+			data += buf;
+		}
+		fclose( file );
+
+		Parse( data.c_str() );
+		if (  !Error() )
+		{
+			return true;
+		}
+	}
+	SetError( TIXML_ERROR_OPENING_FILE );
+	return false;
+}
+
+bool TiXmlDocument::SaveFile( const char * filename ) const
+{
+	// The old c stuff lives on...
+	FILE* fp = fopen( filename, "w" );
+	if ( fp )
+	{
+		Print( fp, 0 );
+		fclose( fp );
+		return true;
+	}
+	return false;
+}
+
+
+TiXmlNode* TiXmlDocument::Clone() const
+{
+	TiXmlDocument* clone = new TiXmlDocument();
+	if ( !clone )
+		return 0;
+
+	CopyToClone( clone );
+	clone->error = error;
+	clone->errorDesc = errorDesc.c_str ();
+
+	TiXmlNode* node = 0;
+	for ( node = firstChild; node; node = node->NextSibling() )
+	{
+		clone->LinkEndChild( node->Clone() );
+	}
+	return clone;
+}
+
+
+void TiXmlDocument::Print( FILE* cfile, int depth ) const
+{
+	TiXmlNode* node;
+	for ( node=FirstChild(); node; node=node->NextSibling() )
+	{
+		node->Print( cfile, depth );
+		fprintf( cfile, "\n" );
+	}
+}
+
+void TiXmlDocument::StreamOut( TIXML_OSTREAM * out ) const
+{
+	TiXmlNode* node;
+	for ( node=FirstChild(); node; node=node->NextSibling() )
+	{
+		node->StreamOut( out );
+
+		// Special rule for streams: stop after the root element.
+		// The stream in code will only read one element, so don't
+		// write more than one.
+		if ( node->ToElement() )
+			break;
+	}
+}
+
+TiXmlAttribute* TiXmlAttribute::Next() const
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( next->value.empty() && next->name.empty() )
+		return 0;
+	return next;
+}
+
+
+TiXmlAttribute* TiXmlAttribute::Previous() const
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( prev->value.empty() && prev->name.empty() )
+		return 0;
+	return prev;
+}
+
+
+void TiXmlAttribute::Print( FILE* cfile, int /*depth*/ ) const
+{
+	TIXML_STRING n, v;
+
+	PutString( Name(), &n );
+	PutString( Value(), &v );
+
+	if (value.find ('\"') == TIXML_STRING::npos)
+		fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() );
+	else
+		fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() );
+}
+
+
+void TiXmlAttribute::StreamOut( TIXML_OSTREAM * stream ) const
+{
+	if (value.find( '\"' ) != TIXML_STRING::npos)
+	{
+		PutString( name, stream );
+		(*stream) << "=" << "'";
+		PutString( value, stream );
+		(*stream) << "'";
+	}
+	else
+	{
+		PutString( name, stream );
+		(*stream) << "=" << "\"";
+		PutString( value, stream );
+		(*stream) << "\"";
+	}
+}
+
+void TiXmlAttribute::SetIntValue( int value )
+{
+	char buf [64];
+	sprintf (buf, "%d", value);
+	SetValue (buf);
+}
+
+void TiXmlAttribute::SetDoubleValue( double value )
+{
+	char buf [64];
+	sprintf (buf, "%lf", value);
+	SetValue (buf);
+}
+
+const int TiXmlAttribute::IntValue() const
+{
+	return atoi (value.c_str ());
+}
+
+const double  TiXmlAttribute::DoubleValue() const
+{
+	return atof (value.c_str ());
+}
+
+void TiXmlComment::Print( FILE* cfile, int depth ) const
+{
+	for ( int i=0; i<depth; i++ )
+	{
+		fputs( "    ", cfile );
+	}
+	fprintf( cfile, "<!--%s-->", value.c_str() );
+}
+
+void TiXmlComment::StreamOut( TIXML_OSTREAM * stream ) const
+{
+	(*stream) << "<!--";
+	PutString( value, stream );
+	(*stream) << "-->";
+}
+
+TiXmlNode* TiXmlComment::Clone() const
+{
+	TiXmlComment* clone = new TiXmlComment();
+
+	if ( !clone )
+		return 0;
+
+	CopyToClone( clone );
+	return clone;
+}
+
+
+void TiXmlText::Print( FILE* cfile, int /*depth*/ ) const
+{
+	TIXML_STRING buffer;
+	PutString( value, &buffer );
+	fprintf( cfile, "%s", buffer.c_str() );
+}
+
+
+void TiXmlText::StreamOut( TIXML_OSTREAM * stream ) const
+{
+	PutString( value, stream );
+}
+
+
+TiXmlNode* TiXmlText::Clone() const
+{	
+	TiXmlText* clone = 0;
+	clone = new TiXmlText( "" );
+
+	if ( !clone )
+		return 0;
+
+	CopyToClone( clone );
+	return clone;
+}
+
+
+TiXmlDeclaration::TiXmlDeclaration( const char * _version,
+	const char * _encoding,
+	const char * _standalone )
+: TiXmlNode( TiXmlNode::DECLARATION )
+{
+	version = _version;
+	encoding = _encoding;
+	standalone = _standalone;
+}
+
+
+void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/ ) const
+{
+	fprintf (cfile, "<?xml ");
+
+	if ( !version.empty() )
+		fprintf (cfile, "version=\"%s\" ", version.c_str ());
+	if ( !encoding.empty() )
+		fprintf (cfile, "encoding=\"%s\" ", encoding.c_str ());
+	if ( !standalone.empty() )
+		fprintf (cfile, "standalone=\"%s\" ", standalone.c_str ());
+	fprintf (cfile, "?>");
+}
+
+void TiXmlDeclaration::StreamOut( TIXML_OSTREAM * stream ) const
+{
+	(*stream) << "<?xml ";
+
+	if ( !version.empty() )
+	{
+		(*stream) << "version=\"";
+		PutString( version, stream );
+		(*stream) << "\" ";
+	}
+	if ( !encoding.empty() )
+	{
+		(*stream) << "encoding=\"";
+		PutString( encoding, stream );
+		(*stream ) << "\" ";
+	}
+	if ( !standalone.empty() )
+	{
+		(*stream) << "standalone=\"";
+		PutString( standalone, stream );
+		(*stream) << "\" ";
+	}
+	(*stream) << "?>";
+}
+
+TiXmlNode* TiXmlDeclaration::Clone() const
+{	
+	TiXmlDeclaration* clone = new TiXmlDeclaration();
+
+	if ( !clone )
+		return 0;
+
+	CopyToClone( clone );
+	clone->version = version;
+	clone->encoding = encoding;
+	clone->standalone = standalone;
+	return clone;
+}
+
+
+void TiXmlUnknown::Print( FILE* cfile, int depth ) const
+{
+	for ( int i=0; i<depth; i++ )
+		fprintf( cfile, "    " );
+	fprintf( cfile, "%s", value.c_str() );
+}
+
+void TiXmlUnknown::StreamOut( TIXML_OSTREAM * stream ) const
+{
+	(*stream) << "<" << value << ">";		// Don't use entities hear! It is unknown.
+}
+
+TiXmlNode* TiXmlUnknown::Clone() const
+{
+	TiXmlUnknown* clone = new TiXmlUnknown();
+
+	if ( !clone )
+		return 0;
+
+	CopyToClone( clone );
+	return clone;
+}
+
+
+TiXmlAttributeSet::TiXmlAttributeSet()
+{
+	sentinel.next = &sentinel;
+	sentinel.prev = &sentinel;
+}
+
+
+TiXmlAttributeSet::~TiXmlAttributeSet()
+{
+	assert( sentinel.next == &sentinel );
+	assert( sentinel.prev == &sentinel );
+}
+
+
+void TiXmlAttributeSet::Add( TiXmlAttribute* addMe )
+{
+	assert( !Find( addMe->Name() ) );	// Shouldn't be multiply adding to the set.
+
+	addMe->next = &sentinel;
+	addMe->prev = sentinel.prev;
+
+	sentinel.prev->next = addMe;
+	sentinel.prev      = addMe;
+}
+
+void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe )
+{
+	TiXmlAttribute* node;
+
+	for( node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( node == removeMe )
+		{
+			node->prev->next = node->next;
+			node->next->prev = node->prev;
+			node->next = 0;
+			node->prev = 0;
+			return;
+		}
+	}
+	assert( 0 );		// we tried to remove a non-linked attribute.
+}
+
+TiXmlAttribute*	TiXmlAttributeSet::Find( const char * name ) const
+{
+	TiXmlAttribute* node;
+
+	for( node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( node->name == name )
+			return node;
+	}
+	return 0;
+}
+
+
+#ifdef TIXML_USE_STL	
+TIXML_ISTREAM & operator >> (TIXML_ISTREAM & in, TiXmlNode & base)
+{
+	TIXML_STRING tag;
+	tag.reserve( 8 * 1000 );
+	base.StreamIn( &in, &tag );
+
+	base.Parse( tag.c_str() );
+	return in;
+}
+#endif
+
+
+TIXML_OSTREAM & operator<< (TIXML_OSTREAM & out, const TiXmlNode & base)
+{
+	base.StreamOut (& out);
+	return out;
+}
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/Makefile.am
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/Makefile.am	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/Makefile.am	(revision 1493)
@@ -0,0 +1,9 @@
+INCLUDES = $(STLPORT_CFLAGS) -I$(top_srcdir)/Samples/SkyPlane/include -I$(top_srcdir)/OgreMain/include -I$(top_srcdir)/Samples/Common/include
+
+noinst_PROGRAMS = SkyPlane
+SkyPlane_SOURCES = SkyPlane.cpp
+SkyPlane_LDFLAGS = -L$(top_builddir)/OgreMain/src
+SkyPlane_LDADD = -lOgreMain
+
+install-exec-local:
+	$(INSTALL_PROGRAM) .libs/SkyPlane $(top_builddir)/Samples/Common/bin/SkyPlane
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/OgreOSMScene.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/OgreOSMScene.cpp	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/OgreOSMScene.cpp	(revision 1493)
@@ -0,0 +1,718 @@
+/**********************************************************************
+ *<
+	oExporter plugin Private Beta (see License.txt)
+
+	FILE: ogreAnimationCompiler.h
+
+	DESCRIPTION: Contains the OE_XMLScene reader (oe_scene)	
+
+	IMPLEMENTED BY: Lioric
+
+	HISTORY: 
+
+		Original implementation by Lasse Tassing (Channex)
+		2005 ITE ApS, Lasse Tassing
+
+ *>	Copyright (c) 2005, All Rights Reserved.
+ **********************************************************************/
+
+#include <OgreOSMScene.h>
+
+using namespace Ogre;
+
+enum {
+	SCENE_SKYPLANE = 1,
+	SCENE_SKYBOX,
+	SCENE_SKYDOME,
+};
+
+#define ENABLE_LOGMANAGER LogManager::getSingleton().setLogDetail(LL_NORMAL);
+#define DISABLE_LOGMANAGER LogManager::getSingleton().setLogDetail(static_cast<LoggingLevel>(0));
+
+
+OSMScene::OSMScene(SceneManager* pSceneMgr, RenderWindow* win)
+{
+	mSceneMgr = pSceneMgr;
+	mWindow = win;
+	//mXMLDoc = 0;
+	mCallbacks = 0;
+}
+
+OSMScene::~OSMScene(void)
+{	
+	/*
+	if(mXMLDoc)
+		delete mXMLDoc;
+	*/
+}
+
+// Init overloads - use either of them
+bool OSMScene::initialise(const char* pszXMLFile, OSMSceneCallbacks* pCallbacks)
+{
+	// Hook up callback interface
+	mCallbacks = pCallbacks;
+
+	LogManager::getSingleton().logMessage("********************************");	
+	LogManager::getSingleton().logMessage("**     oScene Loader Lib      **");
+	LogManager::getSingleton().logMessage("********************************");
+	
+	String msg("oSceneLoader: Loading '");
+	msg += pszXMLFile;
+	msg += "' file";
+	LogManager::getSingleton().logMessage(msg);	
+
+	// Create new XML document
+	mXMLDoc = TiXmlDocumentPtr(new TiXmlDocument());
+
+	DataStreamPtr pStream = ResourceGroupManager::getSingleton().openResource(pszXMLFile);
+	if(!pStream->size())
+	{
+		mXMLDoc.setNull();
+
+		OGRE_EXCEPT(Exception::ERR_ITEM_NOT_FOUND,
+					"oSceneLoader: Empty scene file", 
+					"OSMScene::initialise");
+		
+	}			
+				
+	size_t iSize = pStream->size();
+	char *pBuf = new char[iSize+1];
+	memset(pBuf, 0, iSize+1);
+	pStream->read(pBuf, iSize);
+	pStream.setNull();
+	mXMLDoc->Parse(pBuf);
+	delete[] pBuf;
+	
+	// check for errors
+	if(mXMLDoc->Error())
+	{
+		mXMLDoc.setNull();
+
+		String errDesc = "oSceneLoader: Failed to load scene file, ";
+		msg += mXMLDoc->ErrorDesc();
+
+		OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS,
+					errDesc.c_str(), 
+					"OSMScene::initialise");		
+	}
+
+	return true;
+}
+
+// Declare all resources used in the scene
+void OSMScene::declareResources(void)
+{
+	if(!mXMLDoc.isNull())
+	{
+
+		TiXmlElement* rootElem = mXMLDoc->RootElement();
+
+		try 
+		{
+			// Get mesh filename from entities
+			TiXmlElement *pMeshNode = rootElem->FirstChildElement("entities");
+			if(pMeshNode)
+			{
+				// Iterate all meshes, creating them. 
+				for (TiXmlElement* pMeshElem = pMeshNode->FirstChildElement();
+				pMeshElem != 0; pMeshElem = pMeshElem->NextSiblingElement())
+				{	
+					// Declare mesh resource
+					const char *pszFileName = pMeshElem->Attribute("filename");	
+					ResourceGroupManager::getSingleton().declareResource(pszFileName, "Mesh");
+				}
+			}
+		} catch(...)
+		{
+		}
+
+	}
+}
+
+// Create scene, optionally attaching it to a parent node
+bool OSMScene::createScene(Ogre::SceneNode* pParent)
+{
+	if(!mXMLDoc.isNull())
+	{
+		String msg("oSceneLoader: Creating scene on '");
+		msg += pParent ? pParent->getName() : "Root";
+		msg += "' node";
+		LogManager::getSingleton().logMessage(msg);	
+
+		TiXmlElement* rootElem = mXMLDoc->RootElement();
+
+		if(mSceneMgr == NULL)
+		{
+			if(rootElem->FirstChildElement("sceneManager"))
+				setSceneProperties(rootElem);
+			else
+				mSceneMgr = Root::getSingleton().createSceneManager(ST_GENERIC);
+		}
+
+		if(pParent==NULL)
+			pParent=mSceneMgr->getRootSceneNode()->createChildSceneNode();
+		
+		TiXmlElement* list;
+
+		try {
+			// Entities
+			list = rootElem->FirstChildElement("entities");
+			if(list)
+				createEntities(list, pParent);
+		} catch(...)
+		{
+		}
+
+		try {
+			// lights
+			list = rootElem->FirstChildElement("lights");
+			if(list)
+				createLights(list, pParent);
+		} catch(...)
+		{
+		}
+
+		try {
+			// cameras
+			list = rootElem->FirstChildElement("cameras");
+			if(list)
+				createCameras(list, pParent);
+		} catch(...)
+		{
+		}
+
+
+		LogManager::getSingleton().logMessage("********************************");
+		LogManager::getSingleton().logMessage("** oSceneLoader: Scene loaded **");
+		LogManager::getSingleton().logMessage("********************************");		
+
+		return true;
+	}
+
+	return false;
+
+	
+}
+
+// Get list of cameras in this scene
+OSMScene::CameraList& OSMScene::getCameraList(void)
+{
+	return mCameras;
+}
+
+// Get list of lights in this scene
+OSMScene::LightList& OSMScene::getLightList(void)
+{
+	return mLights;
+}
+
+// Get list of lights in this scene
+OSMScene::EntityList& OSMScene::getEntityList(void)
+{
+	return mEntities;
+}
+
+Ogre::SceneNode *OSMScene::createNode(TiXmlElement* pElem, Ogre::SceneNode* pSceneRoot)
+{
+	SceneNode *pNode=0;
+
+	// Try to find the parent node
+	const char *pszName	= pElem->Attribute("name");
+	if(pszName == NULL) return NULL;
+
+	// Check if this node has a parent
+	const char *pszParent = pElem->Attribute("parent");						
+	if(pszParent == NULL)
+	{	
+		// Check if the scene node has already been created by a child
+		DISABLE_LOGMANAGER
+
+		try 
+		{ 
+			pNode = mSceneMgr->getSceneNode(pszName);
+		} catch(...)
+		{
+			pNode = pSceneRoot->createChildSceneNode(pszName);
+		}
+		
+		ENABLE_LOGMANAGER
+
+	} else
+	{
+		SceneNode *pParent=0;
+		DISABLE_LOGMANAGER
+
+		try 
+		{
+			// Try to find parent scenenode
+			pParent=mSceneMgr->getSceneNode(pszParent);			
+		} catch(...)
+		{	
+			// We try to create the parent node as child of root node.
+			// Later when the parent (hopefully) is created, we can adjust it,
+			// if it is child of another node.
+			pParent=pSceneRoot->createChildSceneNode(pszParent);
+		}
+
+		
+		try 
+		{ 
+			// Check if the scene node has already been created by a child
+			// In this case we would have to change the parent.
+			pNode = mSceneMgr->getSceneNode(pszName);
+
+			// Get old parent (probably scene root)
+			SceneNode *pOldParent=pNode->getParentSceneNode();
+
+			// Remove this node
+			pOldParent->removeChild(pNode);
+
+			// Insert us as child on the "real" parent
+			pParent->addChild(pNode);
+		} catch(...)
+		{
+			pNode = pParent->createChildSceneNode(pszName);
+		}
+
+		ENABLE_LOGMANAGER
+	}
+
+	// Position
+	TiXmlElement* posElem = pElem->FirstChildElement("position");
+    if(posElem)
+    {
+		Vector3 pos;			
+		pos.x = StringConverter::parseReal(posElem->Attribute("x"));
+		pos.y = StringConverter::parseReal(posElem->Attribute("y"));
+		pos.z = StringConverter::parseReal(posElem->Attribute("z"));
+		pNode->setPosition(pos);		
+    }
+
+	// Rotation
+	TiXmlElement* rotElem = pElem->FirstChildElement("rotation");
+    if(rotElem)
+    {				
+		pNode->setOrientation(
+			StringConverter::parseReal(rotElem->Attribute("w")),
+			StringConverter::parseReal(rotElem->Attribute("x")),
+			StringConverter::parseReal(rotElem->Attribute("y")),
+			StringConverter::parseReal(rotElem->Attribute("z")));
+
+    }
+	
+	// Scale
+	TiXmlElement* scaleElem = pElem->FirstChildElement("scale");
+    if(scaleElem)
+    {
+		Vector3 scale;
+		scale.x = StringConverter::parseReal(scaleElem->Attribute("x"));
+		scale.y = StringConverter::parseReal(scaleElem->Attribute("y"));
+		scale.z = StringConverter::parseReal(scaleElem->Attribute("z"));
+		pNode->setScale(scale);
+    }
+
+	// Notify
+	if(mCallbacks)
+		mCallbacks->OnNodeCreate(pNode, pElem);
+
+	// Animation
+	TiXmlElement* animList = pElem->FirstChildElement("animations");
+    if(animList)
+	{
+		// 
+		for (TiXmlElement* animElem = animList->FirstChildElement();
+            animElem != 0; animElem = animElem->NextSiblingElement())
+		{		
+			// Get name of animation
+			const char *pszName = animElem->Attribute("name");
+
+			Animation *pAnim = 0;
+			DISABLE_LOGMANAGER
+			try 
+			{
+				pAnim=mSceneMgr->getAnimation(pszName);
+			} catch(...)
+			{
+			}
+			ENABLE_LOGMANAGER
+
+			// If this animation has not been created yet, we create it
+			if(pAnim == 0)
+			{			
+				float fLength = StringConverter::parseReal(animElem->Attribute("length"));
+				pAnim = mSceneMgr->createAnimation(pszName, fLength);
+				pAnim->setInterpolationMode(Animation::IM_LINEAR);				
+			}		
+
+			// Create animation track for this node
+			NodeAnimationTrack *pTrack = pAnim->createNodeTrack(pAnim->getNumNodeTracks()+1, pNode);
+
+			// Iterate all keyframes for this node
+			for (TiXmlElement* pKeyframeElem = animElem->FirstChildElement();
+					pKeyframeElem != 0; pKeyframeElem = pKeyframeElem->NextSiblingElement())
+			{
+				float fTime=StringConverter::parseReal(pKeyframeElem->Attribute("time"));
+				TransformKeyFrame *pKeyFrame = pTrack->createNodeKeyFrame(fTime);
+
+				// Position
+				TiXmlElement* posElem = pKeyframeElem->FirstChildElement("position");
+				if(posElem)
+				{
+					Vector3 trans;			
+					trans.x = StringConverter::parseReal(posElem->Attribute("x"));
+					trans.y = StringConverter::parseReal(posElem->Attribute("y"));
+					trans.z = StringConverter::parseReal(posElem->Attribute("z"));				
+					pKeyFrame->setTranslate(trans);
+				}
+
+				// Rotation
+				TiXmlElement* rotElem = pKeyframeElem->FirstChildElement("rotation");
+				if(rotElem)
+				{		
+					Quaternion qRot;
+					qRot.x = StringConverter::parseReal(rotElem->Attribute("x"));
+					qRot.y = StringConverter::parseReal(rotElem->Attribute("y"));
+					qRot.z = StringConverter::parseReal(rotElem->Attribute("z"));		
+					qRot.w = StringConverter::parseReal(rotElem->Attribute("w"));		
+					pKeyFrame->setRotation(qRot);
+				}
+				
+				// Scale
+				TiXmlElement* scaleElem = pKeyframeElem->FirstChildElement("scale");
+				if(scaleElem)
+				{
+					Vector3 scale;
+					scale.x = StringConverter::parseReal(scaleElem->Attribute("x"));
+					scale.y = StringConverter::parseReal(scaleElem->Attribute("y"));
+					scale.z = StringConverter::parseReal(scaleElem->Attribute("z"));				
+					pKeyFrame->setScale(scale);
+				}
+			}		
+		}
+	}
+
+	return pNode;
+}
+
+// Set Scene Properties
+void OSMScene::setSceneProperties(TiXmlElement* sceneProp) {
+	assert(sceneProp);
+
+	// Scene manager
+	TiXmlElement* sceneMgrElem = sceneProp->FirstChildElement("sceneManager");
+	int type = Ogre::StringConverter::parseInt(sceneMgrElem->Attribute("type"));
+	Ogre::SceneType sceneType = static_cast<Ogre::SceneType>(1 << (type - 1));
+	mSceneMgr = Ogre::Root::getSingleton().createSceneManager(sceneType);
+	assert(mSceneMgr);
+
+	const char* worldGeometry = sceneMgrElem->Attribute("worldGeometry");
+	if(worldGeometry != NULL)
+		mSceneMgr->setWorldGeometry(worldGeometry);
+
+	// Background Color
+	TiXmlElement* colorElem = sceneProp->FirstChildElement("bkgcolor");
+	if(colorElem && mWindow)
+	{	
+		Ogre::ColourValue color;
+		color.r = StringConverter::parseReal(colorElem->Attribute("r"));
+		color.g = StringConverter::parseReal(colorElem->Attribute("g"));
+		color.b = StringConverter::parseReal(colorElem->Attribute("b"));
+		
+		mWindow->getViewport(0)->setBackgroundColour(color);
+	}
+
+	// Ambient light Color
+	colorElem = sceneProp->FirstChildElement("lightColor");
+	if(colorElem)
+	{	
+		Ogre::ColourValue color;
+		color.r = StringConverter::parseReal(colorElem->Attribute("r"));
+		color.g = StringConverter::parseReal(colorElem->Attribute("g"));
+		color.b = StringConverter::parseReal(colorElem->Attribute("b"));
+
+		mSceneMgr->setAmbientLight(color);
+	}
+
+	// Scene shadows
+	TiXmlElement* shadowsElem = sceneProp->FirstChildElement("shadowTechnique");
+	if(shadowsElem)
+	{
+		int type = Ogre::StringConverter::parseInt(shadowsElem->Attribute("type"));
+		Ogre::ShadowTechnique shadowType = static_cast<Ogre::ShadowTechnique>(type);
+
+		mSceneMgr->setShadowTechnique(shadowType);
+
+		int tex_size = Ogre::StringConverter::parseInt(shadowsElem->Attribute("tex_size"));
+		int tex_count = Ogre::StringConverter::parseInt(shadowsElem->Attribute("tex_count"));
+
+		mSceneMgr->setShadowTextureSettings(tex_size, tex_count);
+
+		// Shadow Color
+		TiXmlElement* colorElem = shadowsElem->FirstChildElement("color");
+		if(colorElem)
+		{	
+			Ogre::ColourValue color;
+			color.r = StringConverter::parseReal(colorElem->Attribute("r"));
+			color.g = StringConverter::parseReal(colorElem->Attribute("g"));
+			color.b = StringConverter::parseReal(colorElem->Attribute("b"));
+			
+			mSceneMgr->setShadowColour(color);
+		}
+	}	
+
+	// Scene sky
+	TiXmlElement* skyElem = sceneProp->FirstChildElement("skyTechnique");
+	if(skyElem)
+	{
+		int type = Ogre::StringConverter::parseInt(skyElem->Attribute("type"));
+		Ogre::String materialName = skyElem->Attribute("material");
+		
+		if(materialName != " ") {
+			bool drawFirst = Ogre::StringConverter::parseBool(skyElem->Attribute("drawFirst"));
+			float tiling = Ogre::StringConverter::parseReal(skyElem->Attribute("tiling"));
+			float scale = Ogre::StringConverter::parseReal(skyElem->Attribute("scale"));
+			float dist = Ogre::StringConverter::parseReal(skyElem->Attribute("dist"));
+			float bow = Ogre::StringConverter::parseReal(skyElem->Attribute("bow"));
+			int xSegments = Ogre::StringConverter::parseInt(skyElem->Attribute("xSegments"));
+			int ySegments = Ogre::StringConverter::parseInt(skyElem->Attribute("ySegments"));
+			Ogre::Quaternion quat(Ogre::Quaternion::IDENTITY);
+			Ogre::Plane plane;
+			plane.d = dist;
+			plane.normal = -(Ogre::Vector3::UNIT_Y);			
+
+			switch(type) {
+
+			case SCENE_SKYPLANE:
+
+				mSceneMgr->setSkyPlane(true, plane, materialName, scale, 
+									   tiling, drawFirst, bow, xSegments, ySegments);
+
+				mSceneMgr->setSkyBox(false, "");
+				mSceneMgr->setSkyDome(false, "");
+
+				break;
+
+			case SCENE_SKYBOX:
+
+				mSceneMgr->setSkyBox(true, materialName, dist, drawFirst, quat);
+				mSceneMgr->setSkyPlane(false, plane, "");
+				mSceneMgr->setSkyDome(false, "");
+
+				break;
+
+			case SCENE_SKYDOME:
+
+				mSceneMgr->setSkyDome(true, materialName, bow, tiling, dist,
+									  drawFirst, quat, xSegments, ySegments);
+
+				mSceneMgr->setSkyPlane(false, plane, "");
+				mSceneMgr->setSkyBox(false, "");
+
+				break;
+				
+			}
+		}
+	}
+
+}
+
+// Create all entities in scene
+void OSMScene::createEntities(TiXmlElement* pEntityNode, Ogre::SceneNode* pSceneRoot)
+{
+	// Iterate all meshes, creating them. 
+	for (TiXmlElement* pMeshElem = pEntityNode->FirstChildElement();
+            pMeshElem != 0; pMeshElem = pMeshElem->NextSiblingElement())
+	{
+		// Ogre could cast an exception, in which case we just try to 
+		// continue reading the other meshes
+		try 
+		{
+			const char *pszName = pMeshElem->Attribute("name");
+			const char *pszFileName = pMeshElem->Attribute("filename");			
+
+			// try to create the mesh
+			Entity *pEntity = mSceneMgr->createEntity(pszName, pszFileName);			
+			if(pEntity==0) continue;
+
+			// Check if the object should cast shadows
+			const char *pszCastShadows=pMeshElem->Attribute("CastShadows");
+			if(pszCastShadows && stricmp(pszCastShadows, "no")==0)
+				pEntity->setCastShadows(false);	
+			else
+				pEntity->setCastShadows(true);	
+
+			// Create node with full information
+			SceneNode *pObjNode=createNode(pMeshElem, pSceneRoot);
+
+			// Attach the mesh entity to node
+			pObjNode->attachObject(pEntity);
+
+			// Notify
+			if(mCallbacks)
+				mCallbacks->OnEntityCreate(pEntity, pMeshElem);
+
+			// Add to entity list
+			mEntities.push_back(pEntity);
+		} catch(...)
+		{
+			continue;
+		}			
+	}	
+}
+
+// Create all Lights in scene
+void OSMScene::createLights(TiXmlElement* pLightNode, Ogre::SceneNode* pSceneRoot)
+{
+	// Iterate all Lights, creating them. We do not attach them yet, since
+	// we need to make sure all potential parent entities have been created.
+	for (TiXmlElement* pLightElem = pLightNode->FirstChildElement();
+            pLightElem != 0; pLightElem = pLightElem->NextSiblingElement())
+	{
+		// Ogre could cast an exception, in which case we just try to 
+		// continue reading the other Lights
+		try 
+		{
+			const char *pszName = pLightElem->Attribute("name");
+
+			Light *pLight = mSceneMgr->createLight(pszName);
+			if(pLight==0) continue;
+
+			// Figure out which type of light we are using
+			const char *pszType = pLightElem->Attribute("type");
+			if(stricmp(pszType, "omni")==0)
+			{
+				pLight->setType(Light::LT_POINT);
+			} else if(stricmp(pszType, "spot")==0)
+			{	
+				pLight->setType(Light::LT_SPOTLIGHT);
+				pLight->setSpotlightRange(
+						Degree(StringConverter::parseReal(pLightElem->Attribute("hotspot"))),
+						Degree(StringConverter::parseReal(pLightElem->Attribute("falloff"))));
+				pLight->setDirection(0,0,-1);
+
+			}  else if(stricmp(pszType, "directional")==0)
+			{
+				pLight->setType(Light::LT_DIRECTIONAL);
+			}
+
+			// Check if the light should be on
+			const char *pszOn = pLightElem->Attribute("on");
+			if(pszOn!=0 && stricmp(pszOn, "true")==0)
+				pLight->setVisible(true);
+			else
+				pLight->setVisible(false);
+
+			// Check if the object should cast shadows
+			const char *pszCastShadows = pLightElem->Attribute("CastShadows");
+			if(pszCastShadows && stricmp(pszCastShadows, "no")==0)
+				pLight->setCastShadows(false);	
+			else
+				pLight->setCastShadows(true);	
+
+			// Diffuse Color
+			TiXmlElement* colorElem = pLightElem->FirstChildElement("color");
+			if(colorElem)
+			{					
+				pLight->setDiffuseColour(
+					StringConverter::parseReal(colorElem->Attribute("r")),
+					StringConverter::parseReal(colorElem->Attribute("g")),
+					StringConverter::parseReal(colorElem->Attribute("b")));
+			}
+
+			// Specular Color
+			TiXmlElement* specularElem = pLightElem->FirstChildElement("specular");
+			if(specularElem)
+			{						
+				pLight->setSpecularColour(
+					StringConverter::parseReal(specularElem->Attribute("r")),
+					StringConverter::parseReal(specularElem->Attribute("g")),
+					StringConverter::parseReal(specularElem->Attribute("b")));
+			}
+
+			// Attenuation
+			TiXmlElement* attenElem = pLightElem->FirstChildElement("attenuation");
+			if(attenElem) {
+				pLight->setAttenuation(
+					StringConverter::parseReal(attenElem->Attribute("range")),
+					StringConverter::parseReal(attenElem->Attribute("constant")),
+					StringConverter::parseReal(attenElem->Attribute("linear")),
+					StringConverter::parseReal(attenElem->Attribute("quadratic")));
+			}
+			
+			// Create node with full information
+			SceneNode *pLightNode=createNode(pLightElem, pSceneRoot);
+
+			// Attach the Light entity to node
+			pLightNode->attachObject(pLight);
+
+			// Target
+			TiXmlElement* targetElem=pLightElem->FirstChildElement("target");
+			if(targetElem)
+			{	
+				// Create node with full information
+				SceneNode *pTargetNode=createNode(targetElem, pSceneRoot);
+				pLightNode->setAutoTracking(true, pTargetNode);
+			}		
+
+			// Notify
+			if(mCallbacks)
+				mCallbacks->OnLightCreate(pLight, pLightElem);
+
+			// Add to light list
+			mLights.push_back(pLight);
+		} catch(...)
+		{
+			continue;
+		}			
+	}	
+}
+
+// Create all Cameras in scene
+void OSMScene::createCameras(TiXmlElement* pCameraNode, Ogre::SceneNode* pSceneRoot)
+{
+	// Iterate all Cameras, creating them. We do not attach them yet, since
+	// we need to make sure all potential parent entities have been created.
+	for (TiXmlElement* pCameraElem = pCameraNode->FirstChildElement();
+            pCameraElem != 0; pCameraElem = pCameraElem->NextSiblingElement())
+	{
+		// Ogre could cast an exception, in which case we just try to 
+		// continue reading the other Cameras
+		try 
+		{
+			const char *pszName = pCameraElem->Attribute("name");
+
+			// Create camera
+			Camera *pCamera=mSceneMgr->createCamera(pszName);
+			if(pCamera==0) continue;
+
+			// Set Field of View on camera
+			pCamera->setFOVy(Radian(StringConverter::parseReal(pCameraElem->Attribute("FOV"))));			
+			pCamera->setNearClipDistance(5);			
+
+			// Create node with full information
+			SceneNode *pCameraNode=createNode(pCameraElem, pSceneRoot);
+
+			// Attach the Camera entity to node
+			pCameraNode->attachObject(pCamera);
+
+			// Target
+			TiXmlElement* targetElem=pCameraElem->FirstChildElement("target");
+			if(targetElem)
+			{	
+				// Create node with full information
+				SceneNode *pTargetNode=createNode(targetElem, pSceneRoot);
+				pCameraNode->setAutoTracking(true, pTargetNode);
+			}
+
+			// Notify
+			if(mCallbacks)
+				mCallbacks->OnCameraCreate(pCamera, pCameraElem);
+
+			// Add to camera list
+			mCameras.push_back(pCamera);
+		} catch(...)
+		{
+			continue;
+		}			
+	}	
+}
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Repository
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Repository	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Repository	(revision 1493)
@@ -0,0 +1,1 @@
+ogrenew/Samples/SkyPlane/src
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Root
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Root	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Root	(revision 1493)
@@ -0,0 +1,1 @@
+:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ogre
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Entries
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Entries	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Entries	(revision 1493)
@@ -0,0 +1,3 @@
+/Makefile.am/1.5/Sun Dec  5 13:38:13 2004//Tv1-0-3
+/SkyPlane.cpp/1.12/Fri Feb  4 17:54:50 2005//Tv1-0-3
+D
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Tag
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Tag	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/CVS/Tag	(revision 1493)
@@ -0,0 +1,1 @@
+Nv1-0-3
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/IndirectTexturing.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/IndirectTexturing.cpp	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/IndirectTexturing.cpp	(revision 1493)
@@ -0,0 +1,37 @@
+#include "IndirectTexturing.h"
+
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+#define WIN32_LEAN_AND_MEAN
+#include "windows.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
+#else
+int main(int argc, char *argv[])
+#endif
+{
+    // Create application object
+    SkyPlaneApplication app;
+
+    try {
+        app.go();
+    } catch( Ogre::Exception& e ) {
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+        MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL );
+#else
+        std::cerr << "An exception has occured: " <<
+            e.getFullDescription().c_str() << std::endl;
+#endif
+    }
+
+    return 0;
+}
+
+#ifdef __cplusplus
+}
+#endif
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinystr.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinystr.cpp	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/src/tinystr.cpp	(revision 1493)
@@ -0,0 +1,265 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original file by Yves Berquin.
+
+This software is provided 'as-is', without any express or implied 
+warranty. In no event will the authors be held liable for any 
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any 
+purpose, including commercial applications, and to alter it and 
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must 
+not claim that you wrote the original software. If you use this 
+software in a product, an acknowledgment in the product documentation 
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source 
+distribution.
+*/
+
+#include "tinyxml.h"
+
+#ifndef TIXML_USE_STL
+
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "tinystr.h"
+
+// TiXmlString constructor, based on a C string
+TiXmlString::TiXmlString (const char* instring)
+{
+    unsigned newlen;
+    char * newstring;
+
+    if (!instring)
+    {
+        allocated = 0;
+        cstring = NULL;
+        return;
+    }
+    newlen = strlen (instring) + 1;
+    newstring = new char [newlen];
+    strcpy (newstring, instring);
+    allocated = newlen;
+    cstring = newstring;
+}
+
+// TiXmlString copy constructor
+TiXmlString::TiXmlString (const TiXmlString& copy)
+{
+    unsigned newlen;
+    char * newstring;
+
+	// Prevent copy to self!
+	if ( &copy == this )
+		return;
+
+    if (! copy . allocated)
+    {
+        allocated = 0;
+        cstring = NULL;
+        return;
+    }
+    newlen = strlen (copy . cstring) + 1;
+    newstring = new char [newlen];
+    strcpy (newstring, copy . cstring);
+    allocated = newlen;
+    cstring = newstring;
+}
+
+// TiXmlString = operator. Safe when assign own content
+void TiXmlString ::operator = (const char * content)
+{
+    unsigned newlen;
+    char * newstring;
+
+    if (! content)
+    {
+        empty_it ();
+        return;
+    }
+    newlen = strlen (content) + 1;
+    newstring = new char [newlen];
+    strcpy (newstring, content);
+    empty_it ();
+    allocated = newlen;
+    cstring = newstring;
+}
+
+// = operator. Safe when assign own content
+void TiXmlString ::operator = (const TiXmlString & copy)
+{
+    unsigned newlen;
+    char * newstring;
+
+    if (! copy . length ())
+    {
+        empty_it ();
+        return;
+    }
+    newlen = copy . length () + 1;
+    newstring = new char [newlen];
+    strcpy (newstring, copy . c_str ());
+    empty_it ();
+    allocated = newlen;
+    cstring = newstring;
+}
+
+
+//// Checks if a TiXmlString contains only whitespace (same rules as isspace)
+//bool TiXmlString::isblank () const
+//{
+//    char * lookup;
+//    for (lookup = cstring; * lookup; lookup++)
+//        if (! isspace (* lookup))
+//            return false;
+//    return true;
+//}
+
+// append a const char * to an existing TiXmlString
+void TiXmlString::append( const char* str, int len )
+{
+    char * new_string;
+    unsigned new_alloc, new_size;
+
+    new_size = length () + len + 1;
+    // check if we need to expand
+    if (new_size > allocated)
+    {
+        // compute new size
+        new_alloc = assign_new_size (new_size);
+
+        // allocate new buffer
+        new_string = new char [new_alloc];        
+        new_string [0] = 0;
+
+        // copy the previous allocated buffer into this one
+        if (allocated && cstring)
+            strcpy (new_string, cstring);
+
+        // append the suffix. It does exist, otherwize we wouldn't be expanding 
+        strncat (new_string, str, len);
+
+        // return previsously allocated buffer if any
+        if (allocated && cstring)
+            delete [] cstring;
+
+        // update member variables
+        cstring = new_string;
+        allocated = new_alloc;
+    }
+    else
+        // we know we can safely append the new string
+        strncat (cstring, str, len);
+}
+
+
+// append a const char * to an existing TiXmlString
+void TiXmlString::append( const char * suffix )
+{
+    char * new_string;
+    unsigned new_alloc, new_size;
+
+    new_size = length () + strlen (suffix) + 1;
+    // check if we need to expand
+    if (new_size > allocated)
+    {
+        // compute new size
+        new_alloc = assign_new_size (new_size);
+
+        // allocate new buffer
+        new_string = new char [new_alloc];        
+        new_string [0] = 0;
+
+        // copy the previous allocated buffer into this one
+        if (allocated && cstring)
+            strcpy (new_string, cstring);
+
+        // append the suffix. It does exist, otherwize we wouldn't be expanding 
+        strcat (new_string, suffix);
+
+        // return previsously allocated buffer if any
+        if (allocated && cstring)
+            delete [] cstring;
+
+        // update member variables
+        cstring = new_string;
+        allocated = new_alloc;
+    }
+    else
+        // we know we can safely append the new string
+        strcat (cstring, suffix);
+}
+
+// Check for TiXmlString equuivalence
+//bool TiXmlString::operator == (const TiXmlString & compare) const
+//{
+//    return (! strcmp (c_str (), compare . c_str ()));
+//}
+
+unsigned TiXmlString::length () const
+{
+    if (allocated)
+        return strlen (cstring);
+    return 0;
+}
+
+
+unsigned TiXmlString::find (char tofind, unsigned offset) const
+{
+    char * lookup;
+
+    if (offset >= length ())
+        return (unsigned) notfound;
+    for (lookup = cstring + offset; * lookup; lookup++)
+        if (* lookup == tofind)
+            return lookup - cstring;
+    return (unsigned) notfound;
+}
+
+
+bool TiXmlString::operator == (const TiXmlString & compare) const
+{
+	if ( allocated && compare.allocated )
+	{
+		assert( cstring );
+		assert( compare.cstring );
+		return ( strcmp( cstring, compare.cstring ) == 0 );
+ 	}
+	return false;
+}
+
+
+bool TiXmlString::operator < (const TiXmlString & compare) const
+{
+	if ( allocated && compare.allocated )
+	{
+		assert( cstring );
+		assert( compare.cstring );
+		return ( strcmp( cstring, compare.cstring ) > 0 );
+ 	}
+	return false;
+}
+
+
+bool TiXmlString::operator > (const TiXmlString & compare) const
+{
+	if ( allocated && compare.allocated )
+	{
+		assert( cstring );
+		assert( compare.cstring );
+		return ( strcmp( cstring, compare.cstring ) < 0 );
+ 	}
+	return false;
+}
+
+
+#endif	// TIXML_USE_STL
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/terrain.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/terrain.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/terrain.cfg	(revision 1493)
@@ -0,0 +1,83 @@
+# The main world texture (if you wish the terrain manager to create a material for you)
+WorldTexture=terrain_texture.jpg
+#WorldTexture=terrain_texture01.png
+
+# The detail texture (if you wish the terrain manager to create a material for you)
+DetailTexture=terrain_detail.jpg
+#DetailTexture=terrain_detail01.png
+
+#number of times the detail texture will tile in a terrain tile
+DetailTile=18
+
+# Heightmap source
+PageSource=Heightmap
+
+# Heightmap-source specific settings
+Heightmap.image=terrain.png
+
+# If you use RAW, fill in the below too
+# RAW-specific setting - size (horizontal/vertical)
+#Heightmap.raw.size=513
+# RAW-specific setting - bytes per pixel (1 = 8bit, 2=16bit)
+#Heightmap.raw.bpp=2
+# Use this if you want to flip the terrain (eg Terragen exports raw upside down)
+#Heightmap.flip=true
+
+# How large is a page of tiles (in vertices)? Must be (2^n)+1
+PageSize=513
+
+# How large is each tile? Must be (2^n)+1 and be smaller than PageSize
+TileSize=17
+
+# The maximum error allowed when determining which LOD to use
+# MaxPixelError=3
+MaxPixelError=1
+
+# The size of a terrain page, in world units
+#PageWorldX=128000
+#PageWorldZ=128000
+
+PageWorldX=128000
+PageWorldZ=128000
+
+# Maximum height of the terrain 
+## MaxHeight=6000
+#MaxHeight=3000
+MaxHeight=3000
+
+# Upper LOD limit
+MaxMipMapLevel=5
+
+
+#VertexNormals=yes
+#VertexColors=yes
+#UseTriStrips=yes
+
+# Use vertex program to morph LODs, if available
+VertexProgramMorph=yes
+
+# The proportional distance range at which the LOD morph starts to take effect
+# This is as a proportion of the distance between the current LODs effective range,
+# and the effective range of the next lower LOD
+LODMorphStart=0.2
+
+# This following section is for if you want to provide your own terrain shading routine
+# Note that since you define your textures within the material this makes the 
+# WorldTexture and DetailTexture settings redundant
+
+# The name of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE HIGH-LEVEL VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamName=morphFactor
+
+# The index of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE ASSEMBLER VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamIndex=4
+
+# The name of the material you will define to shade the terrain
+#CustomMaterialName=TestTerrainMaterial
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/resources.cfg.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/resources.cfg.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/resources.cfg.bak	(revision 1493)
@@ -0,0 +1,25 @@
+# Resource locations to be added to the 'boostrap' path
+# This also contains the minimum you need to use the Ogre example framework
+[Bootstrap]
+Zip=../../media/packs/OgreCore.zip
+
+# Resource locations to be added to the default path
+[General]
+FileSystem=../../media
+FileSystem=../../media/fonts
+FileSystem=../../media/materials/programs
+FileSystem=../../media/materials/scripts
+FileSystem=../../media/materials/textures
+FileSystem=../../media/models
+FileSystem=../../media/overlays
+FileSystem=../../media/particle
+FileSystem=../../media/gui
+FileSystem=../../media/chestnut
+FileSystem=../../media/oldgeneral
+FileSystem=../../media/general
+FileSystem=../../media/farm
+FileSystem=../../media/butterfly
+FileSystem=../../media/ruin
+FileSystem=../../media/barrel
+
+Zip=../../media/general/clouds.zip
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/resources.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/resources.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/resources.cfg	(revision 1493)
@@ -0,0 +1,26 @@
+# Resource locations to be added to the 'boostrap' path
+# This also contains the minimum you need to use the Ogre example framework
+[Bootstrap]
+Zip=../../media/packs/OgreCore.zip
+
+# Resource locations to be added to the default path
+[General]
+FileSystem=../../media
+FileSystem=../../media/fonts
+FileSystem=../../media/materials/programs
+FileSystem=../../media/materials/scripts
+FileSystem=../../media/materials/textures
+FileSystem=../../media/models
+FileSystem=../../media/overlays
+FileSystem=../../media/particle
+FileSystem=../../media/gui
+FileSystem=../../media/chestnut
+FileSystem=../../media/oldgeneral
+FileSystem=../../media/general
+FileSystem=../../media/farm
+FileSystem=../../media/butterfly
+FileSystem=../../media/ruin
+FileSystem=../../media/barrel
+FileSystem=../../media/scene
+
+Zip=../../media/general/clouds.zip
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/quake3settings.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/quake3settings.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/quake3settings.cfg	(revision 1493)
@@ -0,0 +1,2 @@
+Pak0Location: f:\quake3arena\baseq3\pak0.pk3
+Map: maps/q3dm3.bsp
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/configScene.cfg.bak
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/configScene.cfg.bak	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/configScene.cfg.bak	(revision 1493)
@@ -0,0 +1,3 @@
+NumTrees		1000
+MoveSpeed		300
+ShadowsEnabled		yes
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/media.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/media.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/media.cfg	(revision 1493)
@@ -0,0 +1,16 @@
+Mesh=ogrehead.mesh
+Mesh=geosphere4500.mesh
+Mesh=razor.mesh
+Mesh=knot.mesh
+Mesh=RZR-002.mesh
+Mesh=geosphere8000.mesh
+Mesh=sphere.mesh
+
+CubeMap=cubescene.jpg
+CubeMap=early_morning.jpg
+CubeMap=cubemap.jpg
+CubeMap=morning.jpg
+CubeMap=cloudy_noon.jpg
+CubeMap=evening.jpg
+CubeMap=stormy.jpg
+CubeMap=stevecube.jpg
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/Plugins.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/Plugins.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/Plugins.cfg	(revision 1493)
@@ -0,0 +1,15 @@
+# Defines plugins to load
+
+# Define plugin folder
+PluginFolder=.
+
+# Define plugins
+Plugin=RenderSystem_Direct3D9
+Plugin=RenderSystem_GL
+Plugin=Plugin_ParticleFX
+Plugin=Plugin_OctreeSceneManager
+Plugin=Plugin_BSPSceneManager
+Plugin=Plugin_CgProgramManager
+Plugin=Plugin_EXRCodec
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/configScene.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/configScene.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/configScene.cfg	(revision 1493)
@@ -0,0 +1,3 @@
+NumTrees		500
+MoveSpeed		300
+ShadowsEnabled		yes
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/world.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/world.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/world.cfg	(revision 1493)
@@ -0,0 +1,6 @@
+HeightMap=2049x2049_map.png
+Scale.x=2.0
+Scale.y=0.6
+Scale.z=2.0
+WorldTexture=terrain_texture.jpg
+DetailTexture=terrain_detail.jpg
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/ogre.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/ogre.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/ogre.cfg	(revision 1493)
@@ -0,0 +1,19 @@
+Render System=Direct3D9 Rendering Subsystem
+
+[Direct3D9 Rendering Subsystem]
+Allow NVPerfHUD=No
+Anti aliasing=None
+Floating-point mode=Fastest
+Full Screen=No
+Rendering Device=NVIDIA Quadro FX 4500
+VSync=No
+Video Mode=1920 x 1200 @ 32-bit colour
+
+[OpenGL Rendering Subsystem]
+Colour Depth=32
+Display Frequency=N/A
+FSAA=0
+Full Screen=No
+RTT Preferred Mode=FBO
+VSync=No
+Video Mode=640 x 480
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/Ogre.log
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/Ogre.log	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/release/Ogre.log	(revision 1493)
@@ -0,0 +1,316 @@
+12:38:10: Creating resource group General
+12:38:10: Creating resource group Internal
+12:38:10: Creating resource group Autodetect
+12:38:10: Registering ResourceManager for type Material
+12:38:10: Registering ResourceManager for type Mesh
+12:38:10: Registering ResourceManager for type Skeleton
+12:38:10: MovableObjectFactory for type 'ParticleSystem' registered.
+12:38:10: Loading library OgrePlatform.dll
+12:38:10: OverlayElementFactory for type Panel registered.
+12:38:10: OverlayElementFactory for type BorderPanel registered.
+12:38:10: OverlayElementFactory for type TextArea registered.
+12:38:10: Registering ResourceManager for type Font
+12:38:10: ArchiveFactory for archive type FileSystem registered.
+12:38:10: ArchiveFactory for archive type Zip registered.
+12:38:10: DevIL version: Developer's Image Library (DevIL) 1.6.7 Oct 28 2005
+12:38:10: DevIL image formats: bmp dib cut dcx dds gif hdr ico cur jpg jpe jpeg lif mdl mng jng pcx pic pix png pbm pgm pnm ppm psd pdd psp pxr sgi bw rgb rgba tga vda icb vst tif tiff wal xpm raw 
+12:38:10: Registering ResourceManager for type HighLevelGpuProgram
+12:38:10: Registering ResourceManager for type Compositor
+12:38:10: MovableObjectFactory for type 'Entity' registered.
+12:38:10: MovableObjectFactory for type 'Light' registered.
+12:38:10: MovableObjectFactory for type 'BillboardSet' registered.
+12:38:10: MovableObjectFactory for type 'ManualObject' registered.
+12:38:10: MovableObjectFactory for type 'BillboardChain' registered.
+12:38:10: MovableObjectFactory for type 'RibbonTrail' registered.
+12:38:10: Loading library .\RenderSystem_Direct3D9
+12:38:10: D3D9 : Direct3D9 Rendering Subsystem created.
+12:38:10: D3D9: Driver Detection Starts
+12:38:10: D3D9: Driver Detection Ends
+12:38:10: Loading library .\RenderSystem_GL
+12:38:10: OpenGL Rendering Subsystem created.
+12:38:10: Loading library .\Plugin_ParticleFX
+12:38:10: Particle Emitter Type 'Point' registered
+12:38:10: Particle Emitter Type 'Box' registered
+12:38:10: Particle Emitter Type 'Ellipsoid' registered
+12:38:10: Particle Emitter Type 'Cylinder' registered
+12:38:10: Particle Emitter Type 'Ring' registered
+12:38:10: Particle Emitter Type 'HollowEllipsoid' registered
+12:38:10: Particle Affector Type 'LinearForce' registered
+12:38:10: Particle Affector Type 'ColourFader' registered
+12:38:10: Particle Affector Type 'ColourFader2' registered
+12:38:10: Particle Affector Type 'ColourImage' registered
+12:38:10: Particle Affector Type 'ColourInterpolator' registered
+12:38:10: Particle Affector Type 'Scaler' registered
+12:38:10: Particle Affector Type 'Rotator' registered
+12:38:10: Particle Affector Type 'DirectionRandomiser' registered
+12:38:10: Particle Affector Type 'DeflectorPlane' registered
+12:38:10: Loading library .\Plugin_OctreeSceneManager
+12:38:10: Loading library .\Plugin_BSPSceneManager
+12:38:10: Registering ResourceManager for type BspLevel
+12:38:10: Loading library .\Plugin_CgProgramManager
+12:38:10: Loading library .\Plugin_EXRCodec
+12:38:10: EXRCodec initialised
+12:38:10: *-*-* OGRE Initialising
+12:38:10: *-*-* Version 1.2.1 (Dagon)
+12:38:10: Creating resource group Bootstrap
+12:38:10: Added resource location '../../media/packs/OgreCore.zip' of type 'Zip' to resource group 'Bootstrap'
+12:38:10: Added resource location '../../media' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/fonts' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/materials/programs' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/materials/scripts' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/materials/textures' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/models' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/overlays' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/particle' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/gui' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/chestnut' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/oldgeneral' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/general' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/farm' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/butterfly' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/ruin' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/barrel' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/scene' of type 'FileSystem' to resource group 'General'
+12:38:10: Added resource location '../../media/general/clouds.zip' of type 'Zip' to resource group 'General'
+12:38:10: D3D9 : RenderSystem Option: Allow NVPerfHUD = No
+12:38:10: D3D9 : RenderSystem Option: Anti aliasing = None
+12:38:10: D3D9 : RenderSystem Option: Floating-point mode = Fastest
+12:38:10: D3D9 : RenderSystem Option: Full Screen = No
+12:38:10: D3D9 : RenderSystem Option: Rendering Device = NVIDIA Quadro FX 4500
+12:38:10: D3D9 : RenderSystem Option: VSync = No
+12:38:10: D3D9 : RenderSystem Option: Video Mode = 800 x 600 @ 32-bit colour
+12:38:14: D3D9 : RenderSystem Option: Video Mode = 1920 x 1200 @ 32-bit colour
+12:38:15: D3D9 : Subsystem Initialising
+12:38:15: D3D9RenderSystem::createRenderWindow "OGRE Render Window", 1920x1200 windowed  miscParams: FSAA=0 FSAAQuality=0 colourDepth=32 useNVPerfHUD=false vsync=false 
+12:38:15: D3D9 : Created D3D9 Rendering Window 'OGRE Render Window' : 1912x1172, 32bpp
+12:38:15: D3D9 : WARNING - disabling VSync in windowed mode can cause timing issues at lower frame rates, turn VSync on if you observe this problem.
+12:38:15: Registering ResourceManager for type Texture
+12:38:15: Registering ResourceManager for type GpuProgram
+12:38:15: RenderSystem capabilities
+12:38:15: -------------------------
+12:38:15:  * Hardware generation of mipmaps: yes
+12:38:15:  * Texture blending: yes
+12:38:15:  * Anisotropic texture filtering: yes
+12:38:15:  * Dot product texture operation: yes
+12:38:15:  * Cube mapping: yes
+12:38:15:  * Hardware stencil buffer: yes
+12:38:15:    - Stencil depth: 8
+12:38:15:    - Two sided stencil support: yes
+12:38:15:    - Wrap stencil values: yes
+12:38:15:  * Hardware vertex / index buffers: yes
+12:38:15:  * Vertex programs: yes
+12:38:15:    - Max vertex program version: vs_3_0
+12:38:15:  * Fragment programs: yes
+12:38:15:    - Max fragment program version: ps_3_0
+12:38:15:  * Texture Compression: yes
+12:38:15:    - DXT: yes
+12:38:15:    - VTC: no
+12:38:15:  * Scissor Rectangle: yes
+12:38:15:  * Hardware Occlusion Query: yes
+12:38:15:  * User clip planes: yes
+12:38:15:  * VET_UBYTE4 vertex element type: yes
+12:38:15:  * Infinite far plane projection: yes
+12:38:15:  * Hardware render-to-texture: yes
+12:38:15:  * Floating point textures: yes
+12:38:15:  * Non-power-of-two textures: yes
+12:38:15:  * Volume textures: yes
+12:38:15:  * Multiple Render Targets: 4
+12:38:15:  * Point Sprites: yes
+12:38:15:  * Extended point parameters: yes
+12:38:15:  * Max Point Size: 8192
+12:38:15: ***************************************
+12:38:15: *** D3D9 : Subsystem Initialised OK ***
+12:38:15: ***************************************
+12:38:15: ResourceBackgroundQueue - threading disabled
+12:38:15: Particle Renderer Type 'billboard' registered
+12:38:15: Creating viewport on target 'OGRE Render Window', rendering from camera 'PlayerCam', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
+12:38:15: Viewport for camera 'PlayerCam', actual dimensions L: 0 T: 0 W: 1912 H: 1172
+12:38:15: Parsing scripts for resource group Autodetect
+12:38:15: Finished parsing scripts for resource group Autodetect
+12:38:15: Parsing scripts for resource group Bootstrap
+12:38:15: Parsing script OgreCore.material
+12:38:15: Parsing script OgreProfiler.material
+12:38:15: Parsing script Ogre.fontdef
+12:38:15: Parsing script OgreDebugPanel.overlay
+12:38:15: Texture: New_Ogre_Border_Center.png: Loading 1 faces(PF_A8B8G8R8,256x128x1) with  hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,256x128x1.
+12:38:15: Texture: New_Ogre_Border.png: Loading 1 faces(PF_A8B8G8R8,256x256x1) with  hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,256x256x1.
+12:38:15: Texture: New_Ogre_Border_Break.png: Loading 1 faces(PF_A8B8G8R8,32x32x1) with  hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x32x1.
+12:38:15: Font TrebuchetMSBoldusing texture size 512x512
+12:38:15: Info: Freetype returned null for character 160 in font TrebuchetMSBold
+12:38:15: Texture: TrebuchetMSBoldTexture: Loading 1 faces(PF_BYTE_LA,512x512x1) with 0 generated mipmaps from Image. Internal format is PF_BYTE_LA,512x512x1.
+12:38:15: Texture: ogretext.png: Loading 1 faces(PF_A8B8G8R8,256x128x1) with  hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,256x128x1.
+12:38:15: Parsing script OgreLoadingPanel.overlay
+12:38:15: Finished parsing scripts for resource group Bootstrap
+12:38:15: Parsing scripts for resource group General
+12:38:15: Parsing script Examples.program
+12:38:15: Parsing script impostors_programs.program
+12:38:15: Parsing script general.program
+12:38:15: Parsing script OffsetMapping.material
+12:38:15: Parsing script Example-DynTex.material
+12:38:15: Parsing script Example-Water.material
+12:38:15: Parsing script RZR-002.material
+12:38:15: Parsing script Ogre.material
+12:38:15: Parsing script smoke.material
+12:38:15: Parsing script Examples-Advanced.material
+12:38:15: Parsing script gametools.material
+12:38:15: Parsing script Example.material
+12:38:15: Parsing script grass.material
+12:38:15: Parsing script chesnutTrunk.material
+12:38:15: Parsing script chestnutLeavesMaterial.material
+12:38:15: An exception has been thrown!
+
+-----------------------------------
+Details:
+-----------------------------------
+Error #: 7
+Function: GpuProgramParameters::getParamIndex
+Description: Cannot find a parameter named eyePosition. 
+File: \OgreDev\Dagon\OgreMain\src\OgreGpuProgram.cpp
+Line: 773
+Stack unwinding: <<beginning of stack>>
+12:38:15: Error in material chestnutLeavesBillboardCloudGroupMaterial0 at line 180 of chestnutLeavesMaterial.material: Invalid param_named_auto attribute - An exception has been thrown!
+
+-----------------------------------
+Details:
+-----------------------------------
+Error #: 7
+Function: GpuProgramParameters::getParamIndex
+Description: Cannot find a parameter named eyePosition. 
+File: \OgreDev\Dagon\OgreMain\src\OgreGpuProgram.cpp
+Line: 773
+Stack unwinding: <<beginning of stack>>
+12:38:15: An exception has been thrown!
+
+-----------------------------------
+Details:
+-----------------------------------
+Error #: 7
+Function: GpuProgramParameters::getParamIndex
+Description: Cannot find a parameter named eyePosition. 
+File: \OgreDev\Dagon\OgreMain\src\OgreGpuProgram.cpp
+Line: 773
+Stack unwinding: <<beginning of stack>>
+12:38:15: Error in material chestnutLeavesBillboardCloudGroupMaterial0 at line 222 of chestnutLeavesMaterial.material: Invalid param_named_auto attribute - An exception has been thrown!
+
+-----------------------------------
+Details:
+-----------------------------------
+Error #: 7
+Function: GpuProgramParameters::getParamIndex
+Description: Cannot find a parameter named eyePosition. 
+File: \OgreDev\Dagon\OgreMain\src\OgreGpuProgram.cpp
+Line: 773
+Stack unwinding: <<beginning of stack>>
+12:38:15: Parsing script dynamic_skybox.material
+12:38:15: Parsing script shadoMapImage.material
+12:38:15: Parsing script test_terrain.material
+12:38:15: Parsing script general.material
+12:38:15: Parsing script skybox.material
+12:38:15: Parsing script farm.material
+12:38:15: Parsing script butterfly_bones_animated.material
+12:38:15: Parsing script ruin.material
+12:38:15: Parsing script barrel.material
+12:38:15: Parsing script sample.fontdef
+12:38:15: Bad attribute line: glyph	 	0.152344	0.125	0.160156	0.1875 in font Ogre
+12:38:15: Parsing script smoke.particle
+12:38:15: Parsing script Example-Water.particle
+12:38:15: Parsing script Example.particle
+12:38:15: Parsing script Example-CubeMapping.overlay
+12:38:15: Parsing script Example-DynTex.overlay
+12:38:15: Parsing script DP3.overlay
+12:38:15: Parsing script Shadows.overlay
+12:38:15: Parsing script Example-Water.overlay
+12:38:15: Parsing script gametools.overlay
+12:38:16: Texture: gametoolsVideoPage.png: Loading 1 faces(PF_B8G8R8,1024x768x1) with 10 generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x768x1.
+12:38:16: Parsing script overlay_shadow_map.overlay
+12:38:16: Finished parsing scripts for resource group General
+12:38:16: Parsing scripts for resource group Internal
+12:38:16: Finished parsing scripts for resource group Internal
+12:38:16: WARNING: Texture instance 'Ogre/ShadowTexture0' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
+12:38:16: Creating viewport on target 'rtt/2288640', rendering from camera 'Ogre/ShadowTextureCam0', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
+12:38:16: Viewport for camera 'Ogre/ShadowTextureCam0', actual dimensions L: 0 T: 0 W: 512 H: 512
+12:38:16: Render Target 'rtt/2288640' Average FPS: 0 Best FPS: 0 Worst FPS: 999
+12:38:16: WARNING: Texture instance 'Ogre/ShadowTexture0' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
+12:38:16: Creating viewport on target 'rtt/2288640', rendering from camera 'Ogre/ShadowTextureCam0', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
+12:38:16: Viewport for camera 'Ogre/ShadowTextureCam0', actual dimensions L: 0 T: 0 W: 512 H: 512
+12:38:16: Render Target 'rtt/2288640' Average FPS: 0 Best FPS: 0 Worst FPS: 999
+12:38:16: WARNING: Texture instance 'Ogre/ShadowTexture0' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
+12:38:16: Creating viewport on target 'rtt/2288640', rendering from camera 'Ogre/ShadowTextureCam0', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
+12:38:16: Viewport for camera 'Ogre/ShadowTextureCam0', actual dimensions L: 0 T: 0 W: 1024 H: 1024
+12:38:16: Texture: Clouds_fr.jpg: Loading 1 faces(PF_B8G8R8,1024x1024x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x1024x1.
+12:38:16: Texture: Clouds_bk.jpg: Loading 1 faces(PF_B8G8R8,1024x1024x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x1024x1.
+12:38:16: Texture: Clouds_lf.jpg: Loading 1 faces(PF_B8G8R8,1024x1024x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x1024x1.
+12:38:16: Texture: Clouds_rt.jpg: Loading 1 faces(PF_B8G8R8,1024x1024x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x1024x1.
+12:38:16: Texture: Clouds_up.jpg: Loading 1 faces(PF_B8G8R8,1024x1024x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x1024x1.
+12:38:16: Texture: Clouds_dn.jpg: Loading 1 faces(PF_B8G8R8,1024x1024x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,1024x1024x1.
+12:38:16: Texture: grass2.tga: Loading 1 faces(PF_R8G8B8,128x128x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,128x128x1.
+12:38:16: Mesh: Loading chestnutLeavesVisibilityBillboardCloudGroupedIndirectTexturingLOD02.mesh.
+12:38:16: Texture: chestnutLeavesVisibilityIndirectDiffuseColorBillboardGroupAtlas0.png: Loading 1 faces(PF_A8B8G8R8,256x256x1) with  hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,256x256x1.
+12:38:16: Texture: chestnutRotatedLeafAtlasDefault.png: Loading 1 faces(PF_A8B8G8R8,1024x1024x1) with  hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,1024x1024x1.
+12:38:16: Texture: chestnutLeavesVisibilityIndirectBillboardGroupAtlas0.png: Loading 1 faces(PF_A8B8G8R8,256x256x1) with  hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,256x256x1.
+12:38:16: Texture: chestnutRotatedLeafAtlasDefault128.png: Loading 1 faces(PF_A8B8G8R8,128x128x1) with  hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,128x128x1.
+12:38:16: Mesh: Loading chestnutTrunkLevel2.mesh.
+12:38:16: Warning: VET_COLOUR element type is deprecated, you should use one of the more specific types to indicate the byte order. Use OgreMeshUpgrade on chestnutTrunkLevel2.mesh as soon as possible. 
+12:38:16: Texture: castanea_sativa_bark.png: Loading 1 faces(PF_B8G8R8,128x128x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,128x128x1.
+12:38:17: Mesh: Loading ruin.mesh.
+12:38:17: Warning: VET_COLOUR element type is deprecated, you should use one of the more specific types to indicate the byte order. Use OgreMeshUpgrade on ruin.mesh as soon as possible. 
+12:38:17: Texture: RuinT05.tga: Loading 1 faces(PF_R8G8B8,256x256x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,256x256x1.
+12:38:17: Texture: RuinT03.tga: Loading 1 faces(PF_R8G8B8,256x256x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,256x256x1.
+12:38:17: Mesh: Loading barrel.mesh.
+12:38:17: Texture: old_planks.jpg: Loading 1 faces(PF_B8G8R8,316x316x1) with 8 generated mipmaps from Image. Internal format is PF_X8R8G8B8,316x316x1.
+12:38:17: Mesh: Loading butterfly_bones_animated.mesh.
+12:38:17: Skeleton: Loading butterfly_bones_animated.skeleton
+12:38:17: Texture: BUTTFACE.jpg: Loading 1 faces(PF_B8G8R8,452x453x1) with 8 generated mipmaps from Image. Internal format is PF_X8R8G8B8,452x453x1.
+12:38:17: Texture: BUTTWIFR.jpg: Loading 1 faces(PF_B8G8R8,1218x913x1) with 10 generated mipmaps from Image. Internal format is PF_X8R8G8B8,1218x913x1.
+12:38:17: Texture: BUTTWIBA.jpg: Loading 1 faces(PF_B8G8R8,987x875x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,987x875x1.
+12:38:18: Texture: BUTTBODY.jpg: Loading 1 faces(PF_B8G8R8,829x226x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,829x226x1.
+12:38:18: Mesh: Loading farm.mesh.
+12:38:18: Texture: D5002WOO.JPG: Loading 1 faces(PF_B8G8R8,200x1024x1) with 10 generated mipmaps from Image. Internal format is PF_X8R8G8B8,200x1024x1.
+12:38:18: Texture: D5002B3NEW.JPG: Loading 1 faces(PF_B8G8R8,886x629x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,886x629x1.
+12:38:18: Texture: D5002B4.JPG: Loading 1 faces(PF_B8G8R8,826x31x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,826x31x1.
+12:38:18: Texture: D5002WO2.JPG: Loading 1 faces(PF_B8G8R8,200x1024x1) with 10 generated mipmaps from Image. Internal format is PF_X8R8G8B8,200x1024x1.
+12:38:18: Texture: glass.png: Loading 1 faces(PF_A8B8G8R8,10x10x1) with 3 generated mipmaps from Image. Internal format is PF_A8R8G8B8,10x10x1.
+12:38:18: Texture: D5002B3.JPG: Loading 1 faces(PF_B8G8R8,886x629x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,886x629x1.
+12:38:19: Texture: D5002M.JPG: Loading 1 faces(PF_B8G8R8,15x699x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,15x699x1.
+12:38:19: Mesh: Loading cow.mesh.
+12:38:19: WARNING: Mesh instance 'grassblades' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
+12:38:19: Texture: little-grass.tga: Loading 1 faces(PF_A8R8G8B8,64x64x1) with  hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,64x64x1.
+12:38:21: Win32Input8: DirectInput Activation Starts
+12:38:21: Win32Input8: Establishing keyboard input.
+12:38:21: Win32Input8: Keyboard input established.
+12:38:21: Win32Input8: Initializing mouse input in immediate mode.
+12:38:21: Win32Input8: Mouse input in immediate mode initialized.
+12:38:21: Win32Input8: DirectInput OK.
+12:38:21: ********************************
+12:38:21: **     oScene Loader Lib      **
+12:38:21: ********************************
+12:38:21: oSceneLoader: Loading '../../media/scene/scene.OSM' file
+12:38:21: oSceneLoader: Creating scene on 'Root' node
+12:38:21: ********************************
+12:38:21: ** oSceneLoader: Scene loaded **
+12:38:21: ********************************
+12:38:21: Texture: spot_shadow_fade.png: Loading 1 faces(PF_B8G8R8,128x128x1) with  hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,128x128x1.
+12:38:45: Unregistering ResourceManager for type BspLevel
+12:38:45: Render Target 'rtt/2288640' Average FPS: 6.85628 Best FPS: 10.2524 Worst FPS: 4.06174
+12:38:45: *-*-* OGRE Shutdown
+12:38:45: Unregistering ResourceManager for type Compositor
+12:38:45: Unregistering ResourceManager for type Font
+12:38:45: Unregistering ResourceManager for type Skeleton
+12:38:45: Unregistering ResourceManager for type Mesh
+12:38:45: Unregistering ResourceManager for type HighLevelGpuProgram
+12:38:45: EXRCodec deinitialised
+12:38:45: Unloading library .\Plugin_EXRCodec
+12:38:45: Unloading library .\Plugin_CgProgramManager
+12:38:45: Unloading library .\Plugin_BSPSceneManager
+12:38:45: Unloading library .\Plugin_OctreeSceneManager
+12:38:45: Unloading library .\Plugin_ParticleFX
+12:38:45: *** Stopping Win32GL Subsystem ***
+12:38:45: Unloading library .\RenderSystem_GL
+12:38:46: Render Target 'OGRE Render Window' Average FPS: 6.8597 Best FPS: 10.2443 Worst FPS: 3.58423
+12:38:46: D3D9 : Shutting down cleanly.
+12:38:46: Unregistering ResourceManager for type Texture
+12:38:46: Unregistering ResourceManager for type GpuProgram
+12:38:46: D3D9 : Direct3D9 Rendering Subsystem destroyed.
+12:38:46: Unloading library .\RenderSystem_Direct3D9
+12:38:46: Unregistering ResourceManager for type Material
+12:38:46: Unloading library OgrePlatform.dll
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/Plugins.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/Plugins.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/Plugins.cfg	(revision 1493)
@@ -0,0 +1,14 @@
+# Defines plugins to load
+
+# Define plugin folder
+PluginFolder=.
+
+# Define plugins
+Plugin=RenderSystem_Direct3D9
+Plugin=RenderSystem_GL
+Plugin=Plugin_ParticleFX
+Plugin=Plugin_BSPSceneManager
+Plugin=Plugin_OctreeSceneManager
+Plugin=Plugin_CgProgramManager
+
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/OgreLeaks.log
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/OgreLeaks.log	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/OgreLeaks.log	(revision 1493)
@@ -0,0 +1,15 @@
+ ---------------------------------------------------------------------------------------------------------------------------------- 
+|                                          Memory leak report for:  05/01/2006 20:53:31                                            |
+ ---------------------------------------------------------------------------------------------------------------------------------- 
+
+
+5 memory leaks found:
+
+Alloc.   Addr       Size       Addr       Size                        BreakOn BreakOn              
+Number Reported   Reported    Actual     Actual     Unused    Method  Dealloc Realloc Allocated by 
+------ ---------- ---------- ---------- ---------- ---------- -------- ------- ------- --------------------------------------------------- 
+000012 0x00E19118 0x0000015C 0x00E19108 0x0000017C 0x00000000 new         N       N    exampleapplication.h(75) ExampleApplication::setup
+000013 0x00E192C0 0x00000034 0x00E192B0 0x00000054 0x00000000 new         N       N    ??(0) ??
+000014 0x00E19340 0x00000034 0x00E19330 0x00000054 0x00000000 new         N       N    ??(0) ??
+000015 0x00E193C0 0x00000014 0x00E193B0 0x00000034 0x00000000 new         N       N    ??(0) ??
+000016 0x00E19420 0x00000014 0x00E19410 0x00000034 0x00000000 new         N       N    ??(0) ??
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/OgreMemory.log
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/OgreMemory.log	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/OgreMemory.log	(revision 1493)
@@ -0,0 +1,37 @@
+--------------------------------------------------------------------------------
+
+      OgreMemory.log - Memory logging file created on Mon May 01 20:51:56 2006
+
+--------------------------------------------------------------------------------
+
+This file contains a log of all memory operations performed during the last run.
+
+Interrogate this file to track errors or to help track down memory-related
+issues. You can do this by tracing the allocations performed by a specific owner
+or by tracking a specific address through a series of allocations and
+reallocations.
+
+There is a lot of useful information here which, when used creatively, can be
+extremely helpful.
+
+Note that the following guides are used throughout this file:
+
+   [!] - Error
+   [+] - Allocation
+   [~] - Reallocation
+   [-] - Deallocation
+   [I] - Generic information
+   [F] - Failure induced for the purpose of stress-testing your application
+   [D] - Information used for debugging this memory manager
+
+...so, to find all errors in the file, search for "[!]"
+
+--------------------------------------------------------------------------------
+[!] A memory allocation unit was corrupt because of an overrun:
+[I]   Address (reported):   00E19118
+[I]   Address (actual)  :   00E19108
+[I]   Size (reported)   : 0x0000015C (      ,348 bytes     )
+[I]   Size (actual)     : 0x0000017C (      ,380 bytes     )
+[I]   Owner             : exampleapplication.h(75)::ExampleApplication::setup
+[I]   Allocation type   : new
+[I]   Allocation number : 12
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/quake3settings.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/quake3settings.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/quake3settings.cfg	(revision 1493)
@@ -0,0 +1,2 @@
+Pak0Location: f:\quake3arena\baseq3\pak0.pk3
+Map: maps/q3dm3.bsp
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/resources.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/resources.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/resources.cfg	(revision 1493)
@@ -0,0 +1,24 @@
+# Resource locations to be added to the 'boostrap' path
+# This also contains the minimum you need to use the Ogre example framework
+[Bootstrap]
+Zip=../../media/packs/OgreCore.zip
+
+# Resource locations to be added to the default path
+[General]
+FileSystem=../../media
+FileSystem=../../media/fonts
+FileSystem=../../media/materials/programs
+FileSystem=../../media/materials/scripts
+FileSystem=../../media/materials/textures
+FileSystem=../../media/models
+FileSystem=../../media/overlays
+FileSystem=../../media/particle
+FileSystem=../../media/gui
+FileSystem=../../media/chestnut
+FileSystem=../../media/oldgeneral
+FileSystem=../../media/general
+FileSystem=../../media/farm
+FileSystem=../../media/butterfly
+FileSystem=../../media/ruin
+FileSystem=../../media/barrel
+
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/media.cfg
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/media.cfg	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/bin/debug/media.cfg	(revision 1493)
@@ -0,0 +1,16 @@
+Mesh=ogrehead.mesh
+Mesh=geosphere4500.mesh
+Mesh=razor.mesh
+Mesh=knot.mesh
+Mesh=RZR-002.mesh
+Mesh=geosphere8000.mesh
+Mesh=sphere.mesh
+
+CubeMap=cubescene.jpg
+CubeMap=early_morning.jpg
+CubeMap=cubemap.jpg
+CubeMap=morning.jpg
+CubeMap=cloudy_noon.jpg
+CubeMap=evening.jpg
+CubeMap=stormy.jpg
+CubeMap=stevecube.jpg
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/.keepme
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/.keepme	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/.keepme	(revision 1493)
@@ -0,0 +1,1 @@
+keep me
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/mt.dep
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/mt.dep	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/mt.dep	(revision 1493)
@@ -0,0 +1,1 @@
+Manifest resource last updated at  1:13:10,71 on 02/05/2006 
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/BuildLog.htm
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/BuildLog.htm	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/BuildLog.htm	(revision 1493)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<META HTTP-EQUIV="Content-Type" content="text/html; charset=Windows-1252">
+</head>
+<body>
+<pre>
+<table width=100% bgcolor=#CFCFE5><tr> <td> <font face=arial size=+3>
+Registro de la generación
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>
+<h3>------- Generación iniciada: proyecto: Demo_IndirectTexturing, configuración: Release|Win32 -------
+</h3>
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Líneas de comandos
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>Creando archivo temporal "l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\RSP0000DC.rsp" con contenido
+[
+/O2 /I "..\include" /I "L:\isma\OgreSDK121\include" /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /D "_MBCS" /FD /EHsc /MD /Fp".\..\obj\Release/Demo_SkyPlane.pch" /Fo".\..\obj\Release/" /Fd".\..\obj\Release/" /W3 /c  /D "TIXML_USE_STL"
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\src\IndirectTexturing.cpp
+]
+Creando línea de comandos "cl.exe @l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\RSP0000DC.rsp /nologo"
+Creando archivo temporal "l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\RSP0000DD.rsp" con contenido
+[
+/OUT:"..\bin\Release/Demo_IndirectTexturing.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:"L:\isma\OgreSDK121\lib" /PDB:"..\bin\Release\Demo_IndirectTexturing.pdb" /SUBSYSTEM:WINDOWS /MACHINE:X86 OgreMain.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\IndirectTexturing.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\tinyxmlparser.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\OgreOSMScene.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\tinystr.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\tinyxml.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\tinyxmlerror.obj
+]
+Creando línea de comandos "link.exe @l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\RSP0000DD.rsp"
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Ventana de resultados
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>Compilando...
+IndirectTexturing.cpp
+..\include\IndirectTexturing.h(430) : warning C4018: '<' : no coinciden signed/unsigned
+Vinculando...
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Resultados
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>
+El registro de generación se guardó en el "file://l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Release\BuildLog.htm"
+Demo_IndirectTexturing - 0 error(es), 1 advertencia(s)</pre></table><table   width=100% height=20 bgcolor=#CFCFE5><tr><td><font face=arial size=+2>
+</font></table></body></html>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Repository
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Repository	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Repository	(revision 1493)
@@ -0,0 +1,1 @@
+ogrenew/Samples/SkyPlane/obj/Release
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Root
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Root	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Root	(revision 1493)
@@ -0,0 +1,1 @@
+:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ogre
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Entries
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Entries	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Entries	(revision 1493)
@@ -0,0 +1,2 @@
+/.keepme/1.1.1.1/Tue Jul  2 21:02:35 2002//Tv1-0-3
+D
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Tag
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Tag	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/CVS/Tag	(revision 1493)
@@ -0,0 +1,1 @@
+Nv1-0-3
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/Demo_IndirectTexturing.exe.intermediate.manifest
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/Demo_IndirectTexturing.exe.intermediate.manifest	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Release/Demo_IndirectTexturing.exe.intermediate.manifest	(revision 1493)
@@ -0,0 +1,8 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+  <dependency>
+    <dependentAssembly>
+      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
+    </dependentAssembly>
+  </dependency>
+</assembly>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/.keepme
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/.keepme	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/.keepme	(revision 1493)
@@ -0,0 +1,1 @@
+keep me
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/mt.dep
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/mt.dep	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/mt.dep	(revision 1493)
@@ -0,0 +1,1 @@
+Manifest resource last updated at  1:13:25,68 on 02/05/2006 
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/BuildLog.htm
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/BuildLog.htm	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/BuildLog.htm	(revision 1493)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<META HTTP-EQUIV="Content-Type" content="text/html; charset=Windows-1252">
+</head>
+<body>
+<pre>
+<table width=100% bgcolor=#CFCFE5><tr> <td> <font face=arial size=+3>
+Registro de la generación
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>
+<h3>------- Generación iniciada: proyecto: Demo_IndirectTexturing, configuración: Debug|Win32 -------
+</h3>
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Líneas de comandos
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>Creando archivo temporal "l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\RSP0000DE.rsp" con contenido
+[
+/Od /I "..\include" /I "L:\isma\OgreSDK121\include" /D "_WINDOWS" /D "_DEBUG" /D "WIN32" /D "_MBCS" /FD /EHsc /RTC1 /MDd /Fp".\..\obj\Debug/Demo_SkyPlane.pch" /Fo".\..\obj\Debug/" /Fd".\..\obj\Debug/" /W3 /c /ZI  /Zm500 /D "TIXML_USE_STL"
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\src\IndirectTexturing.cpp
+]
+Creando línea de comandos "cl.exe @l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\RSP0000DE.rsp /nologo"
+Creando archivo temporal "l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\RSP0000DF.rsp" con contenido
+[
+/OUT:"..\bin\Debug/Demo_IndirectTexturing.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:"L:\isma\OgreSDK121\lib" /DEBUG /PDB:"..\bin\Debug\Demo_IndirectTexturing.pdb" /SUBSYSTEM:WINDOWS /MACHINE:X86 OgreMain_d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\IndirectTexturing.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\tinyxmlparser.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\OgreOSMScene.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\tinystr.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\tinyxml.obj
+\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\tinyxmlerror.obj
+]
+Creando línea de comandos "link.exe @l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\RSP0000DF.rsp"
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Ventana de resultados
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>Compilando...
+IndirectTexturing.cpp
+l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\include\IndirectTexturing.h(430) : warning C4018: '<' : no coinciden signed/unsigned
+Vinculando...
+LINK : warning LNK4075: se omite '/EDITANDCONTINUE' debido a la especificación '/INCREMENTAL:NO'
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Resultados
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>
+El registro de generación se guardó en el "file://l:\isma\IndirectTexturingOGRE14072006\IndirectTexturing\obj\Debug\BuildLog.htm"
+Demo_IndirectTexturing - 0 error(es), 2 advertencia(s)</pre></table><table   width=100% height=20 bgcolor=#CFCFE5><tr><td><font face=arial size=+2>
+</font></table></body></html>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Repository
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Repository	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Repository	(revision 1493)
@@ -0,0 +1,1 @@
+ogrenew/Samples/SkyPlane/obj/Debug
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Root
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Root	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Root	(revision 1493)
@@ -0,0 +1,1 @@
+:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ogre
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Entries
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Entries	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Entries	(revision 1493)
@@ -0,0 +1,2 @@
+/.keepme/1.1.1.1/Tue Jul  2 21:02:38 2002//Tv1-0-3
+D
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Tag
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Tag	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/CVS/Tag	(revision 1493)
@@ -0,0 +1,1 @@
+Nv1-0-3
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/Demo_IndirectTexturing.exe.intermediate.manifest
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/Demo_IndirectTexturing.exe.intermediate.manifest	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/Debug/Demo_IndirectTexturing.exe.intermediate.manifest	(revision 1493)
@@ -0,0 +1,8 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+  <dependency>
+    <dependentAssembly>
+      <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
+    </dependentAssembly>
+  </dependency>
+</assembly>
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Repository
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Repository	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Repository	(revision 1493)
@@ -0,0 +1,1 @@
+ogrenew/Samples/SkyPlane/obj
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Root
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Root	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Root	(revision 1493)
@@ -0,0 +1,1 @@
+:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ogre
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Entries
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Entries	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Entries	(revision 1493)
@@ -0,0 +1,2 @@
+D/Debug////
+D/Release////
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Tag
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Tag	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/obj/CVS/Tag	(revision 1493)
@@ -0,0 +1,1 @@
+Tv1-0-3
Index: GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/Ogre.log
===================================================================
--- GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/Ogre.log	(revision 1493)
+++ GTP/trunk/App/Demos/Illum/IBRBillboardCloudTrees/OGRE/IBRTreesOGRE/Ogre.log	(revision 1493)
@@ -0,0 +1,57 @@
+07:30:03: Creating resource group General
+07:30:03: Creating resource group Internal
+07:30:03: Creating resource group Autodetect
+07:30:03: Registering ResourceManager for type Material
+07:30:03: Registering ResourceManager for type Mesh
+07:30:03: Registering ResourceManager for type Skeleton
+07:30:03: MovableObjectFactory for type 'ParticleSystem' registered.
+07:30:03: Loading library OgrePlatform.dll
+07:30:03: OverlayElementFactory for type Panel registered.
+07:30:03: OverlayElementFactory for type BorderPanel registered.
+07:30:03: OverlayElementFactory for type TextArea registered.
+07:30:03: Registering ResourceManager for type Font
+07:30:03: ArchiveFactory for archive type FileSystem registered.
+07:30:03: ArchiveFactory for archive type Zip registered.
+07:30:03: DevIL version: Developer's Image Library (DevIL) 1.6.7 Oct 28 2005
+07:30:03: DevIL image formats: bmp dib cut dcx dds gif hdr ico cur jpg jpe jpeg lif mdl mng jng pcx pic pix png pbm pgm pnm ppm psd pdd psp pxr sgi bw rgb rgba tga vda icb vst tif tiff wal xpm raw 
+07:30:03: Registering ResourceManager for type HighLevelGpuProgram
+07:30:03: Registering ResourceManager for type Compositor
+07:30:03: MovableObjectFactory for type 'Entity' registered.
+07:30:03: MovableObjectFactory for type 'Light' registered.
+07:30:03: MovableObjectFactory for type 'BillboardSet' registered.
+07:30:03: MovableObjectFactory for type 'ManualObject' registered.
+07:30:03: MovableObjectFactory for type 'BillboardChain' registered.
+07:30:03: MovableObjectFactory for type 'RibbonTrail' registered.
+07:30:03: An exception has been thrown!
+
+-----------------------------------
+Details:
+-----------------------------------
+Error #: 8
+Function: ConfigFile::load
+Description: 'plugins.cfg' file not found!. 
+File: \OgreDev\Dagon\OgreMain\src\OgreConfigFile.cpp
+Line: 80
+Stack unwinding: <<beginning of stack>>
+07:30:03: plugins.cfg not found, automatic plugin loading disabled.
+07:30:03: *-*-* OGRE Initialising
+07:30:03: *-*-* Version 1.2.1 (Dagon)
+07:30:03: An exception has been thrown!
+
+-----------------------------------
+Details:
+-----------------------------------
+Error #: 8
+Function: ConfigFile::load
+Description: 'resources.cfg' file not found!. 
+File: \OgreDev\Dagon\OgreMain\src\OgreConfigFile.cpp
+Line: 80
+Stack unwinding: <<beginning of stack>>
+07:30:06: *-*-* OGRE Shutdown
+07:30:06: Unregistering ResourceManager for type Compositor
+07:30:06: Unregistering ResourceManager for type Font
+07:30:06: Unregistering ResourceManager for type Skeleton
+07:30:06: Unregistering ResourceManager for type Mesh
+07:30:06: Unregistering ResourceManager for type HighLevelGpuProgram
+07:30:06: Unregistering ResourceManager for type Material
+07:30:06: Unloading library OgrePlatform.dll
