(those black highlights are because the cubemap was taken too high and could see the black bg, also I had the sun commented out in my skydome)
Its basically a very mutilated version of Terra with a nice baked textures (from blender's ocean modifier)
Edit: updated code and added usage
here is the code!
https://github.com/yoyTeam/OgreOcean
To use:
register the hlmsOcean
Code: Select all
Ogre::Archive *archiveOcean = Ogre::ArchiveManager::getSingletonPtr()->load( "../../yoyEngine/media/Hlms/Ocean/GLSL", "FileSystem", true );
Ogre::Archive *archiveLibraryCommon = Ogre::ArchiveManager::getSingletonPtr()->load("../../yoyEngine/media/Hlms/Common/GLSL", "FileSystem", true );
Ogre::Archive *archiveLibraryCommonAny = Ogre::ArchiveManager::getSingletonPtr()->load("../../yoyEngine/media/Hlms/Common/Any", "FileSystem", true );
Ogre::Archive *archivePbsLibrary = Ogre::ArchiveManager::getSingletonPtr()->load("../../yoyEngine/media/Hlms/Pbs/GLSL", "FileSystem", true );
Ogre::Archive *archivePbsLibraryAny = Ogre::ArchiveManager::getSingletonPtr()->load("../../yoyEngine/media/Hlms/Pbs/Any", "FileSystem", true );
library.push_back( archiveLibraryCommon );
library.push_back( archiveLibraryCommonAny );
library.push_back( archivePbsLibrary );
library.push_back( archivePbsLibraryAny );
Ogre::Archive *archiveLibraryCustom = Ogre::ArchiveManager::getSingletonPtr()->load( "../../yoyEngine/media/Hlms/Ocean/GLSL/Custom", "FileSystem", true );
library.push_back( archiveLibraryCustom );
mHlmsOcean = OGRE_NEW Ogre::HlmsOcean( archiveOcean, &library );
mHlmsManager->registerHlms( mHlmsOcean );
Code: Select all
Ogre::HlmsOcean* hlmsOcean = static_cast<Ogre::HlmsOcean*>( Ogre::Root::getSingletonPtr()->getHlmsManager()->getHlms( Ogre::HLMS_USER2 ) );
hlmsOcean->setEnvProbe( probeTexture );
Code: Select all
mOcean = new Ogre::Ocean( Ogre::Id::generateNewId<Ogre::MovableObject>(),
&mSceneManager->_getEntityMemoryManager( Ogre::SCENE_STATIC ),
mSceneManager, 0, mRoot->getCompositorManager2(),
mCamera );
mOcean->setCastShadows( false );
mOcean->create( center, size );
Ogre::SceneNode *oceanNode = mSceneManager->getRootSceneNode( Ogre::SCENE_STATIC );
oceanNode->attachObject( oceanData.mOcean );
Ogre::String datablockName = "testOcean";
mDatablock = static_cast<Ogre::HlmsOceanDatablock*>( mHlmsOcean->createDatablock( datablockName, datablockName, Ogre::HlmsMacroblock(), Ogre::HlmsBlendblock(), Ogre::HlmsParamVec() ) );
mOcean->setDatablock( mDatablock );
Code: Select all
bool yOceanManager::frameRenderingQueued(const Ogre::FrameEvent &evt){
mOcean->update();
return true;
}
cheers!