DirectX 8 and GeForce3 - PowerPoint PPT Presentation

About This Presentation
Title:

DirectX 8 and GeForce3

Description:

Replaces the Transformation and Lighting Engine. Responsible ... Specular / Fog. Computed. Alpha. Blending. Dx8 Pixel. Shaders. Pixel Shader Assembly. Input: ... – PowerPoint PPT presentation

Number of Views:82
Avg rating:3.0/5.0
Slides: 33
Provided by: Assist5
Category:

less

Transcript and Presenter's Notes

Title: DirectX 8 and GeForce3


1
DirectX 8 and GeForce3
Christian Schär Sacha Saxer
2
Overview
  • DirectX
  • Direct3D 8
  • Vertex Shader
  • Pixel Shader
  • Hardware Support
  • Conclusions
  • Future

3
DirectX Components
  • DirectDraw
  • Direct3D
  • DirectSound
  • DirectMusic
  • DirectShow
  • DirectInput
  • DirectPlay

2D Graphics API 3D Graphics API Sound
API Music API Multimedia Streams API Input
API Network API
4
Direct3D
  • Hardware Abstraction Layer
  • Classic Rendering Pipeline
  • Vertex Shader
  • Pixel Shader
  • D3DX

5
Hardware Abstraction Layer
6
Classic Rendering Pipeline
CreateVertexBuffer() SetVertexShader() SetStream
Source() DrawPrimitive()
7
Vertex Shader
  • Small assembly language program
  • Replaces the Transformation and Lighting Engine
  • Responsible for World and View transformations
  • Is executed once per vertex
  • Has no neighborhood information
  • Prepares data for the Pixel Shader

8
Modified Rendering Pipeline
9
Vertex Shader Architecture
16 Input registers (r/o) 96 Constant registers
(r/o) 12 Temp registers (r/w) 1 Address register
(w/o) Output registers Max. 128 instructions
10
Vertex Shader Assembly
Output oPos Position oTn Texture oDn Color oFog/o
Pts
  • Input
  • vn
  • Vertex
  • cn
  • Constants
  • an
  • Address
  • rn
  • Temp

11
Vertex Shader Instructions
  • mov r, s0
  • add r, s0, s1
  • sub r, s0, s1
  • mul r, s0, s1
  • mad r, s0, s1, s2
  • rcp r, s0.w
  • rsq r, s0.w
  • copy
  • sum
  • difference
  • multiply
  • multiply-add
  • reciprocal
  • reciprocal sqrt

12
Vertex Shader Instructions
  • dp3 r, s0, s1
  • dp4 r, s0, s1
  • min r, s0, s1
  • max r, s0, s1
  • slt r, s0, s1
  • sge r, s0, s1
  • 3D dot product
  • 4D dot product
  • per component
  • per component
  • 1.0 if less than
  • 1.0 if greater/equal

13
Vertex Shader Instructions
  • expp r, s0.w
  • logp r, s0.w
  • lit r, s0, s1
  • dst r, s0, s1
  • partial prec.
  • partial prec.
  • lighting fn
  • distance fn

14
Register modifier
  • Component Modifier
  • r.x y z w
  • r.xyzwxyzwxyzwxyzw
  • -r
  • Description
  • Destination mask
  • Source swizzle
  • Source negation

15
Sample Vertex Shader
  • vs.1.1
  • m4x4 r0, v0, cCV_WORLD_0
  • m4x4 oPos, r0, cCV_VIEWPROJ_0
  • m3x3 r1, v3, cCV_WORLD_0
  • dp3 r1.x, r1, cCV_LIGHT
  • max r1.1, r1.x, cCV_ZERO.x
  • mul r1, r1.x, cCV_DIFUSE
  • add r1, r1, cCV_AMBIENT
  • min r1, r1, cCV_ONE.x
  • mov oD0.x, r1.x
  • mov oD0.y, r1.x
  • mov oD0.z, r1.x

16
Pixel Shader
  • Small assembly language program
  • Replaces the Texturing and Lighting Engine
  • Is executed once per pixel
  • Has no neighborhood information
  • Does further calculations on the Vertex Shaders
    output
  • The output is the color of the pixel

17
Modified Rendering Pipeline
18
Pixel Shader Architecture
Specular / Fog Computed
Dx8 Pixel Shaders
TexAddrOp 0
TexAddrOp 1
Alpha Blending
Triangle Rasterizer
8 Texture Blend Ops
TexAddrOp 2
TexAddrOp 3
19
Pixel Shader Assembly
Output rn Temp r0 Output color
  • Input
  • vn
  • Vertex color
  • tn
  • Texture
  • cn
  • Constants

20
Pixel Shader Instructions
  • mov r, s0
  • add r, s0, s1
  • sub r, s0, s1
  • mul r, s0, s1
  • mad r, s0, s1, s2
  • copy
  • sum
  • difference
  • multiply
  • multiply-add

21
Pixel Shader Instructions
  • dp3 r, s0, s1
  • lrp r, s0, s1, s2
  • cnd r, r0.a, s1, s2
  • sub r0, v0, v1_biascnd r0, r0.a, c0, c1
  • 3D dot product
  • lin. interp. blend
  • r r0.agt0.5 ? s1 s2
  • r v0 gt v1 ? c0 c1

22
Texture Instructions
  • tex t
  • texbem t
  • texbeml t, s
  • texcoord t
  • texkill t
  • texm3x2pad t, s
  • texm3x2tex t, s
  • texm3x3pad t, s
  • texm3x3tex t, s
  • texm3x3spec t, s0, s1
  • texm3x3vspec t, s
  • texreg2ar t, s
  • texreg2gb t, s
  • normal sample
  • bumped env. mapping
  • with Luminance
  • sample tex. coords.
  • black, if coords lt 0
  • Matrix multiplications
  • refl. env. map.
  • use s.ar as coords.
  • use s.gb as coords.

23
Sample Texture Instructions
  • tex t
  • texm3x2pad t0, s
  • texm3x2tex t1, s
  • tex t0
  • texm3x3pad t1, t0
  • texm3x3pad t2, t0
  • texm3x3spec t3, t0, c0
  • mov r0, t3
  • put texture col. into t
  • 3x2 matrix multiplication
  • get normal vector from t0
  • eye-ray vector from c0
  • cube env. texture from t3
  • do env. mapping
  • output color

24
Modifiers
  • Component Modifier
  • r.a rgb
  • 1-r
  • -r
  • r_bias
  • r_bx2
  • Description
  • Source/Destination mask
  • Invert
  • Negate
  • -0.5
  • -0.5, 2

25
Modifiers
  • Instruction Modifier
  • _x2
  • _x4
  • _d2
  • _sat
  • Description
  • multiply result by 2
  • multiply result by 4
  • divide result by 2
  • cramp result

26
Sample Pixel Shader
  • ps.1.1
  • tex t1
  • mov r0, t1 use texture color
  • mov r0.a, v0 get diffuse lighting from
  • vertex interpolation

27
D3DX Mesh Optimizing
  • adjacency required
  • sort by attribute
  • compact
  • progressive meshes

28
D3DX Progressive Meshes
  • different levels of detail (LOD)
  • half edge collapse
  • cloning by sharing of vertex buffers
  • streamable
  • save method
  • OptimizeBaseLOD
  • TrimByVertices/TrimByFaces

29
D3DX Skinned Meshes
  • vertex data, bone data with vertex indices
  • support for .X files
  • export filters for Maya, 3D Studio Max available
  • up to 4 indices per vertex
  • up to 12 indices per face
  • up to 256 bone palettes
  • ConvertToBlendedMesh() reduces to this
    constraints
  • ConvertToIndexBlendedMesh() same, but less
    subsets
  • Uses GeForces restricted skinning support by
    rendering a prefix in hardware.

30
Conclusions
  • very flexible tool
  • hardware accelerated
  • low level interface (assembly)
  • vertex shaders theoretically applicable to
    point-sampled geometry
  • rendering of shadows needs lots of work

31
Whats next?
  • subdivision surfaces in hardware
  • (TruForm technology by ATI)
  • displacement maps

32
References
  • MSDN (Microsoft Developer Network)
  • NVIDIA Whitepapers
  • Introduction to Vertex Shaders
  • Introdction to Pixel Shaders
  • http//msdn.microsoft.com/directx
  • http//partners.nvidia.com/Developer
Write a Comment
User Comments (0)
About PowerShow.com