Skip to main content

History: Real-time Impostoring

Source of version: 4 (current)

Copy to clipboard
            {img src="img/wiki_up/Real-time_Impostoring.png" alt="Real-time_Impostoring.png" imalign="right"}
__Author__: Paul '((User:Tuan Kuranes|Tuan Kuranes))' Cheyrou-Lagrèze
__Project__: External Project ([http://tuan.kuranes.free.fr/Ogre.html#Impostor|Tuan Kuranes's site])
__Type__: OGRE Library
__Supported Platforms__: Linux, Windows
__Documentation__: [http://tuan.kuranes.free.fr/Ogre.html#Impostor|Tuan Kuranes's site]
__Sources__: [http://tuan.kuranes.free.fr/Impostors.zip|Tuan Kuranes's site]
__Binaries__: [http://tuan.kuranes.free.fr/ImpostorDemo.zip|Tuan Kuranes's site]
__Status and bug reports__: [http://www.ogre3d.org/phpBB2/viewtopic.php?p=121198#121198|OGRE Forums Thread]

---
Ogre implementation of dynamic impostoring + texture Packing
[http://www.gamasutra.com/features/20060105/davis_01.shtml]

Little changelog
- changed exact screen-space LOD to distance LOD + screen space (much, much faster). 
(Need Tweaking or Per Object pass to determine best LOD...)

Todo :

- Handle multiple camera, camera reflection, camera FOV, etc...
- Find a way to make the alpha transition works in all case (including on Movable Objects with shaders) and make use of alpha_rejection to prevent gray borders ?
- Adapt alpha rejection to mesh displayed (should use lowest alpha reject or user specified ?)
- Better handles of camera updates (detect roll and yaw)
- Load Balancing Imposter Regeneration (trying to make most update in the minimal amount of RTT at a time.)
- Normal mapped impostor (depth map capture=> normal map+shader or/and billboard being depth sprite)

- Handles non-square impostors (need to change texturespace quadtree to something else.) or even support for arbitrary texture resolutions for impostors. or use the bsp tree texture packing using in "billboardcloud" google soc project.
- Does not account for changes in orientation of the 3D object, for now user has to manually call 'uniqueimpostorhandler->makeimpostor().' Same for Lighting and object animation changes.
- Use max render texture size and max texture unit (and make billoardset supports multitexture)
- Update the RTT once instead of per Texture Space, but that means one camera and viewport by TextureSpace (could be huge fps boost whe updating lots of impostors, but at large memory price. or not...)

- a forest Demo using trees...

---
Alias: (alias(Real-time_Impostoring))