|
Quake3best 发表于 2010-10-29 20:01 ![]()
楼主这张图不知道是什么东东,第一个支持 Tessellation 他爸爸的游戏是重返德军总部,当时只有radeon能打开 ...
RADEON (Rage6c 或者 R100)不支持 TruForm(PN-Patch),支持 PN-PATCH 的是 RADEON 8XXX(R200)。
第一个采用 Tessellation 的游戏是 Quake 3,使用软件方式在游戏装载场景的时候由 CPU 根据 tessellation factor 预先执行 tessellation 。
执行 Tessellation 需要使用被称作 High Order Surface(简称 HOS)的几何图元,HOS 有很多种,例如 RT-Patch、PN-Patch、NURBS、Bézier Patches 等等,DirectX 支持 RT-Patches、Quintic RT Patches、PN-Patches 这几种 HOS。
NVIDIA 在 NV20 引入 RT-Patches,ATI 在 R200 引入 PN-Patches。
在 OpenGL.org 上,你依然可以找到当年 NV20 的 RT-patches OpenGL 扩展描述:
http://www.opengl.org/registry/specs/NV/evaluators.txt
OpenGL evaluators provide applications with the capability to
specify polynomial or rational curves and surfaces using control
points relative to the Bezier basis. The curves and surfaces are
then drawn by evaluating the polynomials provided at various values
for the u parameter of a curve or the (u,v) parameters of a surface.
A tensor product formulation is used for the surfaces.
OpenGL evaluators only support rectangular patches, not triangular
patches. Although triangular patches can be converted into
rectangular patches, direct support for triangular patches is likely
to be more efficient.
The tessellation algorithm used is too inflexible for most purposes;
only the number of rows and columns can be specified. Adjacent
patches must then have identical numbers of rows and columns, or
severe cracking will occur. Ideally, a number of subdivisions could
be specified for all four sides of a rectangular patch and for all
three of a triangular patch. This extension goes one step further
and allows those numbers to be specified in floating-point, providing
a mechanism for smoothly changing the level of detail of the surface.
|
|