New Terrain Early Shots

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
Post Reply
User avatar
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

Post by DanielSefton »

Yeah, that's an issue I had
DanielSefton wrote:- getHeightAtWorldPosition() doesn't work properly if terrainGroup->setOrigin() y is more than 0.
Probably should have explained it in more detail. :P
yubgipenguin
Gnoblar
Posts: 23
Joined: Fri Feb 06, 2009 4:32 pm
Location: South Korea

Re: New Terrain Early Shots

Post by yubgipenguin »

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.
User avatar
sinbad
OGRE Retired Team Member
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

Post by sinbad »

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 should be fixed now. I didn't pick this problem up from Daniel's bug report, which was related to the demo behaviour mostly.
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.
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.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

Anyone had any luck using coverage/alphamaps with the new terrain?
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();
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.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
stealth977
Gnoll
Posts: 638
Joined: Mon Dec 15, 2008 6:14 pm
Location: Istanbul, Turkey
x 42

Re: New Terrain Early Shots

Post by stealth977 »

jacmoe:

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,
Ismail TARIM
Ogitor - Ogre Scene Editor
WWW:http://www.ogitor.org
Repository: https://bitbucket.org/ogitor
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

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 ?
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

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.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

Blimey, it works! :D
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.
User avatar
stealth977
Gnoll
Posts: 638
Joined: Mon Dec 15, 2008 6:14 pm
Location: Istanbul, Turkey
x 42

Re: New Terrain Early Shots

Post by stealth977 »

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...

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();
yup its dirty, but will probably(since i didnt test) work...

ismail,
Ismail TARIM
Ogitor - Ogre Scene Editor
WWW:http://www.ogitor.org
Repository: https://bitbucket.org/ogitor
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

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>
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
Azatoth
Gnome
Posts: 327
Joined: Sat Jul 10, 2004 6:46 pm
Location: Sweden
x 4
Contact:

Re: New Terrain Early Shots

Post by Azatoth »

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?
Ember, GPL virtual world client.
Development blog
User avatar
sinbad
OGRE Retired Team Member
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

Post by sinbad »

Thanks, I'll take a look at this when I can.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

I am probably doing something wrong, but here goes:

Decent terrain:
screenshot01202010_232547309.jpg
screenshot01202010_232547309.jpg (106.42 KiB) Viewed 5759 times
Seconds after:
screenshot01202010_232550377.jpg
screenshot01202010_232550377.jpg (101.35 KiB) Viewed 5759 times
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");
}
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.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

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..
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
aguru
Goblin
Posts: 236
Joined: Tue Feb 26, 2008 5:48 pm
x 3

Re: New Terrain Early Shots

Post by aguru »

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?
User avatar
haffax
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 4823
Joined: Fri Jun 18, 2004 1:40 pm
Location: Berlin, Germany
x 8
Contact:

Re: New Terrain Early Shots

Post by haffax »

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.
team-pantheon programmer
creators of Rastullahs Lockenpracht
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

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.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
madmarx
OGRE Expert User
OGRE Expert User
Posts: 1671
Joined: Mon Jan 21, 2008 10:26 pm
x 51

Re: New Terrain Early Shots

Post by madmarx »

@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).

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,
and when it fails, a little later (after I played with the rtss)

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
I don't know if it helps.
Tutorials + Ogre searchable API + more for Ogre1.7 : http://sourceforge.net/projects/so3dtools/
Corresponding thread : http://www.ogre3d.org/forums/viewtopic. ... 93&start=0
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

Directional light: happens.

This is a closer look:
screenshot01212010_020205052.jpg
screenshot01212010_020205052.jpg (89.77 KiB) Viewed 5725 times
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.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

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)
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

So, I did this:

Code: Select all

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

Re: New Terrain Early Shots

Post by jacmoe »

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.
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

If you don't have textures like that, here's a dirty trick:

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;
Just double up. But you are not going to get any benefit from lighting at all. The terrain looks pretty bland, but without flaws. :P
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
aguru
Goblin
Posts: 236
Joined: Tue Feb 26, 2008 5:48 pm
x 3

Re: New Terrain Early Shots

Post by aguru »

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.
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?

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 :)
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Re: New Terrain Early Shots

Post by jacmoe »

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. :P
The problem disappears as soon as Ogre Terrain gets the four different image 'channels' - or think it gets them. :wink:
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
Post Reply