3D engine with soft shadows & hardware skinning?
Miscellaneous Forums/General Discussion/3D engine with soft shadows & hardware skinning?
All I want is nice fast 3D engine with soft shadows, hardware skinning and per-pixel lighting. Any ideas?
Preferably one that doesn't require the latest hardware. Might have support for hardware support for cubemaps & normal maps. Uses DirectX 8(ish). Lets you access media at a low level (ie. access to vertices/triangles/textures etc).
But basically Blitz3D with fast soft shadows and hardware skinning would be perfect. :)
I'm starting to think that something like this doesn't really exist. Prove me wrong..
Ogre?
Cobra3D the soon to be released or ION3D which will be released after Cobra3D.
Problem with Cobra3D is that you have to learn a new language. If you're used to Blitz3D the Cobra will be no problem.
Cobra3D is basically Blitz3D but with Shadows and shader support.
Amon, what does it mean soon exactly??
Soon means before Max3D. :)
I also do have some questions:
What kind of shadows?
What kind of light types can cast these shadows?
What are the min specs for the shadow implementation, any fallbacks provided?
:
:O)
god at the rate we are going the apocalypse will happen before max3d any more precise time scale :)
hey, does Cobra3D supporting this shaders??
http://www.shadersforgames.com/
I think it's better to look what is already available than what *will* be available. Any new engine
released will probably need at least a year to stabilize a bit.
I don't know any engine which has the same ease of use as the Blitz3d engine. There is always
something missing or lacking in the others. Most of the time they don't support multitexturing
(need for lightmaps) or have an awkward art pipeline or are too complicated etc. etc.
Two engines i'll certainly take a look at in the future is Leadwerks's one and Horde3D.
At the moment we (me and co.) are at bit in limbo regarding 3d engines.
ShadersforGames is Gabriels site. He programmed the shaders and I remeber him telling people that the shaders are DX only, so , won't work with Cobra which will be OGL.
I'm not sure how much of the older hardware will run it, but Panda3d by Disney using python and c++ looks interesting...
http://panda3d.org/
Horde3D: Definitely NOT backward compatible - requires a shader model 2.0 card minimum.
Panda3D: Haven't done much research on this engine, but from what I've heard it is relatively slow.
Ogre: Supports per-pixel lighting, hardware skinning, soft shadows, low-level mesh access, and much much more. However, Ogre does not support collision, physics, audio, etc. by default (you have to add in other libraries for these).
most engines that have soft texture shadows, especialy self shadowing use pixel shaders v3. And there isn't really any way to get around that unless you have fallbacks material and shadow techniques set up.
Stencil shadows are still the fastest for older hardware if your using dynamic shadows extensively. Ogre offers you many different combinations of shadow styles, both stencil, texture and shader based and works with CG, HLSL and GLSL shaders.
Hmmm i wonder why someone also is explicitly after hardware skinning, you're the second who mentioned this today.
What fits best for your needs depends on what you want to do. I found these alternatives working routes:
a) Unity if you can cope with that the IDE is OSX only (most expensive but easiest all in one solution).
b) XNA Game Studio Express (more complicate but also support for Xbox360).
c) Ogre plus this and that and ... (even more complicate)
There are dozens of upcoming engines, a lot of them are XNA based solutions or the usual suspects like Irrlicht, Virtools, Torque, blabla... were i have some or only a slight idea of but they all have in common that they didn't work for me for different reasons. I have no idea about TrueVision. Gabriel is the evangelist for that! :O)
Uh oh. If beaker is looking for a 3D engine does that mean Max3D isn't coming out anytime soon?
Excuse me while I go throw myself under a bus.
Cobra3D sounds like it won't be any good for me, if it uses OpenGL.
whats wrong with OGL?
whats wrong with OGL?
It's not very well supported on PCs relative to DX. It would be great for an engine to have both, but DX is my preference. And I'm not alone. I campaigned fairly hard for DX in BlitzMax and it happened eventually with good reason.
Panda3D is slow and not great. You are better off using my Python wrapper for the B3Dsdk.
Evak - I understand your point that most engines with soft shadows require v3 shaders, but then sswifts shadow system has soft shadows and that (or something similar) could be updated in speed if it was closer to the engine core and possibly used some lo-end shaders. Ogre does look fairly promising at least.
I don't believe any engine except Unreal Engine 3 offers dynamic soft-shadowed point lights. OGRE only allows shadowmapped spotlights because shadowmapped point lights are hard to do.
I don't believe any engine except Unreal Engine 3 offers dynamic soft-shadowed point lights.
Lots of engines have them.
OGRE only allows shadowmapped spotlights because shadowmapped point lights are hard to do.
They're not hard to do, they just require multiple ( usually 6 ) renders, which not everyone finds an acceptable cost. If what you say about Ogre is true, then it's much more likely to be because of the speed hit taken by rendering a cube rendertarget instead of a simple rendertarget as you can with spotlights.
Beaker, I think 3Impact comes closest if you'd drop soft-shadows, multitexturing (lightmaps) and accept a bit cumbersome art path.
I don't believe any engine except Unreal Engine 3 offers dynamic soft-shadowed point lights. OGRE only allows shadowmapped spotlights because shadowmapped point lights are hard to do.
As mentioned by Gab, lots of engines support this. It's been done in Truevision 3D, for example, for quite a while. It's not that advanced a lighting technique that you couldn't implement it into most renderers with too much trouble. Obviously there's the issue of dealing with the internal pipeline, but other than that it's mostly just down to algorithms that have been explained and explained and explained again, to the point that the wealth of information on the subject should allow most anyone to implement them.
Short: been done, you're wrong.
if you'd drop soft-shadows, multitexturing (lightmaps) and accept a bit cumbersome art path.
No multitexturing and a cumbersome art path? In that case is there anything that makes 3Impact desirable over the other engines mentioned here?
Lots of engines have them.
Show me.
What I meant was not that they are that hard to write, but it requires shader model 4.0 to merge some of the rendering stuff, or the framerate is unacceptable.
Show me.
As Noel slready said, TV3D is one.
Here's two more from memory :
http://www.blade3d.com/WhatisBlade3D/Shadows/tabid/65/Default.aspxhttp://www.stonetrip.com/content/view/64/132/lang,en/DevMaster lists over a hundred engines which do shadowmapping. Three was enough for me.
And Unity V2 supports self shadowing soft shadows based on shadow maps for every light type (directional, point (always hard), spot), basically needs PS2 (and proper drivers, thinking of GMA950).
I don't see a demo on the Truevision page showing point lights with shadowmaps.
The Blade3D page only does PSM. That means directional lights.
You said Unity point lights are always hard. That is because they are using stencil shadows. I know because I talked to their CEO in person a few months ago.
Show me a demo.
The only way to do it is either dual parabaloid (STALKER) which sucks because it bends the shadows if the mesh geometry is not highly tesselated, or a cubemap, which won't run well on anything other than a GEForce 8 series. DX10 allows multiple render targets and SM 4.0 allows GLSL geometry shaders, which can also be used to render to a cubemap in one draw call. There is no other way to do it on older hardware, unless you render 6 passes per point light.
It's still the same old problem of lights that don't really work. A few years ago, people saw systems like Blitz3D and thought, "okay, it supports lighting, that's done then". Then a few months later they figure out that hardware lights don't have shadows or a limited range.
Same goes for shadow maps. It's easy for someone to say they support shadow maps, but in order to do point lights in real-time you need a GE Force 8 series card.
Sounds like Josh did his homework.
@Joshua
I don't know to whom you've talked but we don't have stencil shadows support too, sadly. I would love to beeing able to choose between more than one shadow solution due to a different style. As for performance issues i guess you already know on your own that this heavily depends on your scene and how you're setting things up. Anyway i can't offer a demo.
By the way are you the person who was trying to write a 3d engine for GeForce8800 and OpenGL only?
And Unity V2 supports self shadowing soft shadows based on shadow maps for every light type (directional, point (always hard), spot), basically needs PS2 (and proper drivers, thinking of GMA950).
Yep, sorry, I forgot Unity. I think I saw a demo of their soft shaders in action, combined with normal or parallax mapping. Very nice.
I don't see a demo on the Truevision page showing point lights with shadowmaps.
Look harder. I understand there will be an open source system including documentation released shortly. I'm looking forward to it as it's a hell of a lot faster than my attempt.
The Blade3D page only does PSM. That means directional lights.
It does variance shadows maps, which can also work with omnidirectional lights ( what you're calling point lights ) by using a cube map.
Show me a demo.
I showed you two. They do say that there are none so blind as those will not see. I guess if you want to not see it badly enough, you can manage to not see it.
quote]DX10 allows multiple render targets and SM 4.0 allows GLSL geometry shaders, which can also be used to render to a cubemap in one draw call. There is no other way to do it on older hardware, unless you render 6 passes per point light.[/quote]
Well if you will limit yourself to GL and GLSL in particular, you have to live with the consequences. I don't use either, so perhaps that's where your problem lies.
Same goes for shadow maps. It's easy for someone to say they support shadow maps, but in order to do point lights in real-time you need a GE Force 8 series card.
That simply isn't true. I have three demos sitting on my hard drive right now which do precisely that on a Geforce 6 series. One of them I wrote myself, while the other two are faster because they were written by better programmers than me. Mine isn't Unreal3 fast, but it's fast enough to do a basic scene at a decent frame rate. It isn't faster because I'm not a good enough programmer to understand and implement the optimizations I know are needed to make it suitable for really complex scenes. I'm not going to resort to blaming the architecture or telling everyone they need bleeding edge videocards because I'm not capable of doing it though.
Sounds like Josh did his homework.
Then I hope he brought teacher an apple or he's heading for an F.
- horde_3d? - probably the best ive seen..
- not sure its what your after though
Horde3D does have a very clean API, so it would be very wrappable if you wanted to use it with BlitzMax.
The DBPro demo works by blurring the stencil shadow results. All the implementations I have seen using this technique create a "gloom" effect (the opposite of bloom). You can see this in some of the FPSX10 shots. There is a dark outline around some objects.
Shadow maps also scale a lot better to render large scenes, whereas stencil shadows don't scale well with scene complexity. This is why very few objects in Quake Wars actually cast shadows.
For low-end hardware, hard stencil shadows are probably your best bet.
I don't know what card that demo is running on but 59 FPS with one light is not too good. It looks nice, but the performance doesn't seem practical.
And as for clarifying why point lights are hard, this is due to the shader instruction length. If you're combining the light with things like a parallax specular one then you're reaching the border very soon. For later on there are soft ones planned which use either PS 2.0b or 3. They also promised to introduce shadow solutions which run below PS2 after the initial release. Contrary to Leadwerks they seem to care that Unity created stuff runs on a wide range of cards, crossplatform (win, osx), and this seems to be the real job.
sniff, are you leaving us, Beaker? :)
Nah, just need some other tech for a work project.
Horde looks nice but is GL only. Blade uses .NET which is something I want to avoid for now. DBpro - Red October has gotta be joking.
Stencil shadows I will always avoid like the plague. They are just plain ugly, and (as Josh pointed out) are hard to control for larger scenes. I don't necessarily need dynamic scene shadows, just occasional character shadows.
Generally I'm looking for an engine that will run on a wide variety of hardware with no need to install/adjust frameworks and drivers (as Blitz3D does) and will give me some more features. It's looking more and more likely I will be sticking with Blitz3D/SDK. Gotta love it.
I'm confused. You said you want per-pixel lighting but now you say you want static lights with dynamic character shadows, which is basically what I am doing.
I do not like stencil shadows much.
Shadow maps are the best, but no one can run them.
No matter what you use, someone is unhappy.
Where is the contradiction? You can have static lights and dynamic shadows (for moving characters). I don't really understand your confusion.
I might not use per-pixeling lighting and shadows in the same scene, but I would definitely prefer to have them in the same engine.
No matter what you use, someone is unhappy
Not if I select the right tool (engine) for job. Some of the work I do is for corporate visualisations/tools/games. If I were making a kiosk visualisation where you can control the hardware I would happily use a shader model 3 engine. If the same visualisation was to be distributed around a company and had to run on a wide range of crappy office hardware then Blitz3D would probably be my first port of call.
Simple as that really.
Because people usually refer to stencils and shadow maps as per-pixel lighting.
Do they? I always thought it meant pixel lighting instead of vertex lighting.
http://en.wikipedia.org/wiki/Per-pixel_lighting
No, but there is a lot of misunderstanding and disinformation out there.
have you try JME engine?
JME looks interesting. Might find a use for it at some point.
How about irrlicht?