Vertex shaders everywhere

ET

Regular
Interesting that as a 3D enthusiast, I failed to note some cards that support vertex shaders. Only now that I'm thinking of using them, did I notice that the GeForce 4MX and Radeon 7500 support them, even though they don't support pixel shaders. This is quite nice. I actually remember reading about "limited shader support" in GeForce4 MX reviews, but don't remember ever seeing it mentioned for the Radeon 7500.
 
The 3D core is essentially the same as a GeForce2MX, other than the MSAA and Crossbar etc., and this includes the '2nd Generation Hardware Geometry Processing'. Testing also clearly displays the behavious you expect of a board with Software VS and Hardware T&L.
 
GeForce 4 MX actually has some vertex shader functionality (as Richard Huddy said) and if you test it in hardware vertex processing mode it will perform much better then it would in software vertex processing mode (3D Mark 2002SE allows you to choose this mode). Scaling with the CPU is not the only factor here.
 
You can leverage a fixed function T+L pipe to assist vertex shading - then you don't have to do the perspective transform or clipping on the host.
 
I believe the GF4MX has no specific VS HW, I'd say that all NV did was to write a VS->SSE/SSE2/3DNOW compiler and use it to feed clip space coords to the existing (GF2MX) FixedFN T&L unit removing the need for the SW to clip, project and VP transformed the verts. The removal of these stages from SW processing could account for its apparent HW acceleration of VS.

Of course this is only my opinion.
John.

Edit - Dio, already said this!
 
First of all, it's not all that easy to translate a shader into software + T&L. Also, I see no reason why NVIDIA or ATI would add such support to the driver of a specific chipset, and not others. If the GeForce4 MX has the same geometry engine as a GeForce2, why won't NVIDIA add this support to the GeForce2? Same for the Radeon 7500 vs. 7200. It's not as if NVIDIA or ATI is selling the GeForce4 MX or Radeon 7500 based on this functionality.

In any case, I'm planning to do my shader development on a Radeon 7500 (with testing on better cards, of course), so I'll find out if there is hardware support or not. After all, the difference between software and hardware shaders on my GeForce3 and P3-700 at home is more than ten fold.
 
Got my Radeon 7500 PCI finally. Must say it's awful when it comes to fill rate. In 3DMark 2001, its vertex shader performance wasn't much higher than software, but I imagine that's a fill rate issue, too (could be a memory bandwidth issue, too, with the drawing slowing the vertex shading). On the DX9 samples, it showed quite good performance advantage for hardware vs. software vertex shaders. For example, the DolphinVS sample runs about 10 times faster (when the window is very small) using hardware vertex shaders.
 
Neither the Geforce 4 MX or Radeon 7500 have vertex shaders. They both would have trumpeted this feature allot if the cards supported it in hardware.

Just because they do VS faster when usingusing HW VS in a game or app vs SW VS that doesn't mean they actually have a vertex shader. For instance the Kyro II (with ET&L) does T&L faster when using HW T&L in a game or app then when using SW T&L. Yes Kyro II has no T&L unit.

As people have said both cards are just using an optimised software solution.

Also there are a few reasons that ATI and Nvidia don't use this software solution on Radeon and Geforce 2.

Firstly they're not interested in Geforce 2 and Radeon anymore.. they want people to go for Geforce 4MX and Radeon 7500 now.

Secondly if this software solution is only on 4MX and 7500 then it looks like a new feature and helps set them appart from previous cards. Why give the software solution to Geforce 2MX and Radeon owners for free when that would be giving them less reason to upgrade to Geforce 4MX and Radeon 7500? Obviously that would be nice, but its not going to help ATI or Nvidia and that's all they care about.
 
Sorry if this is a dumb question, but what exactly does the Vertex Shader do anyway? I always thought the Vertex Shader was similar to fixed function T&L, or at least it is used for emulation purposes on newer cards.
 
Nagorak said:
Sorry if this is a dumb question, but what exactly does the Vertex Shader do anyway? I always thought the Vertex Shader was similar to fixed function T&L, or at least it is used for emulation purposes on newer cards.

The "vertex shader" is essentially a vector-based processing unit. The processing capabilities are reasonably comprehensive, though there is a lack of branching capability.
 
Chalnoth said:
The "vertex shader" is essentially a vector-based processing unit. The processing capabilities are reasonably comprehensive, though there is a lack of branching capability.

There is branching capability in VS 2 and higher.

Back to the vertex shaders, ATI told me it's not "pure hardware", and I hope they can clarify that.

I still imagine that there's a difference. There's probably some hardware support there. Either that, or Microsoft should be caught and hanged for providing us a software solution that's 10 times slower than possible.

Teasy said:
Why give the software solution to Geforce 2MX and Radeon owners for free when that would be giving them less reason to upgrade to Geforce 4MX and Radeon 7500?

You're contradicting yourself. On one hand you're saying they're not trumpeted, and OTOH you're saying they're put there to sell the cards (which is silly -- does ATI want a Radeon owner to move up to a 7500?).
 
ET said:
There is branching capability in VS 2 and higher.

But dynamic branching is not supported in any current video card (it will be available in the GeForce FX). And regardless, on all current and foreseeable graphics cards, there will still be limitations in regards to branching/program size. As far as I can see, the branching in the Radeon 9700 is little more than a form of program compression.
 
Chalnoth said:
But dynamic branching is not supported in any current video card (it will be available in the GeForce FX). And regardless, on all current and foreseeable graphics cards, there will still be limitations in regards to branching/program size. As far as I can see, the branching in the Radeon 9700 is little more than a form of program compression.

Gotta agree with ya. The difference between dynamic and static flow control is that with the latter the loop repeats a set amount of times. With dynamic flow control, the looping is controlled by a variable and one can forcibly exit out of the loop via something like C++'s "break" statement. The obvious danger that dynamic looping presents is the potential for "infinite" loops. I put infinite in quotes because it is likely that the loop will only continue as long as the maximum number of instruction slots has not been reached. Once it does reach the maximum, however, I wonder what exactly happens. . . An error? Or does the rendering of that pixel get killed?
 
You're contradicting yourself. On one hand you're saying they're not trumpeted, and OTOH you're saying they're put there to sell the cards (which is silly -- does ATI want a Radeon owner to move up to a 7500?).

No, I said they would have trumpeted the feature allot if the cards had it in hardware. As in they would have mentioned DX8 T&L on the box, rather then barely mentioning it at all as they have.

Again its like EnT&L with Kyro II SE. That was a software optimised T&L solution. Yet PowerVR never released it for Kyro or Kyro II and was never planning to, even though they could have. For the very reasons I mentioned earlier.

Radeon 7500 is just an overclocked Radeon. You really think they added in a vertex shader and never mentioned it was there in hardware? Pretty much the same goes for Geforce 4MX
 
Back
Top