From: Markus R. <rol...@us...> - 2007-02-16 15:42:44
|
Update of /cvsroot/simspark/simspark/spark/kerosin/renderserver In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv24230/renderserver Modified Files: Tag: WIN32 rendercontrol.cpp rendercontrol.h renderserver.cpp renderserver.h Log Message: - cleanup - use CachedPath objects to cache references Index: renderserver.h =================================================================== RCS file: /cvsroot/simspark/simspark/spark/kerosin/renderserver/renderserver.h,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** renderserver.h 15 Feb 2007 21:01:57 -0000 1.2.2.1 --- renderserver.h 16 Feb 2007 15:40:48 -0000 1.2.2.2 *************** *** 42,45 **** --- 42,46 ---- #include <zeitgeist/class.h> #include <zeitgeist/leaf.h> + #include <oxygen/sceneserver/sceneserver.h> #include <kerosin/openglserver/glbase.h> *************** *** 107,116 **** /** reference to the SceneServer */ ! boost::shared_ptr<oxygen::SceneServer> mSceneServer; ! ! /** reference to the OpenGLServer */ ! boost::shared_ptr<kerosin::OpenGLServer> mOpenGLServer; - unsigned int mAmbientVP; RGBA mAmbientColor; }; --- 108,113 ---- /** reference to the SceneServer */ ! CachedPath<oxygen::SceneServer> mSceneServer; RGBA mAmbientColor; }; *************** *** 121,122 **** --- 118,134 ---- #endif // KEROSIN_RENDERSERVER_H + + + + + + + + + + + + + + + Index: rendercontrol.cpp =================================================================== RCS file: /cvsroot/simspark/simspark/spark/kerosin/renderserver/rendercontrol.cpp,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -C2 -d -r1.1 -r1.1.2.1 *** rendercontrol.cpp 5 Dec 2005 21:38:23 -0000 1.1 --- rendercontrol.cpp 16 Feb 2007 15:40:47 -0000 1.1.2.1 *************** *** 21,26 **** #include "customrender.h" #include <zeitgeist/logserver/logserver.h> - #include <kerosin/renderserver/renderserver.h> - #include <kerosin/openglserver/openglserver.h> using namespace kerosin; --- 21,24 ---- *************** *** 41,48 **** void RenderControl::OnLink() { ! mRenderServer = shared_dynamic_cast<RenderServer> ! (GetCore()->Get("/sys/server/render")); ! if (mRenderServer.get() == 0) { GetLog()->Error() --- 39,45 ---- void RenderControl::OnLink() { ! RegisterCachedPath(mRenderServer, "/sys/server/render"); ! if (mRenderServer.expired()) { GetLog()->Error() *************** *** 50,57 **** } ! mOpenGLServer = shared_dynamic_cast<OpenGLServer> ! (GetCore()->Get("/sys/server/opengl")); ! if (mOpenGLServer.get() == 0) { GetLog()->Error() --- 47,53 ---- } ! RegisterCachedPath(mOpenGLServer,"/sys/server/opengl"); ! if (mOpenGLServer.expired()) { GetLog()->Error() *************** *** 60,69 **** } - void RenderControl::OnUnlink() - { - mRenderServer.reset(); - mOpenGLServer.reset(); - } - void RenderControl::RenderCustom() { --- 56,59 ---- *************** *** 85,88 **** --- 75,86 ---- void RenderControl::EndCycle() { + if ( + (mOpenGLServer.expired()) || + (mRenderServer.expired()) + ) + { + return; + } + // update the window (pumps event loop, etc..) and render the // current frame Index: renderserver.cpp =================================================================== RCS file: /cvsroot/simspark/simspark/spark/kerosin/renderserver/renderserver.cpp,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** renderserver.cpp 15 Feb 2007 21:01:57 -0000 1.2.2.1 --- renderserver.cpp 16 Feb 2007 15:40:47 -0000 1.2.2.2 *************** *** 49,82 **** { // setup SceneServer reference ! mSceneServer = shared_dynamic_cast<SceneServer> ! (GetCore()->Get("/sys/server/scene")); ! if (mSceneServer.get() == 0) { GetLog()->Error() << "(RenderServer) ERROR: SceneServer not found\n"; } - - // setup OpenGLServer reference - mOpenGLServer = shared_dynamic_cast<OpenGLServer> - (GetCore()->Get("sys/server/opengl")); - - if (mOpenGLServer.get() == 0) - { - GetLog()->Error() - << "(RenderServer) ERROR: OpenGLServer not found\n"; - } else - { - mAmbientVP = 0; - #if 0 - mAmbientVP = mOpenGLServer->LoadARBVertexProgram - ("/sys/program/ambient.vp"); - if (mAmbientVP == 0) - { - GetLog()->Error() - << "(RenderServer) ERROR: Could not load vertex program\n"; - } - #endif - } } --- 49,59 ---- { // setup SceneServer reference ! RegisterCachedPath(mSceneServer, "/sys/server/scene"); ! if (mSceneServer.expired()) { GetLog()->Error() << "(RenderServer) ERROR: SceneServer not found\n"; } } *************** *** 84,90 **** RenderServer::OnUnlink() { - mSceneServer.reset(); - mOpenGLServer.reset(); mActiveScene.reset(); } --- 61,66 ---- RenderServer::OnUnlink() { mActiveScene.reset(); + Leaf::OnUnlink(); } *************** *** 92,96 **** RenderServer::GetActiveScene() { ! if (mSceneServer.get() == 0) { mActiveScene.reset(); --- 68,72 ---- RenderServer::GetActiveScene() { ! if (mSceneServer.expired()) { mActiveScene.reset(); *************** *** 110,185 **** void - RenderServer::RenderFancyLighting(const salt::Frustum& /*frustum*/, - boost::shared_ptr<oxygen::Camera>& /*camera*/, - TLeafList& /*myLights*/, TLeafList& /*allMeshes*/, - TLeafList& /*visibleMeshes*/) - - { - #if 0 - glEnable(GL_VERTEX_PROGRAM_ARB); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, mAmbientVP); - - glColor3f(0.1f,0.1f,0.1f); - mActiveScene->RenderAmbient(); - - // render lights - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - //glEnable(GL_ALPHA_TEST); - //glAlphaFunc(GL_GREATER, 0.0f); - glDepthMask(0); - glDepthFunc(GL_EQUAL); - - for (TLeafList::iterator i=myLights.begin(); i != myLights.end(); ++i) - { - shared_ptr<Light> light = shared_static_cast<Light>(*i); - - // only render the light if it is visible - if (frustum.Intersects(light->GetWorldBoundingBox())!=Frustum::FS_OUTSIDE) - { - for (TLeafList::iterator j=visibleMeshes.begin(); j != visibleMeshes.end(); ++j) - { - shared_ptr<StaticMesh> mesh = shared_static_cast<StaticMesh>(*j); - - // we only have to render meshes, whose bounding volume intersects the light volume - if (light->GetWorldBoundingBox().Intersects(mesh->GetWorldBoundingBox())) - { - Matrix toObjectSpace; - toObjectSpace.Identity(); - toObjectSpace = mesh->GetWorldTransform(); - toObjectSpace.InvertRotationMatrix(); - //light->GetWorldTransform().Pos().Dump(); - light->Prepare(); - Vector3f lightPos = toObjectSpace.Transform(light->GetWorldTransform().Pos()); - Vector3f viewPos = toObjectSpace.Transform(camera->GetWorldTransform().Pos()); - glProgramLocalParameter4fARB(GL_VERTEX_PROGRAM_ARB, 0, lightPos.x(), lightPos.y(), lightPos.z(), 1.0f); - glProgramLocalParameter4fARB(GL_VERTEX_PROGRAM_ARB, 1, viewPos.x(), viewPos.y(), viewPos.z(), 1.0f); - light->RenderLitMesh(shared_static_cast<StaticMesh>(*j)); - } - } - } - } - - glDisable(GL_BLEND); - glDepthMask(1); - - glActiveTextureARB(GL_TEXTURE0_ARB); - glDisable(GL_TEXTURE_2D); - glActiveTextureARB(GL_TEXTURE1_ARB); - glDisable(GL_TEXTURE_2D); - glActiveTextureARB(GL_TEXTURE2_ARB); - glDisable(GL_TEXTURE_2D); - - glEnable(GL_VERTEX_PROGRAM_ARB); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, mAmbientVP); - - // standard rendering - mActiveScene->Render(); - - glDisable(GL_VERTEX_PROGRAM_ARB); - #endif - } - - void RenderServer::Render() { --- 86,89 ---- *************** *** 213,240 **** BindCamera(camera); - #if 0 - // get the view frustum from the camera - Frustum frustum; - camera->DescribeFrustum(frustum); - - // cull lights and geometries against the frustum - TLeafList myLights; - TLeafList allMeshes; - TLeafList visibleMeshes; - - mActiveScene->GetChildrenSupportingClass("Light", myLights, true); - mActiveScene->GetChildrenSupportingClass("StaticMesh", allMeshes, true); - - TLeafList::iterator i; - for (i = allMeshes.begin(); i != allMeshes.end(); ++i) - { - // try to cull meshes, which are outside the viewing frustum - if (frustum.Intersects(shared_static_cast<StaticMesh>(*i)->GetWorldBoundingBox())!=Frustum::FS_OUTSIDE) - { - visibleMeshes.push_back(*i); - } - } - #endif - // actual rendering --- 117,120 ---- *************** *** 273,287 **** // reset GL lights glDisable(GL_LIGHTING); - - #if 0 - // test for fancy lighting support - disabled for now - const bool doFancyLighting = false; /*openglServer->SupportsFancyLighting()*/ - - if (doFancyLighting) - { - RenderFancyLighting(frustum, camera, myLights, allMeshes, visibleMeshes); - } - else - #endif } --- 153,156 ---- Index: rendercontrol.h =================================================================== RCS file: /cvsroot/simspark/simspark/spark/kerosin/renderserver/rendercontrol.h,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -C2 -d -r1.1 -r1.1.2.1 *** rendercontrol.h 5 Dec 2005 21:38:23 -0000 1.1 --- rendercontrol.h 16 Feb 2007 15:40:47 -0000 1.1.2.1 *************** *** 22,31 **** #include <oxygen/simulationserver/simcontrolnode.h> namespace kerosin { - class RenderServer; - class OpenGLServer; - /** \class RenderControl is a SimControlNode that renders the current scene and pumps the SDL event loop at the end of each simulation --- 22,30 ---- #include <oxygen/simulationserver/simcontrolnode.h> + #include <kerosin/renderserver/renderserver.h> + #include <kerosin/openglserver/openglserver.h> namespace kerosin { /** \class RenderControl is a SimControlNode that renders the current scene and pumps the SDL event loop at the end of each simulation *************** *** 46,59 **** protected: virtual void OnLink(); - virtual void OnUnlink(); - void RenderCustom(); protected: /** cached reference to the RenderServer */ ! boost::shared_ptr<kerosin::RenderServer> mRenderServer; /** cached reference to the OpenGLServer */ ! boost::shared_ptr<kerosin::OpenGLServer> mOpenGLServer; /** total frames rendered */ --- 45,56 ---- protected: virtual void OnLink(); void RenderCustom(); protected: /** cached reference to the RenderServer */ ! CachedPath<kerosin::RenderServer> mRenderServer; /** cached reference to the OpenGLServer */ ! CachedPath<kerosin::OpenGLServer> mOpenGLServer; /** total frames rendered */ |