Horde3D

Next-Generation Graphics Engine
It is currently 22.12.2024, 07:44

All times are UTC + 1 hour




Post new topic Reply to topic  [ 24 posts ]  Go to page Previous  1, 2
Author Message
 Post subject:
PostPosted: 22.11.2006, 21:51 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
a-sennov wrote:
About dual licensing - how do You feel about the MPL ? It protects the authors and at the same time allows whatever usage of the code.


Generally I wanted to continue releasing the engine exclusively under the LGPL since I think that is the fairest tradeoff for developpers and "users". But if that should really be a problem for your company and since you seem to be a committed contributer to our community :) we could think about a special arrangement that enables your company to use the code under another license, e.g. the MPL. But let's see what the final decision will be.

Concerning the occlusion culling, I have used a simpler form than the one shown in the paper. It was described in GPU Gems by a programmer of Croteam. Performance is ok although sometimes you have some slight popping since the occlusion is always calculated for the previous frame. One great advantage is that it is not necessary to distinguish between occluders and occludees. Probably the technique described in the paper to mention is a bit better performance-wise.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: 28.11.2006, 09:54 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
a-sennov wrote:
It will be OK when viewed from the distance but in close-up scenes faces will be looking "flat" without normal adjustments. One approach is to have normal map for each morph and blend them too, but that would limit the number of simultaneous morphs.


The tangent space basis is also morphed now. I'm using simple linear interpolation with renormalization. Everything seems to be working now so Horde3D 0.7.0 is close to its release. :)


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: 01.12.2006, 23:20 
Offline

Joined: 01.12.2006, 22:48
Posts: 2
Hello, i'm here thanks to gamedev.net. It was the facial animation support what brought me here... but i have donwloaded the sdk and haven't found a demo :(. So, are you going to include one in the next subversion (0.7.1)?

Another thing that i'm interested is how you perform Hidden Surface Removal. In the features and in this thread you talk about Occlusion culling. I'm interested in learning HW Occlusion culling. More or less I understand the concepts... But i have some questions. In the engine's features you say:

"Occlusion culling for painless performance boosts without any need for precomputation or artist intervention like portal placement"

So, how you do choose the occluders? You make a descomposition of the scene/map level or what? Uses CSG?

And the question that i'm more interested in: how do you perform occlusion culling in indoors levels (for example quake4)? It's your algorithm as efficient as using portals or pvs? Do you make a space partion of the level?
And what about mixing indoors/outdoors levels?

So, can you give me a more detailed explanation of the occlusion algorithm that Horde3D uses?

Thanks a lot, first for your great engine and second for reading this message ;)


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: 01.12.2006, 23:27 
Offline

Joined: 01.12.2006, 21:08
Posts: 2
Location: Slovakia
can i run horde 3d without opengl2.0?


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: 02.12.2006, 17:59 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
@gantzer:

I have a working lip synchronization demo but it uses content from my university, so it is difficult to release it. But actually simple facial animation isn't that hard coding-wise. You need good morph targets for your models and all you have to do is setting the morph weight factor in the engine.

I have an occlusion culling implementation but I haven't included it yet in the public release. That's the only feature from the list that is still missing (I also mention this in the readme file).
I am using occlusion culling as described in an article in GPU Gems I. The trick is to use occlusion queries from the previous frame. If an object was visible in the last frame you draw it as expected. If it wasn't visible you just draw a box that has usually less polygons than the actual object to check when it is visible again. Using this technique you don't have to distinguish between occluders and occludees. Get the article for a good explanation.
Anatoly has also proposed another occulsion culling technique in this thread that looks quite promising.

I don't think that occlusion culling is better than portal culling for indoor scenes, at least not with the current implementation. But Horde3D is rather intended for outdoor scenarios like city scenes with large crowds than for pure indoor scenes as in Doom3. That's why I opted for occlusion culling.

Quote:
can i run horde 3d without opengl2.0?


No unfortunately that's not possible. Horde3D is entirely based on shaders so it wouldn't make much sense to have it running on legacy graphics hardware. But that's also the way that all modern commercial engines like Unreal 3 are going. :)


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: 02.12.2006, 18:37 
Offline

Joined: 01.12.2006, 21:08
Posts: 2
Location: Slovakia
marciano wrote:
Quote:
can i run horde 3d without opengl2.0?


No unfortunately that's not possible. Horde3D is entirely based on shaders so it wouldn't make much sense to have it running on legacy graphics hardware. But that's also the way that all modern commercial engines like Unreal 3 are going. :)


thats a pitty, on my notebook there is only radeon 7500 :(
so best luck with horde!


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: 03.12.2006, 18:51 
Offline

Joined: 01.12.2006, 22:48
Posts: 2
Hi marciano

I have read the article (It happens that the book is in my faculty's library). I haven't found the answer to my question in it because it's an article explaining the basics of occlusion culling which is something that i have read in other books. So, nothing new here.

Maybe, I didn't explained myself well in my previous post. As far as I understand, occlusion culling works with "objects" and every of those objects have a bounding box. And there it's where problems begin. Why? Well, let me explain... For exteriors, it's more or less easy to make occluders and place them by hand (by the artist) because you can make a low-poly mesh of every object (tree, buildings, etc...) and take it as an occluder. But for interiors... that's another story. If artists have to make an occluder of every wall of every room... it's too much time consuming. And the worst thing, what you can considerer an "object" in an indoor level? And, what about the bounding box of that "object"? I think that the answer is that the "object" is a room/cell each one with its bounding box. And here we have that we need a some kind of portal system mixed with occlussion culling. It would be possible to use CSG to separate each room to associate a bounding box and make the occluders corresponding to that bounding box (of course you would have to take care of the portals).

So, as I can not conceive a game without indoors levels (yes, you can have outdoors levels but interiors are essential, take a look at in Half-Life 2) I have curiosity to see how you are going to implement occlusion culling for indoors and, of course, exteriors.

Thanks.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: 04.12.2006, 07:18 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
I think the article (which is written by a Croteam member) goes beyond a simple explanation of occlusion culling. It shows a useful way to apply it. When you do everything as described you don't need to define special occluders. Each object is automatically an occluder. So you don't need a low poly model for your tree (although a tree is probably in general no good example for an occluder). That means that you also won't have to make special occlusion models for you indoor models. I could imagine that one object is a room/cell of your map. So occlusion culling will essentially be the same as portal culling here since other rooms are only visible when you look through a door.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: 06.12.2006, 01:10 
Offline

Joined: 08.11.2006, 03:10
Posts: 384
Location: Australia
gantzer, Horde3D is a renderer (graphics engine) not a full game engine.

Because Horde is just one component that goes into making a full game, it doesnt implement its own map format (CSG/BSP algorithms etc...). This is left up to the application that uses Horde.

This occlusion culling isnt a replacement for portals and PVS systems - it can be used to complement it.

For example, lets say you are using a PVS system. Your game engine calculates a PVS of all rooms to be rendered, updates some draw/no-draw flags in the render tree to reflect your PVS, then objects within those rooms (and the rooms themselves!) could use HW occlusion culling to boost rendering performance.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 24 posts ]  Go to page Previous  1, 2

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group