Bezier surfaces and NV_evaluators

Hi all,

so it appears that nvidia cards implement an acceleration of a subset of bezier surfaces. I am still in the middle of coding this stuff up, but I am curious - how well accelerated are they? - if one takes the example of a surface constructed of polys and an equivalent surface constructed of using the bezier basis where equivalent refers to the visual appearance of smoothness along the surface profile say (yup I know an awful metric, but that is the reason for using them in the first place) - which is the faster rendered?


NV_evaluators has been dropped, don’t use it


hmmm… so is there any acceleration of bezier surfaces in hardware with nvidia chips?

so a brief search on the archive shows that there is no support with current drivers for any of the bezier+NURBS surfaces. I guess I should have checked before posting. sorry.

it is odd though, given the appilicability of NURBS to so many problems, that there is no acceleration. is there the intention to implement it in another form later on?

vertex programs can take over this job.

I don’t recall seeing much lately about HOS. When the NV_evaluators was introduced, a document was made to go along with it. You can search at

Originally posted by V-man:
vertex programs can take over this job.

How? As far as I know, the beizer tassellator automatically generates vertices. If I am not wrong the NV evaluator generated vertices where you need them with an adaptive tassellation.
How can we accomplish the same thing by using VPs? They cannot create vertices. Of curse, they can displace already existing vertices but this is not going to look the same…

I think the support was dropped because there was only few application in gaming environments. CD becomes difficult in my opinion.

How? As far as I know, the beizer tassellator automatically generates vertices.

While the adaptive portion of a tesselator can’t be emulated, a vp can certainly emulate basic tesselation. What you have to do is pass the 16 control points, not as per-vertex attributes, but as constants. Then, your per-vertex attributes are just the u/v coordinates of the point to generate.

[This message has been edited by YK (edited 05-30-2003).]

You can look at this peper about tesselation of subdivision surfaces using vertex programs.
the nurbs tesselation will be much simpler certainly.



thanks you very much for a lucid description of a very interesting solution - excellent stuff