Status – Week 282

21
Status – Week Status – Week 282 282 Victor Moya Victor Moya

description

Status – Week 282. Victor Moya. 3D Graphics Pipeline. Geometry. Vertex operations: (1) Transform coordinates and normal Model => World. World => Eye. (2) Normalize the length of the normal. (3) Compute vertex lightning. (4) Transform texture coordinates. - PowerPoint PPT Presentation

Transcript of Status – Week 282

Page 1: Status – Week 282

Status – Week Status – Week 282282

Victor MoyaVictor Moya

Page 2: Status – Week 282

3D Graphics Pipeline3D Graphics Pipeline

Page 3: Status – Week 282

GeometryGeometry

Vertex operations:Vertex operations: (1) Transform coordinates and normal (1) Transform coordinates and normal

Model => World.Model => World. World => Eye.World => Eye.

(2) Normalize the length of the normal.(2) Normalize the length of the normal. (3) Compute vertex lightning.(3) Compute vertex lightning. (4) Transform texture coordinates.(4) Transform texture coordinates. (5) Transform coordinates to clip coordinates (5) Transform coordinates to clip coordinates

(projection).(projection). (8) Divide coordinate by w.(8) Divide coordinate by w. (9) Apply affine viewport transform (x, y, z).(9) Apply affine viewport transform (x, y, z).

Page 4: Status – Week 282

GeometryGeometry

Primitive operations:Primitive operations: (6) Primitive assembly (6) Primitive assembly (7) Clipping:(7) Clipping: (10) Backface cull: eliminate back-(10) Backface cull: eliminate back-

facing triangles. facing triangles. Primitive generation: new pipeline Primitive generation: new pipeline

stage (ATI TruForm).stage (ATI TruForm).

Page 5: Status – Week 282

ClippingClipping

Clip geometry primitives with the Clip geometry primitives with the view frustrum (6 planes).view frustrum (6 planes).

Clip geometry primitives with the Clip geometry primitives with the user clip planes.user clip planes.

Techniques used:Techniques used: Guard-Band Clipping.Guard-Band Clipping. Homogenous rasterization avoids Homogenous rasterization avoids

clipping in the geometry stage.clipping in the geometry stage.

Page 6: Status – Week 282

Guard-Band ClippingGuard-Band Clipping

Page 7: Status – Week 282

Homogeneus coordinatesHomogeneus coordinates

““Triangle Scan Conversion using Triangle Scan Conversion using 2D Homogeneus Coordinates”, 2D Homogeneus Coordinates”, Olano and Greer.Olano and Greer.

Page 8: Status – Week 282

RasterizationRasterization

Setup (per-triangle).Setup (per-triangle). Sampling (triangle = {fragments}.Sampling (triangle = {fragments}. Interpolation (interpolate colors Interpolation (interpolate colors

and coordinates).and coordinates).

Page 9: Status – Week 282

RasterizationRasterization

Converts primitives to fragments.Converts primitives to fragments. Primitive: point, line, polygon, …Primitive: point, line, polygon, … Fragment: transient data structure Fragment: transient data structure

short x, y;short x, y;

long depth;long depth;

short r, g, b, a;short r, g, b, a;

Fragment selection.Fragment selection. Parameter Assignment (color, depth ...).Parameter Assignment (color, depth ...).

Page 10: Status – Week 282

Programmable PipelineProgrammable Pipeline

Page 11: Status – Week 282

Vertex ProgramVertex Program

Page 12: Status – Week 282

Vertex ProgramVertex Program

Page 13: Status – Week 282

NV_vertex_program2NV_vertex_program2 ARL (new support for four-component A0 and A1 instead of just ARL (new support for four-component A0 and A1 instead of just

A0.x)A0.x) ARR (similar to ARL, but rounds instead of truncating before ARR (similar to ARL, but rounds instead of truncating before

storing the integer result in an address register)storing the integer result in an address register) BRA, CAL, RET (branching instructions)BRA, CAL, RET (branching instructions) COS, SIN (high-precision trigonometric functions)COS, SIN (high-precision trigonometric functions) FLR, FRC (floor and fraction of floating-point values)FLR, FRC (floor and fraction of floating-point values) EX2, LG2 (high-precision exponentiation and logarithm functions)EX2, LG2 (high-precision exponentiation and logarithm functions) ARA (adds pairs of components of an address register; useful for ARA (adds pairs of components of an address register; useful for

looping and other operations)looping and other operations) SEQ, SFL, SGT, SLE, SNE, STR (“set on” instructions similar to SEQ, SFL, SGT, SLE, SNE, STR (“set on” instructions similar to

SLT, SGE)SLT, SGE) SSG (“set sign” operation; generates a vector holding –1.0 for SSG (“set sign” operation; generates a vector holding –1.0 for

negative operand components, 0 for zero-value components, negative operand components, 0 for zero-value components, and +1.0 for positive components)and +1.0 for positive components)

Page 14: Status – Week 282

NV_vertex_program Overview

1. Condition codes 2. Branching & subroutines 3. Even faster performance 4. Nineteen new instructions 5. New source modifiers 6. Clip plane support 7. More registers & instructions

Page 15: Status – Week 282

NV_vertex_program2 Resource NV_vertex_program2 Resource LimitsLimits

256 vertex program parameters256 vertex program parameters Up from 96Up from 96 16 temporary registers16 temporary registers Up from 12Up from 12 Two 4-component address registersTwo 4-component address registers Up from one single-component address registerUp from one single-component address register 256 static instructions per program256 static instructions per program Up from 128Up from 128 Given branching, 65536 dynamic instructions Given branching, 65536 dynamic instructions

can execute before termination to avoid infinite can execute before termination to avoid infinite loopsloops

Page 16: Status – Week 282

NV_vertex_program2 Source NV_vertex_program2 Source ModifiersModifiers

Source operand absolute valueSource operand absolute value Example: MOV R0, |R1|;Example: MOV R0, |R1|; In addition to source negation & In addition to source negation &

swizzlingswizzling Example: MAD R0, -|R1|.yzwy, |R2|, Example: MAD R0, -|R1|.yzwy, |R2|,

-R3,w;-R3,w; Swizzle, negate, & absolute value Swizzle, negate, & absolute value

operations are “free” source operations are “free” source modifiersmodifiers

Page 17: Status – Week 282

NV_vertex_program2 Condition NV_vertex_program2 Condition Codes (1)Codes (1)

Condition code stateCondition code state 4-component register stores condition code values4-component register stores condition code values Four possible valuesFour possible values LT –less than zeroLT –less than zero EQ – equal to zeroEQ – equal to zero GT –greater than zeroGT –greater than zero UN– unordered, for comparisons involving NaNUN– unordered, for comparisons involving NaN Most instructions optionally update condition code stateMost instructions optionally update condition code state Indicated with “C” suffix: DP4C, MOVC, etcIndicated with “C” suffix: DP4C, MOVC, etc “ “CC” pseudo-register used to just update condition CC” pseudo-register used to just update condition

codescodes

Page 18: Status – Week 282

NV_vertex_program2 Condition NV_vertex_program2 Condition Codes (2)Codes (2)

Optional condition code based destination Optional condition code based destination maskingmasking

Example: MOV R1.xy(NE.z), R0;Example: MOV R1.xy(NE.z), R0; Copy R0components to R1’s X & Y components Copy R0components to R1’s X & Y components

except when condition code’s Z component is except when condition code’s Z component is EQEQ

Condition code rules: EQ, equal; GE, greater or Condition code rules: EQ, equal; GE, greater or equal; GT, greater than; LE, less or equal; LT, equal; GT, greater than; LE, less or equal; LT, less than; NE, not equal; FL, false; and TR, trueless than; NE, not equal; FL, false; and TR, true

Note that condition code masking rule can Note that condition code masking rule can swizzle condition code componentsswizzle condition code components

Page 19: Status – Week 282

ATI R300. Vertex Shader.ATI R300. Vertex Shader.

Page 20: Status – Week 282

3DLabs P10. Pipeline.3DLabs P10. Pipeline.

Page 21: Status – Week 282

Matrox Parhelia. Pipeline.Matrox Parhelia. Pipeline.