Simple Paged Terrain [v2.00 Released! Page 21]

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!
User avatar
cdleonard
Goblin
Posts: 266
Joined: Thu May 31, 2007 9:45 am

Post by cdleonard »

Can SPT do localized regions of higher detail? Consider a terrain-based scene with a small highly-detailed region (several kilometers) and an external terrain occupying tens or maybe hundreds of kilometers. Bringing the external heightmap to the internal heightmap's resolution would result in way too much data (gigabytes).

Even if SPT can't currently do something like that; how difficult would it be to add such functionality? Or is there a better approach to such a scene? An easy alternative is to just use meshes for the central terrain; but LOD on meshes could be a lot slower.
User avatar
HexiDave
OGRE Expert User
OGRE Expert User
Posts: 1538
Joined: Sat Jan 14, 2006 8:00 pm
x 1

Post by HexiDave »

Haha! I was just joking to someone I was talking to that eventually there'd be a request for just that. Guess I need to keep my mouth shut...

I'm going to try to add support for multiple height-maps today, but the problem when dealing with inner and outer boundaries is the resolution of the edge data - the normals will be wrong and it's kind of tricky to calculate properly. The other drawback is, of course, the fact that you can't have light-mapping. You could probably do it on the CPU, but you'd need all of the data loaded up-front.

That said, unless you're planning on having huge gaps in detail, it shouldn't be too bad - you'll still end up with some odd looking lighting on the boundaries because they're different frequencies of data, but it should be acceptable.

As said in a previous page, I'm looking at the ECW format to do wavelet compression/decompression of heightmap data, such that you could have very large height-maps without blowing out memory or disk access.

Another thing to consider, of course, is procedural data at run-time. I've got a noise-editor built into the terrain editor program and I'm setting up a format to let you create a set of modules in Libnoise (with improvements found around the net, you can get some excellent speeds) such that you could generate the data continuously and then edit sections of the height-map inside the noise and save that. You'll be able to store just a kilobyte of data or so to detail an endless amount of detail as far as you want without impacting performance.
User avatar
cdleonard
Goblin
Posts: 266
Joined: Thu May 31, 2007 9:45 am

Post by cdleonard »

HexiDave wrote:Haha! I was just joking to someone I was talking to that eventually there'd be a request for just that. Guess I need to keep my mouth shut...

I'm going to try to add support for multiple height-maps today, but the problem when dealing with inner and outer boundaries is the resolution of the edge data - the normals will be wrong and it's kind of tricky to calculate properly. The other drawback is, of course, the fact that you can't have light-mapping. You could probably do it on the CPU, but you'd need all of the data loaded up-front.

That said, unless you're planning on having huge gaps in detail, it shouldn't be too bad - you'll still end up with some odd looking lighting on the boundaries because they're different frequencies of data, but it should be acceptable.

As said in a previous page, I'm looking at the ECW format to do wavelet compression/decompression of heightmap data, such that you could have very large height-maps without blowing out memory or disk access.

Another thing to consider, of course, is procedural data at run-time. I've got a noise-editor built into the terrain editor program and I'm setting up a format to let you create a set of modules in Libnoise (with improvements found around the net, you can get some excellent speeds) such that you could generate the data continuously and then edit sections of the height-map inside the noise and save that. You'll be able to store just a kilobyte of data or so to detail an endless amount of detail as far as you want without impacting performance.
Today? Really? It's amazing how much some people get done.

Anyway... isn't it acceptable for the heightmaps to intersect? For example in my usecase the external heightmap will probably contain all of the internal heightmap's data (just at a very low resolution). The internal heightmap can also have some unused border data. As long as the border resolution matches everything should be OK; right?

Trying to load a very large heightmap in SPT (like 16000 or such) will quickly blow up memory because it's all loaded in at once. From a quick googling of the ECW format is seems that it supports files larger that RAM. Since I'm looking to use real-world heightmap data ECW support would be very useful :). Very good compression could actually replace multiple heightmaps in some cases.
User avatar
denreaper
Greenskin
Posts: 105
Joined: Wed May 31, 2006 10:52 pm

Post by denreaper »

cdleonard wrote:Trying to load a very large heightmap in SPT (like 16000 or such) will quickly blow up memory because it's all loaded in at once. From a quick googling of the ECW format is seems that it supports files larger that RAM. Since I'm looking to use real-world heightmap data ECW support would be very useful :). Very good compression could actually replace multiple heightmaps in some cases.
Yeah, I do wonder how much more difficult the implementation would be though.
maxjar10
Gnoblar
Posts: 7
Joined: Tue Jul 29, 2008 10:40 pm

Post by maxjar10 »

Hey HexiDave,

Firstly, fantastic work :).

I too have been thinking about using multiple heightmaps for a project I am working on so I'll be interested in seeing what you come up with. My initial thought was to create some kind of special implementation of the Heightmap class that hid the fact that I was reading several heightmaps underneath. Instead of all the heightmap data being read at once and relying on the heightmap width for the depth calculations I would fix the depth at say 6. Areas that were very far off (depth 1) would probably not be rendered at all and we wouldn't read the heightmap data from them until the depth was supposed to increase to 2.

Probably what is more interesting to me than the above was that I was trying to figure out a way of applying different splats per TerrainMesh. The idea being that I would want a set of splats if I was in Cuba versus if I was in Egypt.

Two thoughts came to mind here. First, assuming I have a coveragemap that is low detail and covers my entire terrain I could use that for every node not at max depth. Then for nodes that are at max depth I allow a different splatmap and set of splats. Second, try to use subobjects which can each have different materials. In this approach, even when the terrain mesh objects are at a lower depth I still create the mesh with multiple submeshes which each can have a materail with it's own splatmap and set of splats.

Thoughts?
User avatar
HexiDave
OGRE Expert User
OGRE Expert User
Posts: 1538
Joined: Sat Jan 14, 2006 8:00 pm
x 1

Post by HexiDave »

The problem is all about the detail between sections - those normals are going to look bizarre.

I'll be getting into multiple height-maps in a tiling fashion shortly, but here's something I got working tonight:

Image
Image

Stupidly, I still had randomized sun positions going, so the lighting is different between the two. However, here's the exciting part:

Pic #1: Is the loss-less PNG that comes with the SPT 2 demo (Highlands_Height.png). It weighs in at 2049x2049 16-bits per pixel; 4.8 MB

Pic #2: This is a high-quality lossy JPEG2000 height-map at the same dimensions... but it's 37 KB. Roughly the same load time as PNG and almost the same visible quality. SPT's editor saves and loads JPEG2000 format heightmaps now! Hurray!
User avatar
xadhoom
Minaton
Posts: 973
Joined: Fri Dec 28, 2007 4:35 pm
Location: Germany
x 1

Post by xadhoom »

Wow I didn´t know how good JPEG2000 compresses heightmaps.
Very impressive you got this in.

How about your procedural part? Can you create a terrain e.g. like this on your pictures with algorithms?

Did you look on the texture synthesis stuff I mentioned earlier?
User avatar
HexiDave
OGRE Expert User
OGRE Expert User
Posts: 1538
Joined: Sat Jan 14, 2006 8:00 pm
x 1

Post by HexiDave »

It was talked about a bit further back, but I have a full noise editor window that you can synthesize terrains with. I've done some texture synthesis in the past, but real-time stuff like that is a bit over-kill. You can produce pretty decent splat-maps and alleviate the need for a coverage texture with noise.

I'll cover this more when I have time - I'm trying to slam months of work into days and it's taking it's toll.
User avatar
xadhoom
Minaton
Posts: 973
Joined: Fri Dec 28, 2007 4:35 pm
Location: Germany
x 1

Post by xadhoom »

HexiDave wrote:I'll cover this more when I have time - I'm trying to slam months of work into days and it's taking it's toll.
You have my very respect... :)
User avatar
denreaper
Greenskin
Posts: 105
Joined: Wed May 31, 2006 10:52 pm

Post by denreaper »

Is there a good way to go about writing a shaderless fallback for the lightmapper? It crashes on my laptop when I start the shader. Making an empty material didn't work.
User avatar
eugen
OGRE Expert User
OGRE Expert User
Posts: 1422
Joined: Sat May 22, 2004 5:28 am
Location: Bucharest
x 8

Post by eugen »

Great work with this terrain implementation!
im new to this, i have ran the demo and the editor but i cant find a way of painting the terrain in realtime. I was wondering if this is possible in the current version?!
Thanks!
User avatar
HexiDave
OGRE Expert User
OGRE Expert User
Posts: 1538
Joined: Sat Jan 14, 2006 8:00 pm
x 1

Post by HexiDave »

Yes and no - the functions are in, but I haven't gotten it where I want it - something's off in the math so it seems to come out a bit blocky.

I had to take a break from the editor and SPT for a while, but I've got some multiple heightmap functionality coming as well as the noise hook-ups. That's my priority right now - I'll need editor components for them, so I'll be back on the editor shortly after they're implemented. Stay tuned and be a bit patient with me, I've got the programmer's equivalent of writer's-block (I took to learning Blender instead, which is fun). I had spent WAY too much time working the editor, so I burned out a bit.

No worries, though, I haven't given up - I mean to use SPT and my editor for a big project, so I'm far from done.
User avatar
jingjie
Kobold
Posts: 35
Joined: Mon Jul 18, 2005 5:00 am

Post by jingjie »

HexiDave wrote:Yes and no - the functions are in, but I haven't gotten it where I want it - something's off in the math so it seems to come out a bit blocky.

I had to take a break from the editor and SPT for a while, but I've got some multiple heightmap functionality coming as well as the noise hook-ups. That's my priority right now - I'll need editor components for them, so I'll be back on the editor shortly after they're implemented. Stay tuned and be a bit patient with me, I've got the programmer's equivalent of writer's-block (I took to learning Blender instead, which is fun). I had spent WAY too much time working the editor, so I burned out a bit.

No worries, though, I haven't given up - I mean to use SPT and my editor for a big project, so I'm far from done.
SPT Master HexiDave , Good job for Noise Visualized editor.
I like your design of SPT and I am happy that you concerns about making convenient editor for artiste developer. Before some terrain project about editor supporting is insufficient so that creating terrain resource is really pain. :cry:
I hope that you can consider about brush texture layer to use more visalized way to make it in feature. :lol: ( I LOVE SPT.)
maxjar10
Gnoblar
Posts: 7
Joined: Tue Jul 29, 2008 10:40 pm

Post by maxjar10 »

Hey HexiDave,

I was going to try to do some work to modify SPT so that the skirt is optional. Any reason why this is a bad idea?

Thanks!
User avatar
HexiDave
OGRE Expert User
OGRE Expert User
Posts: 1538
Joined: Sat Jan 14, 2006 8:00 pm
x 1

Post by HexiDave »

The skirts are there to keep you from seeing through the terrain's edges. This is a cheaper and simpler solution than geomipmapping, but it uses a little bit more geometry.

What problem are you having with it? You can adjust the size of the skirts well (Terrain::setSkirtLength() or Terrain::setSkirtLengthPercent() will adjust it), but I don't think getting rid of them will help you in any way.
maxjar10
Gnoblar
Posts: 7
Joined: Tue Jul 29, 2008 10:40 pm

Post by maxjar10 »

Interesting. Basically, what I've done is modified the SPT stuff so that I could further subdivide the terrain depths to a vertex depth based on the terrain chunk depth (that's a mouthful).

The reason for doing this is that I want to apply many more materials in a smaller area without decreasing the VERTEX_WIDTH and adding another depth.

To really see what I'm talking about you should view the demo for the Myrddin plugin.
http://www.ogre3d.org/wiki/index.php/My ... ape_Plugin

In the Myrddin plugin the tiles are a fixed width (that is relatively small). The patch retains the same width as you approach it but is tesselated to a greater and greater degree. Myrddin does use geo mipmapping.

I think that the disadvantage of Myrddin is that when you have fixed width patches you end up having more geometry than you need when the tile is further away from the camera.

I'm trying to use a hybrid approach where I only create smaller fixed width patches closer to the camera and let the regular quadtree LOD work with a coverage texture further out.

That being said, I think that the skirts end up becoming more expensive for me as I now have many more skirts because of all the smaller pieces.
User avatar
HexiDave
OGRE Expert User
OGRE Expert User
Posts: 1538
Joined: Sat Jan 14, 2006 8:00 pm
x 1

Post by HexiDave »

Currently, the only source of heightmap data is a master heightmap, loaded on initialization - I'm changing this now by adding a Source class, so you'll be able to sub-class and feed your own data in, either heightmap, noise or whatever. This will let me sub-divide just about indefinitely, so I'll add support for setting materials to start at a certain depth.

The problem with this approach is that there's no transition between the two materials. Unless you setup some smart transition in a shader, you're going to likely end up with a very big pop when the materials switch.

I'm not sure what you gain by breaking the geometry into smaller pieces - you kind of ruin the whole idea of batching. There'll be no cohesion between your manual objects and the quad-tree data, and you're going to get a lot of back-and-forth destruction of your data when the quad-tree needs to take over.

Also, if you're really having geometry problems as your bottleneck (don't just assume this, check it with NVPerfHUD or something), try Terrain::setLODBias(x) and set x to something less than 1.0f.

For the record, this IS geomipmapping, but I just don't stitch the edge or use more than 1 mipmap. The quad-tree does all the hard work when it comes to removing unneeded geometry in the distance, generally better than basic tiled geomipmapping.


You're welcome to give this a shot, I just think you're going to expend a lot of effort and gain very little. Take a look into lod_distance in the material section of the Ogre Manual. You can switch techniques of a material AT RUNTIME based on the distance from the camera. No extra work, just switches over if it's close enough.
User avatar
DanielSefton
Ogre Magi
Posts: 1235
Joined: Fri Oct 26, 2007 12:36 am
Location: Mountain View, CA
x 10

Post by DanielSefton »

A few things I've noticed while working with SPT:

1) The brush decal disappears when I enable Hydrax for some reason. Not sure if it's a Hydrax or SPT bug - I'll wait until Hydrax 0.4 to find out.

2) When I try to save the heightmap (mTerrain->saveTerrain("abc.png")), it errors out with "OGRE EXCEPTION: Invalid image format in FreeImageCodec::encode at ..\src\OgreFreeImageCodec.cpp" -- PNG should work; I've tried other formats, and they all give that error.

3) I'm a bit confused as to how the textures work (I know it's still early) - but say for example if I replace the 'herbe_3.jpg' with a white texture - the landscape is still green. Is it something to do with Highlands_Coverage? I was just eager to see what it would look like with snow. :-)
Could you explain more on how you work with the grid? i.e. Place entities at tile X/Y? Code?
Not entirely sure what you mean - this is using a quad-tree, so it's not just a grid of terrain tiles like TSM, ETM and PLSM use. Currently, I have the ObjectHandler class that helps you build SceneObject's, which are just a MovableObject and SceneNode created for you in one item and gives you some automation functions for clamping to the terrain (i.e. making sure the object stays on the terrain).
Despite it being quad-tree, I was thinking it might still be possible to have it act like tiles. For example, the heighest LOD could return a set of positions throughout the terrain. Or something like: mTerrain->setTilePosition(ent, X = 50, Z = 200) -- so even though the quad tree decreases in detail, in theory, the set of positions never change. It's hard to explain without an image:

Image

Just an idea -- but hopefully it explains what I meant.
User avatar
HexiDave
OGRE Expert User
OGRE Expert User
Posts: 1538
Joined: Sat Jan 14, 2006 8:00 pm
x 1

Post by HexiDave »

1. Dunno about this one - pretty sure I still just have SPT's brush decal as a second pass with a simple shader. I haven't touched Hydrax yet, so I dunno.

2. This is because I'm a butthead and haven't cleaned that part up - it's just pulling the lightmap's heightmap texture, I think. It also doesn't handle the difference between floating point and integer (ushort) formats for memory heightmaps.

3. Yes, the Highlands_Coverage texture is multiplied in to give the landscape some noise. It's kind of a pain to make all-purpose shaders without having tons of multi-pass ugliness. I've almost got my monster shader built, though - been playing mostly with atmospheric scattering and trying to solve a weird shader issue.



As for the quad-tree/tiles thing, are you more worried about texturing these tiles separately (a la Ultima Online or some such), or just placing things in tile grid spacing? If it's the former, then you can likely screw around with texture atlasing and the texture coordinates pretty easily. If It's the latter, then that's a very simple math problem and can be taken care of.


I'm starting to swing back into gear now - have been pounding away on the new terrain shader(s) and better automation between lightmapping and atmospheric scattering modules. The big thing is that I'm trying to get multiple heightmap and noise support in. It's a real mind-numbing ordeal, so I'm just kinda poking and prodding at it until it works.
User avatar
netskate
Greenskin
Posts: 120
Joined: Fri Sep 05, 2008 3:10 pm

Post by netskate »

hi, i'm new in this forum, and sorry for my bad english.

I've downloaded the spt from svn on trunk directory, but i can't execute either demo and editor, because error on d3dx9_38.dll.

and i can't compile it, because missing a lot of include files.

i have ogre sdk 1.4.9 eihort. and visual studio pro 2005 and all .net framework.

I hope you can help me
-- N3tsk4t3 --
User avatar
DanielSefton
Ogre Magi
Posts: 1235
Joined: Fri Oct 26, 2007 12:36 am
Location: Mountain View, CA
x 10

Post by DanielSefton »

netskate wrote:because error on d3dx9_38.dll.
You need to download the DirectX9 runtime.

http://www.microsoft.com/downloads/deta ... layLang=en
netskate wrote:and i can't compile it, because missing a lot of include files.
What files are missing? Make sure you have added all the include directories to "Additional Include Directories" in your project properties.
User avatar
netskate
Greenskin
Posts: 120
Joined: Fri Sep 05, 2008 3:10 pm

Post by netskate »

ok, I download the new directx and I solved the first error. Now i can run spt2_demo.exe

but I still can't run editor.exe

here the content of ogre.log file:
15:39:47: Creating resource group General
15:39:47: Creating resource group Internal
15:39:47: Creating resource group Autodetect
15:39:47: SceneManagerFactory for type 'DefaultSceneManager' registered.
15:39:47: Registering ResourceManager for type Material
15:39:47: Registering ResourceManager for type Mesh
15:39:47: Registering ResourceManager for type Skeleton
15:39:47: MovableObjectFactory for type 'ParticleSystem' registered.
15:39:47: OverlayElementFactory for type Panel registered.
15:39:47: OverlayElementFactory for type BorderPanel registered.
15:39:47: OverlayElementFactory for type TextArea registered.
15:39:47: Registering ResourceManager for type Font
15:39:47: ArchiveFactory for archive type FileSystem registered.
15:39:47: ArchiveFactory for archive type Zip registered.
15:39:47: FreeImage version: 3.10.0
15:39:47: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
15:39:47: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,gif,hdr,g3,sgi,exr,j2k,j2c,jp2
15:39:47: DDS codec registering
15:39:47: Registering ResourceManager for type HighLevelGpuProgram
15:39:47: Registering ResourceManager for type Compositor
15:39:47: MovableObjectFactory for type 'Entity' registered.
15:39:47: MovableObjectFactory for type 'Light' registered.
15:39:47: MovableObjectFactory for type 'BillboardSet' registered.
15:39:47: MovableObjectFactory for type 'ManualObject' registered.
15:39:47: MovableObjectFactory for type 'BillboardChain' registered.
15:39:47: MovableObjectFactory for type 'RibbonTrail' registered.
15:39:47: Loading library .\RenderSystem_Direct3D9
15:39:47: Installing plugin: D3D9 RenderSystem
15:39:47: D3D9 : Direct3D9 Rendering Subsystem created.
15:39:48: D3D9: Driver Detection Starts
15:39:48: D3D9: Driver Detection Ends
15:39:48: Plugin successfully installed
15:39:48: Loading library .\RenderSystem_GL
15:39:48: Installing plugin: GL RenderSystem
15:39:48: OpenGL Rendering Subsystem created.
15:39:48: Plugin successfully installed
15:39:48: Loading library .\Plugin_CgProgramManager
15:39:49: Installing plugin: Cg Program Manager
15:39:49: Plugin successfully installed
15:39:49: *-*-* OGRE Initialising
15:39:49: *-*-* Version 1.4.9 (Eihort)
15:39:49: Creating resource group Bootstrap
15:39:49: Added resource location '../../media/packs/OgreCore.zip' of type 'Zip' to resource group 'Bootstrap'
15:39:49: Added resource location '../../media' of type 'FileSystem' to resource group 'General'
15:39:49: Added resource location '../../media/materials' of type 'FileSystem' to resource group 'General'
15:39:49: Added resource location '../../media/textures' of type 'FileSystem' to resource group 'General'
15:39:49: Added resource location '../../media/models' of type 'FileSystem' to resource group 'General'
15:39:49: Added resource location '../../media/brushes' of type 'FileSystem' to resource group 'General'
15:39:49: CPU Identifier & Features
15:39:49: -------------------------
15:39:49: * CPU ID: AuthenticAMD: AMD Athlon(tm) 64 X2 Dual Core Processor 4400+
15:39:49: * SSE: yes
15:39:49: * SSE2: yes
15:39:49: * SSE3: yes
15:39:49: * MMX: yes
15:39:49: * MMXEXT: yes
15:39:49: * 3DNOW: yes
15:39:49: * 3DNOWEXT: yes
15:39:49: * CMOV: yes
15:39:49: * TSC: yes
15:39:49: * FPU: yes
15:39:49: * PRO: yes
15:39:49: * HT: no
15:39:49: -------------------------
15:39:49: *** Starting Win32GL Subsystem ***
15:39:49: GLRenderSystem::createRenderWindow "", 614x674 windowed miscParams: FSAA=4 externalWindowHandle=590302 vsync=true
15:39:49: GL_VERSION = 2.1.7873 Release
15:39:49: GL_VENDOR = ATI Technologies Inc.
15:39:49: GL_RENDERER = Radeon X1950 Pro
15:39:49: GL_EXTENSIONS = GL_AMD_performance_monitor GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_fragment_program GL_ARB_fragment_shader GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_shader_objects GL_ARB_shading_language_100 GL_ARB_shadow GL_ARB_shadow_ambient GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_mirrored_repeat GL_ARB_texture_rectangle GL_ARB_transpose_matrix GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_envmap_bumpmap GL_ATI_fragment_shader GL_ATI_meminfo GL_ATI_separate_stencil GL_ATI_shader_texture_lod GL_ATI_texture_compression_3dc GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_compiled_vertex_array GL_EXT_copy_texture GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_object GL_EXT_gpu_program_parameters GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_EXT_subtexture GL_EXT_texgen_reflection GL_EXT_texture3D GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_add GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_vertex_array GL_KTX_buffer_region GL_NV_blend_square GL_NV_texgen_reflection GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_WIN_swap_hint WGL_EXT_swap_control
15:39:49: Supported WGL extensions: WGL_ARB_extensions_string WGL_ARB_pixel_format WGL_ATI_pixel_format_float WGL_ARB_pixel_format_float WGL_ARB_multisample WGL_EXT_swap_control WGL_ARB_pbuffer WGL_ARB_render_texture WGL_ARB_make_current_read WGL_EXT_extensions_string WGL_ARB_buffer_region WGL_EXT_framebuffer_sRGB WGL_ATI_render_texture_rectangle WGL_EXT_pixel_format_packed_float
15:39:49: ***************************
15:39:49: *** GL Renderer Started ***
15:39:49: ***************************
15:39:49: Registering ResourceManager for type GpuProgram
15:39:49: GLSL support detected
15:39:49: GL: Using GL_EXT_framebuffer_object for rendering to textures (best)
15:39:50: FBO PF_UNKNOWN depth/stencil support: D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_L8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_L16 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_A8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_A4L4 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_BYTE_LA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_R5G6B5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_B5G6R5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_A4R4G4B4 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_A1R5G5B5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_B8G8R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_A8R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_B8G8R8A8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_A2R10G10B10 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_A2B10G10R10 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_FLOAT16_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_FLOAT16_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_FLOAT32_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_FLOAT32_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_X8R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_X8B8G8R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_SHORT_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_R3G3B2 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_FLOAT16_R depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_FLOAT32_R depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_SHORT_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_FLOAT16_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_FLOAT32_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: FBO PF_SHORT_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:39:50: [GL] : Valid FBO targets PF_UNKNOWN PF_L8 PF_L16 PF_A8 PF_A4L4 PF_BYTE_LA PF_R5G6B5 PF_B5G6R5 PF_A4R4G4B4 PF_A1R5G5B5 PF_R8G8B8 PF_B8G8R8 PF_A8R8G8B8 PF_B8G8R8A8 PF_A2R10G10B10 PF_A2B10G10R10 PF_FLOAT16_RGB PF_FLOAT16_RGBA PF_FLOAT32_RGB PF_FLOAT32_RGBA PF_X8R8G8B8 PF_X8B8G8R8 PF_SHORT_RGBA PF_R3G3B2 PF_FLOAT16_R PF_FLOAT32_R PF_SHORT_GR PF_FLOAT16_GR PF_FLOAT32_GR PF_SHORT_RGB
15:39:50: RenderSystem capabilities
15:39:50: -------------------------
15:39:50: * Hardware generation of mipmaps: yes
15:39:50: * Texture blending: yes
15:39:50: * Anisotropic texture filtering: yes
15:39:50: * Dot product texture operation: yes
15:39:50: * Cube mapping: yes
15:39:50: * Hardware stencil buffer: yes
15:39:50: - Stencil depth: 8
15:39:50: - Two sided stencil support: yes
15:39:50: - Wrap stencil values: yes
15:39:50: * Hardware vertex / index buffers: yes
15:39:50: * Vertex programs: yes
15:39:50: - Max vertex program version: arbvp1
15:39:50: * Fragment programs: yes
15:39:50: - Max fragment program version: arbfp1
15:39:50: * Texture Compression: yes
15:39:50: - DXT: yes
15:39:50: - VTC: no
15:39:50: * Scissor Rectangle: yes
15:39:50: * Hardware Occlusion Query: yes
15:39:50: * User clip planes: yes
15:39:50: * VET_UBYTE4 vertex element type: yes
15:39:50: * Infinite far plane projection: yes
15:39:50: * Hardware render-to-texture: yes
15:39:50: * Floating point textures: yes
15:39:50: * Non-power-of-two textures: no
15:39:50: * Volume textures: yes
15:39:50: * Multiple Render Targets: 4
15:39:50: * Point Sprites: yes
15:39:50: * Extended point parameters: yes
15:39:50: * Max Point Size: 8192
15:39:50: * Vertex texture fetch: no
15:39:50: Registering ResourceManager for type Texture
15:39:50: Using FSAA from GL_ARB_multisample extension.
15:39:50: ResourceBackgroundQueue - threading disabled
15:39:50: Particle Renderer Type 'billboard' registered
15:39:50: Creating viewport on target '', rendering from camera 'Camera', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
15:39:50: Parsing scripts for resource group Autodetect
15:39:50: Finished parsing scripts for resource group Autodetect
15:39:50: Parsing scripts for resource group Bootstrap
15:39:50: Parsing script OgreCore.material
15:39:50: Parsing script OgreProfiler.material
15:39:50: Parsing script Ogre.fontdef
15:39:50: Parsing script OgreDebugPanel.overlay
15:39:50: Texture: New_Ogre_Border_Center.png: Loading 1 faces(PF_A8R8G8B8,256x128x1) with 8 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,256x128x1.
15:39:50: Texture: New_Ogre_Border.png: Loading 1 faces(PF_A8R8G8B8,256x256x1) with 8 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,256x256x1.
15:39:50: Texture: New_Ogre_Border_Break.png: Loading 1 faces(PF_A8R8G8B8,32x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x32x1.
15:39:50: Font BlueHighwayusing texture size 512x512
15:39:50: Info: Freetype returned null for character 127 in font BlueHighway
15:39:50: Info: Freetype returned null for character 128 in font BlueHighway
15:39:50: Info: Freetype returned null for character 129 in font BlueHighway
15:39:50: Info: Freetype returned null for character 130 in font BlueHighway
15:39:50: Info: Freetype returned null for character 131 in font BlueHighway
15:39:50: Info: Freetype returned null for character 132 in font BlueHighway
15:39:50: Info: Freetype returned null for character 133 in font BlueHighway
15:39:50: Info: Freetype returned null for character 134 in font BlueHighway
15:39:50: Info: Freetype returned null for character 135 in font BlueHighway
15:39:50: Info: Freetype returned null for character 136 in font BlueHighway
15:39:50: Info: Freetype returned null for character 137 in font BlueHighway
15:39:50: Info: Freetype returned null for character 138 in font BlueHighway
15:39:50: Info: Freetype returned null for character 139 in font BlueHighway
15:39:50: Info: Freetype returned null for character 140 in font BlueHighway
15:39:50: Info: Freetype returned null for character 141 in font BlueHighway
15:39:50: Info: Freetype returned null for character 142 in font BlueHighway
15:39:50: Info: Freetype returned null for character 143 in font BlueHighway
15:39:50: Info: Freetype returned null for character 144 in font BlueHighway
15:39:50: Info: Freetype returned null for character 145 in font BlueHighway
15:39:50: Info: Freetype returned null for character 146 in font BlueHighway
15:39:50: Info: Freetype returned null for character 147 in font BlueHighway
15:39:50: Info: Freetype returned null for character 148 in font BlueHighway
15:39:50: Info: Freetype returned null for character 149 in font BlueHighway
15:39:50: Info: Freetype returned null for character 150 in font BlueHighway
15:39:50: Info: Freetype returned null for character 151 in font BlueHighway
15:39:50: Info: Freetype returned null for character 152 in font BlueHighway
15:39:50: Info: Freetype returned null for character 153 in font BlueHighway
15:39:50: Info: Freetype returned null for character 154 in font BlueHighway
15:39:50: Info: Freetype returned null for character 155 in font BlueHighway
15:39:50: Info: Freetype returned null for character 156 in font BlueHighway
15:39:50: Info: Freetype returned null for character 157 in font BlueHighway
15:39:50: Info: Freetype returned null for character 158 in font BlueHighway
15:39:50: Info: Freetype returned null for character 159 in font BlueHighway
15:39:50: Info: Freetype returned null for character 160 in font BlueHighway
15:39:50: Texture: BlueHighwayTexture: Loading 1 faces(PF_BYTE_LA,512x512x1) with hardware generated mipmaps from Image. Internal format is PF_BYTE_LA,512x512x1.
15:39:51: Texture: ogretext.png: Loading 1 faces(PF_A8R8G8B8,256x128x1) with 8 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,256x128x1.
15:39:51: Parsing script OgreLoadingPanel.overlay
15:39:51: Finished parsing scripts for resource group Bootstrap
15:39:51: Parsing scripts for resource group General
15:39:51: Parsing script BasicObject.program
15:39:51: Parsing script Decal.program
15:39:51: Parsing script ObjectScatter.program
15:39:51: Parsing script SPT2_4_Channel_Splat.program
15:39:51: Parsing script SPT2_ApplyLightmap.program
15:39:51: Parsing script SPT2_Low.program
15:39:51: Parsing script SPT2_Medium.program
15:39:51: Parsing script SPT2_Shadow.program
15:39:51: Parsing script Quad.program
15:39:51: Parsing script BasicObject.material
15:39:51: Parsing script ObjectScatter.material
15:39:51: Parsing script SPT2_4_Channel_Splat.material
15:39:51: Parsing script SPT2_Mat.material
15:39:51: Parsing script Lightmap.material
15:39:51: Parsing script Ogre.material
15:39:51: Parsing script ScatteredOgre.material
15:39:51: Parsing script SkySphere.material
15:39:51: Parsing script SPT2_Highlands.material
15:39:51: Finished parsing scripts for resource group General
15:39:51: Parsing scripts for resource group Internal
15:39:51: Finished parsing scripts for resource group Internal
15:39:51: Mesh: Loading cube.mesh.
15:39:51: Can't assign material 1 - Default to SubEntity of SPT_SkyBox_Tex_Ent because this Material does not exist. Have you forgotten to define it in a .material script?
15:39:51: WARNING: Texture instance 'SPT_SkyBox_Tex' was defined as manually loaded, but no manual loader was provided. This Resource will be lost if it has to be reloaded.
15:39:51: Creating viewport on target 'rtt/SPT_Lightmap_RTT/61773984', rendering from camera 'SPT_Lightmap_Camera', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
15:39:51: WARNING: material Lightmapper has no supportable Techniques and will be blank. Explanation:
Pass 0: Fragment program Lightmap_PS3 cannot be used - not supported.
Pass 0: Fragment program Lightmap_PS2 cannot be used - not supported.

15:39:51: WARNING: material Lightmapper has no supportable Techniques and will be blank. Explanation:
Pass 0: Fragment program Lightmap_PS3 cannot be used - not supported.
Pass 0: Fragment program Lightmap_PS2 cannot be used - not supported.

15:39:51: CompositorChain: Compositor SPT_Comp has no supported techniques.
if I launch visual studio debugger when it crash, this is the error:

Code: Select all

Unhandled exception at 0x7814745d (msvcr80.dll) in Editor.exe: 0xC0000005: Access violation reading location 0x0e171000.
can you help me?
-- N3tsk4t3 --
User avatar
HexiDave
OGRE Expert User
OGRE Expert User
Posts: 1538
Joined: Sat Jan 14, 2006 8:00 pm
x 1

Post by HexiDave »

You're really gonna wanna shift over to using Editable Terrain Manager (http://www.ogre3d.org/phpBB2addons/view ... 9fefdafb17) - I'm scrapping work on this project. This is getting way out of hand and I'll never get to work on my own game at this rate - 99% of my programming time is spent trying to make this thing flexible to the point of impossibility, so I'm calling it quits.

To those of you already heavily into their projects with SPT in them, not to worry - I'll be happy to help you out and make upgrades and such, but I can't progress further into this without it ballooning into an even bigger mess. I had a goal in mind when building this for my game, however this barely resembles it from all the modifications I made to conform to what I thought other people would need.


Regardless, the source code is up for grabs under Artistic License v2, so feel free to use it as reference code or a base for your own project. I'll also put up some shader code I was working on for the next upgrade in the last commit later tonight - it's pretty monstrous and I just don't have the time to make it dance the way I wanted.
User avatar
netskate
Greenskin
Posts: 120
Joined: Fri Sep 05, 2008 3:10 pm

Post by netskate »

thanks for your answer. I'm looking for a "possible" paged scene manager.

I had to cover an area of 18x18 km and I don't know if performance of default terrain manager (combined with paged geometry) are good enough.

I'm watching also plsm2 but, seems to be rarely updated.
Into my game I need a forest and a small city with house, harbour and other different kind of models.

what scene manager do you suggest to me?
My thought was of a paged terrain manager, for the entire scene, forest and small pirate city.

sorry for my english.
-- N3tsk4t3 --
User avatar
Jabberwocky
OGRE Moderator
OGRE Moderator
Posts: 2819
Joined: Mon Mar 05, 2007 11:17 pm
Location: Canada
x 218

Post by Jabberwocky »

HexiDave wrote: - I'm scrapping work on this project. This is getting way out of hand and I'll never get to work on my own game at this rate - 99% of my programming time is spent trying to make this thing flexible to the point of impossibility, so I'm calling it quits.
While watching this thread, I kinda had the feeling that simple paged terrain was becoming not so simple .

I think you should have stuck to your guns and just built a heightmap-based terrain scene manager (like Ogre's built-in one) with solid paging support and nothing else. From an observer's point of view, SPT evolved to try to be all things to all people, and began to offer the same thing as PLSM - a highly configurable terran system at the expense of significant complexity. I'd love to see a "simple' version of SPT packaged up as an official plugin, but that's just my opinion.
Last edited by Jabberwocky on Sat Sep 06, 2008 8:14 pm, edited 1 time in total.
Image