Z-Culling, Z-buffer, indoor portal renderes etc. speed up
Z-Culling, Z-buffer, indoor portal renderes etc. speed up
well i wasted quite a lot of time, i had a look back at the 03 tutorial that i never did. and i found out that apparently i can make my custom scene node indoor portal renderer. Well i spent two hours searching over the internet and i found nothing on how to do that. As far as i am concerned a portal renderer is e.g. placed inside (windows, doors etc.) to save time by only rendering the things visible through that door. And I have found nothing. Apart from a dead link in the news archive to some guy who made something using irrlicht and it had portal rendering, there was a link to a patch for use with irrlicht. While conducting my search i got to know that apparently irrlicht has trouble supporting most of the occlusion techniques. I hope im soo tired that i missed something, but really please give me any ideas of how to implement any of the occlusion techniques (look title) that could improve the framerate. Any suggestions are welcome and links to tutorials and code snippets for irrlicht. PLease HeLp!!!
P.S. I'm sure irrlicht occludes the polygons it cant see to some extent (Octree?) Octree is for static geometry i think, and im looking for something to use with dynamic.
P.P.S. should i switch to lightfeather maybe? honestly please, i read that they support Z-buffer etc. including portals. Also they have multiple render targets.
P.S. I'm sure irrlicht occludes the polygons it cant see to some extent (Octree?) Octree is for static geometry i think, and im looking for something to use with dynamic.
P.P.S. should i switch to lightfeather maybe? honestly please, i read that they support Z-buffer etc. including portals. Also they have multiple render targets.
If you want to do hardware occlusion culling, you'll really need to create low poly meshes for each of your models. See this thread for an implementation. A portal based culling system would be a pain to implement because you have to store all the occlusion info in some custom format. We don't use the info from BSPs. The simplest method would be to do something like Half-Life 2 uses, just make a custom node with adjustable bounding boxes for visibility of children and use it instead of occlusion.
But before even thinking about this, what are your requirements? What type of scenes do you need?
But before even thinking about this, what are your requirements? What type of scenes do you need?
The simplest way i can think of is using empty scenenodes as portals. then arranging all other node as children of these portals so that well i can't explain it....
We're programmers. Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by renovation:tinkering,improving,planting flower beds.
ok i followed that link and the other link that was on nadro's signature, they are both almost pre 2008 so one question. Are those included in irrlicht now or not?
And im not too keen on modifying the irrlicht source (i will if i have to), and Sudi could you expand your idea a bit please? i dont get how the engine works see, so i could be worth an explanation. Meanwhile i will try to read the documentation. I cant imagine that irrlicht does not use any technique to not bother rendering the unseen sides.
Sudi according to you, what i need to do is to make my own custom scene node which is transparent??? and having other nodes as its children? Anyway how does the parent thing work???
sorry its just that i cant get my head around it, irrlicht is supposed to be a lighting fast enigine and it doesnt have occlusion?
And im not too keen on modifying the irrlicht source (i will if i have to), and Sudi could you expand your idea a bit please? i dont get how the engine works see, so i could be worth an explanation. Meanwhile i will try to read the documentation. I cant imagine that irrlicht does not use any technique to not bother rendering the unseen sides.
Sudi according to you, what i need to do is to make my own custom scene node which is transparent??? and having other nodes as its children? Anyway how does the parent thing work???
sorry its just that i cant get my head around it, irrlicht is supposed to be a lighting fast enigine and it doesnt have occlusion?
what I don't get is that you're asking for speeding up rendering with portals (or in general, too) and also asking if it's worth to use light maps !?!?! 
isn't it a little bit paradox ???
isn't it a little bit paradox ???
while(!asleep) sheep++;
IrrExtensions:
http://abusoft.g0dsoft.com
try Stendhal a MORPG written in Java
IrrExtensions:

http://abusoft.g0dsoft.com
try Stendhal a MORPG written in Java
anyway i just came across this wonderful idea, of multithreading. I create a thread to watch my postition and that thread loads nodes into the map (map is octtreed) and remove the nodes (might be bumpmaps and others) from the device that are more than 2500 units away from me indoors and 7500 outdoors (depending on visibility). Again it wouldn't check every single node but remove a whole group of them i.e. I step into a train and the trainstation gets removed.
-
hybrid
- Admin
- Posts: 14143
- Joined: Wed Apr 19, 2006 9:20 pm
- Location: Oldenburg(Oldb), Germany
- Contact:
Better search for the topics you want to use first, in order to get the full thing. You won't be able to multithread Irrlicht applications that easy. Better create your app without those optimizations in mind. You can add them later on, once your app is running, just to slow.
Lightmaps are often not affected by the dynamic lights, correct. But if you have a dynamic light in the proper position, and cover it by some character or so, you'll drop some shadow onto the lit place. Thus, it will be correct, you just need to do the full stuff.
Lightmaps are often not affected by the dynamic lights, correct. But if you have a dynamic light in the proper position, and cover it by some character or so, you'll drop some shadow onto the lit place. Thus, it will be correct, you just need to do the full stuff.
i need to multithread anyway, because i want to read the level (which would take 7 mins to load) while playing a cinematic so the user doesn't get impatient. So one more question, can i have multiple scenes? Like you know when you call SceneManager->addMesh(); can you have two separate ones, because if you only have one then that mesh gets loaded into the current scene, which you might not want. If you cant, please suggest a workaround so i can load something ready for display.
If your level would take 7 minutes to load then you can't really expect it to draw in realtime. What on exactly are you doing?devsh wrote:i need to multithread anyway, because i want to read the level (which would take 7 mins to load) while playing a cinematic so the user doesn't get impatient.
Yes, you can create new scene managers.So one more question, can i have multiple scenes? Like you know when you call SceneManager->addMesh(); can you have two separate ones, because if you only have one then that mesh gets loaded into the current scene, which you might not want. If you cant, please suggest a workaround so i can load something ready for display.
No. The Z buffer is a property of the surface you're rendering into. It says how deep a pixel is.devsh wrote:Does Z-buffer work correctly with multiple cameras (view points)??
You can, but this won't work for all nodes. Best to use another scene manager.devsh wrote:will calling node->render(); only render one node?? (I have a situation when i only want to draw one billboard, so i wont use scenemanager->drawAll();
Also, if you start a new thread for each different topic we can discuss the issue in depth. Putting many topics into the same thread makes it difficult to find in a search, and new people won't join an old thread with an irrelevant subject.
About the Z-buffer, sorry i thought (and read) that it is used for not rendering the things you cannot see. What does irrlicht use to do that?
And I'm having some problems while multithreading, I'm getting segmentation errors. I tried to make everything local but I think its because of the shared Irrlichtdevice is there anything i can do about that?
And I'm having some problems while multithreading, I'm getting segmentation errors. I tried to make everything local but I think its because of the shared Irrlichtdevice is there anything i can do about that?