@ -25,7 +25,7 @@ void ogreCreatePbsSpheres(Ogre::Root* root, Ogre::SceneManager* sceneManager)
const int numX = 8 ;
const int numZ = 8 ;
const float armsLength = 1.0 f ;
const float armsLength = 1.f ;
const float startX = ( numX - 1 ) / 2.0f ;
const float startZ = ( numZ - 1 ) / 2.0f ;
@ -33,9 +33,10 @@ void ogreCreatePbsSpheres(Ogre::Root* root, Ogre::SceneManager* sceneManager)
Ogre : : SceneNode * rootSceneNode = sceneManager - > getRootSceneNode ( ) ;
const Ogre : : String meshNameV2 = " Sphere.mesh " ;
// const Ogre::String meshNameV2 = "Suzanne.mesh";
{
Ogre : : MeshPtr v2Mesh = Ogre : : MeshManager : : getSingleton ( ) . load (
" Sphere.mesh " , Ogre : : ResourceGroupManager : : AUTODETECT_RESOURCE_GROUP_NAME ) ;
meshNameV2 , Ogre : : ResourceGroupManager : : AUTODETECT_RESOURCE_GROUP_NAME ) ;
}
for ( int x = 0 ; x < numX ; + + x )
@ -47,13 +48,27 @@ void ogreCreatePbsSpheres(Ogre::Root* root, Ogre::SceneManager* sceneManager)
hlmsPbs - > createDatablock ( datablockName , datablockName , Ogre : : HlmsMacroblock ( ) ,
Ogre : : HlmsBlendblock ( ) , Ogre : : HlmsParamVec ( ) ) ) ;
Ogre : : TextureGpu * texture = textureMgr - > createOrRetrieveTexture (
" SaintPetersBasilica.dds " , Ogre : : GpuPageOutStrategy : : Discard ,
Ogre : : TextureFlags : : PrefersLoadingFromFileAsSRGB , Ogre : : TextureTypes : : TypeCube ,
Ogre : : ResourceGroupManager : : AUTODETECT_RESOURCE_GROUP_NAME ,
Ogre : : TextureFilter : : TypeGenerateDefaultMipmaps ) ;
// Reflection texture
{
Ogre : : TextureGpu * texture = textureMgr - > createOrRetrieveTexture (
" SaintPetersBasilica.dds " , Ogre : : GpuPageOutStrategy : : Discard ,
Ogre : : TextureFlags : : PrefersLoadingFromFileAsSRGB , Ogre : : TextureTypes : : TypeCube ,
Ogre : : ResourceGroupManager : : AUTODETECT_RESOURCE_GROUP_NAME ,
Ogre : : TextureFilter : : TypeGenerateDefaultMipmaps ) ;
datablock - > setTexture ( Ogre : : PBSM_REFLECTION , texture ) ;
}
// Diffuse texture
{
Ogre : : TextureGpu * texture = textureMgr - > createOrRetrieveTexture (
" MonkeyTexture.dds " , Ogre : : GpuPageOutStrategy : : Discard ,
Ogre : : TextureFlags : : PrefersLoadingFromFileAsSRGB , Ogre : : TextureTypes : : Type2D ,
Ogre : : ResourceGroupManager : : AUTODETECT_RESOURCE_GROUP_NAME ,
Ogre : : TextureFilter : : TypeGenerateDefaultMipmaps ) ;
datablock - > setTexture ( Ogre : : PBSM_DIFFUSE , texture ) ;
}
datablock - > setTexture ( Ogre : : PBSM_REFLECTION , texture ) ;
datablock - > setDiffuse ( Ogre : : Vector3 ( 0.0f , 1.0f , 0.0f ) ) ;
datablock - > setRoughness ( std : : max ( 0.02f , x / std : : max ( 1.0f , ( float ) ( numX - 1 ) ) ) ) ;
@ -66,13 +81,17 @@ void ogreCreatePbsSpheres(Ogre::Root* root, Ogre::SceneManager* sceneManager)
Ogre : : SCENE_DYNAMIC ) ;
}
// // TODO this is a hack that relies on ogre-load-mesh being called some time before this
// // This is because "sphere.mesh" is an old-style mesh which I need a converter for or something
// Ogre::Item* item = sceneManager->createItem(
// "Suzanne.mesh Imported", Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME,
// Ogre::SCENE_DYNAMIC);
item - > setDatablock ( datablock ) ;
// // TODO this is a hack that relies on ogre-load-mesh being called some time before
// this
// // This is because "sphere.mesh" is an old-style mesh which I need a converter for or
// something Ogre::Item* item = sceneManager->createItem(
// "Suzanne.mesh Imported",
// Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME, Ogre::SCENE_DYNAMIC);
// if (z % 2 == 0)
item - > setDatablock ( datablock ) ;
// else
// item->setDatablock("MonkeyFur");
item - > setVisibilityFlags ( 0x000000002 ) ;
Ogre : : SceneNode * sceneNode = ( ( Ogre : : SceneNode * ) rootSceneNode - > createChild ( ) ) ;