Status of DirectX support

hello,

I would like to know what the plan is for bringing Panda to support DX11 , if at all ?

Sorry if this question has been asked before, I saw only Dx9 related posts.

Chrys

There are not currently any active plans to support the features of DX11 specifically, but we are always working on better support for next-generation techniques in general, and of course we will migrate through all the DirectX versions eventually. Panda’s development philosophy has usually been to emphasize robustness and wide support over bleeding-edge new eye candy, but we don’t just sit in one place either.

It’s kind of like support of Python 3: we’ll support it when it makes sense for us to.

Is there some particular DX11-specific feature you are especially interested in?

David

I am not a great render expert so no there is not really a specific feature I am looking at.
When I started using panda it was because it seemed simple enough to render some “debug” output suited for my needs. Over time though I actually realized that I would like to get more into graphics programming and all the nicest tutorials I have seen focus on DX11. Also there are some tools like “Pix” and other NVidia tools that seem to be very useful for debugging shaders and performance.

I found though that directx doesn’t work for me because of a bug that makes the DX render module crash when I use a render window parented to a Qt window ( I believe it was you who told me in a forum thread that this was a known bug ).
So I have got to use OpenGL, hence Pix doesn’t work (a tool which is part of the DX SDK).

Also all my computers are DX11 compatible and I like to have always the latest software so because I like panda I was hoping that it would be supporting dx11 soon :slight_smile:

Which features from DirectX 11 are you interested in in particular?

As I say I haven’t got anything specific in mind that I must have.

Ok, so why exactly do you want DX11, outside of that some tools may require it (or may require good DX9 support, which makes much more sense)?

I would like to point out that Crysis 1 and 2, still considered to be among the most beautiful games ever made (at least in the photorealism space), have both been made with DX9 only.

No doubt about that. I think I have already answered that question :slight_smile:

I must be one of those people who just likes to have latest software if possible.
So I thought if there have been 2 versions of DX since 9 maybe the panda dev team had plans in updating soon. But drwr already answered my question.

Hi,
I know this is an old topic, but is there today a chance to see support of directx 11 in Panda 3D?

There is so needed stuff like HW tesselator, deffered context for multi-threading (so useful in multipass redering, environment map generation), …

But my wish to see directx 11 is mainly for the new windows 8 (old named Metro) unifyed platform for pc, tablet and windows phone 8 that will not support other version than directx 11…and thus will not allow to support Panda in metro mode.

Thanks in advance for your replies.

Not to mention 64-bit support in shaders.

However, I am more interested in OpenGL 4 support (at least 4.0) since it is cross-platform and hardware tessellation and 64-bit shaders are (ahem) game changers for creating large, procedural worlds.

It is not entirely clear to me what version of OpenGL is currently supported. Is it at least OpenGL 3.x? If not, Panda3D is unfortunately not the engine for me.

I’d be interested in that answer as well.

edit - although by looking at the blueprint I’d presume not.

blueprints.launchpad.net/panda3d/2.0.x

“OpenGL 4 support” is not a well-defined concept for graphics engines like Panda. Does it mean the engine runs on OpenGL 4, or does it mean the engine makes every OpenGL 4 feature available to the application programmer? The former is true of every graphics engine; the latter is true of no graphics engine.

Usually when people say they want “OpenGL 3 support” or “OpenGL 4 support”, they really mean they want certain specific features that are provided in OpenGL 3 or OpenGL 4.

Panda does currently have support for some OpenGL 3 and 4 features, such as geometry and tessellation shaders.

David

Awesome! I will have to try it out. Is there a list of OpenGL 3 & 4 features which are supported? Am I correct to assume these features are only available in the latest development versions?

As I mentioned, tessellation shaders are a must for my project, and 64-bit shader variable support would be useful, though geometry shaders are even more so.

Hopefully your vid card will support them, mine does not even on the new machine. I’ve never had the pleasure of seeing Craig’s GeoClip Grass in all its glory.

There’s not a formal list anywhere. I think the list is: geometry and tessellation shaders. :wink:

David

It’s not straightforward to answer that question, because many features which have been upgraded to the core in OpenGL 3/4 had already been available as extensions for a long time, and we’ve supported some of those before OpenGL 3 was even released.

What is meant by that blueprint is that we don’t currently support an OpenGL 3.2±only context, which drops support for all fixed-function pipeline functions. That does not mean that we cannot support its features, though, which are all available through OpenGL extensions.

I’m not sure about 64-bit shader variables; you mean you want the ability to pass 64-bit vertex attributes and uniforms to the shader? If so, then that would probably require taking advantage of the ARB_gpu_shader_fp64 and ARB_vertex_attrib_64bit extensions, which we currently don’t. Based on a quick scan, it seems to me that adding support for those would be a simple task, though.

If you’re simply referring to the ability to use 64-bit variables within the shader itself, then you can do this today; just add the appropriate #extension line to your shader.

I think this info should be in the manual somewhere.
I hear people complain about my engine running ancient OpenGL version (and assume it affects the visuals) while that actually allows us to support more hardware.