Direct X10? What does it add?

AFAIK, after that article was written, framebuffer access in the shader and the tessellation stuff have been taken back out again (aren't they always?), which is a bit of a shame.

The main new feature that might make a visible impact on 3d graphics is probably the long-awaited topology shader. The basic idea appears to be that it takes as input a polygon with 3 shaded vertices, then the shader processes those data, and output a user-controlled number of polygons (zero up to as many as you want), each defined by 3 output vertices. It doesn't appear to me that it actually knows anything about polygon connectivity; the uses that have been proposed for it so far (shadow map extrusion, single-pass cube-map rendering, sprite expansion) don't seem to require such knowledge, at least.
 
There was a link posted here in the past that showed a new polygon type with minimal connectivity information. A triangle with 6 vertices, 3 of which connect to adjacent triangles.
 
3dcgi said:
There was a link posted here in the past that showed a new polygon type with minimal connectivity information. A triangle with 6 vertices, 3 of which connect to adjacent triangles.

The original spec allows the geometry shader access to the 1-ring verts, but I'm not sure about the current spec.
 
Put simply, for the OP, DX10 (Given this is B3D I assume you refer to the D3D10 part!) adds a lot. An awful lot.

The D3D10 pipeline adds a lot more in terms of expression - allowing for current algorithms to be expressed better and most importantly for new classes of algorithms to be run entirely on the GPU. An example of this could be a more elegant implementation of shadow-volume rendering for the GPU, or an extension where you could mix HOS and shadow volumes entirely on the GPU.

The original spec allows the geometry shader access to the 1-ring verts, but I'm not sure about the current spec.
Yes, this is still the case - the GS has access to adjacency information via the "1-ring verts" you refer to.

With regards to the latest spec, the best you'll find publicly is the recent Meltdown Slides (I forget if the DX10 stuff is public though) or the PDC05 slides:

Direct 3D Part 1: Utilizing the Maximum Power of the GPU in Your Graphic-Intensive Windows Vista ("Longhorn") Application
http://216.55.183.63/pdc2005/slides/PRS311_Balaz.ppt

Direct 3D (Part 2): Deep Dive into Building Real Time Graphics Applications Using Direct 3D
http://216.55.183.63/pdc2005/slides/PRS416_Balaz_Glassenberg.ppt

I'd love to talk in more detail, but I'd probably get hunted down and executed for doing so. What I will say is that if you keep your eyes open you'll probably start to see more and more specifics on the implementation and capabilities of Direct3D10 in coming months. Given that it's an integral part of Windows Vista, it's release is somewhat driven by their timescale ;)

Jack
 
DemoCoder said:
This seems to limit some of the more useful geometry compression schemes.
May I ask why/how?

I can understand how the changed pipeline might well invalidate some existing optimizations/compression, but I'm pretty sure that the new features will allow the better D3D programmers create/implement some impressive new ones. The very fact that the GS breaks the current "1 in 1 out" design should be good news for Geometry Compression...

Jack
 
Yes, good news for geometry *decompression* since the decompression is often local in nature and only requires knowledge of one or two verticies (e.g. EdgeBreaker's amazing .81 bits per triangle!) On the other hand, some algorithms require more than "1 away" connectivity information like, IIRC, some of the wavelet algorithms, or say, the "Edge Sharpner" geometry anti-aliasing algorithm.

Compressors are a different story, some compressors are require complete DFS graph traversals.
 
JHoxley said:
I'd love to talk in more detail, but I'd probably get hunted down and executed for doing so. What I will say is that if you keep your eyes open you'll probably start to see more and more specifics on the implementation and capabilities of Direct3D10 in coming months. Given that it's an integral part of Windows Vista, it's release is somewhat driven by their timescale ;)

Jack

Yes, and Chuck Walbourn already give some details about the timeline

The runtime components will be inbox for Windows Vista Beta 2. The
Direct3D 10 documentation, samples, headers, libs, reference rasterizer,
etc will be entering public beta in a DirectX SDK release in sync with
Beta 2.

-Chuck Walbourn
SDE, Windows Gaming & Graphics
 
perhaps you would use gs texture/buffer reads with primitiveid instead of relying on canned adjacency.
 
With decent vertex texturing and dynamic branching you can do quite a lot of things, almost anything you could do on the CPU. The question is how efficient is it likely to be. My bet is that once you start randomly accessing a lot of textures to create a triangle, not very...

My assumption is that the Geometry Shader provides efficient access to the 1- ring verts. Which is enough for a lot of things.

The original spec also didn't have a hardcoded set of stages, you could run as many steps on a datastream as you wanted and they all had the same capabilities, but AFAIK this was toned down significantly.
 
Yes, and Chuck Walbourn already give some details about the timeline
Yup, I'd forgotten about that message... the next step is to work out when Vista Beta2 is released... ;)

ERP said:
The question is how efficient is it likely to be. My bet is that once you start randomly accessing a lot of textures to create a triangle, not very...
Wouldn't surprise me at all. From one view the D3D10 changes are evolutionary over what we have now, but from another view it's easy to see how it's revolutionary and will make the IHV's jobs a whole lot harder.

I honestly wouldn't be surprised if it takes until the 2nd (or later) generation before many of these new features are actually performant enough to be considered for "core functionality".

Another thing to bare in mind is that a huge amount of graphics processing tends to be repetitive - same bits of data mapping to the same bits of resources (etc..), such that it's not too inconceivable for developers to write optimizing tools to try and make the most of things like cache coherency and re-usability. Such things are fairly routine for reordering vertex/index data in a mesh.


Cheers,
Jack
 
Speaking of one ring verts and texture fetches did you guys see the Xenos presentation from Eurographics? Slide 17.

http://ati.com/developer/techpapers.html

Displaced subdivision surface algorithm

Vertex Shader:
• Reads in one-ring, computes Stam’s method using precomputed table lookup
• Adds Displacement map
 
JHoxley said:
Yup, I'd forgotten about that message... the next step is to work out when Vista Beta2 is released... ;)

As we are still on a 2 month interval for the SDK the next possible date is in December. Even if there is a Vista Beta2 out before without an SDK it will be mostly worthless to get your D3D10 feet wet.
 
Demirug said:
As we are still on a 2 month interval for the SDK the next possible date is in December.
That does fit with the various rumours flying around the net w.r.t. Vista Beta 2... but I've heard it stated officially that even if they had a date for B2 they're not letting it outside of the MS campus :)

So, if you read what Chuck said... that means it's the December release or the February release if it's timed with the DX9 stuff. Or we might get the December DX9 release as-per-normal and then a seperate package drop when VB2 shows up...

Demirug said:
Even if there is a Vista Beta2 out before without an SDK it will be mostly worthless to get your D3D10 feet wet.
Well you'll obviously need the SDK in order to do *anything* with the runtime... 110% Definitely worth waiting for though.

I'm really looking forward to seeing what people can make D3D10 do... given what I know about the API I'm almost thinking that even some of the greatest graphics programmers will be scratching their head wondering what to do next due to too much choice :D

Jack
 
JHoxley said:
I'm really looking forward to seeing what people can make D3D10 do... given what I know about the API I'm almost thinking that even some of the greatest graphics programmers will be scratching their head wondering what to do next due to too much choice :D

Jack

I am sure they can do a lot things but how willingly will they to use it outside the lab in real games? The fact that you can use D3D10 only with Windows Vista and that D3D10 will not support older hardware is IMHO a good reason for many developers don't move to fast to the new API.

Please don't get me wrong. Sometime a big break with traditions is needed to move on and make a big step forward. I support this and think it is the right way. But if you already work on a engine without multi API support D3D10 will give you a big headache. Even with multi API support you can run in Problems as D3D10 seems not to use a fine granulated state machine like we know from D3D9 and OpenGL.
 
Maybe M$ is banking on lots of XB360 games moving over to Vista for the "gaming platform launch" of Vista.

How else can M$ be serious about making Vista a "games" platform, if game devs, right now, have nothing to play with? If we're about 1 year from Vista release what games (+ engines) are going to be written for DX10 launch?

The only chance seems to be a few console ports.

Jawed
 
Back
Top