If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
![]() |
|
|
#1 |
|
Beyond3D News
Join Date: May 2007
Posts: 440
|
Beyond3D is very proud to present the first part of an on-going series featuring one man's thoughts and experience on modern engine development. Read the full news item
|
|
|
|
|
|
#2 |
|
Senior Member
Join Date: Aug 2004
Posts: 2,454
|
Awesome read! I am looking for the next part!
|
|
|
|
|
|
#3 |
|
Junior Member
Join Date: Jan 2007
Posts: 11
|
Yep nice initiative! I hope we'll see some cool screenshots of FlExtEngine in the next part
|
|
|
|
|
|
#4 |
|
a.k.a. Ingenu
Join Date: Feb 2002
Location: Apsley, U.K.
Posts: 2,726
|
Thanks
That's really the introduction article, the others dive into details rather quickly, there are already a couple of them down the pipe, they should come "soon"
__________________
So many things to do, and yet so little time to spend... |
|
|
|
|
|
#5 |
|
Member
Join Date: Nov 2002
Location: In transit
Posts: 604
|
Interesting. I'm looking forwards to the next installments, as I'm somewhat interested in certain engine aspects myself.
__________________
"Artificial Intelligence can never replace Human Stupidity" |
|
|
|
|
|
#6 | |
|
Senior Member
Join Date: Oct 2004
Location: The Netherlands
Posts: 2,231
|
Nice read, I dont like programming but its very interresting to learn more about how a engine works.
Something I didnt totally understand was this: Quote:
__________________
I cut an elderly woman off and she spun out and crashed... but its alright... cause I've got a Jaaaaag |
|
|
|
|
|
|
#7 | |
|
Member
Join Date: Nov 2007
Posts: 938
|
Quote:
|
|
|
|
|
|
|
#8 |
|
...
Join Date: Feb 2002
Location: Cleveland
Posts: 4,215
|
Has anyone sent this article to 3DRealms and the Duke Nukem Forever team, yet?
__________________
IBSL: 2835, 6541, 8531, 9299, 20484, 86985, 87130 FBSL: 7221, 9255, 15892, 20484 |
|
|
|
|
|
#9 |
|
Member
Join Date: May 2007
Location: London
Posts: 235
|
|
|
|
|
|
|
#10 |
|
Junior Member
Join Date: Jun 2007
Location: Budapest, Hungary
Posts: 59
|
Nice appetizer, let's see the first course
I like the way the article is structured - and also the approach to building software. |
|
|
|
|
|
#11 |
|
Registered
Join Date: Dec 2007
Location: Buenos Aires, ARG
Posts: 1
|
Thanks for sharing your knowledge. I really don't know anything about 3d engines, but it's a very interesting subject to explore. I'm looking to read the next part!
Great site! This is my first post! |
|
|
|
|
|
#12 | |
|
Member
Join Date: Jun 2006
Location: Germany
Posts: 284
|
Quote:
And it's an urban legend that it's the kernel context switch which makes it that slow. It's the encoding to an immediate form and subsequent decoding in the driver of API commands (that's what makes a Direct3D 9 driver understand the Direct3D 1 API without any extra code btw.). Last edited by Novum; 31-Dec-2007 at 04:55. |
|
|
|
|
|
|
#13 | |
|
Tiled
Join Date: Oct 2003
Location: Kings Langley, UK
Posts: 2,675
|
Quote:
As for it not being the context switch that's the issue with 9, it certainly is on XP. There's (almost) no expensive format conversion done in D3D9 titles whatsoever, and you hit the call limit precisely because it's an in-kernel operation under XP (and 2K/9x).
__________________
A major redesign of the core ALU pineapple boomerang fortress. |
|
|
|
|
|
|
#14 |
|
Member
Join Date: Nov 2006
Posts: 128
|
Has anyone measured batch count limits on XP vs. Vista using the same DX9 code? Both the ring transition and the DP2 buffering are gone in Vista (which unfortunately means we can't isolate them), so I'd imagine draw overhead would be lower on Vista. But I haven't seen any data.
|
|
|
|
|
|
#15 | ||
|
Senior Member
|
Not free but cheaper. But OpenGL draw calls where never free on XP, too.
Quote:
Quote:
I am not sure if DP2 encoding is gone. If you have a look at the WDK samples you can see that the sample 8500 driver use the XP DP2 decoder and a custom DP2 encoder. Maybe this technique is used in some released drivers too. At least it makes it possible to still use big parts of the XP drivers that are still developed. I have seen some big overhead differences between 9 and 10 on Vista on my 8800 development rig. But I am not sure if this is based on different command handling. Maybe there are some differences in the handling of SM3 and SM4.
__________________
GPU blog |
||
|
|
|
|
|
#16 |
|
Senior Member
Join Date: Aug 2004
Posts: 2,454
|
I am not as knowledgeable as you guys are in this forum, but I had a question...all these directx 10 games...so called...how come they are not reflecting the performance that was being touted by Microsoft...they were saying how the games would run a lot faster because of the driver overhead being non-existent or something like that. Does it not seem that in a lot of benchmarks the DX 9 version is faster than the DX 10 version? Is it because drivers and the hardware are not optimized for DX 10? Or are programmers designing games not used to dX 10? Just trying to understand...
Also another question...when they say that this engine scales really well...well I guess a better way to put it is COD 4 vs Crysis...I have seen screenies and accounts from people i know who have played both Crysis and COD4...and say COD4 was brilliant looking and ran on their system just fine whereas Crysis brought their system down to its knees...just trying to understand what makes Crysis game's engine so heavy when COD4 breezes through while looking just as good on lower end systems? |
|
|
|
|
|
#17 |
|
...
Join Date: Feb 2002
Location: Cleveland
Posts: 4,215
|
Suryad, a lot of it is down to apples and oranges comparisons. The DX10-capable games are not rendering the different modes with the exact same image settings. All of the current DX10-capable games were not developed with DX10 in mind. It was more of an afterthought or bolt-on and as such any performance improvements will be limited.
__________________
IBSL: 2835, 6541, 8531, 9299, 20484, 86985, 87130 FBSL: 7221, 9255, 15892, 20484 |
|
|
|
|
|
#18 |
|
Member
Join Date: Nov 2006
Posts: 128
|
DX10 does have lower CPU overhead than DX9 for an equivalent set of rendering commands. I've measured this on Nvidia hardware and I believe it's true for AMD as well. But that only matters if the game is CPU-limited; otherwise the reduced overhead won't affect the framerate at all.
Some of the new DX10 features, like texture/rendertarget arrays and geometry shaders, also make it possible to do the same thing as in DX9 except more efficiently (for the GPU). This helps games that are GPU-limited, but only if they actually use those features. The problem here is that most of the "DX10 games" so far are really DX9 games with a DX10 path thrown in as an afterthought (the others are Xbox360 ports) -- the developers haven't invested in taking advantage of the new DX10 features for the effects that are also in the DX9 version; they only use DX10-specific features for the additional DX10-only effects. So the DX10 version does all the same stuff as the DX9 version in the same way as DX9 (and therefore with the same performance), and then does extra DX10-specific stuff. That gets you extra eye candy but not better performance... The final problem is that trying to do things the DX9 way in DX10 isn't always efficient. Constant buffers are the biggest problem here (look at all of the MS, AMD, and NV developer presentations about DX10 -- they all harp about this) -- in DX9 you only have one constant buffer but you can update individual constants efficiently. In DX10 you have lots of constant buffers, but you can't change individual elements of a buffer -- you have to rewrite the entire thing each time. The efficient way to manage this in DX9 is very inefficient if translated directly to DX10, and the efficient way to do it in DX10 is not possible in DX9. This makes it very hard for games that use both DX9 and DX10 to optimize for both -- and since they're mostly developed on DX9, that's what they optimize for. |
|
|
|
|
|
#19 | |
|
Senior Member
|
Quote:
But D3D9 have its own problems here too. Updating too many constants individual will steal you CPU time. If you can do it as block operation it is normally better. Another thing that can you make headaches when going from 9 to 10 are render state changes. While 9 allows changing each state individual 10 supports only state objects that bundle multiple states together. Unfortunately most engines are designed for single state changes. If you want to add Direct3D 10 without changing too much you are forced to implement state object lookups. This will eat up most of the CPU cycles that the new Direct3D 10 state system can save you.
__________________
GPU blog |
|
|
|
|
|
|
#20 | |
|
Mostly Harmless
|
Quote:
__________________
"We'll thrash them --absolutely thrash them."--Richard Huddy on Larrabee "Our multi-decade old 3D graphics rendering architecture that's based on a rasterization approach is no longer scalable and suitable for the demands of the future." --Pat Gelsinger, Intel ". . .its taking us longer than we would have liked to get a [Crossfire game] profiling system out there" --Terry Makedon, ATI, July 2006 "Christ, this is Beyond3D; just get rid of any f**ker talking about patterned chihuahuas! Can the dog write GLSL? No. Then it can f**k off." --Da Boss |
|
|
|
|
|
|
#21 |
|
Darlek ******
Join Date: Jun 2004
Posts: 9,488
|
so the only way we will get these massive speedups promised by dx10 is if the dev says "sod dx9" ?
|
|
|
|
|
|
#22 |
|
Senior Member
|
Depends on what you define as ”massive speedups“? It is possible to write an D3D9/10 Engine that can take advanced of the lower call overhead and make use of other advanced Direct3D 10 features. But to do this the engine need to be written with 9 and 10 in mind. The current engines are based on Direct3D 9 and the Direct3D 10 support was added late.
__________________
GPU blog |
|
|
|
|
|
#23 |
|
Senior Member
Join Date: Aug 2004
Posts: 2,454
|
Thanks for the explanations. I am beginning to understand now. I did not look at it that way before.
I think what Davros meant when saying "massive speedups" is if game A is implemented in DX 9 purely, and if game A has another version written in DX 10 purely then DX 10 version with all the new features enabled will look better but use less resources and generate higher fps than the DX 9 version. Is that correct? |
|
|
|
|
|
#24 | |
|
Senior Member
Join Date: Mar 2006
Posts: 1,682
|
Quote:
If you're completely maxing out on, say, the multipliers in the pixel shaders, then, on the same HW, you'll render that part at the speed no matter which API you're using. In practice, a scene has different parts with different properties. Some will be floating point limited, others will be texture unit limited etc. |
|
|
|
|
|
|
#25 | |
|
Registered
Join Date: Apr 2007
Posts: 7
|
Quote:
http://developer.nvidia.com/docs/IO/...BatchBatch.pdf The mentioned hardware is a bit old now, and it lacks statistics about D3D10 (and vista) but it's still a good read |
|
|
|
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|