HighTech And Vertex Juggling  NVIDIA's New GeForce3 GPU

Page 1:Introduction

Page 2:The General Features Of GeForce3

Page 3:GeForce3's New Vertex Shader  A Poor Name For A Great Set Of Features

Page 4:What Is A Vertex?

Page 5:Lighting

Page 6:Vertex Shader Details

Page 7:Programming The Vertex Shader

Page 8:Programming The Vertex Shader, Continued

Page 9:Programming The Vertex Shader, Continued

Page 10:Procedural Deformation

Page 11:Setup For Dot Product Bump Mapping (Per Pixel Bump Mapping)

Page 12:Reflection And Refraction

Page 13:More Effects

Page 14:The Programmable Pixel Shader Of GeForce3

Page 15:What Happens In The 3DPipeline Before The Pixel Shader? Continued

Page 16:The Basics Of GeForce3's Pixel Shader

Page 17:2 Textures Per Clock Cycle, But 4 Textures Per Pass?

Page 18:Pixel Shader Programming, Continued

Page 19:Advances And Advantages Of The Pixel Shader

Page 20:Shadow Mapping

Page 21:Isotropic BRDF Based Lighting

Page 22:Blinn Bump Mapping = True Reflective Bump Mapping

Page 23:AntiAliasing  Removing The 'Jaggies'

Page 24:Quincunx ! Samples

Page 25:Higher Order Surfaces

Page 26:Higher Order Surfaces, Continued

Page 27:Higher Order Surface
Programming The Vertex Shader
This information is only for the ones of you who are interested and have a bit of programming experience as well as a minimal understanding of 3D math.
These are the instructions:
Instruction  Parameters  Action 

nop  do nothing  
mov  dest, src  move 
mul  dest, src1, rc2  Set dest to the product of src1 and src2 
add  dest, src1, rc2  Add src1 to src2. [And the optional negation creates subtraction] 
mad  dest, src1, rc2, rc3  Multiply src1 by src2 and add src3  into dst 
rsq  dest, src  Reciprocal square root of src (much more useful than straight 'square root').
dest.x = dest.y = dest.z = dest.w = 1/sqrt(src) 
dp3  dest, src1, src2  3 Component dot product 
dp4  dest, src1, src2  4 Component dot product 
dst  dest, src1, src2  Calculate distance vector. src1 vector is (NA,d*d,d*d,NA) and src2 is (NA,1/d,NA,1/d).
dest is set to (1,d,d*d,1/d) 
lit  dest, src  Calculates lighting coefficients from two dot products and a power. src is:

min  dest, src1, src2  Componentwise min operation 
max  dest, src1, src2  Componentwise max operation 
slt  dest, src1, src2  dest = (src1 < src2) ? 1 : 0 
sge  dest, src1, src2  dst = (src1 >= src2) ? 1 : 0 
expp  dest, src.w 

log  dest, src.w  dest.x = exponent((int)src.w)
dest.y = mantissa(src.w) dest.z = log2(src.w) dest.w = 1.0 
rcp  dest, src.w  dest.x = dest.y = dest.z = dest.w = 1 / src 
These few instructions are already quite powerful. To make the handling easier, NVIDIA added a few more features, 'costless' negation and swizzling...
Summary
 Introduction
 The General Features Of GeForce3
 GeForce3's New Vertex Shader  A Poor Name For A Great Set Of Features
 What Is A Vertex?
 Lighting
 Vertex Shader Details
 Programming The Vertex Shader
 Programming The Vertex Shader, Continued
 Programming The Vertex Shader, Continued
 Procedural Deformation
 Setup For Dot Product Bump Mapping (Per Pixel Bump Mapping)
 Reflection And Refraction
 More Effects
 The Programmable Pixel Shader Of GeForce3
 What Happens In The 3DPipeline Before The Pixel Shader? Continued
 The Basics Of GeForce3's Pixel Shader
 2 Textures Per Clock Cycle, But 4 Textures Per Pass?
 Pixel Shader Programming, Continued
 Advances And Advantages Of The Pixel Shader
 Shadow Mapping
 Isotropic BRDF Based Lighting
 Blinn Bump Mapping = True Reflective Bump Mapping
 AntiAliasing  Removing The 'Jaggies'
 Quincunx ! Samples
 Higher Order Surfaces
 Higher Order Surfaces, Continued
 Higher Order Surface