Confessions of ignorance

horvendile

Regular
Although never really having been an expert on 3D hardware, being out even of the layman's loop for a couple of years didn't exactly do wonders for my understanding of consumer 3D cards. When I'm now trying to get up to speed again, I discover that there are terms that apparently are very basic yet unmastered by yours truly. Please help me out of this embarrasing state of affairs!

1: ROP. What makes a ROP different from the good old texture-applying pixel pipeline? And, as it were, exactly what does the acronym stand for?

2: Fragment shaders. What is the difference between a fragment shader and a pixel shader? Are they even nearly the same thing?
 
horvendile said:
1: ROP. What makes a ROP different from the good old texture-applying pixel pipeline? And, as it were, exactly what does the acronym stand for?

A ROP isn't different from the good old pipeline - it's the butt-end of it, where the final color value is blended to the framebuffer but this hasn't changed. It's the stuff that happens before the ROP stage that has been revamped a lot recently.

2: Fragment shaders. What is the difference between a fragment shader and a pixel shader? Are they even nearly the same thing?

Effectively, yes.
 
horvendile said:
1: ROP. What makes a ROP different from the good old texture-applying pixel pipeline? And, as it were, exactly what does the acronym stand for?

Raster OPerations.
 
Over the last few years, it has increasingly been the case that instead of having a monolithic pixel pipeline from scan conversion to framebuffer write, the pixel pipeline has been broken up into different units with different functions, with the pixels being dynamically transferred between the various units dependent on what tasks need to be performed on them. Typical units would be:
  • Texture Mapper
  • Arithmetic execution units for pixel shading
  • ROP unit (basically Z/stencil test and framebuffer blend)
The number of each type of unit is not necessarily connected to the number of any other type of unit anymore; e.g. Geforce7800GTX appears to have 24 texture mappers, but only 16 ROPs.
 
All right! Thanks everyone.

arjan de lumens said:
The number of each type of unit is not necessarily connected to the number of any other type of unit anymore; e.g. Geforce7800GTX appears to have 24 texture mappers, but only 16 ROPs.

Meaning, I suppose, that it can apply 24 textures per clock, but only output 16 pixels to screen? Or, talking with the old nomenclature, having 1.5 TMUs per pixel pipeline? (I understand that this may not be the exact equivalence, but as an analogy)
 
horvendile said:
Meaning, I suppose, that it can apply 24 textures per clock, but only output 16 pixels to screen? Or, talking with the old nomenclature, having 1.5 TMUs per pixel pipeline? (I understand that this may not be the exact equivalence, but as an analogy)

Yes, but nearly every texture unit that is used today can only apply one bilinear sample per clock. If you need a higher quality filter the performance is decreased. Using a trillinear filter cut it to the half. AF even more. Because of this it will be most time no problem having less ROPs than texture units. Additional modern shader programs apply most time more than one texture to a pixel before it is send to the ROPs.

Shortly we had seen a patent from nVidia that show a new architecture that doesn’t have ROPs at all. It use the pixelshader even for this part of the 3D pipeline.
 
Blazkowicz_ said:
fragment shader is the term used in OpenGL, versus pixel shader in Direct3D.

To elaborate further, OpenGL makes the distinction between a pixel and a fragment, while DirectX tend not to and goes with "pixel" for both. In OpenGL terminology a pixel is what's in the framebuffer. A fragment is what it's called while being processed in the pipeline, before it's written to the framebuffer. Often this distinction is not that important, but there are cases where saying "pixel" about both becomes confusing, especially when describing some rendering techniques, like for instance the "dynamic branching with stencil" technique where it's much easier to use the word fragment and pixel instead of constantly having to tell explicitly whether we're talking about what's already in the framebuffer or if we're talking about what's coming down the pipeline.
 
  • Like
Reactions: Geo
Back
Top