3
$\begingroup$

What were the benefits of primitive quadrilateral rendering used by Nvidia's NV1 graphic chip over triangle based rendering? And what was the reason why Nvidia followed this approach?

$\endgroup$
11
  • $\begingroup$ By "quadratic surface rendering", do you mean quadratic texture interpolation, or quadrilateral (quad) primitives? NV1 supported both. If the former, does "triangle based rendering" mean "affine texture interpolation"? (Probably shouldn't have migrated this before that was cleared up, sorry.) $\endgroup$
    – wizzwizz4
    Commented Feb 21 at 22:22
  • $\begingroup$ I honestly don't know, just the opposite of triangle based rendering. Unfortunately there is little information about it. The Voodoo 3d accelerator cards and most other 3d graphics cards for example did use triangle based rendering with the exception of Nvidias NV1. When Microsoft decided to support triangle based rendering in their first Direct3d version, Nvidia switched to triangle based rendering too with its later Riva128 chip. Triangle based rendering means setting up triangles and filling them with pixels. $\endgroup$
    – Coder
    Commented Feb 22 at 7:12
  • $\begingroup$ Okay, that makes sense. I assume "quadratic surface rendering" is setting up quadrilaterals and filling them with pixels (i.e. quad primitives / primitive quadrilaterals), then. $\endgroup$
    – wizzwizz4
    Commented Feb 22 at 9:30
  • $\begingroup$ That sounds logical to me. So probably yes. $\endgroup$
    – Coder
    Commented Feb 22 at 11:07
  • 1
    $\begingroup$ I've suggested an edit. It might be useful to add some background motivation to your question as well. This question on GameDev Stack Exchange shows some people being confused, which might provide inspiration. Maybe you could point out that previous GPUs used tris, and modern GPUs use tris (often with no support for quads). $\endgroup$
    – wizzwizz4
    Commented Feb 22 at 13:02

2 Answers 2

3
$\begingroup$

There seems to be a lot of confusion around the NV1, so I tried to find a few actual sources.

It looks like NVidia and SGS-Thomson entered a partnership [#1] [#2] for a "Multimedia Accelerator", and then NVidia sold the NV1 chip as the VRAM version, while Thomson sold the STG 2000 chip as the DRAM version.

The Sega Saturn did not use the NV1, the Sega Saturn used the VDP1 [#3], and while some people say they are comparable [#4], and potentially the NV1/STG2000 was based on the VDP1, they are different.

The VDP1 has detailed documentation [#5], and it's less of a 3D-pipeline engine and more of a sprite engine that can distort and texture sprites. That's what forward texture mapping means: You iterate over the texture and map the result to the framebuffer, instead of iterating over the framebuffer pixels of the geometric primitive, sampling the texture while you do so (which is what modern engines do).

Forward mapping also does not have to deal with the case where a rendered quadrilateral is not flat, as the source image is flat by definition, and using a quadrilateral instead of a triangle makes iterating over it simpler.

I have not been able to find detailed documentation for the NV1 or the STG 2000, and apparently other people have also been looking and have found nothing. However, there's some basic documention for the STG 2000 [#6], which doesn't describe the rendering in detail, but says on page 9:

  • High performance acceleration of perspective-correct triangles, quadrilaterals and curves
  • [...]
  • Photorealistic 3D texture mapping, including lighting, fog, transparency, etc.
  • Video Texturing - ability to treat video as a texture.

So the claim that the NV1 used "primitive quadrilateral rendering over triangle based rendering" is wrong, both triangles and quadrilaterals are available as primitives.

It also doesn't say anything about the texture mapping mode used, and having triangles and curves as primitives makes it more likely that it was the modern "reverse" texture mapping, and not the forward mapping of the VDP1 used in the Sega Saturn.

In general, the assumption of the question that there was somehow an "advantage" to the way the NV1 implemented also does not apply: There was a lot of experimenting going on at that time, the rendering pipeline had not yet settled into the "generally accepted" flavour that turned out to be optimum for that era, and the actual details of the way of doing things were more historical accident, or a development of existing architectures.


Thanks for pointing out the "nVidia NV1 Windows 95 Software Development Kit 1.50" (SDK) on Vogons [#7]. The NV/SDK/DOCS directory contains a file TECHOVER.PDF which gives a technical overview. This confirms that the primitives are (p. 8)

  • Points, lines, polylines
  • Flat triangles
  • Flat quadrilaterals (quads)
  • Flat triangle strips, triangle chains
  • Flat quadstrips, quadchains, quadmeshes

and in addition, either bilinear textured or quadratic textured

  • triangles
  • triangle strips and chains
  • quadrilaterals
  • quadstrips, quadchains, quadmeshes

They also split the "standard" rendering pipeline into a CPU based part (transformation, clipping, Z-sorting; if you want, vector shader operations) and an accelerated part (lighting, texture mapping, transparency, depth, buffering; if you want, pixel shader operations). So they were indeed very familiar with the "standard" pipeline.

Nevertheless, they chose to implement only forward texture mapping (which was probably their mistake), though they give their reasoning and compare the forward texture mapping approach to the inverse texture mapping approach (p. 11 ff.) The reasons more or less boil down to performance on consumer hardware, and expectations for behaviour on consumer hardware.

However, that means that porting games from the Sega Saturn was really easy (as noted in the comments), as the features of the VDP1 could easily be mimicked by using a particular choice of primitives and texture interpolation. (This may of course have also influenced the decision to implement forward mapping in the first place, though they did not restrict the functionality to it).

$\endgroup$
8
  • $\begingroup$ Thank you for your answer. This morning I briefly skimmed the "nVidia NV1 Windows 95 Software Development Kit 1.50" (SDK) and it seems very promising in terms of detailed information about the NV1. In the evening I'll take a closer look. You can find it on Vogons. vogonsdrivers.com/getfile.php?fileid=706&menustate=0 $\endgroup$
    – Coder
    Commented Feb 23 at 8:53
  • $\begingroup$ One has to also wonder why NV1 had Saturn gamepad ports in an already established PC joypad world, Saturn only titles (Panzer Dragoon) as well as Model2 ports which are resource/detail gimped like Saturn ports (Daytona). And then throw in some playstation titles (NASCAR, Twisted Metal and Descent). Cash-grab to capitalise on the booming (wrt PC gaming market) console gaming market? $\endgroup$
    – lfgtm
    Commented Feb 23 at 9:53
  • 1
    $\begingroup$ I disagree about the rendering pipeline not being established by this point. Triangle primitive for rendering pipeline was already the defacto (even though quads were supported at this point [IrisGL/OpenGL], they were already known to have their issues with rendering), even already on PC hardware (IrisVision). This also suggests NV1 being something to align itself with Saturn-esque (last minute kludge to do 3D) practices which as you said was not what the Saturn was originally designed for. $\endgroup$
    – lfgtm
    Commented Feb 23 at 9:53
  • $\begingroup$ Also note, two of the founders (Curtis Priem and Chris Malachowsky) were previously SUN GX engineeres and Jensen Huang coming from LSI Logic (who made chips for SGI) were all probably well versed in 3D pipeline practices. So to add and market this capability suggests something a bit more. This is all purely subjective I might add. Only they know! $\endgroup$
    – lfgtm
    Commented Feb 23 at 9:54
  • 1
    $\begingroup$ They do indeed have a front end that accepts the primitive types, but that type is converted internally. The on chip device budget was WAY to small to create multiple pipelines for processing different geometry's. $\endgroup$
    – pmw1234
    Commented Feb 23 at 16:22
-1
$\begingroup$

Quads are an overloaded term in this context. The NV1 processed geometry using triangles and did not process quads as geometry. However it did process textures as 2x2 groups that was called "Quadrilinear" rendering.

I retract my retraction, the geometry processing was triangles.

The NV1 had a fixed function pipeline. With a fixed function pipeline, processing textures in 2x2 groups allowed the pixels to be processed in parallel improving texture throughput which in turn improved rending speed and performance.

Programmable pipelines required changes that made quadrilinear rendering infeasible.

$\endgroup$
4
  • $\begingroup$ I found on archive dot org the portfolio disc of the diamond edge 3d graphics card. In the hlp file of the edge3d is stated: "Quadrilateral - A polygon with 4 vertexes". Thus the NV1 is not using triangles. $\endgroup$
    – Coder
    Commented Feb 22 at 21:29
  • $\begingroup$ Found something very interesting on the website vogonsdriver dot com , the "nVidia NV1 Windows 95 Software Development Kit 1.50". But it's late now, i will take a look into it tomorrow. $\endgroup$
    – Coder
    Commented Feb 22 at 22:12
  • $\begingroup$ Everyone picked triangles; Microsoft followed. The PlayStation, Nintendo 64, 3dfx Voodoo, 3d Studio, etc, etc, etc existed before Direct3d. $\endgroup$
    – Tommy
    Commented Feb 23 at 1:15
  • $\begingroup$ I wasn't suggesting that Microsoft drove triangles in the industry. $\endgroup$
    – pmw1234
    Commented Feb 23 at 11:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.