Index: /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/include/CausticTest.h
===================================================================
--- /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/include/CausticTest.h	(revision 1450)
+++ /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/include/CausticTest.h	(revision 1450)
@@ -0,0 +1,261 @@
+
+
+
+/*
+-----------------------------------------------------------------------------
+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.
+-----------------------------------------------------------------------------
+*/
+
+/**
+    \file 
+        Lighting.h
+    \brief
+        Shows lighting support in OGRE. Also demonstrates the use of billboards
+        and controllers for automatic time-relative behaviour.
+*/
+
+
+#include "ExampleApplication.h"
+#include "OgreIlluminationManager.h"
+
+float causize = 10;
+float cauintens = 40;
+
+// Listener class for frame updates
+class RaytraceDemoListener : public ExampleFrameListener
+{
+protected:
+	
+	SceneNode* lightNode;
+	SceneNode* sphereNode;
+	unsigned long framecount;
+	
+public:
+    RaytraceDemoListener(RenderWindow* window, Camera* maincam,SceneNode* lightNode, SceneNode* sphereNode)
+        :ExampleFrameListener(window, maincam) 
+				 
+    {
+		framecount = 0;
+		this->sphereNode = sphereNode;
+		this->lightNode = lightNode;
+    }
+	bool processUnbufferedKeyInput(const FrameEvent& evt)
+    {
+		if (mInputDevice->isKeyDown(KC_SUBTRACT))
+        {
+			Vector3 lPos = lightNode->getPosition();
+			Vector3 lDir = sphereNode->getPosition() - lPos;
+			lDir.normalise();
+			lPos -= lDir;
+			lightNode->setPosition(lPos);	
+		}
+		if (mInputDevice->isKeyDown(KC_ADD))
+        {
+			
+			Vector3 lPos = lightNode->getPosition();
+			Vector3 lDir = sphereNode->getPosition() - lPos;
+			lDir.normalise();
+			lPos += lDir;
+			lightNode->setPosition(lPos);			
+		}
+		if (mInputDevice->isKeyDown(KC_MULTIPLY))
+        {
+			Vector3 lPos = lightNode->getPosition();
+			Vector3 lDir = sphereNode->getPosition() - lPos;
+			lDir.normalise();
+			Vector3 right = lDir.crossProduct(Vector3(0,1,0));
+			Vector3 up = lDir.crossProduct(right);
+			lPos += up,
+			lightNode->setPosition(lPos);			
+		}
+		if (mInputDevice->isKeyDown(KC_DIVIDE))
+        {
+			Vector3 lPos = lightNode->getPosition();
+			Vector3 lDir = sphereNode->getPosition() - lPos;
+			lDir.normalise();
+			Vector3 right = lDir.crossProduct(Vector3(0,1,0));
+			Vector3 up = lDir.crossProduct(right);
+			lPos -= up,			
+			lightNode->setPosition(lPos);
+				
+		}
+		return ExampleFrameListener::processUnbufferedKeyInput(evt);
+	}
+    bool frameStarted(const FrameEvent& evt)
+    {
+		static bool first = true;
+	
+
+	//	lightNode->setPosition( 100.0 * Vector3(cos(-(float)framecount/500.0),2.0,sin(-(float)framecount/500.0)));
+		
+		
+		bool result = ExampleFrameListener::frameStarted(evt);
+       framecount++;
+      return result;     
+    }
+
+	
+
+};
+
+/** Application class */
+class RaytraceDemoApplication : public ExampleApplication
+{
+
+public:
+	virtual void go(void)
+    {
+        if (!setup())
+            return;
+
+        renderScene();
+		
+        // clean up
+        destroyScene();
+    }
+
+
+protected:
+	SceneNode* mainLightNode;
+	SceneNode* sphereNode;
+
+void renderScene(){
+		
+		mWindow->resetStatistics();
+		while(true){		
+
+			
+			#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32            
+			// Pump events on Win32
+    		MSG  msg;
+			while( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
+			{
+				TranslateMessage( &msg );
+				DispatchMessage( &msg );
+			}
+			
+			#endif
+			
+			if(!mRoot->_fireFrameStarted()){
+				break;
+			}
+			unsigned long framenum = mRoot->getCurrentFrameNumber();
+			
+			OgreIlluminationManager::getSingleton().update(framenum, mWindow);
+			
+			//mRoot->renderOneFrame();
+			mRoot->_updateAllRenderTargets();
+
+			mRoot->_fireFrameEnded();	
+			
+		}
+	}
+
+	void createPostproc()
+	{
+		CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
+														"GameTools/Glow");
+		CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
+														"GameTools/Glow", true);
+
+	}
+    
+
+	void createScene(void)
+    {
+
+		//createPostproc();
+		
+		OgreIlluminationManager::getSingleton().setMainCamera(mCamera);
+		OgreIlluminationManager::getSingleton().setMainViewport(mWindow->getViewport(0));
+		
+		OgreIlluminationManager::getSingleton().setMaxJoinRadius(420);		
+
+		Root::getSingleton()._setCurrentSceneManager(mSceneMgr);
+
+		mCamera->setPosition(0,100,240);
+		mCamera->setFOVy(Radian(Degree(80)));
+		//mCamera->setFarClipDistance(1000);
+		// Set ambient light
+        mSceneMgr->setAmbientLight(ColourValue(1, 1, 1));
+
+		// Skybox
+        mSceneMgr->setSkyBox(true, "Examples/MorningSkyBox");
+
+		SceneNode* rootNode = mSceneMgr->getRootSceneNode();
+
+      	Entity* sphere = mSceneMgr->createEntity("sphere", "sphere.mesh");
+		sphere->setMaterialName("GameTools/CausticGlass");
+		sphereNode = rootNode->createChildSceneNode();
+		sphereNode->setScale(0.1, 0.1, 0.1);
+		sphereNode->setPosition(0, 50, 0);
+		sphereNode->attachObject(sphere);
+		sphereNode->_updateBounds();
+
+
+		Light* mainLight = mSceneMgr->createLight("MainLight");
+		mainLight->setType(Light::LT_POINT);
+        mainLight->setDiffuseColour(ColourValue::White);
+		mainLight->setSpecularColour(ColourValue::White);
+		mainLightNode = rootNode->createChildSceneNode();
+		mainLightNode->setPosition(100,100,0);
+		//mainLight->setPosition(mainLightNode->getWorldPosition());
+		mainLightNode->attachObject(mainLight); 
+		BillboardSet* bbs = mSceneMgr->createBillboardSet("bb", 1);
+		bbs->setDefaultDimensions(10,10);
+		bbs->createBillboard(Vector3::ZERO, ColourValue::White);
+		bbs->setMaterialName("Flare");
+		mainLightNode->attachObject(bbs);
+		
+
+		createPlane("ground", "TestPlane", Vector3(0,0,0), Vector2(500,500));
+	
+		OgreIlluminationManager::getSingleton().initTechniques();
+		
+		
+   }
+   void createPlane(Ogre::String _name, Ogre::String _material, Ogre::Vector3 _pos, Ogre::Vector2 _size, Ogre::Vector2 _subdivisions = Ogre::Vector2(1,1)) {
+		
+	   Plane _plane;
+        _plane.normal = Vector3::UNIT_Y;
+        _plane.d = 0;
+
+
+        MeshManager::getSingleton().createPlane(_name + ".plane",
+            ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, 
+            _plane,_size.x,_size.y,1,1,true,1,_subdivisions.x,_subdivisions.y,Vector3::UNIT_Z);
+        
+		Entity *_entity = mSceneMgr->createEntity(_name + ".entity", _name + ".plane");
+        _entity->setMaterialName(_material);
+
+		SceneNode* _node = mSceneMgr->getRootSceneNode()->createChildSceneNode(_name + ".node");
+		_node->attachObject(_entity);
+		_node->setPosition(_pos);
+	}
+
+
+
+	void createFrameListener(void)
+    {
+		// This is where we instantiate our own frame listener
+		mFrameListener= new RaytraceDemoListener(mWindow,
+											mCamera,
+											mainLightNode,
+											sphereNode
+											);
+        mRoot->addFrameListener(mFrameListener);
+		//mRoot->addFrameListener(&OgreIlluminationManager::getSingleton());
+
+    }
+
+};
+
Index: /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/scripts/CausticTest.dsp
===================================================================
--- /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/scripts/CausticTest.dsp	(revision 1450)
+++ /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/scripts/CausticTest.dsp	(revision 1450)
@@ -0,0 +1,114 @@
+# Microsoft Developer Studio Project File - Name="Demo_Lighting" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=Demo_Lighting - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "Demo_Lighting.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "Demo_Lighting.mak" CFG="Demo_Lighting - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "Demo_Lighting - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "Demo_Lighting - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "Demo_Lighting - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "..\bin\Release"
+# PROP BASE Intermediate_Dir "..\obj\Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\bin\Release"
+# PROP Intermediate_Dir "..\obj\Release"
+# PROP Ignore_Export_Lib 1
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /I "..\..\Common\include" /I "..\..\..\OgreMain\include" /D "NDEBUG" /D "_MBCS" /D "_WINDOWS" /D "WIN32" /YX /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib OgreMain.lib /nologo /subsystem:windows /machine:I386 /out:"../../Common/Bin/Release/Demo_Lighting.exe" /libpath:"..\..\..\OgreMain\lib\release"
+# SUBTRACT LINK32 /profile /debug
+
+!ELSEIF  "$(CFG)" == "Demo_Lighting - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "..\bin\Debug"
+# PROP BASE Intermediate_Dir "..\obj\Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\bin\Debug"
+# PROP Intermediate_Dir "..\obj\Debug"
+# PROP Ignore_Export_Lib 1
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\Common\include" /I "..\..\..\OgreMain\include" /D "_MBCS" /D "_WINDOWS" /D "_DEBUG" /D "WIN32" /FD /GZ /Zm500 /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib OgreMain_d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"LIBCMT" /out:"../../Common/Bin/Debug/Demo_Lighting.exe" /pdbtype:sept /libpath:"..\..\..\OgreMain\lib\debug"
+# SUBTRACT LINK32 /verbose
+
+!ENDIF 
+
+# Begin Target
+
+# Name "Demo_Lighting - Win32 Release"
+# Name "Demo_Lighting - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\src\Lighting.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\include\Lighting.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
Index: /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/scripts/CausticTest.vcproj
===================================================================
--- /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/scripts/CausticTest.vcproj	(revision 1450)
+++ /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/scripts/CausticTest.vcproj	(revision 1450)
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="CausticTest"
+	ProjectGUID="{09F9E809-02CF-4926-8203-2B9C02FBD916}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				ImproveFloatingPointConsistency="TRUE"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_PATH)\Samples\Common\include&quot;;&quot;$(OGRE_PATH)\OgreMain\include&quot;;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include\RenderTechniques;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include\RenderingRuns;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include\RenderTechniques;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include\RenderingRuns"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;GAMETOOLS_ILLUMINATION_MODULE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib IllumModule_Ogre.lib IllumModule.lib"
+				OutputFile="$(OutDir)/CausticTest.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\bin\Debug;&quot;$(OGRE_PATH)\OgreMain\lib\$(ConfigurationName)&quot;;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\bin\Debug"
+				IgnoreDefaultLibraryNames=""
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/proba.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<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"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="1"
+				EnableIntrinsicFunctions="TRUE"
+				ImproveFloatingPointConsistency="TRUE"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="TRUE"
+				EnableFiberSafeOptimizations="FALSE"
+				OptimizeForProcessor="2"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_PATH)\Samples\Common\include&quot;;&quot;$(OGRE_PATH)\OgreMain\include&quot;;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include\RenderTechniques;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include\RenderingRuns;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include\RenderTechniques;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include\RenderingRuns"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;GAMETOOLS_ILLUMINATION_MODULE"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib IllumModule_Ogre.lib IllumModule.lib"
+				OutputFile="$(OutDir)/CausticTest.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\bin\Release;&quot;$(OGRE_PATH)\OgreMain\lib\$(ConfigurationName)&quot;;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\bin\Release"
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<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;def;odl;idl;hpj;bat;asm">
+			<File
+				RelativePath="..\src\CausticTest.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc">
+			<File
+				RelativePath="..\include\CausticTest.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+			<File
+				RelativePath="..\..\..\Media\materials\scripts\GameTools.program">
+			</File>
+			<File
+				RelativePath="..\..\..\Media\materials\programs\GameTools_CauCube.hlsl">
+			</File>
+			<File
+				RelativePath="..\..\..\Media\materials\scripts\GlassHead.material">
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/src/CausticTest.cpp
===================================================================
--- /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/src/CausticTest.cpp	(revision 1450)
+++ /GTP/trunk/App/Demos/Illum/Ogre/src/CausticTest/src/CausticTest.cpp	(revision 1450)
@@ -0,0 +1,62 @@
+/*
+-----------------------------------------------------------------------------
+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.
+-----------------------------------------------------------------------------
+*/
+
+/**
+    \file 
+        Lighting.cpp
+    \brief
+        Shows lighting support in OGRE.
+*/
+
+
+
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+#define WIN32_LEAN_AND_MEAN
+#include "windows.h"
+#endif
+
+#include "CausticTest.h"
+
+#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
+    RaytraceDemoApplication 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();
+#endif
+    }
+
+    return 0;
+}
+
+#ifdef __cplusplus
+}
+#endif
