Revision: 1539
http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=1539&view=rev
Author: rorthomas
Date: 2010-09-05 22:53:54 +0000 (Sun, 05 Sep 2010)
Log Message:
-----------
fixed some compiler warnings under MSVC
fixed caelum moon shadow: only one light/shadow source now
added new RTShader enable/disable key (CTRL+SHIFT+S)
Modified Paths:
--------------
trunk/source/main/Beam.cpp
trunk/source/main/InputEngine.cpp
trunk/source/main/InputEngine.h
trunk/source/main/RigsOfRods.cpp
trunk/source/main/RoRFrameListener.cpp
trunk/source/main/RoRFrameListener.h
trunk/source/main/SkyManager.cpp
trunk/source/main/network.cpp
Modified: trunk/source/main/Beam.cpp
===================================================================
--- trunk/source/main/Beam.cpp 2010-09-04 17:19:29 UTC (rev 1538)
+++ trunk/source/main/Beam.cpp 2010-09-05 22:53:54 UTC (rev 1539)
@@ -11092,7 +11092,7 @@
if(SETTINGS.getSetting("NoCrashRpt").empty())
{
// add the crash handler for this thread
- CrThreadAutoInstallHelper cr_thread_install_helper();
+ CrThreadAutoInstallHelper cr_thread_install_helper;
assert(cr_thread_install_helper.m_nInstallStatus==0);
}
#endif //USE_CRASHRPT
Modified: trunk/source/main/InputEngine.cpp
===================================================================
--- trunk/source/main/InputEngine.cpp 2010-09-04 17:19:29 UTC (rev 1538)
+++ trunk/source/main/InputEngine.cpp 2010-09-05 22:53:54 UTC (rev 1539)
@@ -1472,6 +1472,8 @@
{ "DOF_DEBUG_FOCUS_OUT", EV_DOF_DEBUG_FOCUS_OUT, "Keyboard EXPL+4",
_L("move focus out") },
{ "TRUCKEDIT_RELOAD", EV_TRUCKEDIT_RELOAD, "Keyboard
EXPL+SHIFT+CTRL+R", _L("reload truck") },
+
+ { "TOGGLESHADERS", EV_TOGGLESHADERS, "Keyboard EXPL+SHIFT+CTRL+S",
_L("toggle shader usage") },
// the end, DO NOT MODIFY
{"", -1, "", ""},
Modified: trunk/source/main/InputEngine.h
===================================================================
--- trunk/source/main/InputEngine.h 2010-09-04 17:19:29 UTC (rev 1538)
+++ trunk/source/main/InputEngine.h 2010-09-05 22:53:54 UTC (rev 1539)
@@ -355,6 +355,8 @@
EV_TRUCKEDIT_RELOAD,
+ EV_TOGGLESHADERS,
+
// the end, DO NOT MODIFY
EV_MODE_BEFORELAST,
EV_MODE_LAST
Modified: trunk/source/main/RigsOfRods.cpp
===================================================================
--- trunk/source/main/RigsOfRods.cpp 2010-09-04 17:19:29 UTC (rev 1538)
+++ trunk/source/main/RigsOfRods.cpp 2010-09-05 22:53:54 UTC (rev 1539)
@@ -22,8 +22,58 @@
#include "language.h"
#include "errorutils.h"
-#include "OgreRTShaderSystem.h"
+#include <OgreHeaderPrefix.h>
+#include <OgreRTShaderSystem.h>
+/** This class simply demonstrates basic usage of the CRTShader system.
+It sub class the material manager listener class and when a target scheme
callback
+is invoked with the shader generator scheme it tries to create an equvialent
shader
+based technique based on the default technique of the given material.
+*/
+class ShaderGeneratorTechniqueResolverListener : public
MaterialManager::Listener
+{
+public:
+
+ ShaderGeneratorTechniqueResolverListener(RTShader::ShaderGenerator*
pShaderGenerator)
+ {
+ mShaderGenerator = pShaderGenerator;
+ }
+
+ virtual Technique* handleSchemeNotFound(unsigned short schemeIndex,
+ const String& schemeName, Material* originalMaterial, unsigned
short lodIndex,
+ const Renderable* rend)
+ {
+ // Case this is the default shader generator scheme.
+ if (schemeName ==
RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME)
+ {
+ MaterialRegisterIterator itFind =
mRegisteredMaterials.find(originalMaterial);
+ bool techniqueCreated = false;
+
+ // This material was not registered before.
+ if (itFind == mRegisteredMaterials.end())
+ {
+ techniqueCreated =
mShaderGenerator->createShaderBasedTechnique(
+ originalMaterial->getName(),
+ MaterialManager::DEFAULT_SCHEME_NAME,
+ schemeName);
+ }
+ mRegisteredMaterials[originalMaterial] =
techniqueCreated;
+ }
+
+ return NULL;
+ }
+
+protected:
+ typedef std::map<Material*, bool> MaterialRegisterMap;
+ typedef MaterialRegisterMap::iterator MaterialRegisterIterator;
+
+
+protected:
+ MaterialRegisterMap mRegisteredMaterials;
// Registered material map.
+ RTShader::ShaderGenerator* mShaderGenerator;
// The shader generator instance.
+};
+
+
RigsOfRods::RigsOfRods(Ogre::String name, unsigned int hwnd) :
mRoot(0),
mCamera(0),
@@ -323,14 +373,29 @@
// Grab the shader generator pointer.
Ogre::RTShader::ShaderGenerator *mShaderGenerator =
Ogre::RTShader::ShaderGenerator::getSingletonPtr();
+ // Set the scene manager.
+ mShaderGenerator->addSceneManager(mSceneMgr);
+
+
// Add the shader libs resource location.
loadMainResource("rtshader");
// Set shader cache path.
- mShaderGenerator->setShaderCachePath(SETTINGS.getSetting("User
Path")+"cache");
+ mShaderGenerator->setShaderCachePath(SETTINGS.getSetting("User
Path")+"cache");
- // Set the scene manager.
- mShaderGenerator->addSceneManager(mSceneMgr);
+ ShaderGeneratorTechniqueResolverListener *mMaterialMgrListener = new
ShaderGeneratorTechniqueResolverListener(mShaderGenerator);
+ MaterialManager::getSingleton().addListener(mMaterialMgrListener);
+
+ // add per pixel lighting
+ /*
+ RTShader::ShaderGenerator* shaderGenerator =
RTShader::ShaderGenerator::getSingletonPtr();
+ RTShader::RenderState* renderState =
shaderGenerator->getRenderState(RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
+ renderState->reset();
+ RTShader::SubRenderState* perPixelLightModel =
shaderGenerator->createSubRenderState(RTShader::PerPixelLighting::Type);
+ renderState->addTemplateSubRenderState(perPixelLightModel);
+ // Invalidate the scheme in order to re-generate all shaders based
technique related to this scheme.
+
shaderGenerator->invalidateScheme(RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
+ */
}
void RigsOfRods::createScene(void)
Modified: trunk/source/main/RoRFrameListener.cpp
===================================================================
--- trunk/source/main/RoRFrameListener.cpp 2010-09-04 17:19:29 UTC (rev
1538)
+++ trunk/source/main/RoRFrameListener.cpp 2010-09-05 22:53:54 UTC (rev
1539)
@@ -125,6 +125,8 @@
#include "errorutils.h"
#include "DustManager.h"
+#include <OgreHeaderPrefix.h>
+#include <OgreRTShaderSystem.h>
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#include <Windows.h>
@@ -779,6 +781,8 @@
enablePosStor = (SETTINGS.getSetting("Position Storage")=="Yes");
objectCounter=0;
hdrListener=0;
+ shaderSchemeMode=1;
+
netPointToUID=-1;
netcheckGUITimer=0;
mDOF=0;
@@ -2352,6 +2356,24 @@
mDOFDebug = !mDOFDebug;
mDOF->setDebugEnabled(mDOFDebug);
}
+
+ if (INPUTENGINE.getEventBoolValueBounce(EV_TOGGLESHADERS, 0.5f))
+ {
+ if(shaderSchemeMode)
+ {
+ shaderSchemeMode=0;
+
mCamera->getViewport()->setMaterialScheme(MaterialManager::DEFAULT_SCHEME_NAME);
+ LogManager::getSingleton().logMessage("shaders
disabled");
+ if(ow) ow->flashMessage("shaders disabled");
+ } else
+ {
+ shaderSchemeMode=1;
+
mCamera->getViewport()->setMaterialScheme(RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
+ LogManager::getSingleton().logMessage("shaders
enabled");
+ if(ow) ow->flashMessage("shaders enabled");
+ }
+ }
+
if (INPUTENGINE.getEventBoolValueBounce(EV_COMMON_SCREENSHOT_BIG, 0.5f))
{
// hide flash messages
Modified: trunk/source/main/RoRFrameListener.h
===================================================================
--- trunk/source/main/RoRFrameListener.h 2010-09-04 17:19:29 UTC (rev
1538)
+++ trunk/source/main/RoRFrameListener.h 2010-09-05 22:53:54 UTC (rev
1539)
@@ -224,6 +224,7 @@
bool mDOFDebug;
int mouseX;
int mouseY;
+ int shaderSchemeMode;
int inputGrabMode;
int mouseGrabState;
bool switchMouseButtons;
Modified: trunk/source/main/SkyManager.cpp
===================================================================
--- trunk/source/main/SkyManager.cpp 2010-09-04 17:19:29 UTC (rev 1538)
+++ trunk/source/main/SkyManager.cpp 2010-09-05 22:53:54 UTC (rev 1539)
@@ -54,10 +54,6 @@
mCaelumSystem = new Caelum::CaelumSystem (Root::getSingletonPtr(),
mScene, Caelum::CaelumSystem::CAELUM_COMPONENTS_NONE);
mCaelumSystem->attachViewport(mCamera->getViewport());
- // overwrite some settings
- mCaelumSystem->setEnsureSingleShadowSource(true);
- mCaelumSystem->setEnsureSingleLightSource(true);
-
/*
// TODO: set real time, and let the user select his true location
mCaelumSystem->getUniversalClock()->setGregorianDateTime(2008, 4, 9, 6,
33, 0);
@@ -77,6 +73,20 @@
try
{
CaelumPlugin::getSingleton().loadCaelumSystemFromScript
(mCaelumSystem, script);
+
+
+ // overwrite some settings
+ if(mCaelumSystem->getMoon())
+ {
+ mCaelumSystem->getMoon()->setAutoDisable(true);
+ mCaelumSystem->getMoon()->setAutoDisableThreshold(1);
+ mCaelumSystem->getMoon()->setForceDisable(true);
+
mCaelumSystem->getMoon()->getMainLight()->setCastShadows(false);
+ }
+
+ mCaelumSystem->setEnsureSingleShadowSource(true);
+ mCaelumSystem->setEnsureSingleLightSource(true);
+
} catch(Ogre::Exception& e)
{
LogManager::getSingleton().logMessage("exception upon loading
sky script: " + e.getFullDescription());
Modified: trunk/source/main/network.cpp
===================================================================
--- trunk/source/main/network.cpp 2010-09-04 17:19:29 UTC (rev 1538)
+++ trunk/source/main/network.cpp 2010-09-05 22:53:54 UTC (rev 1539)
@@ -58,7 +58,7 @@
if(SETTINGS.getSetting("NoCrashRpt").empty())
{
// add the crash handler for this thread
- CrThreadAutoInstallHelper cr_thread_install_helper();
+ CrThreadAutoInstallHelper cr_thread_install_helper;
assert(cr_thread_install_helper.m_nInstallStatus==0);
}
#endif //USE_CRASHRPT
@@ -72,7 +72,7 @@
if(SETTINGS.getSetting("NoCrashRpt").empty())
{
// add the crash handler for this thread
- CrThreadAutoInstallHelper cr_thread_install_helper();
+ CrThreadAutoInstallHelper cr_thread_install_helper(0);
assert(cr_thread_install_helper.m_nInstallStatus==0);
}
#endif //USE_CRASHRPT
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:
Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Rigsofrods-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rigsofrods-devel