L'unità Vertex Shader è conforme alle specifiche Microsoft DirectX 9.0c, ed è chiamata Vertex shader 3.0.
Sommario Vertex Shader | |||
Shader Model | 2.0 | 2.0a | 3.0 |
#of instruction slots | 256 | 256 | >= 512 |
Max # of instructions executed | 65535 | 65535 | 65535 |
Instruction Predication | - | Yes | Yes |
Temp Registers | 12 | 13 | 32 |
#constant registers | >= 256 | >= 256 | >= 256 |
Static Flow Control | Yes | Yes | Yes |
Dynamic Flow Control | - | Yes | Yes |
Dynamic Flow Control depth | - | 24 | 24 |
Vertex Texture Fetch | - | - | Yes |
#of texture samplers | - | - | 4 |
Geometry Instancing Support | - | - | Yes |
Il motore vertex ha subito un'ingente quantità di miglioramenti se confrontato con quello dell'NV 35/40. L'NV40 possiede 6 unità vertex che seguono il design MIMD (Multiple Input, multiple data). NVIDIA ha inoltre raggiunto un nuovo record gestendo fino a 600 milioni di poligoni al secondo (Radon 9800 XT = 412, FX 5950 = 356)
Il codice vertex shader può essere teoricamente di una lunghezza infinita con la VS 3.l0. Grazie al controllo del flusso dinamico (maggiori opzioni looping / branching e nuove funzioni subroutine), il codice shader può ora essere scritto in maniera più efficiente e offre nuovi effetti.
Ancora una volta un sommario delle caratteristiche principali:
- Full Support for Shader Model 3.0
- 216 (65,535) length vertex programs
- Vertex processing w/texture - displacement mapping
- Dynamic flow control - Branching, Call & Return, Subroutines
- Geometry Instancing (vertex stream divider)