Probably should have explained it in more detail.DanielSefton wrote:- getHeightAtWorldPosition() doesn't work properly if terrainGroup->setOrigin() y is more than 0.
New Terrain Early Shots
- DanielSefton
- Ogre Magi
- Posts: 1235
- Joined: Fri Oct 26, 2007 12:36 am
- Location: Mountain View, CA
- x 10
- Contact:
Re: New Terrain Early Shots
Yeah, that's an issue I had

-
yubgipenguin
- Gnoblar
- Posts: 23
- Joined: Fri Feb 06, 2009 4:32 pm
- Location: South Korea
Re: New Terrain Early Shots
sinbad wrote:
- Pull in the composite map distance so that less blending is needed TerrainGlobalOptions::setCompositeMapDistance
- Increase the pixel error allowed TerrainGlobalOptions::setMaxPixelError
- Use a lower resolution base terrain
- Reduce the size of the textures in use
- Reduce the number of layers
- At an extreme, write a new TerrainMaterialGenerator::Profile to generate simpler materials
I stripped out everything except layering(by writing a new TerrainMaterialGenerator) and it works like a charm. With 1 layer I get around 95 fps. I usually get 127fps with ST_EXTERIOR though.
With 2 layers I get around 65fps and with 3 layers I get around 30 fps.
Using lower resolution textures actually almost doesn't help that much though.
Didn't test it with composite map since I accidently deleted composite map part... with good composite map distance I guess it will be faster with 3 layers.
- sinbad
- OGRE Retired Team Member

- Posts: 19269
- Joined: Sun Oct 06, 2002 11:19 pm
- Location: Guernsey, Channel Islands
- x 67
- Contact:
Re: New Terrain Early Shots
This should be fixed now. I didn't pick this problem up from Daniel's bug report, which was related to the demo behaviour mostly.rubasurex wrote:So it means that when I load the terrain, I have to always call setPosition to ensure it is rendered correctly. It appears as though the underlying geometry is set in the correct location, but the scene node is not updated to ensure it is rendered in the correct location.
This will be a major problem, if you strip out the composite map it's got to dynamically render the blending all the way to the horizon which will make a big difference. The composite map is absolutely essential for good performance.yubgipenguin wrote:Didn't test it with composite map since I accidently deleted composite map part... with good composite map distance I guess it will be faster with 3 layers.
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
Anyone had any luck using coverage/alphamaps with the new terrain?
I am trying this:
Heightmap is loading okay, but I can't seem to get splatting working.
I've accepted that I cannot get at blendmap 0 (if I try getLayerBlendMap(0) it complains), and I don't want it, so I just didn't define it.
All black terrain.
The png's are greyscale images. As this seems to be the only way of exporting one map per texture from PnP TerrainCreator.
How do you do this?
I first tried with a RGBA alphamap, but it didn't happen.
I don't see a way to tell Ogre what channel to use?
I don't need to resize any maps as they are already matching the terrain size.
I am trying this:
Code: Select all
mTerrain = OGRE_NEW Ogre::Terrain(sceneMgr);
Ogre::Image img;
Ogre::DataStreamPtr stream = Ogre::ResourceGroupManager::getSingleton().openResource("demoraw.raw", "General" );
img.loadRawData( stream, 1025, 1025, Ogre::PF_L16 );
Ogre::Terrain::ImportData imp;
imp.inputImage = &img;
imp.terrainSize = 1025;
imp.worldSize = 1024;
imp.inputBias = 0;
imp.inputScale = 2000;
// textures
imp.layerList.resize(3);
imp.layerList[1].textureNames.push_back("gras.jpg");
imp.layerList[1].worldSize = 30;
imp.layerList[2].textureNames.push_back("moos2.jpg");
imp.layerList[2].worldSize = 30;
mTerrain->prepare(imp);
mTerrain->load();
Ogre::TerrainLayerBlendMap *blendmap1 = mTerrain->getLayerBlendMap(1);
Ogre::TerrainLayerBlendMap *blendmap2 = mTerrain->getLayerBlendMap(2);
blendmap1->loadImage("map1.PNG", "General");
blendmap1->dirty();
blendmap1->update();
blendmap2->loadImage("map2.PNG", "General");
blendmap2->dirty();
blendmap2->update();
I've accepted that I cannot get at blendmap 0 (if I try getLayerBlendMap(0) it complains), and I don't want it, so I just didn't define it.
All black terrain.
The png's are greyscale images. As this seems to be the only way of exporting one map per texture from PnP TerrainCreator.
How do you do this?
I first tried with a RGBA alphamap, but it didn't happen.
I don't see a way to tell Ogre what channel to use?
I don't need to resize any maps as they are already matching the terrain size.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- stealth977
- Gnoll
- Posts: 638
- Joined: Mon Dec 15, 2008 6:14 pm
- Location: Istanbul, Turkey
- x 42
Re: New Terrain Early Shots
jacmoe:
Right from Ogitor/PagedTerrainEditor.cpp
ismail,
Right from Ogitor/PagedTerrainEditor.cpp
Code: Select all
for(int j = 1;j < mLayerCount->get();j++)
{
Ogre::TerrainLayerBlendMap *blendmap = mHandle->getLayerBlendMap(j);
Ogre::String blendmapname = mName->get() + "_blend" + Ogre::StringConverter::toString(j) + ".png";
Ogre::Image img;
img.load(blendmapname,"TerrainResources");
int blendmapsize = mHandle->getLayerBlendMapSize();
if(img.getWidth() != blendmapsize)
img.resize(blendmapsize, blendmapsize);
float *ptr = blendmap->getBlendPointer();
Ogre::uint8 *data = static_cast<Ogre::uint8*>(img.getPixelBox().data);
for(int bp = 0;bp < blendmapsize * blendmapsize;bp++)
ptr[bp] = static_cast<float>(data[bp]) / 255.0f;
blendmap->dirty();
blendmap->update();
}
Ismail TARIM
Ogitor - Ogre Scene Editor
WWW:http://www.ogitor.org
Repository: https://bitbucket.org/ogitor
Ogitor - Ogre Scene Editor
WWW:http://www.ogitor.org
Repository: https://bitbucket.org/ogitor
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
Thanks, but why do you need to do all that pixelbox crap?
When you already have a function called 'loadImage'?
But, thanks!
I'll give it a try.
What kind of image does it take?
Greyscale?
I guess I need to look into how to extract one channel from a RGBA ?
When you already have a function called 'loadImage'?
But, thanks!
I'll give it a try.
What kind of image does it take?
Greyscale?
I guess I need to look into how to extract one channel from a RGBA ?
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
I am not complaining, just wondering why. Because I find it odd. 
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
Blimey, it works! 
Thanks a lot, Ismail!
<edit>Does this work for RGBA images - ie one channel per layer?</edit>
Thanks a lot, Ismail!
<edit>Does this work for RGBA images - ie one channel per layer?</edit>
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- stealth977
- Gnoll
- Posts: 638
- Joined: Mon Dec 15, 2008 6:14 pm
- Location: Istanbul, Turkey
- x 42
Re: New Terrain Early Shots
1 - Yes , it reads from L8 images
2 - I implemented it that way, because reading it directly to layers were not working properly when i implemented it and i cant verify if it still works (somehow it was resetting whatever i loaded)
for the RGBA reading, you can just increment pointer 1 by one and post to corresponding layers instead...
yup its dirty, but will probably(since i didnt test) work...
ismail,
2 - I implemented it that way, because reading it directly to layers were not working properly when i implemented it and i cant verify if it still works (somehow it was resetting whatever i loaded)
for the RGBA reading, you can just increment pointer 1 by one and post to corresponding layers instead...
Code: Select all
Ogre::TerrainLayerBlendMap *blendmap1 = mHandle->getLayerBlendMap(1);
Ogre::TerrainLayerBlendMap *blendmap2 = mHandle->getLayerBlendMap(2);
Ogre::TerrainLayerBlendMap *blendmap3 = mHandle->getLayerBlendMap(3);
Ogre::TerrainLayerBlendMap *blendmap4 = mHandle->getLayerBlendMap(4);
Ogre::String blendmapname = "blendmap_rgba.png";
Ogre::Image img;
img.load(blendmapname,"TerrainResources");
int blendmapsize = mHandle->getLayerBlendMapSize();
if(img.getWidth() != blendmapsize)
img.resize(blendmapsize, blendmapsize);
float *ptr1 = blendmap1->getBlendPointer();
float *ptr2 = blendmap2->getBlendPointer();
float *ptr3 = blendmap3->getBlendPointer();
float *ptr4 = blendmap4->getBlendPointer();
Ogre::uint8 *data = static_cast<Ogre::uint8*>(img.getPixelBox().data);
for(int bp = 0;bp < blendmapsize * blendmapsize;bp++)
{
ptr1[bp] = static_cast<float>(data[bp * 4]) / 255.0f;
ptr2[bp] = static_cast<float>(data[bp * 4 + 1]) / 255.0f;
ptr3[bp] = static_cast<float>(data[bp * 4 + 2]) / 255.0f;
ptr4[bp] = static_cast<float>(data[bp * 4 + 3]) / 255.0f;
}
blendmap1->dirty();
blendmap1->update();
blendmap2->dirty();
blendmap2->update();
blendmap3->dirty();
blendmap3->update();
blendmap4->dirty();
blendmap4->update();
ismail,
Ismail TARIM
Ogitor - Ogre Scene Editor
WWW:http://www.ogitor.org
Repository: https://bitbucket.org/ogitor
Ogitor - Ogre Scene Editor
WWW:http://www.ogitor.org
Repository: https://bitbucket.org/ogitor
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
So simple! When you see it, you know that you should have known.
Yes, I'll try that.
Now I have several ways of getting splatting maps into Ogre.
Thanks again.
<edit>I thought I was going to mess around with PixelBox and BitMasks/BitShifts..</edit>
Yes, I'll try that.
Now I have several ways of getting splatting maps into Ogre.
Thanks again.
<edit>I thought I was going to mess around with PixelBox and BitMasks/BitShifts..</edit>
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- Azatoth
- Gnome
- Posts: 327
- Joined: Sat Jul 10, 2004 6:46 pm
- Location: Sweden
- x 4
- Contact:
Re: New Terrain Early Shots
I did some tests with the paging component and ran into an issue with the calls to PageProvider::prepareProceduralPage where it stalls the main thread while waiting for that call to finish.
A more serious issue was that if I called TerrainGroup::defineTerrain from within that method a deadlock would occur.
I've filed a bug report over at http://www.ogre3d.org/mantis/view.php?id=267 together with a patch for provoking it in the Terrain sample. Has anyone else encountered this issue?
A more serious issue was that if I called TerrainGroup::defineTerrain from within that method a deadlock would occur.
I've filed a bug report over at http://www.ogre3d.org/mantis/view.php?id=267 together with a patch for provoking it in the Terrain sample. Has anyone else encountered this issue?
- sinbad
- OGRE Retired Team Member

- Posts: 19269
- Joined: Sun Oct 06, 2002 11:19 pm
- Location: Guernsey, Channel Islands
- x 67
- Contact:
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
I am probably doing something wrong, but here goes:
Decent terrain: Seconds after: This is my code:
Another thing: if I set the ambient light higher than triple 0.6, it turns ugly. And setting the specular colour makes the highlights white.
But, I have a feeling that it's me who's doing something wrong.
I actually have four textures and four blend images, but just use the first texture as coverage, ignoring the first one. As I can't get at layer 0, and don't know if I should add an extra layer.
Decent terrain: Seconds after: This is my code:
Code: Select all
TerrainPage::TerrainPage(Ogre::SceneManager* sceneMgr)
{
bool loadTerrain = false;
bool saveTerrain = false;
Ogre::Vector3 lightdir(0, -0.3, 0.75);
lightdir.normalise();
Ogre::Light* l = sceneMgr->createLight("tstLight");
l->setType(Ogre::Light::LT_DIRECTIONAL);
l->setDirection(lightdir);
l->setDiffuseColour(Ogre::ColourValue(0.6, 0.6, 0.6));
//l->setSpecularColour(Ogre::ColourValue(0.4, 0.4, 0.4));
sceneMgr->setAmbientLight(Ogre::ColourValue(0.6, 0.6, 0.6));
Ogre::TerrainGlobalOptions::setMaxPixelError(8);
Ogre::TerrainGlobalOptions::setCompositeMapDistance(2000);
Ogre::TerrainGlobalOptions::setLightMapDirection(lightdir);
Ogre::TerrainGlobalOptions::setCompositeMapAmbient(sceneMgr->getAmbientLight());
Ogre::TerrainGlobalOptions::setCompositeMapDiffuse(l->getDiffuseColour());
mTerrain = OGRE_NEW Ogre::Terrain(sceneMgr);
if(loadTerrain)
{
mTerrain->load("terrain.dat");
}
else
{
Ogre::DataStreamPtr stream = Ogre::ResourceGroupManager::getSingleton().openResource("demoraw.raw", "General" );
size_t size = stream.get()->size();
if(size != 1025 * 1025 * 4)
{
OGRE_EXCEPT( Ogre::Exception::ERR_INTERNAL_ERROR, "Size of stream does not match terrainsize!", "TerrainPage" );
}
float* buffer = OGRE_ALLOC_T(float, size, Ogre::MEMCATEGORY_GENERAL);
stream->read(buffer, size);
Ogre::Terrain::ImportData imp;
imp.terrainSize = 1025;
imp.worldSize = 1024;
imp.inputFloat = buffer;
// textures
imp.layerList.resize(4);
imp.layerList[0].textureNames.push_back("gras.jpg");
imp.layerList[0].worldSize = 30;
imp.layerList[1].textureNames.push_back("ground01.jpg");
imp.layerList[1].worldSize = 30;
imp.layerList[2].textureNames.push_back("schlamm_getrocknet2.jpg");
imp.layerList[2].worldSize = 30;
imp.layerList[3].textureNames.push_back("Boulder_Rocky_01_COL.dds");
imp.layerList[3].worldSize = 30;
mTerrain->prepare(imp);
mTerrain->load();
Ogre::String blendImages[4];
blendImages[0] = "gras_00000_00000_000.PNG";
blendImages[1] = "ground01_00000_00000_000.PNG";
blendImages[2] = "schlamm_getrocknet2_00000_00000_000.PNG";
blendImages[3] = "moos2_00000_00000_000.PNG";
for(int j = 1;j < mTerrain->getLayerCount();j++)
{
Ogre::TerrainLayerBlendMap *blendmap = mTerrain->getLayerBlendMap(j);
Ogre::Image img;
img.load(blendImages[j],"General");
int blendmapsize = mTerrain->getLayerBlendMapSize();
if(img.getWidth() != blendmapsize)
img.resize(blendmapsize, blendmapsize);
float *ptr = blendmap->getBlendPointer();
Ogre::uint8 *data = static_cast<Ogre::uint8*>(img.getPixelBox().data);
for(int bp = 0;bp < blendmapsize * blendmapsize;bp++)
ptr[bp] = static_cast<float>(data[bp]) / 255.0f;
blendmap->dirty();
blendmap->update();
}
mTerrain->freeTemporaryResources();
mTerrain->setPosition(Ogre::Vector3(512,0,512));
}
if(saveTerrain)
mTerrain->save("terrain.dat");
}But, I have a feeling that it's me who's doing something wrong.
I actually have four textures and four blend images, but just use the first texture as coverage, ignoring the first one. As I can't get at layer 0, and don't know if I should add an extra layer.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
I haven't been able to reproduce the error in the terrain sample, so this seems to be specific to splatting?
Or the way I've set it up.
Looks like wet paint after a shower..
Or the way I've set it up.
Looks like wet paint after a shower..
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- aguru
- Goblin
- Posts: 236
- Joined: Tue Feb 26, 2008 5:48 pm
- x 3
Re: New Terrain Early Shots
It kind of looks like its the the shadow. Would also explain why it takes a while till the shadow map is calculated in the background?
- haffax
- OGRE Retired Moderator

- Posts: 4823
- Joined: Fri Jun 18, 2004 1:40 pm
- Location: Berlin, Germany
- x 8
- Contact:
Re: New Terrain Early Shots
Yes, and also: The shadow direction doesn't seem to align with direction for diffuse lighting in the scene. It comes pretty much from the opposite direction.
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
I only have one light: the directional light, taken from the terrain sample.
Not setting any other properties on the scene. Not using shadows, etc. Nothing.
I'll take the light out, and see if it goes away.
Not setting any other properties on the scene. Not using shadows, etc. Nothing.
I'll take the light out, and see if it goes away.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- madmarx
- OGRE Expert User

- Posts: 1671
- Joined: Mon Jan 21, 2008 10:26 pm
- x 51
Re: New Terrain Early Shots
@Azatoth
I think I got exactly the same bug on my computer.
As a consequence, the scene is 'empty'. What is surprising, is that 1 time out of 3, the sample works, within the same 'session' of the browser sample. I have saved a log in which the sample works, and later works not anymore. Unfortunately I don't know much of this sample and of the terrain sample, and I don't see the problem clearly in the log.
Beginning : when it works, the first time I launch (sometimes it don't work even on first time).
and when it fails, a little later (after I played with the rtss)
I don't know if it helps.
I think I got exactly the same bug on my computer.
As a consequence, the scene is 'empty'. What is surprising, is that 1 time out of 3, the sample works, within the same 'session' of the browser sample. I have saved a log in which the sample works, and later works not anymore. Unfortunately I don't know much of this sample and of the terrain sample, and I don't see the problem clearly in the log.
Beginning : when it works, the first time I launch (sometimes it don't work even on first time).
Code: Select all
01:16:51: Texture: sdk_button_down.png: Loading 1 faces(PF_A8R8G8B8,128x32x1) with hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,128x32x1.
01:16:51: Mesh: Loading sphere.mesh.
01:16:51: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=1 channel=1 requestType=1
01:16:51: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=1 channel=1 requestType=1
01:16:51: Terrain created; size=513 minBatch=33 maxBatch=65 treeDepth=4 lodLevels=5 leafLods=2
01:16:52: Terrain::distributeVertexData processing source terrain size of 513
01:16:52: Assigning vertex data, resolution=513 startDepth=2 endDepth=4 splits=4
01:16:53: Assigning vertex data, resolution=129 startDepth=0 endDepth=2 splits=1
01:16:53: Terrain::distributeVertexData finished
01:16:53: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=1 channel=1 requestType=1 processed=1
01:16:53: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=1 success=1 messages=[] channel=1 requestType=1
01:16:53: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=2 channel=2 requestType=1
01:16:53: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=2 channel=2 requestType=1
01:16:54: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=2 channel=2 requestType=1 processed=1
01:16:54: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=2 success=1 messages=[] channel=2 requestType=1
01:16:54: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=2 success=1 messages=[] channel=2 requestType=1
01:16:54: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=3 channel=2 requestType=1
01:16:54: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=3 channel=2 requestType=1
01:17:20: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=3 channel=2 requestType=1 processed=1
01:17:20: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=3 success=1 messages=[] channel=2 requestType=1
01:17:20: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=3 success=1 messages=[] channel=2 requestType=1
01:17:20: *** Terrain Vertex Program: OgreTerrain/2321278266/sm2/vp/hlod ***
void main_vp(
float4 pos : POSITION,
float2 uv : TEXCOORD0,
float2 delta : TEXCOORD1,
uniform float4x4 worldMatrix,
uniform float4x4 viewProjMatrix,
Code: Select all
01:23:16: Texture: sdk_button_down.png: Loading 1 faces(PF_A8R8G8B8,128x32x1) with hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,128x32x1.
01:23:16: Creating viewport on target 'OGRE Sample Browser', rendering from camera 'MainCamera', relative dimensions 8192L: 0 T: 0 W: 1 H: 1 ZOrder: 0
01:23:16: Viewport for camera 'MainCamera', actual dimensions 8192L: 0 T: 0 W: 1280 H: 800
01:23:16: Material Controls setup
01:23:16: Texture: morning_fr.jpg: Loading 1 faces(PF_R8G8B8,512x512x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,512x512x1.
01:23:16: Texture: morning_bk.jpg: Loading 1 faces(PF_R8G8B8,512x512x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,512x512x1.
01:23:16: Texture: morning_lf.jpg: Loading 1 faces(PF_R8G8B8,512x512x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,512x512x1.
01:23:16: Texture: morning_rt.jpg: Loading 1 faces(PF_R8G8B8,512x512x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,512x512x1.
01:23:16: Texture: morning_up.jpg: Loading 1 faces(PF_R8G8B8,512x512x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,512x512x1.
01:23:16: Texture: morning_dn.jpg: Loading 1 faces(PF_R8G8B8,512x512x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,512x512x1.
01:23:16: Texture: flare.png: Loading 1 faces(PF_R8G8B8,256x256x1) with hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,256x256x1.
01:23:17: D3D9 : Loading 2D Texture, image name : 'waves2.dds' with 5 mip map levels
01:23:17: Texture: morning.jpg: Loading 6 faces(PF_R8G8B8,512x512x1) with hardware generated mipmaps from multiple Images. Internal format is PF_X8R8G8B8,512x512x1.
01:23:24: Viewport for camera 'NULL', actual dimensions 8192L: 0 T: 0 W: 1280 H: 800
01:23:24: Creating viewport on target 'OGRE Sample Browser', rendering from camera 'DummyCamera', relative dimensions 8192L: 0 T: 0 W: 1 H: 1 ZOrder: 0
01:23:24: Viewport for camera 'DummyCamera', actual dimensions 8192L: 0 T: 0 W: 1280 H: 800
01:23:27: Texture: sdk_button_down.png: Loading 1 faces(PF_A8R8G8B8,128x32x1) with hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,128x32x1.
01:23:27: Creating viewport on target 'OGRE Sample Browser', rendering from camera 'MainCamera', relative dimensions 8192L: 0 T: 0 W: 1 H: 1 ZOrder: 0
01:23:27: Viewport for camera 'MainCamera', actual dimensions 8192L: 0 T: 0 W: 1280 H: 800
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=4 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=4 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=4 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=4 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=4 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=5 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=5 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=5 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=5 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=5 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=6 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=6 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=6 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=6 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=6 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=7 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=7 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=7 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=7 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=7 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=8 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=8 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=8 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=8 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=8 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=9 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=9 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=9 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=9 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=9 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=10 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=10 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=10 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=10 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=10 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=11 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=11 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=11 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=11 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=11 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=12 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=12 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=12 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=12 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=12 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=13 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=13 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=13 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=13 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=13 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=14 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=14 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=14 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=14 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=14 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=15 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=15 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=15 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=15 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=15 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=16 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=16 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=16 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=16 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=16 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=17 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=17 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=17 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=17 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=17 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=18 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=18 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=18 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=18 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=18 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=19 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=19 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=19 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=19 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=19 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=20 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=20 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=20 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=20 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=20 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=21 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=21 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=21 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=21 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=21 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=22 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=22 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=22 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=22 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=22 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=23 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=23 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=23 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=23 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=23 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=24 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=24 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=24 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=24 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=24 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=25 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=25 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=25 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=25 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=25 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=26 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=26 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=26 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=26 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=26 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=27 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=27 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=27 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=27 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=27 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=28 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=28 channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=28 channel=3 requestType=1 processed=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=28 success=1 messages=[] channel=3 requestType=1
01:23:27: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=28 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=29 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=29 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=29 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=29 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=29 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=30 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=30 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=30 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=30 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=30 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=31 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=31 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=31 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=31 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=31 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=32 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=32 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=32 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=32 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=32 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=33 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=33 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=33 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=33 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=33 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=34 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=34 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=34 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=34 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=34 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=35 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=35 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=35 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=35 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=35 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=36 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=36 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=36 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=36 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=36 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=37 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=37 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=37 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=37 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=37 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - QUEUED(thread:main): ID=38 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_START(main): ID=38 channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_REQUEST_END(main): ID=38 channel=3 requestType=1 processed=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_START(thread:main): ID=38 success=1 messages=[] channel=3 requestType=1
01:23:41: DefaultWorkQueueBase('Root') - PROCESS_RESPONSE_END(thread:main): ID=38 success=1 messages=[] channel=3 requestType=1
01:23:48: Viewport for camera 'NULL', actual dimensions 8192L: 0 T: 0 W: 1280 H: 800
01:23:48: Uninstalling plugin: Bezier Patch Sample
01:23:48: Plugin successfully uninstalled
Tutorials + Ogre searchable API + more for Ogre1.7 : http://sourceforge.net/projects/so3dtools/
Corresponding thread : http://www.ogre3d.org/forums/viewtopic. ... 93&start=0
Corresponding thread : http://www.ogre3d.org/forums/viewtopic. ... 93&start=0
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
Directional light: happens.
This is a closer look: Notice the difference between the left and right 'sides'.
The left is what appears, the right is ligthmap. The former is not smoothed in any way.
Anything I overlooked?
It doesn't happen with a regular spotlight.
This is a closer look: Notice the difference between the left and right 'sides'.
The left is what appears, the right is ligthmap. The former is not smoothed in any way.
Anything I overlooked?
It doesn't happen with a regular spotlight.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
I overlooked that it really *does* happen with a point light, I just didn't notice it.
So, this means that I can't use lights?
I wonder what makes the terrain do all that jazz as msCastShadows is turned off by default?
<edit>
Oh: It's on in TerrainMaterialGeneratorA:
mReceiveDynamicShadows(true)
So, this means that I can't use lights?
I wonder what makes the terrain do all that jazz as msCastShadows is turned off by default?
<edit>
Oh: It's on in TerrainMaterialGeneratorA:
mReceiveDynamicShadows(true)
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
So, I did this:
But the problem persists: the texture cracks like stretched out latex after a while.
Code: Select all
Ogre::TerrainMaterialGeneratorA::SM2Profile* matProfile = static_cast<Ogre::TerrainMaterialGeneratorA::SM2Profile*>(Ogre::TerrainGlobalOptions::getDefaultMaterialGenerator()->getActiveProfile());
matProfile->setReceiveDynamicShadowsEnabled(false);
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
So, I found out that you do need specular, normal and height images.
Without specular it looks like shite: specular highlights all white.
Without normal/height you get the visual disagreement as shown above: shadow and lightmap works at opposite directions.
I tried the same terrain, same code, using the textures from the terrain sample, and it looked alright.
How do one make those textures, I wonder?
All four 'channels' seems to be required for the default material generator.
Without specular it looks like shite: specular highlights all white.
Without normal/height you get the visual disagreement as shown above: shadow and lightmap works at opposite directions.
I tried the same terrain, same code, using the textures from the terrain sample, and it looked alright.
How do one make those textures, I wonder?
All four 'channels' seems to be required for the default material generator.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
If you don't have textures like that, here's a dirty trick:
Just double up. But you are not going to get any benefit from lighting at all. The terrain looks pretty bland, but without flaws. 
Code: Select all
imp.layerList.resize(4);
imp.layerList[0].textureNames.push_back("gras.jpg");
imp.layerList[0].textureNames.push_back("gras.jpg");
imp.layerList[0].worldSize = 30;
imp.layerList[1].textureNames.push_back("ground01.jpg");
imp.layerList[1].textureNames.push_back("ground01.jpg");
imp.layerList[1].worldSize = 30;
imp.layerList[2].textureNames.push_back("schlamm_getrocknet2.jpg");
imp.layerList[2].textureNames.push_back("schlamm_getrocknet2.jpg");
imp.layerList[2].worldSize = 30;
imp.layerList[3].textureNames.push_back("Boulder_Rocky_01_COL.dds");
imp.layerList[3].textureNames.push_back("Boulder_Rocky_01_COL.dds");
imp.layerList[3].worldSize = 20;
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
- aguru
- Goblin
- Posts: 236
- Joined: Tue Feb 26, 2008 5:48 pm
- x 3
Re: New Terrain Early Shots
Jacmoe, I might be wrong, but I still think the left is the lightmap, the right is just the regular shading of the polygons. I think something is wrong in the way you set up your scene. Are you sure there is only one light in the scene, and the light is the same that is given to the terrain for lightmap calculation?jacmoe wrote:Directional light: happens.
This is a closer look:
[#attachment=0]screenshot01212010_020205052.jpg[/attachment]
Notice the difference between the left and right 'sides'.
The left is what appears, the right is ligthmap. The former is not smoothed in any way.
Anything I overlooked?
It doesn't happen with a regular spotlight.
One thing you might want to try out: Set the lightmap resolution to something really low and check if your "problem" gets a lower resolution, too
- jacmoe
- OGRE Retired Moderator

- Posts: 20570
- Joined: Thu Jan 22, 2004 10:13 am
- Location: Denmark
- x 179
- Contact:
Re: New Terrain Early Shots
I have no idea, but what's on the right happens, so that's probably the lightmap. The thing on the left is there from the start. 
And, of course I am sure about whether or not I have lights in the scene.
The problem disappears as soon as Ogre Terrain gets the four different image 'channels' - or think it gets them.
And, of course I am sure about whether or not I have lights in the scene.
The problem disappears as soon as Ogre Terrain gets the four different image 'channels' - or think it gets them.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
