void GameState::createRenderScene() { //获取场景管理器 mSceneMgr = GlobalManager::mSharedSceneMgr; //获取主摄像机 mCamera = GlobalManager::mShareCamera; CompositorManager::getSingleton().addCompositor(mCamera->getViewport(), "Glow"); CompositorManager::getSingleton().setCompositorEnabled(mCamera->getViewport(), "Glow", true); GlowMaterialListener *gml = new GlowMaterialListener(); Ogre::MaterialManager::getSingleton().addListener(gml); //Ogre::Light * pSunLight = mSceneMgr->createLight("SunLight"); //pSunLight->setType(Light::LT_POINT); //pSunLight->setPosition(Ogre::Vector3(660, 10, 660)); //pSunLight->setDiffuseColour(ColourValue::Black); //pSunLight->setCastShadows(false); //mSceneMgr->setSkyBox(true, "Ogre/Compositor/VolumetricSunLight/FakeSky"); //Ogre::Viewport * pViewport = mCamera->getViewport(); //Ogre::CompositorInstance * pEffectInstance = Ogre::CompositorManager::getSingleton().addCompositor(pViewport, "VolumetricSunLights", -1); //Ogre::CompositorManager::getSingleton().setCompositorEnabled(pViewport, "VolumetricSunLights", true); //mEffectListener = new VolumetricSunLightFrameListener(mSceneMgr, mCamera, mWindow->getViewport(0)); //pEffectInstance->addListener(mEffectListener); /// Motion blur effect Ogre::CompositorPtr comp3 = Ogre::CompositorManager::getSingleton().create( "MotionBlur", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ); { Ogre::CompositionTechnique *t = comp3->createTechnique(); { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("scene"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("sum"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("temp"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } /// Render scene { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("scene"); } /// Initialisation pass for sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("sum"); tp->setOnlyInitial(true); } /// Do the motion blur { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("temp"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Combine"); pass->setInput(0, "scene"); pass->setInput(1, "sum"); } } /// Copy back sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("sum"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Copyback"); pass->setInput(0, "temp"); } } /// Display result { Ogre::CompositionTargetPass *tp = t->getOutputTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/MotionBlur"); pass->setInput(0, "sum"); } } } Ogre::CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0), "MotionBlur"); Ogre::CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0), "MotionBlur", true); }
bool gkOgreCompositorHelper::createMotionBlurCompositor() { using namespace Ogre; try { CompositorPtr comp3 = Ogre::CompositorManager::getSingleton().create( GK_COMPOSITOR_MOTION_BLUR, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ); Ogre::CompositionTechnique *t = comp3->createTechnique(); { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("scene"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("sum"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("temp"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } /// Render scene { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("scene"); } /// Initialisation pass for sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("sum"); tp->setOnlyInitial(true); } /// Do the motion blur { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("temp"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Combine"); pass->setInput(0, "scene"); pass->setInput(1, "sum"); } } /// Copy back sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("sum"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Copyback"); pass->setInput(0, "temp"); } } /// Display result { Ogre::CompositionTargetPass *tp = t->getOutputTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/MotionBlur"); pass->setInput(0, "sum"); } } } catch (Exception &e) { gkPrintf("[CMP] FAILED %s", e.getFullDescription().c_str()); return false; } return true; }
void SceneSetup::createMotionBlurCompositor (void) { // Motion blur effect Ogre::CompositorPtr comp3 = Ogre::CompositorManager::getSingleton().create( "MotionBlur", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ); { Ogre::CompositionTechnique *t = comp3->createTechnique(); t->setCompositorLogicName("MotionBlur"); { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("scene"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("sum"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("temp"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } // Render scene texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("scene"); } // Initialisation pass for sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("sum"); tp->setOnlyInitial(true); } // Do the motion blur, accepting listener injection { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("temp"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Combine"); pass->setInput(0, "scene"); pass->setInput(1, "sum"); pass->setIdentifier(700); } } // Copy back sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("sum"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Copyback"); pass->setInput(0, "temp"); } } // Display result { Ogre::CompositionTargetPass *tp = t->getOutputTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/MotionBlur"); pass->setInput(0, "sum"); } } } }
void TerrainManager::initMotionBlur() { // Motion blur effect taken from Ogre 1.8 Compositor demos Ogre::CompositorPtr comp3 = Ogre::CompositorManager::getSingleton().create("MotionBlur", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); { Ogre::CompositionTechnique *t = comp3->createTechnique(); { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("scene"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("sum"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("temp"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } /// Render scene { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("scene"); } /// Initialisation pass for sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("sum"); tp->setOnlyInitial(true); } /// Do the motion blur { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("temp"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Combine"); pass->setInput(0, "scene"); pass->setInput(1, "sum"); } } /// Copy back sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("sum"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Copyback"); pass->setInput(0, "temp"); } } /// Display result { Ogre::CompositionTargetPass *tp = t->getOutputTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/MotionBlur"); pass->setInput(0, "sum"); } } } Ogre::CompositorManager::getSingleton().addCompositor(gEnv->mainCamera->getViewport(),"MotionBlur"); Ogre::CompositorManager::getSingleton().setCompositorEnabled(gEnv->mainCamera->getViewport(), "MotionBlur", true); }
void darkMainSinglePlayer::enter() { //ustvarimo Motion Blur engine = irrklang::createIrrKlangDevice(); engine2 = irrklang::createIrrKlangDevice(); engine->play2D("media/darkMedia/Sounds/park_1.wav", true); Ogre::CompositorPtr comp3 = Ogre::CompositorManager::getSingleton().create( "Motion Blur", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ); { Ogre::CompositionTechnique *t = comp3->createTechnique(); { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("scene"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("sum"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("temp"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } /// Render scene { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("scene"); } /// Initialisation pass for sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("sum"); tp->setOnlyInitial(true); } /// Do the motion blur { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("temp"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Combine"); pass->setInput(0, "scene"); pass->setInput(1, "sum"); } } /// Copy back sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("sum"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Copyback"); pass->setInput(0, "temp"); } } /// Display result { Ogre::CompositionTargetPass *tp = t->getOutputTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/MotionBlur"); pass->setInput(0, "sum"); } } } Ogre::CompositorManager& compMgr = Ogre::CompositorManager::getSingleton(); //dodamo kompositorje static bool firstTime = true; if (firstTime) { compMgr.registerCompositorLogic("HDR", new HDRLogic); firstTime = false; } //Sporocilo za Log OgreFramework::getSingletonPtr()->m_pLog->logMessage("Entering SinglePlayer..."); //Teren Manager m_pSceneMgr = OgreFramework::getSingletonPtr()->m_pRoot->createSceneManager("TerrainSceneManager"); //izbrisemo kurzor in razno OgreFramework::getSingletonPtr()->m_pTrayMgr->hideBackdrop(); OgreFramework::getSingletonPtr()->m_pTrayMgr->hideCursor(); //Dodamo kamero m_pCamera = m_pSceneMgr->createCamera("GameCamera"); m_pCamera->setPosition(Ogre::Vector3(0, 0, 0)); m_pCamera->setNearClipDistance(5); m_pCamera->setAspectRatio(Real(OgreFramework::getSingletonPtr()->m_pViewport->getActualWidth())/Real(OgreFramework::getSingletonPtr()->m_pViewport->getActualHeight())); OgreFramework::getSingletonPtr()->m_pViewport->setCamera(m_pCamera); //Dolocimo kaksno obliko bo nas svet imel m_pSceneMgr->setWorldGeometry("darkPlayerWorld1.cfg"); mCollisionTools = new MOC::CollisionTools(m_pSceneMgr); //Dodamo Kompositor Efekte Ogre::CompositorManager::getSingleton().addCompositor(m_pCamera->getViewport(), "Bloom", -1); Ogre::CompositorManager::getSingleton().setCompositorEnabled(m_pCamera->getViewport(), "Bloom", true); Ogre::CompositorManager::getSingleton().addCompositor(m_pCamera->getViewport(), "B&W",-1); Ogre::CompositorManager::getSingleton().setCompositorEnabled(m_pCamera->getViewport(), "B&W", false); Ogre::CompositorManager::getSingleton().addCompositor(m_pCamera->getViewport(), "Motion Blur",-1); Ogre::CompositorManager::getSingleton().setCompositorEnabled(m_pCamera->getViewport(), "Motion Blur", false); //Dobimo informacije o igralcu playerInfo(); buildGUI(); createScene(); }
//----------------------------------------------------------------------------------- /// Create the hard coded postfilter effects void CompositorDemo::createEffects(void) { // Bloom compositor is loaded from script but here is the hard coded equivalent // CompositorPtr comp = CompositorManager::getSingleton().create( // "Bloom", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME // ); // { // CompositionTechnique *t = comp->createTechnique(); // { // CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("rt0"); // def->width = 128; // def->height = 128; // def->format = PF_A8R8G8B8; // } // { // CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("rt1"); // def->width = 128; // def->height = 128; // def->format = PF_A8R8G8B8; // } // { // CompositionTargetPass *tp = t->createTargetPass(); // tp->setInputMode(CompositionTargetPass::IM_PREVIOUS); // tp->setOutputName("rt1"); // } // { // CompositionTargetPass *tp = t->createTargetPass(); // tp->setInputMode(CompositionTargetPass::IM_NONE); // tp->setOutputName("rt0"); // CompositionPass *pass = tp->createPass(); // pass->setType(CompositionPass::PT_RENDERQUAD); // pass->setMaterialName("Ogre/Compositor/Blur0"); // pass->setInput(0, "rt1"); // } // { // CompositionTargetPass *tp = t->createTargetPass(); // tp->setInputMode(CompositionTargetPass::IM_NONE); // tp->setOutputName("rt1"); // CompositionPass *pass = tp->createPass(); // pass->setType(CompositionPass::PT_RENDERQUAD); // pass->setMaterialName("Ogre/Compositor/Blur1"); // pass->setInput(0, "rt0"); // } // { // CompositionTargetPass *tp = t->getOutputTargetPass(); // tp->setInputMode(CompositionTargetPass::IM_PREVIOUS); // { CompositionPass *pass = tp->createPass(); // pass->setType(CompositionPass::PT_RENDERQUAD); // pass->setMaterialName("Ogre/Compositor/BloomBlend"); // pass->setInput(0, "rt1"); // } // } // } // Glass compositor is loaded from script but here is the hard coded equivalent /// Glass effect // CompositorPtr comp2 = CompositorManager::getSingleton().create( // "Glass", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME // ); // { // CompositionTechnique *t = comp2->createTechnique(); // { // CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("rt0"); // def->width = 0; // def->height = 0; // def->format = PF_R8G8B8; // } // { // CompositionTargetPass *tp = t->createTargetPass(); // tp->setInputMode(CompositionTargetPass::IM_PREVIOUS); // tp->setOutputName("rt0"); // } // { // CompositionTargetPass *tp = t->getOutputTargetPass(); // tp->setInputMode(CompositionTargetPass::IM_NONE); // { CompositionPass *pass = tp->createPass(); // pass->setType(CompositionPass::PT_RENDERQUAD); // pass->setMaterialName("Ogre/Compositor/GlassPass"); // pass->setInput(0, "rt0"); // } // } // } /// Motion blur effect Ogre::CompositorPtr comp3 = Ogre::CompositorManager::getSingleton().create( "Motion Blur", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ); { Ogre::CompositionTechnique *t = comp3->createTechnique(); { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("scene"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("sum"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("temp"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } /// Render scene { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("scene"); } /// Initialisation pass for sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("sum"); tp->setOnlyInitial(true); } /// Do the motion blur { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("temp"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Combine"); pass->setInput(0, "scene"); pass->setInput(1, "sum"); } } /// Copy back sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("sum"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Copyback"); pass->setInput(0, "temp"); } } /// Display result { Ogre::CompositionTargetPass *tp = t->getOutputTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/MotionBlur"); pass->setInput(0, "sum"); } } } /// Heat vision effect Ogre::CompositorPtr comp4 = Ogre::CompositorManager::getSingleton().create( "Heat Vision", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ); { Ogre::CompositionTechnique *t = comp4->createTechnique(); { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("scene"); def->width = 256; def->height = 256; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("temp"); def->width = 256; def->height = 256; def->formatList.push_back(Ogre::PF_R8G8B8); } /// Render scene { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("scene"); } /// Light to heat pass { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("temp"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setIdentifier(0xDEADBABE); /// Identify pass for use in listener pass->setMaterialName("Fury/HeatVision/LightToHeat"); pass->setInput(0, "scene"); } } /// Display result { Ogre::CompositionTargetPass *tp = t->getOutputTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Fury/HeatVision/Blur"); pass->setInput(0, "temp"); } } } }
void CompositorChapter::CreateEffects() { /// Motion blur effect Ogre::CompositorPtr comp3 = Ogre::CompositorManager::getSingleton().create( "Motion Blur", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ); { Ogre::CompositionTechnique *t = comp3->createTechnique(); { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("scene"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("sum"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("temp"); def->width = 0; def->height = 0; def->formatList.push_back(Ogre::PF_R8G8B8); } /// Render scene { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("scene"); } /// Initialisation pass for sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("sum"); tp->setOnlyInitial(true); } /// Do the motion blur { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("temp"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Combine"); pass->setInput(0, "scene"); pass->setInput(1, "sum"); } } /// Copy back sum texture { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("sum"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/Copyback"); pass->setInput(0, "temp"); } } /// Display result { Ogre::CompositionTargetPass *tp = t->getOutputTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Ogre/Compositor/MotionBlur"); pass->setInput(0, "sum"); } } } /// Heat vision effect Ogre::CompositorPtr comp4 = Ogre::CompositorManager::getSingleton().create( "Heat Vision", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME ); { Ogre::CompositionTechnique *t = comp4->createTechnique(); t->setCompositorLogicName("HeatVision"); { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("scene"); def->width = 256; def->height = 256; def->formatList.push_back(Ogre::PF_R8G8B8); } { Ogre::CompositionTechnique::TextureDefinition *def = t->createTextureDefinition("temp"); def->width = 256; def->height = 256; def->formatList.push_back(Ogre::PF_R8G8B8); } /// Render scene { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_PREVIOUS); tp->setOutputName("scene"); } /// Light to heat pass { Ogre::CompositionTargetPass *tp = t->createTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); tp->setOutputName("temp"); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setIdentifier(0xDEADBABE); /// Identify pass for use in listener pass->setMaterialName("Fury/HeatVision/LightToHeat"); pass->setInput(0, "scene"); } } /// Display result { Ogre::CompositionTargetPass *tp = t->getOutputTargetPass(); tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE); { Ogre::CompositionPass *pass = tp->createPass(); pass->setType(Ogre::CompositionPass::PT_RENDERQUAD); pass->setMaterialName("Fury/HeatVision/Blur"); pass->setInput(0, "temp"); } } } }