The original Nvidia chip, the NV1, was based on quadratic surfaces instead of the polygon based method that is currently used by everyone’s graphics hardware. Using CUDA it should be possible to re-implement this quadratic approach with reasonable performance. It would be interesting to see the graphics that would result in an environment that supports true curved surfaces, i.e. the universe that would have resulted from widespread adoption of the NV1 approach.
That’s cool.
Do you have a link for the math involved?
Also, where does one get quadratic models?
Quadratic patches aren’t exactly the ideal curved surface primitive (if I remember correctly they can’t even represent a sphere accurately), which is why most applications use cubic patches or subdivision surfaces these days. It would be a strange looking universe indeed if the NV1 approach had been successful!
People have started doing this kind of thing in CUDA:
[url=“http://www.idav.ucdavis.edu/func/return_pdf?pub_id=952”]http://www.idav.ucdavis.edu/func/return_pdf?pub_id=952[/url]
You can also do surface evaluation on current hardware using instanced tessellation:
[url=“NVIDIA Direct3D SDK 10 Code Samples”]http://developer.download.nvidia.com/SDK/1...cedTessellation[/url]
DirectX11 will have support for tessellation in hardware:
[url=“http://developer.nvidia.com/object/siggraph-2008-Subdiv.html”]http://developer.nvidia.com/object/siggraph-2008-Subdiv.html[/url]
A sphere is definitely a quadratic surface. I think the perceived virture of quadratic surfaces was the ease with which ray intersections and surface normals could be computed. I expect that stitching pieces together and modeling general shapes were the problems that lead to the early demise of this approach. The jump to cubic patches was most probably selected to help with the stitching problem. I do not think that any level of polynomial modeling is a practical method for realistic modeling. My interest in the issue is to see what sort of weirdness might emerge by adopting the quadratic limitations.
Thanks for the interesting links.
You might try digging through the POV ray tracing source code. I believe that they support quadratic surfaces.
Quadratic surfaces are not the same as quadratic patches.
A quadratic surface is an implicitly defined solution to a quadratic equation… that’s spheres, planes. ellipses, hyperboloids, and paraboloids.
A quadratic patch is a 2D patch PARAMETERIZED by a quadratic function in a UV parameterization coordinate system.
So a UV 2D point is some 3D point given by X=A+BU+CV+DUV+EUU+FVV, similarly for Y and Z.
Quadratic patches are easy to evaluate and scan convert (a scanline rasterization becomes a simple quadratic, and evaluating THAT can be done without even any multiplies! [using a second order DDA, a common trick…] This was the big appeal of using them as a rasterization primative.
Quadratic SURFACES are not easy to rasterize in general, though they have a mathematical elegance in raytracing them.