• Advertisement

Archived

This topic is now archived and is closed to further replies.

DX9 is 50% complete

This topic is 5040 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

How is it possible, over a year after it came out, that dx9 is still a half assed api? The docs suck. The animation code d3dx appears to be half done...with no explination of how to use it. The sample programs are way to basic. They dont show how to do anything interesting!!! For example...does anyone know if an AnimationSet actually contains more than one animation? It appears that it should because it has methods GetNumAnimations, GetAnimationIndexByName, GetAnimationNameByIndex, and GetSRT takes an animation index. HOWEVER, I cant find any way of telling an animationcontroller WHICH animation from an animationset to play. Every example I''ve seen (very few) that can actually blend two animations with an animationcontroller seem to treat animationsets as a single animation. Aimationcoontroller has a method SetTrackAnimationSet which lets you set an animationset to a track, but neither interface have anything to set the active animation within an animationset, afaik. Please inform me as to why I''m wrong. I just want the info, I''d love to be corrected. Anyone have any experience with this?

Share this post


Link to post
Share on other sites
Advertisement
Yeah, you can''t blend more than 2 animations :/
MS could have done more work on their animation controller, definetly.

Share this post


Link to post
Share on other sites
Just because the D3DX animation interface is not the best does not mean DX9 is crap. If you would actually have a firm understanding of D3D before you come and rant and rave, you would know that DX9 made huge improvements in many areas, such as HLSL.

Also, why should MS spend all this time and effort trying to perfect a global animation interface? Every professional is going to write their own, anyways.

Yes, the managed DX docs are quite incomplete - I''ll agree with you there. However, in the next SDK release look for these docs to be better.

As far as "the sample programs are way to basic" goes, I have no idea what you are talking about. Do understand everything with HDR, Pre-computed Radiance transfer, and multiple types of shadowing? These samples are on the cutting edge of realtime graphics - what more do you want?

If you think DX9 is so bad, just go over to OGL already.


Dustin Franklin
Mircrosoft DirectX MVP

Share this post


Link to post
Share on other sites
quote:
Original post by Pseudo
How is it possible, over a year after it came out, that dx9 is still a half assed api? The docs suck. The animation code d3dx appears to be half done...with no explination of how to use it. The sample programs are way to basic. They dont show how to do anything interesting!!!

For example...does anyone know if an AnimationSet actually contains more than one animation? It appears that it should because it has methods GetNumAnimations, GetAnimationIndexByName, GetAnimationNameByIndex, and GetSRT takes an animation index. HOWEVER, I cant find any way of telling an animationcontroller WHICH animation from an animationset to play. Every example I''ve seen (very few) that can actually blend two animations with an animationcontroller seem to treat animationsets as a single animation. Aimationcoontroller has a method SetTrackAnimationSet which lets you set an animationset to a track, but neither interface have anything to set the active animation within an animationset, afaik. Please inform me as to why I''m wrong. I just want the info, I''d love to be corrected.

Anyone have any experience with this?


If you look at the interface design for the animation controller properly, u will be able to do what u wanted to. For multiple (>2) animations blending, u can always hack bypass the interface and blend using a vertex shader. But blending more than 2 animations is not common in most games.

Circlesoft is also correct in stating that MS is not obliged to provide a complete animation control interface for D3D. That is counter productive because it will limit the way animation could be controlled by binding all D3D programs/programmers to using the D3DX animation controller interface only. The same thing is true for OGL. All able-brained graphics programmer would write his/her own animation system with specific optimization and customization.

If there is any reason for the D3DX animation controller to exist, it is for beginners to learn more about animations and how the .X file format could be used to provide multiple animation data encapsulation and represent a common skin-bone structure.


- Hun Yen Kwoon

Share this post


Link to post
Share on other sites
I think they have spent their most time in hardware shaders, directShow and networking. What is really they didnt improved is their codding standard.

Share this post


Link to post
Share on other sites
I was really disapointed to the sprite interface becose it cant draw clipped textures. (only the source rect can be set)

Also the text clipping options arent good enough, there isnt simble rect clipping. But center options and like that.

I was also very disapointed to direct show becose you have to write your own allocators and draw functions if you want to show the video some where else than new window. Right?

Please correct me if something isn''t true above.

Share this post


Link to post
Share on other sites
First of all, I didn't say d3d9 is crap. In fact, its far supperior to every other version I've used. That doesn't make the docs any better or d3dx any better.

Second, I'm not a professional, so the comment about "Every professional is going to write their own" is pointless. My guess is that you aren't either.

Third, if you read my post, it would be obvious that I'm not trying to blend more than 2 animations. I'm trying to figure out how to use mulitple animations within an animation set. (you assign animationsets to tracks not animations, so I only blend 2 at a time) Clearly the docs indicate this is possible, but they left out a major detail. HOW you do it.

Finally, I'm quite capable of writing my own animation system (I've done this in OGL without blending and using software skinning), however the dx9 doc's claim to have support for this already (with blending), so I figured my time was better spent on gameplay. I dont have a crew working on the game here so I cant just go off writing every detail that claims to be already implemented. Basically I just wanted to know if this was possible (setting an animation within and animationset) but I get the impression that nobody here uses them anyways.

Have you guys read any of the recent articles on XNA (http://www.microsoft.com/xna/)? Seems microsoft does see some benifit to developing animations systems and other game components even though many of the "experts" on this board claim that "Every professional is going to write their own, anyways." It's not like animation systems differ greatly from game to game, so it seems logical to have a standard component for this. Maybe I'm just not elite enough for you guys.

[edited by - Pseudo on May 7, 2004 10:26:54 AM]

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
quote:
Original post by circlesoft
If you think DX9 is so bad, just go over to OGL already.



Yes, I do...

Share this post


Link to post
Share on other sites
quote:
dx9 is still a half assed api


quote:
Original post by Pseudo
First of all, I didn''t say d3d9 is crap.


The two seem pretty interchangable to me.



Share this post


Link to post
Share on other sites
Crazer: you do not have to do all that to draw to your window. See my reply in another thread how to easily do this.

IMHO DX9 is fantastic, what some people seem to be complaining about is the added d3dx library. This is an extra that you do not get in other SDKs and is constantly being developed but the core DX9 is very solid, robust and powerful.

Share this post


Link to post
Share on other sites
Hi,

You are talking about D3DX9 not about DX9. DX9 is a complete API while D3DX9 is just a group of tools developed over the DX9 layer in order to help programmers in their games but is not part of the DX core objects.

DX9 per se is exactly the same than OGL. D3DX9 may be compared to glut, but it has more functions. D3DX is really useful when you start programming with DX. It implements many simple tasks that would take too long to implement for starters.

For example, D3DX texture loading functions can handle almost any file format, creates a texture in a specific format and loads the file into your texture applying filters while doing so. Is there any function in glut that can handle that? So you take a third party code (nVidia has a very nice code, also the OpenIL/DevIL) and use it to load your textures. In fact you can take DevIL or nVidia lib and use it in D3D, dropping D3DX texture loading functions. Its your option, but you cant blame D3DX for not supporting a specific format just because you want to use it in your game.

Sprite functions make it simple to prepare the device (one call and all your settings are ready) render the sprites and flush. We are not talking about just using 2D. You can use 2D in OGL as well as in D3D. We are talkign about a very thin layer that helps you rendering sprites. But if you dont like it or it is not enough for you just drop it and implement your own as you will have to do using OGL. But you cant blame DX9 or MS for providing a simple API for sprite rendering. Its not a bad API for starters, but for a serious development it is not enough, thats all...

The X functions allow to use the custom DX format in order to load the models. MS even provides exporters for Max, Maya and SoftImage in order to make you easier the task of getting the models out of that tools and make them ready for your game. X is just like a script so you can alter it and add additional information if the default X is not enough for you.

The math library in D3DX is really complete and make matrix and vector operations very simple. But of course you can drop it and use nVidia''s math library... or just pick any other.

There are new functions in D3DX like Spherical Harmonic computation functions. I have never seen something like that in other library but if you get one that you think is better then just drop that part and use the new library.

As I said... D3DX is just a simple implementation. It has a lot of tools but, as always, those tools may not be enough for some people but may be more than enough to others. My engine discarded D3DXSprite and I programmed an interface that is easier for me to use. I also discarded the X support and now I''m using the Softimage XSI format for 3D models and animations. My engine controls everything in the animation so I can even compute the shadow volumes from them.

But I still keep the texture loading and the math functions... they are really good so I see no point in dropping them.

So, you can''t say D3D9 is imcomplete just because the D3DX library is not everything you need. Thats just your point of view. I recommend you get some more experience or you do some extra research before you take a decision about which API you use. I don''t like OGL programming interface because I feel more comfortable using the object/COM interface, but that doesn''t mean that I think D3D9 is better than OGL. Its just I feel better using it and if I feel better then I work better and produce better... in fact... I started 3D programming using OGL.

Luck!
Guimo

P.D. I suggest you wait for the DirectX 9.0b SDK Update (Summer 2004).





Share this post


Link to post
Share on other sites
Guest Anonymous Poster
just go over to OpenGL/OpenAL. Microsoft are bastards.

Share this post


Link to post
Share on other sites
quote:
Original post by Trip99
Crazer: you do not have to do all that to draw to your window. See my reply in another thread how to easily do this.



Oh right actualy I knew that but the problem whit that is I cant draw anything above it (yes it is needed). Becose its still in diffrend window isnt it?

Share this post


Link to post
Share on other sites
quote:
Original post by Anonymous Poster
just go over to OpenGL/OpenAL. Microsoft are bastards.

Thanks for the very useful information, I hope you now feel better.

Muhammad Haggag,
Optimize
Bitwise account: MHaggag -

Share this post


Link to post
Share on other sites
quote:
Original post by Pseudo
Have you guys read any of the recent articles on XNA (http://www.microsoft.com/xna/)? Seems microsoft does see some benifit to developing animations systems and other game components even though many of the "experts" on this board claim that "Every professional is going to write their own, anyways." It''s not like animation systems differ greatly from game to game, so it seems logical to have a standard component for this. Maybe I''m just not elite enough for you guys.
[edited by - Pseudo on May 7, 2004 10:26:54 AM]


Games of different genure or even those in the same category seldom use the same animation techniques/system. Depending on how the animation is going to be applied in a game, many custom optimizations could be added to speed up the product. E.g. Do u think Ubisoft''s Prince of Persia (Sands of time) and MS games''s Mechwarrior4 uses similar techniques for animation? I dun think so. Other games such as RTS or FPS also have different systems to cope with specific animation demands such as IK or IK+FK blends, sometimes even collison detection needs will feature in advance animation systems.

You are correct if u r refering to INDIE or small budget games. Most indie games are done by very few manpower and hence getting the product done is more impt than making the product look good. And i dun think MS care about indie developers so much as to devote resources to make a "simple-full-assed" animation system for them to use. If they ever do, they will be gunning to make it look as if DX9 is a faster/easier road to developing a gaming product, not for the sake for ur indie game development. (Add all ur marketing slogans here) They had done this for VB, ActiveX, .Net and i wont be surprised if it was to be done for DirectX in the future. But at the end of the day, very few PROFESSIONAL development studio will use it. It just doesn''t cut it to tied urself to an interface, unless it is as flexible as a rubber band.


- Hun Yen Kwoon

Share this post


Link to post
Share on other sites
i wanna clear a few things up.

I''m not exactly a noob at 3d graphics. (although not an expert either) And I''m not trying to decide between OGL and D3D. I know both api''s quite well and my opinion still stands that D3D9 is half assed. This does not mean it''s crap. I prefer it to OGL in fact. It just means that MS didn''t finish the API before releasing it (hence it''s half assed). As for people commenting about D3DX not being part of D3D...I see how you may make this distinction, but _I_ consider DX9 to be everything in the DX9 SDK. Including D3DX. In this respect, it''s not complete and is horribly documented.

I also understand the D3DX is just helper classes and it can be done other ways. Thats not my point. My point is that what they did provide isn''t finished! Obviously they have no obligation to finish it, but then again they had no obligation to making it in the first place.

To comment on an ealier post about the demos being advanced. I hardly think so. Some of them cover advanced topics like HDRL and PRT and Hemispherical lighting, however they are always very basic demos. They show an avanced effect in an isolated invironment and generally dont show the best practices for using DX9 (ie cramming everything into the application class). This is great because demos shouldn''t cover too much or they loose the point, but on the other hand they need to cover the features of the api that they neglected to document long before they show off very well documented features like pixel shaders.

For example the skinning demo shows you how to skin 6 different ways but FAILS to do anything with the animationcontroller except play the defualt animation. This is pointless because any idiot can learn how to do skinning...there are a million sources for this info on the net. The demo should minimally show how to use the undocumented features of d3dx animation rather than ignoring them. that way at least ONE source for reference exists in the sdk. They must (i hope) have demos to test the features, so why not include them?

So, in conclusion I believe the demos miss the point. To help people learn how to use the features of dx9 (yes including d3dx if they so choose). They should leave it to nvidia and ati to make demos that show specific effects like hdrl.

of course, this is just my opinion. Dont get all crazy just because you dont agree

Share this post


Link to post
Share on other sites
quote:
Original post by HunYenKwoon
E.g. Do u think Ubisoft''s Prince of Persia (Sands of time) and MS games''s Mechwarrior4 uses similar techniques for animation? I dun think so.



I do think so. I''m quite confident that both games you mentioned...as well as just about every other pro game that came out this year (featuring bypeds)...as well as many indi games all use skeletal animation. (and generally also skinning, although they are quite distinct) A generic system could be made, and is being made with XNA to cut down on people re-inventing the wheel.

Share this post


Link to post
Share on other sites
quote:
Original post by Pseudo
quote:
Original post by HunYenKwoon
E.g. Do u think Ubisoft''s Prince of Persia (Sands of time) and MS games''s Mechwarrior4 uses similar techniques for animation? I dun think so.



I do think so. I''m quite confident that both games you mentioned...as well as just about every other pro game that came out this year (featuring bypeds)...as well as many indi games all use skeletal animation. (and generally also skinning, although they are quite distinct) A generic system could be made, and is being made with XNA to cut down on people re-inventing the wheel.


You are badly mistaken. I''m not refering to techniques as in the skinned, rigid bodies or tweening sense. Those are basic animation interpretations just like newtonian physics. All physics engines uses some form of newtonian physics, but r their implementation the same?

POP uses a multi-channel blended skin with morphed targets for vertices articulations. MW4 uses animation with some form of IK. To say that both uses the same animation (skeletal) is like saying a horse and a donkey are the same. Both have 4 legs, have skins, have hairs and have tails, but any 2 yr old will tell u they are different.

- Hun Yen Kwoon

Share this post


Link to post
Share on other sites
Psuedo: Yes, I will totally agree with you that the skinning demo is bad. I even told Microsoft about that, and they said they're working on it.

About the samples---
What features of the D3D api and D3DX library are neglected? They have many shader-based samples because people need to learn shaders. The ffp will be eliminated from the standard pipeline soon.

However, while there are many advanced samples, there are also many beginner and intermediate ones, such as:
- Mesh skinning
- Billboard (ID3DXSprite)
- The bump-map series
- clipping volumes
- Cubemaps
- Object culling
- Enhanced meshes
- Optimized meshes
- Point sprites
- Patches
- Shadow volumes
- Stencil buffer
- FFP fog
- Beginner tutorials

Now, what features of the api/d3dx are not included in those? Also, why leave it to the IHV's to write the 'advanced, specific effects', when there are new interfaces that are written specifically for these?

This is nothing about your level of eliteness or whatever that is. We welcome everyone on this forum, and encourage everyone to voice their opinions. It just gets us going a little bit when people make broad statements about specific faults

And yes, there are many professionals on this board.

[edited by - circlesoft on May 7, 2004 3:07:34 PM]

Share this post


Link to post
Share on other sites
D3DX is intended simply as a learning & demo utility. It''s not assumed that it will actually be used in professional apps.

Share this post


Link to post
Share on other sites
"_I_ consider DX9 to be everything in the DX9 SDK"

And that''s precisely where you go wrong. They''re providing some extra utilities that you can use if you don''t feel like implementing them yourself. They do not advertise D3DX as being a core component of D3D. The X library has existed since DX7. Complaining about an add in library is pointless. You might as well complain about the lack of the same functions in OGL (in which case they''d both be half-assed...which would mean there wouldn''t be a single good API on the market, which is simply untrue).

At the end of the day, DX9 is extremely simple to use with or without the X utilities.

I also don''t see why anyone would bother wanting to use the X library for models & animation. Yes, it''s fairly simple for beginners, but there are literally hundreds of explanations on how to use more widely used formats (e.g. 3ds) on the web. Just search google...

Share this post


Link to post
Share on other sites
quote:
Original post by Etnu
D3DX is intended simply as a learning & demo utility. It's not assumed that it will actually be used in professional apps.

Untrue
D3DX offers *extremely* advanced technology, like Spherical-harmonics based Precomputed Radiance Self-transfer. D3DX is optimized for MMX/SSE/SSE2/3DNow!, too. D3DX includes a very helpful effects framework, similar to that of nVidia (CgFX), and that's used by many many developers. The only part I've not used with D3DX is the meshes and animation interfaces.

quote:
I know both api's quite well and my opinion still stands that D3D 9is half assed.

No it isn't. I can't see how you can say this basing on a single part of the **helper** library. How many of the features of D3D do you know? and how much of these do you hate? What's their percentage of the whole feature-set of D3D?
Direct3D is *not* a half-***** API. It's an *excellent* API, and the Direct3D team is readily available for questions on DIRECTXDEV. The documentation is *great*, definitely much much better than most documentations I've seen before. Parts of it are bad, yes, but that doesn't mean you can generalize. The D3DX documentation alone (in summer SDK2003 ) is 800 pages. DirectX MVPs visit almost every forum out there.

Instead of complaining here, you'd better send a feature request to directx@microsoft.com
If it's good, it'll get incorporated into their tasklist database.

quote:
It just means that MS didn't finish the API before releasing it (hence it's half assed).

No. Again, if it succeeds 95% of the time, I can't see how it's half-*****.

Would you prefer to wait another year before the release of DX9, so that the documentation team would catchup with the developers? Documentation takes *loads* of time. They've been writing managed documentation ever since the release of the managed API, and it's not done yet. Have you an idea of how many pages the documentation spans? D3D docs alone are in the order of thousands.


quote:
As for people commenting about D3DX not being part of D3D...I see how you may make this distinction, but _I_ consider DX9 to be everything in the DX 9SDK. Including D3DX. In this respect, it's not complete and is horribly documented.

No. Few parts of it are badly documented. Otherwise, the documentaton is superb, and I - and others - have been using it for years with no problem. I've only had to ask DX-related questions 3 or 4 times in the last year or so, and I've got my answers almost momentarily.

Muhammad Haggag,
Optimize
Bitwise account: MHaggag -
[edit]Grammar

[edited by - Coder on May 7, 2004 3:37:04 PM]

Share this post


Link to post
Share on other sites
Hun..stop trying to be an elitist,i''m sure it makes you feel good,though its not really helping pseudo is it? He''s already told you.. he''s NOT part of large team of coder''s,but someone doing his project by himself.

And stop playing the dumb twa* as well..you know where he''s coming from,and what he means,your starting to annoy me now,by making fun of him.

One-man-bands don''t make PROFFESSIONAL games such as those developed by the crew''s your talking about anymore,all small companies have been bought out long ago,such as Access software(bought by MS,for links...the company that produced the Tex-Murphy game series and other''s),but that doesn''t stop people trying to does it? so what''s the point in this elitist attitude?

While your on the subject Hun,why don''t you mention to all the (hopeful) newbies reading your intelligent replies,that they ALL have more chance of winning the lottery,than getting their INDIE projects sold in shops,or getting their games to the console market like the PS2,X-BOX,and GAMECUBE.

Tell them all not to waste their time(unless they want to be a slave to some game company in 5-6 years time,who will drive/burn them into the ground after a couple of years of working for them,and will most likely end up splitting up from their wives/girlfriends(if they have a chance to meet any) because of the work load put upon them?

While we are still being honest in our replies,why not tell them not to bother buying any of the books they are buying from amazon,because if any of them want to develop a game and sell it to make a reasonable ammount of money,by themselves,its pointless,because they will never get it to the shelves(ITS NOT ALLOWED!)so if they do manage to finish a project(after a good couple or so years of nearly becoming reclusive),they will most likely end up selling it on the net(making next to nothing)to some second rate/dodgy publishing group,or putting it up on sourceforge?

Why not tell all the newbies,before you buy your c# compilers,microsoft products,and game programming books,to turn-the-tables,and don''t waste their time or money...when companies like microsoft feel a huge loss from the INDIE people,because all the newbies realise their dreams will not happen,and know there''s no point(other than for fun),and just get a dodgy copy from somewhere else..

because they aint gonna make any money right? and so,the newbies would be better off just having a normal(not studying all the time)kind of life,and to get a decent reliable job,anywhere else except in the games industry.I wonder what would happen to these large companies?

I think its a bit like the post service where i live(UK),see, the post used to be here between 7.30 and 9.00 A.M...now it doesn''t get here sometimes until 7.00 P.M...why? because nobody wants to be postmen anymore.Postmen before,could be finished by 11.00 a.m,then go on to do another part-time job in the afternoons.

But then the work load increased,and they ended up being at it until 5.00 P.M,and the money wasn''t worth it(like the games industry) so they will take anyone as a postman now. (an alcoholic across the street from me,has just become one..LOL).

So,newbies listen to ''oh master'' hun''s wisdom,and while your here,have a good long read and search through the forums of this website,to educate yourselves about how these large companies(like MS) and the games industry works,before you waste your lives.

This is a comapany(Access software) that produced some of the most finest and entertaining titles (Tex-Murphy adventure games)and was bought by microsoft,and now microsoft will not support or give them a chance of a new tex murphy title(despite the poll''s there).

http://pub24.ezboard.com/bunofficialtexmurphy17995

You can also post(and get truthful/honest answers) from Aaron conners here.
This is an interesting one,regarding MS & Access software..

http://p083.ezboard.com/funofficialtexmurphy17995frm13.showMessage?topicID=77.topic

Any more inside industry wisdom by Hun is welcome.

Sorry (Mods)if this is OTT,but i''m sick of reading posts around here,that make newbies/indies
feel like they are in the WRONG,just for trying to get some help.

Peace.

Share this post


Link to post
Share on other sites
The only real beef I have against DirectX8, 9 etc - is that DirectDraw has been removed. In that respect - I''d say DirectX is incomplete. I have to still use DirectX7 for my games!

Other than that - its a way for us all to make decent games. Which is okay with me.

Share this post


Link to post
Share on other sites

  • Advertisement