Seriuos batch page and Impostors problem.

karoooek

27-06-2009 10:40:17

Hey,
i've just added paged geometry and some trees to my project.
code compiles and runs, but not correctly at all.

The batch page LOD shows, but the textures on my trees and bushes flicker as i move camera? sometimes there is a leave, sometimes it disappear.
Impostors are invisible at all :(, but i know something gets rendered - when i increase range of impostorPage the FPS gets much lower...

i suppose there is some problem with rendering textures, and generating mipmaps...

i'm trying to run it under linux (opensuse), ogre1.6, radeon card.

Fish

27-06-2009 23:06:22

Are you able to compile and run the demos? That would be the first place to start. If you are using custom trees you'll need to compare the tree materials that come with PG to the materials that you are using for your trees.

Do the trees flicker green perchance?

-Fish

karoooek

27-06-2009 23:40:30

I did compile the examples, they look the same way bad :(
I'm using trees from examples.
That's why i think that problem lies somewhere in my system - ati radeon (rather not), ogre(maybe?), linux (quite probable... :( ).

I also compiled demo on windows (the same computer) and averything looks cool 8)...

Fish

28-06-2009 02:49:21

It could be a Cg issue with the ATI card. Try changing the line 55 in BatchPage.cpp from

if (caps->hasCapability(RSC_VERTEX_PROGRAM))
shadersSupported = true;

to
if (caps->hasCapability(RSC_VERTEX_PROGRAM))
shadersSupported = false;


That should force fixed function and see if that does anything for you. If it solves the flickering then it is probably a Cg bug, if not then it is probably the Linux driver for your card.

-Fish

karoooek

28-06-2009 09:03:26

I don't know how did youg figure it out, but it helped a lot ;-D.
However, impostors are still invisible... Any ideas?

Fish

28-06-2009 14:03:12

Ok...so it's a Cg bug. We had the same problem. You can also try converting the Cg/HLSL shader to native GLSL, I posted a patch in this forum a couple days ago. Try that and see if it helps. ATI cards seem to have issues with linking a GLSL Vertex shader with the fixed function fragment pipeline so you may need to complete the shader pipeline by adding a GLSL Fragment shader.

I don't use imposters because they don't work with the PCZSM. Do the imposters work as expected in the demo app?

-Fish

karoooek

28-06-2009 18:54:23

No, they don't.
I've looked through PagedGeometry code and found HLSL/Cg shader in StaticBillboardSet.cpp at line 82. I believe its responsible for drawing impostors?
How do I change it to GLSL? do I have to change something in shader object? Or it's enough, if i change the shader code to GLSL?

Fish

28-06-2009 20:36:32

It doesn't look like impostors use the StaticBillboardSet, but I could be wrong I just took a quick look. It looks like impostors use fixed function. Converting a shader from HLSL/Cg to GLSL requires some knowledge of shader syntax for both. Cg can be learned about here. GLSL can be learned about here. I've also found the Red Book to be invaluable.

-Fish

tdev

29-06-2009 10:54:00

i added a feature to disable shaders by function call, see PagedGeometry::setShadersEnabled
merged your patch for the GLSL code.
also, the imposters are working over here perfectly :-/

grigi

24-11-2009 04:58:00

Hi, I also have an issue with ImpostorPage. My issue is more severe, with the end result of crashing.
If I disable Impostors, everything else works perfectly.

I am running forests head from the ogreaddons svn.
I have built everything from sources (latest stable version of Ogre 1.6.4 and minimal dependencies). Not built with Cg.
Running a 32-bit build on Gentoo Linux, Code2 processor and Nvidia Graphics card.

So, after looking at the code I noticed that ImpostorPage uses StaticBillboardSet, and that StaticBillboardSet is the only one where the HLSL/Cg is not ported to GLSL.
I then decided to disable shaders as per tdev's suggestion, and it doesn't then build the shaders, but the crash is the same.

My Log looks like this: (Running modified version of Example2.cpp)
Creating resource group General
Creating resource group Internal
Creating resource group Autodetect
SceneManagerFactory for type 'DefaultSceneManager' registered.
Registering ResourceManager for type Material
Registering ResourceManager for type Mesh
Registering ResourceManager for type Skeleton
MovableObjectFactory for type 'ParticleSystem' registered.
OverlayElementFactory for type Panel registered.
OverlayElementFactory for type BorderPanel registered.
OverlayElementFactory for type TextArea registered.
Registering ResourceManager for type Font
ArchiveFactory for archive type FileSystem registered.
ArchiveFactory for archive type Zip registered.
FreeImage version: 3.13.0
This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
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,pfm,pct,pict,pic,bay,bmq,cr2,crw,cs1,dc2,dcr,dng,erf,fff,hdr,k25,kdc,mdc,mos,mrw,nef,orf,pef,pxn,raf,raw,rdc,sr2,srf,arw,3fr,cine,ia,kc2,mef,nrw,qtk,rw2,sti,drf,dsc,ptx,cap,iiq,rwz
DDS codec registering
Registering ResourceManager for type HighLevelGpuProgram
Registering ResourceManager for type Compositor
MovableObjectFactory for type 'Entity' registered.
MovableObjectFactory for type 'Light' registered.
MovableObjectFactory for type 'BillboardSet' registered.
MovableObjectFactory for type 'ManualObject' registered.
MovableObjectFactory for type 'BillboardChain' registered.
MovableObjectFactory for type 'RibbonTrail' registered.
*-*-* OGRE Initialising
*-*-* Version 1.6.4 (Shoggoth)
Loading library /home/grigi/e8/lib/lib/OGRE/Plugin_OctreeSceneManager
Installing plugin: Octree & Terrain Scene Manager
Plugin successfully installed
Loading library /home/grigi/e8/lib/lib/OGRE/RenderSystem_GL
Installing plugin: GL RenderSystem
OpenGL Rendering Subsystem created.
Plugin successfully installed
CPU Identifier & Features
-------------------------
* CPU ID: GenuineIntel: Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz
* SSE: yes
* SSE2: yes
* SSE3: yes
* MMX: yes
* MMXEXT: yes
* 3DNOW: no
* 3DNOWEXT: no
* CMOV: yes
* TSC: yes
* FPU: yes
* PRO: yes
* HT: no
-------------------------
******************************
*** Starting GLX Subsystem ***
******************************
GLRenderSystem::_createRenderWindow "PagedGeometry Example 2 - TreeLoader2D", 1024x768 windowed miscParams: FSAA=0 displayFrequency=50 MHz gamma=No vsync=No
GLXWindow::create used FBConfigID = 261
GL_VERSION = 3.2.0 NVIDIA 190.42
GL_VENDOR = NVIDIA Corporation
GL_RENDERER = Quadro FX 770M/PCI/SSE2
GL_EXTENSIONS = GL_ARB_color_buffer_float GL_ARB_compatibility GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_fragment_coord_conventions GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_geometry_shader4 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_map_buffer_range 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_provoking_vertex GL_ARB_seamless_cube_map GL_ARB_shader_objects GL_ARB_shading_language_100 GL_ARB_shadow GL_ARB_sync GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object GL_ARB_texture_compression GL_ARB_texture_compression_rgtc 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_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_texture_float GL_ATI_texture_mirror_once GL_S3_s3tc GL_EXT_texture_env_add GL_EXT_abgr GL_EXT_bgra GL_EXT_bindable_uniform GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_compiled_vertex_array GL_EXT_Cg_shader GL_EXT_depth_bounds_test GL_EXT_direct_state_access GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXTX_framebuffer_mixed_formats GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_pixel_buffer_object GL_EXT_point_parameters GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_shader_objects GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_buffer_object GL_EXT_texture_compression_latc GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_shared_exponent GL_EXT_texture_sRGB GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_vertex_array GL_EXT_vertex_array_bgra GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_KTX_buffer_region GL_NV_blend_square GL_NV_conditional_render GL_NV_copy_depth_to_color GL_NV_copy_image GL_NV_depth_buffer_float GL_NV_depth_clamp GL_NV_explicit_multisample GL_NV_fence GL_NV_float_buffer GL_NV_fog_distance GL_NV_fragment_program GL_NV_fragment_program_option GL_NV_fragment_program2 GL_NV_framebuffer_multisample_coverage GL_NV_geometry_shader4 GL_NV_gpu_program4 GL_NV_half_float GL_NV_light_max_exponent GL_NV_multisample_coverage GL_NV_multisample_filter_hint GL_NV_occlusion_query GL_NV_packed_depth_stencil GL_NV_parameter_buffer_object GL_NV_parameter_buffer_object2 GL_NV_pixel_data_range GL_NV_point_sprite GL_NV_primitive_restart GL_NV_register_combiners GL_NV_register_combiners2 GL_NV_shader_buffer_load GL_NV_texgen_reflection GL_NV_texture_barrier GL_NV_texture_compression_vtc GL_NV_texture_env_combine4 GL_NV_texture_expand_normal GL_NV_texture_rectangle GL_NV_texture_shader GL_NV_texture_shader2 GL_NV_texture_shader3 GL_NV_transform_feedback GL_NV_vertex_array_range GL_NV_vertex_array_range2 GL_NV_vertex_buffer_unified_memory GL_NV_vertex_program GL_NV_vertex_program1_1 GL_NV_vertex_program2 GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_NVX_conditional_render GL_SGIS_generate_mipmap GL_SGIS_texture_lod GL_SGIX_depth_texture GL_SGIX_shadow GL_SUN_slice_accum
Supported GLX extensions: GLX_EXT_visual_info GLX_EXT_visual_rating GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGI_video_sync GLX_SGI_swap_control GLX_EXT_texture_from_pixmap GLX_ARB_create_context GLX_ARB_create_context_profile GLX_ARB_multisample GLX_NV_float_buffer GLX_ARB_fbconfig_float GLX_NV_swap_group GLX_EXT_framebuffer_sRGB GLX_NV_multisample_coverage GLX_NV_copy_image GLX_NV_video_capture GLX_ARB_get_proc_address
***************************
*** GL Renderer Started ***
***************************
Registering ResourceManager for type GpuProgram
GLSL support detected
GL: Using GL_EXT_framebuffer_object for rendering to textures (best)
FBO PF_UNKNOWN depth/stencil support: D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_L8 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_A8 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_A4L4 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_BYTE_LA depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_R5G6B5 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_B5G6R5 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_A1R5G5B5 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_R8G8B8 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_B8G8R8 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_A8R8G8B8 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_B8G8R8A8 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_A2R10G10B10 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_A2B10G10R10 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_FLOAT16_RGB depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_FLOAT16_RGBA depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_FLOAT32_RGB depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_FLOAT32_RGBA depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_X8R8G8B8 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_X8B8G8R8 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_SHORT_RGBA depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_R3G3B2 depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_FLOAT16_R depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_FLOAT32_R depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_FLOAT16_GR depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_FLOAT32_GR depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
FBO PF_SHORT_RGB depth/stencil support: D0S0 D16S0 D24S0 D32S0 Packed-D24S8
[GL] : Valid FBO targets PF_UNKNOWN PF_L8 PF_A8 PF_A4L4 PF_BYTE_LA PF_R5G6B5 PF_B5G6R5 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_FLOAT16_GR PF_FLOAT32_GR PF_SHORT_RGB
RenderSystem capabilities
-------------------------
RenderSystem Name: OpenGL Rendering Subsystem
GPU Vendor: nvidia
Device Name: Quadro FX 770M/PCI/SSE2
Driver Version: 3.2.0.0
* Fixed function pipeline: yes
* Hardware generation of mipmaps: yes
* Texture blending: yes
* Anisotropic texture filtering: yes
* Dot product texture operation: yes
* Cube mapping: yes
* Hardware stencil buffer: yes
- Stencil depth: 8
- Two sided stencil support: yes
- Wrap stencil values: yes
* Hardware vertex / index buffers: yes
* Vertex programs: yes
* Fragment programs: yes
* Geometry programs: yes
* Supported Shader Profiles: arbfp1 arbvp1 fp20 fp30 fp40 glsl gp4gp gpu_gp nvgp4 vp30 vp40
* Texture Compression: yes
- DXT: yes
- VTC: yes
* Scissor Rectangle: yes
* Hardware Occlusion Query: yes
* User clip planes: yes
* VET_UBYTE4 vertex element type: yes
* Infinite far plane projection: yes
* Hardware render-to-texture: yes
* Floating point textures: yes
* Non-power-of-two textures: yes
* Volume textures: yes
* Multiple Render Targets: 8
- With different bit depths: yes
* Point Sprites: yes
* Extended point parameters: yes
* Max Point Size: 63.375
* Vertex texture fetch: yes
- Max vertex textures: 32
- Vertex textures shared: yes
* Render to Vertex Buffer : yes
* GL 1.5 without VBO workaround: no
* Frame Buffer objects: yes
* Frame Buffer objects (ARB extension): no
* Frame Buffer objects (ATI extension): no
* PBuffer suppport: no
* GL 1.5 without HW-occlusion workaround: no
Registering ResourceManager for type Texture
ResourceBackgroundQueue - threading disabled
Particle Renderer Type 'billboard' registered
SceneManagerFactory for type 'OctreeSceneManager' registered.
SceneManagerFactory for type 'TerrainSceneManager' registered.
TerrainSceneManager: Registered a new PageSource for type Heightmap
Added resource location '../../media/trees' of type 'FileSystem' to resource group 'General'
Added resource location '../../media/terrains' of type 'FileSystem' to resource group 'General'
Added resource location '../../media/grass' of type 'FileSystem' to resource group 'General'
Parsing scripts for resource group Autodetect
Finished parsing scripts for resource group Autodetect
Parsing scripts for resource group General
Parsing script tree.material
Parsing script grass.material
Finished parsing scripts for resource group General
Parsing scripts for resource group Internal
Finished parsing scripts for resource group Internal
TerrainSceneManager: Activated PageSource Heightmap
Texture: terrain_texture.jpg: Loading 1 faces(PF_R8G8B8,512x512x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,512x512x1.
Texture: terrain_detail.jpg: Loading 1 faces(PF_R8G8B8,256x256x1) with 8 generated mipmaps from Image. Internal format is PF_X8R8G8B8,256x256x1.
Creating resource group Impostors
Mesh: Loading tree2.mesh.
WARNING: tree2.mesh is an older format ([MeshSerializer_v1.30]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool.
Texture: wood7.jpg: Loading 1 faces(PF_R8G8B8,600x600x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,600x600x1.
Texture: Leaves.png: Loading 1 faces(PF_A8R8G8B8,64x64x1) with 6 generated mipmaps from Image. Internal format is PF_A8R8G8B8,64x64x1.
GLSL compiling: BatchPage_lit_2_vp
GLSL compiled : BatchPage_lit_2_vp
GLSL compiling: BatchPage_fade_lit_2_vp
GLSL compiled : BatchPage_fade_lit_2_vp
Creating resource group BinFolder
Added resource location '' of type 'FileSystem' to resource group 'BinFolder'
Texture: Impostor.HKSHDSOJOKUYFPGCRGINXONWCOTCIZTF.128.png: Loading 1 faces(PF_A8R8G8B8,1024x512x1) with 10 generated mipmaps from Image. Internal format is PF_A8R8G8B8,1024x512x1.
terminate called after throwing an instance of 'Ogre::InvalidParametersException'
what(): OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgram.cpp (line 1087)
Aborted


Without shaders: (tail end of log)
Creating resource group Impostors
Mesh: Loading tree2.mesh.
WARNING: tree2.mesh is an older format ([MeshSerializer_v1.30]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool.
Texture: wood7.jpg: Loading 1 faces(PF_R8G8B8,600x600x1) with 9 generated mipmaps from Image. Internal format is PF_X8R8G8B8,600x600x1.
Texture: Leaves.png: Loading 1 faces(PF_A8R8G8B8,64x64x1) with 6 generated mipmaps from Image. Internal format is PF_A8R8G8B8,64x64x1.
Creating resource group BinFolder
Added resource location '' of type 'FileSystem' to resource group 'BinFolder'
Texture: Impostor.HKSHDSOJOKUYFPGCRGINXONWCOTCIZTF.256.png: Loading 1 faces(PF_A8R8G8B8,1024x512x1) with 10 generated mipmaps from Image. Internal format is PF_A8R8G8B8,1024x512x1.
terminate called after throwing an instance of 'Ogre::InvalidParametersException'
what(): OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgram.cpp (line 1087)
Aborted


Any suggestions as to what could be wrong?

Thanks in advance

Fish

25-11-2009 18:15:27

It looks like it is still trying to initialize a named constant that would be used in a shader. Try porting the StaticBillboardSet shader to GLSL.

-Fish

grigi

26-11-2009 13:41:53

Hmm, thanks for the insight fish.
I guess I'll have to learn GLSL now :P

grigi

26-11-2009 19:57:10

Thanks, so I identified 2 issues:

The mouse movement seems quite erratic in Linux.
Replacing this code:
//Get mouse movement
const OIS::MouseState &ms = mouse->getMouseState();

With this:
//Get mouse movement
unsigned int width, height, depth;
int top, left;
window->getMetrics(width, height, depth, left, top);
const OIS::MouseState &ms = mouse->getMouseState();
ms.width = width;
ms.height = height;

Makes mouse movement smooth. (The code I got from the OIS manual, I'm not entierly sure WHY though)

Second thing is that by forcing the StaticBillboardSet.renderMethod to BB_METHOD_COMPATIBLE resolves the crashing issue.
It indeed seems to attempt to use the emtpy, uncompiled shader code, even when you "disable" shaders by using PagedGeometry::setShadersEnabled.
I'm assuming that this is a bug in the PagedGeometry::setShadersEnabled functionality, that doesn't exclude shaders completely when using impostors.