Tải bản đầy đủ (.pdf) (15 trang)

Tìm hiểu 3D graphic pipeline phần 1 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (296.56 KB, 15 trang )

3D graphic pipeline

Lời mở đầu:
Rock không học về ngành gì liên quan đến vi tính từ trước đến gìơ ,cho
đến cả word/excel/acess còn chưa bao giờ đi học ,tuy nhiên với đam mê
về vi tính nói chung và về đồ hoạ nói riêng nên tự mình tìm tòi trên các
website các bài review, artice …. .,trong quá trình dịch liên tục sử dụng
tự đỉên lạc việt và các từ điển online . Do đó bài này có thể có nhiều sai
sót ,nhiều chỗ dịch chưa tới , nên khi xem xong vui lòng các bro nào có
hiểu biết về vấn đề này nếu thấy có sai sót xin góp ý dùm . Ngoài ra bài
này mang tính chất thảo luận ,không phải là bài hướng dẫn hay chỉ bảo ai
nên ai có ý kiến xin góp vào để xây dựng thread ,các đóng góp của bro sẽ
được dùng để chỉnh sửa thread này .

3D graphic pipeline :
Bởi vì tính chất làm việc lập đi lập lại của đồ họa 3D và cũng vì khối
lượng tính tóan ,khối lượng thông tin nhiều , nên toàn bộ quá trình xử lý
đồ họa được chia nhỏ thành những bước .Những bước nay họat động 1
cách trình tự và được gọi là 3D graphic pipeline . Một ví dụ về pipeline là
việc giặt đồ ,công việc giặt đồ gồm 3 bước : giặt ,sấy và phơi đồ ,nếu họat
động theo kiểu pipeline thì lượt đồ thứ 1 sau khi giặt sẽ được chuyển sang
giai đọan sấy thì lượt đồ thứ 2 sẽ được chuyển qua giai đọan giặt . Khi
lượt đồ thứ 1 được đem phơi thì lượt thứ 2 được sấy ,lượt đồ thứ 3 được
bỏ vào giặt . Trên thực tế GPU sẽ họat động theo những trình tự như vậy .
Đây là ý nghĩa của 3 D graphic pipeline . Ở đây cần phân biệt với số
pipeline mà các nhà sản xuất thường đưa ra để quảng cáo , đây là số
lượng pixel pipeline ( số lượng pixel shader ) hoặc ROPs ( tùy website )
,ở đây có sử dụng từ pipeline vì các units này hoạt động 1 cách song song
,ví dụ như vid có 16 pixel pipeline thì 16 cái này cùng làm việc trong 1
lúc chứ không phải là cái này làm xong mới đến cái kia làm ,tương tự đối
với ROPs ,tuy nhiên theo quan điểm của Rock thì sử dụng số ROPs để so


sánh tốc độ mạnh yếu của vid trong thời điểm hiện nay đúng hơn ( sẽ giải
thích ở cuối bài )
Đây là các giai đọan của 3D graphic pipeline :

3D Pipeline _Tổng quát về các giai đoạn của nó
1. Application/Scene
• Scene/Geometry database traversal
• Movement of objects, and aiming and movement of view camera
• Animated movement of object models
• Description of the contents of the 3D world
• Object Visibility Check including possible Occlusion Culling
• Select Level of Detail (LOD)
2. Geometry
• Transforms (rotation, translation, scaling)
• Transform from Model Space to World Space (Direct3D)
• Transform from World Space to View Space
• View Projection
• Trivial Accept/Reject Culling
• Back-Face Culling (can also be done later in Screen Space)
Lighting
• Perspective Divide - Transform to Clip Space
• Clipping
• Transform to Screen Space
3. Triangle Setup
• Back-face Culling (or can be done in view space before lighting)
• Slope/Delta Calculations
• Scan-Line Conversion
4. Rendering / Rasterization
• Shading
• Texturing

• Fog
• Alpha Translucency Tests
• Depth Buffering
• Antialiasing (optional)
• Display
API :
Trước khi đi vào các bước này tôi xin giải thích sơ về API .API viết tắt
của từ Application Programming Interface hiện tại bao gồm : SGI's
OpenGL, Microsoft's Direct3D, và Pixar's Renderman. API giống như 1
cổng giao tiếp giữa phần cứng và phần mêm ,các nhà viết phần mêm sẽ
víêt những việc mà vid cần làm để API dịch lại cho driver của vid hiểu
những việc cần làm .Ngược lại các nhà sản xuất cũng viết driver để API
hiểu .

Không gian 3D :

Model space : Model ở đây là các hình người ,nhà cửa ,đồ vật …. .( ta sẽ
nhắc lại ở phần sau của bài ) .Mỗi model sẽ có 1 hệ thông tọa độ riêng
của nó . Trên mỗi model cũng có 1 điểm “ điều khiển “ ( control point
hay handle ) ,để di chuyển model này thì các nhà thiết kế chỉ cần di
chuyển điểm này và cũng nhờ điểm này có thể giúp việc rotate model lại .

World space : Khi các model được đem ra từ các engine ( hệ thống các
model ) và đưa vào world space ,ở đây hệ thống tọa độ của model sẽ được
đổi thành 1 hệ thống chung ( do các model có hệ thống tọa độ khác nhau )

View space :
Trong không gian này góc nhìn sẽ được đem vào, góc nhìn này sẽ được
phần mềm quy định .Nhìn trong hình, góc nhìn sẽ được diễn tả dưới hình
tháp bị cắt cụt ,những model ở gần sẽ được sắp xếp về phía near clipping

plane, những model nằm xa sẽ được sắp xếp gần với far clipping plane
trong 1 frame .Những vật nằm ngoai hình này sẽ không được vẽ lên trên
frame .

Scene space :
Đây cũng chính là không gian trong monitor của ta ,những model sau khi
đã được sắp xếp trong view space sẽ được chuyển sang scene space ,đồng
nghĩa với việc chuyển các tọa độ 3D của hình model sang tọa độ 2D ( x,y
) .Các giá trị z không phải được bỏ đi mà sẽ được nhớ để ứng dụng vào
việc cắt đi những hình bị chồng lên nhau ,cắt đi những texture ở mặt sau
của hình .

Bây giờ ta đi sâu vào phân tích 3D từng bước của 3d Graphic pipeline :

Bước 1 : application/scene :
Trong quá trình này bao gồm các nhiệm vụ :

Scene/Geometry database traversal
Movement of objects, and aiming and movement of view camera
Animated movement of object models
Description of the contents of the 3D world
Object Visibility Check including possible Occlusion Culling
Select Level of Detail (LOD)

Hầu hết các game hiện tại khi tạo ra không thể vẽ lại tất cả các hình người
,nhà cửa ,súng … nói chung tất cả những vật thể trong game ( những cái
này gọi là model như đã nói trên ) mà thường lấy những model có sẵn của
1 số hãng chuyên tạo model ( engine ), ví dụ hiện tại có các engine như
Doom ,unreal ,Valve, Crytek … .Nói thêm rằng những model này được
tạo bởi các hình cơ bản ( geometric primitive ) đó thường là những hình

tam giác ,các hình tam giác này hợp lại với nhau để tạo nên hình người
,cây cối ,căn nhà …., ngoài việc cung cấp những model ,engine còn cung
cấp cả AI ,physic ( quần áo của nhân vật ,nước ,khói ,vụ nổ … ), audio
,network Những model này khi được sử dụng trong các game thì sẽ được
sửa lại chút ít tùy theo nhu cầu của game .

Trong quá trình (Geometry database traversal , Movement of objects, and
aiming and movement of view camera, Description of the contents of the
3D world) thì phần mềm sẽ search trong engine những model nào cần
dùng trong frame của mình , sau đó đem vào để cho gpu xử lý ( render )
,việc đem các hình từ frame này sang frame khác sẽ tạo nên sự chuyển
động của hình ảnh, ngòai ra chính phần mềm cũng đem vào game góc
nhìn của 1 cảnh của game .

Ngoài ra ở bước đầu này ,phần mềm cũng đã có quá trình lọai bỏ những
vật không thể thấy (Object Visibility Check including possible Occlusion
Culling ) ,trong quá trình này phần mêm sẽ check xem những vật nào bị
che phủ bởi những vật khác ,nếu bị che hòan toàn thì loại hoàn toàn nó ra
,nếu che 1 phần thì bỏ 1 phần . Ngòai việc check vật trước vật sau ,phần
mềm còn check trên từng model xem model đó có lọt vào trong cái hình
tháp bị cắt cụt ( view space ) hay không ? Nếu vật không lọt vào nó sẽ bị
loại ra ,nếu lọt vào 1 phần ,những phần nằm ngoài sẽ bị lọai bỏ .Việc tính
tóan sự hỉên thị này sẽ giúp giảm 1 công vịêc vẽ 1 cái vô ích của GPU.

Không chỉ dừng ở đó các nhà lập trình còn sử dụng các thủ thuật để giảm
tải cho GPU ,khi check xem model có nằm được trong view space hay
không ,thay vì dùng model đó check thì người ta sử dụng 1 hình hộp để
xem sự hiển thị của model . Vi dụ : 1 model gồm 10 000 tam giác ,thì
người ta dùng 1 hình hộp gồm 12 tam giác để thay thế ( mỗi mặt gồm 2
tam giác ) để đại diện ,nếu hình hộp đó có thể hiện thị được thì model đó

sẽ được vẽ ngay trong hình hộp .Nhờ đó nếu hình hộp đó không hiển thị
được trên frame đó thì nó giảm được việc phải render cho 10 000 tam
giác đó .

Các model thường được build ở những mức detail khá nhau ( để phù hợp
với setting của game như low ,medium ,high detail ) ví dụ 1 model cái
máy bay có thể được build ở 10.000 tam giác ,5.000 tam giác ,3000 tam
giác ….tùy người chơi chọn setting mà đưa model vào .Nhờ vào tính chất
này mà khi đưa vào GPU các model ,các nhà lập trình lại thực hiện 1 thủ
thuật tinh giảm khối lượng công việc của GPU ,khi những model ở vị trí
xa ( gần far clipping plane ) thì họ sẽ làm giảm số lượng tam giác của
model lại ,sự giảm này không ảnh hưởng tới người chơi vì những vật ở
quá xa rất khó cho người chơi nhận ra được.

Mỗi model càng nhiều tam giác thì càng trông giống thật ,mỗi đỉnh của
tam giác ( vertice ) bao gồm nhiều thông in về nó ( tọa độ ,màu sắc )
Một số model để trông giống thật đòi hỏi phải tốn rất nhiều tam giác nhất
là những vật có hình cong ,sự giảm detail của các vật cong này có thể tạo
nên hiệu ứng ( bumpy ) ( không biết nên dịch thế nào cho thóang nên xin
phép để nguyên nó ) .Do đó để tinh giảm số lượng việc phải làm của GPU
các nhà lập trình phải thực hiện công việc giảm các vertice nhưng không
làm giảm chất lượng của model ,bằng cách ghép các tam giác tạo nên
những dải ( strip ) hay hình quạt ( fan ) .
Dưới đây là ví dụ :

Nhìn trên hình bạn sẽ thấy nếu ghép 2 hình tam giác lại thì số lượng đỉnh
của model sẽ giảm đi 2 đỉnh ,nghĩa là sẽ giảm thông tin về 2 đinh đó ( tọa
độ ,màu sắc … ) ,tương tự với hình quạt kia . Sau việc tinh giảm đó
,model được đưa vào cho GPU xử lý .


Tóm lại những gì bạn nên nhớ ở bước 1 của 3D graphic pipeline này là :
+ Những model của game đều trong các engine
+ Quá trình này được CPU xử lý ,đưa thông tin vào GPU ,tính toán AI
,physic ,audio ,network …
+ Trứơc khi các hình ảnh được đưa vào cho GPU xử lý thì đã được quá 1
quá trình optimize do các nhà lập trình thực hiện ,do đó game mới có bản
pre beta ,beta … ( một trong những ví dụ về việc tranh cãi “ G80 yếu ớt
trên nền game dx 10 “ trong forum amtech đã chứng minh việc này )


Bước 2 : Geometry
Trong quá trình này bao gồm các nhiệm vụ :
• Transforms (rotation, translation, scaling)
• Transform from Model Space to World Space (Direct3D)
• Transform from World Space to View Space
• View Projection
• Trivial Accept/Reject Culling (or can be done later in Screen Space)
• Back-Face Culling (can also be done later in Screen Space)
Lighting
• Perspective Divide - Transform to Clip Space
• Clipping
• Transform to Screen Space
Ở 3D world vật thể or model có thể được dịch chuyển hoặc biến đổi nhờ
vào 4 phép biến đổi chính ( transform ) .Phép biến đổi thực hiện trên vật
thể nhưng thực chất nó biến đổi các vertices của các vật thể bằng các
phép toán phức tạp. Chính các phép biến đổi này sẽ làm cho các model
trong các game khác nhau đôi chút .
Translation : phép biến đổi này cho phép di chuyển vật theo 3 trục của toạ
độ
Rotation : phép biến đổi giúp vật xoay theo 1 trục tuỳ ý

Scaling : phép biến đổi giúp vật thay đổi kích thước của vật ( làm cho vật
to hơn hoặc nhỏ đi )
Skewing : thay đổi hình dạng của vật thể

Trong giai đoạn geometry này cũng có sự di chuyển model từ Model
space vào World space rồi từ World space vào View space ( tất nhiên
những không gian này là không gian ảo ,chỉ là không gian mà card đồ hoạ
dựng nên để tính toán ) .Khi di chuyển vào các không gian này thì toạ độ
của vật sẽ theo không gian đó và cũng tuỳ thuộc vào phép biến đổi phía
trên sử dụng .
• Trivial Accept/Reject Culling (or can be done later in Screen Space)
• Back-Face Culling (can also be done later in Screen Space)
Lighting
• Perspective Divide - Transform to Clip Space
• Clipping
• Transform to Screen Space
Ở giai đoạn Geometry này cũng có 1 số kĩ thuật làm giảm việc tính toán
cho các giai đoạn sau đó là Trivial Accept hay Reject Culling và Back
Face Culling
Reject Culling/Trivial Accept :kĩ thuật này cũng giống như kĩ thuật đã
nhắc tới ở giai đoạn trên ,nó xem xét vật có nằm trong view space hay
không ,sau đó tìm những phần thừa ra ngoài view space để cắt đi . Kĩ
thuật này thực hiện khá đơn giản ,nó xác định những vật cần phải cắt
bằng cách định xem toạ độ ( x,y,z ) của vertices có nằm trong view space
hay ko ? nếu không nằm trong thì sẽ bỏ đi toàn bộ tam giác này . Việc cắt
như kiểu này sẽ thừa lại những tam giác có 1 hoặc 2 đỉnh nằm trong view
space nhưng 1,2 đỉnh còn lại nằm ngoài .
Back Face Culling : Kĩ thuật này cho phép bỏ đi những tam giác nằm ở
mặt sau của model ,tính trung bình ra thì có ½ số tam giác bị loại bỏ do
nằm ở mặt sau của model tại 1 thời điểm nhất định .Tuy nhiên chỉ 1 vài

trường hợp những tam giác ở mặt sau model không bị bỏ đi đó là trường
hợp model có tính chất trong suốt .

Lighting :

Không ít người đã từng nghe từ “ Transform and lighting” 2 từ này ít khi
đi riêng rẽ 1 mình nhưng không có nghĩa là sau qúa trình transform như
nói ở trên thì sẽ đến giai đoạn tính toán ánh sáng ,mà giai đoạn này
thường xảy ra ngay sau khi vật đã được chuyển vào view space .Hiệu ứng
ánh sáng trên vật thể được thực hiện bằng các đặt các model về ánh sáng
và sự phản chiếu vào các vật thể .

Clipping :

Ở giai đoạn clipping này vật cũng sẽ được cắt như giai đoạn Culling trên
nhưng quá trình thực hiện phức tạp hơn ,ở giai đoạn trên khi định ra 3 toạ
độ (x,y,z ) của vertices nằm ngoài view space thì nó sẽ bỏ hoàn toàn còn
với Clipping thì nó không bỏ hoàn toàn tam giác mà cắt những phần thừa
của tam giác nằm ngoài view space mà thôi.

Tóm tắt lại :
+ Trong giai đoạn Geometry này bộ xử lý vertex shader ( vertex shader
processor ) sẽ thực hiện nhiệm vụ biến đổi ( transform ) và tính toán ánh
sáng cho hình ảnh ( lighting )

Bước 3 : Triangle setup

Trong quá trình này gồm các nhiệm vụ :

Back-face Culling (or can be done in view space before lighting)

Slope/Delta Calculations
Scan-Line Conversion

Nếu Back face culling đã được thực hiện ở giai đoạn trên thì gian đoạn
này không còn thực hiện nữa .

Slope/Delta calculations : Cứ 2 điểm của 1 tam giác ( tam giác thành
phần model ) ta sẽ có 1 cạnh hay 1 đừơng thẳng ,đường thẳng đó sẽ có
dạng y= mx + b ,chính m là giá trị delta hay slope .

Sau đó nhờ vào giá trị slope, thuật toán digital differential analyzer
(DDA) sẽ chuyển các cạnh của tam giác ( tam giác thành phần của model
) sang giá trị x,y của pixel.

Kết quả của quá trình này là thông tin về vị trị của model sẽ được chuyển
thành các thông tin vị trí của pixel ( trên monitor ) ,thông tin về màu sắc
của pixel vẫn chưa có và sẽ được thực hiện nhờ vào giai đoạn rendering
phía sau sẽ trình bày . Trong quá trình chuyển đổi thông tin này , chỉ có
thông tin của 2 vertices ( đỉnh ) là được chuyển trực tiếp thành thông tin
của pixels, còn những điểm còn lại trên cạnh ( tạo bởi 2 vertices ) thì
được DDA suy ra , từ việc này sẽ dẫn đến hình ảnh bị hiện tượng “ răng
cưa “ .

Tóm lai :

+ Quá trình này để tìm các chuyển các vị trí của model từ view space
sang scene space ( không gian monitor )
+ Do cách tính toán của quá trình này mà hình ảnh có thể bị hiện tượng “
răng cưa “


Bước 4: Rendering / Rasterization

Trong quá trình này gồm các nhiệm vụ :
Shading
Fog
Alpha Translucency Tests
Shadowing
Antialiasing
Depth buffering
Display

Shading :Quá trình này được thực hiện bởi nhiều thuật toán : Flat shading
,Gouraund shading ,Phong shading .Những thuật toán này được sử dụng
các giá trị về ánh sáng trên các vertices của tam giác sau đó nội suy ra độ
bóng trên bề mặt của tam giác ,từ đó dẫn đén các model sẽ có độ bóng .
Ngoài ra ở giai đoạn này các texture ( đáng lẽ phải gọi là texture map :
bản đồ texture ) được dán vào những vật thể/model ,texture là những hình
2D có thể là bức tường ,mặt đất …… ( Xem hình ).Trong những
game/ứng dụng hiện tại mỗi một vật không chỉ là 1 lớp texture được dán
vào mà là nhiều lớp ( multitexture ),các lớp có thể là gồm base texture ,
bump map ,light vector kết hợp lại .

Fog : Kĩ thuật này tính toán để cho nền của cảnh vật như bị che phủ bởi 1
màn sương và che đậy đi những chỗ ko có texture hay nói cách khác nó
che lên những chỗ texture chưa xuất hiện.Tuy nhiên các bạn đừng lầm lẫn
ở đây fog không che lên những texture hoặc object đã xuất hiện ,ví dụ
như căn nhà đã xuất hiện trên frame thì ko bao giờ còn có fog trên căn
nhà đó ,sự mờ nhạt của những texture trên căn nhà nguyên nhân là do bộ
lọc vật liệu ( texture filtering ) ( vì Rock thấy nhiều post các bạn hay ghi
,đại loại như là hình ảnh bị fog …. ) ,nhấn mạnh lại 1 lần nữa fog chỉ xuất

hiện ở những vùng không có texture ,không có model hay vật thể .

Alpha transluscency tests : Đây là một kĩ thuật nhằm tạo nên những vật
có tính chất trong suốt và được ứng dụng để render vụ nổ ,khói ,nước
,những tấm kính …
Tóm tắt lại :
+ Giai đoạn này (Shading ,Fog và Alpha blending)là giai đoạn cho model
những hiệu ứng đổ bóng ,dán những texture lên model ,cho model có
được hiệu ứng trong suốt …
+ Giai đoạn này được thực hiện bởi bộ xử lý pixel shader
Sau những giai đoạn Shading ,Fog và Alpha blending những model hay
vật thể đã gần như hoàn chỉnh trên view space ,tuy nhiên để cho hình
được xuất hiện trên monitor những texture trên model bây giờ cần phải
được biến thành những điểm trên monitor ( pixel ) .Nhớ lại trong quá
trình scan_line convertion thì trên monitor chỉ có bộ khung của model/vật
thể chứ vẫn chưa có màu sắc ,màu sắc trên bộ khung này sẽ được định ra
bằng cách dán các texture trên model/vật thể vào ,bộ khung đó ( thực chất
là dán các phần tử nhỏ nhất/texels của texture vào ) Việc dán này được
thực hiện nhờ bộ lọc texture filtering ( bộ lọc vật liệu )
Texture filtering :

Bộ lọc vật liệu này có nhiều loại :
Point sampling
Bilinear filtering
Trilinear MIP-mapping
Anisotropic filtering
Anisotropic filtering

Lúc đầu Rock tính viết luôn 1 bài về cái này tuy nhiên sau khi search web
của Việt Nam thì thấy trên Pcworld vn có 1 bài khá hay và đầy đủ về vấn

đề này , nên thôi không dịch nữa ( khả năng có hạn ,người ta dịch hay
hơn mình thì cứ để người ta làm )

5f5e5d5e5d5857

Phần texture filtering này rất quan trọng trong việc so sánh về chất lượng
hình ảnh của 2 dòng GPU ,từ đó các bro có thể hiểu được tại sao người ta
nói vid của ATi cho hình ảnh đẹp hơn vid của nVidia ( tuy nhiên chỉ trên
lý thuyết ) . Sau bài này Rock sẽ cố gắng dịch 1 bài nữa so sánh về bộ lọc
của 2 hãng này ,tuy nhiên nếu các bro không đọc và không hiểu sơ về vấn
đề này thì sẽ tạo nên 1 thread tranh luận dài vài trăm trang về vấn đề này .

Antialiasing :

Antialiasing là 1 mảng khá lớn và cũng khá cũ tuy nhiên hiện tại Rock chỉ
biết được 2 loại Ordered Grid Super Sampling (OGSS) và Jittered Grid
Super Sampling (JGSS) ,2 lọai này ít còn sử dụng trong các game hay
software vì nó làm tốn Fillrate và Bandwidth rất nhiều ,còn những kĩ
thuật AA khác thì Rock đang nghiên cứu hy vọng sớm có thể dịch được
và bổ sung vào phần này .

Đơn giản các kĩ thuật này làm giảm những “ Răng cưa “ ở những cạnh
hình ảnh ( như chúng ta đã biết trong quá trình scan_line convertion tạo
ra những artifacts dạng những răng cưa này ). Những phương pháp khử
răng cưa mới giúp cho giảm những răng cưa này nhiều hơn mà tốn ít
Fillrate và Bandwidth hơn.

Z_buffer and Z_stencil :
2 bộ nhớ đệm này làm việc có liên quan đến nhau do đó tôi xin mô tả
chung với nhau . Như đã nói ở trên khi quá trình scan_line convertion thì

chuyển các toạ độ của điểm trên model thành toạ độ của pixel ( trên
monitor ) thì các giá trị Z của toạ độ trong model sẽ được ghi nhớ vào
Z_buffer ,khi xuất hình ra monitor GPU sẽ biết xuất pixel nào ra ,pixel
nào không nên xuất ra.

Nhìn trên hình bạn sẽ thấy 2 hình tam giác xám và đen ,hình tam giác đen
bị hình tam giác xám chồng lên ,khi xuất ra monitor thì phần bị che phủ
bởi tam giác xám sẽ không được xuất ra .
Trước tiên tất cả các giá trị của điểm Z trên tam giác màu đen sẽ được ghi
vào Z_buffer ,khi render đến tam giác xám nếu những điểm của tam giác
xám nằm lên những pixel mà tam giác đen đã chiếm ,thì lập tức việc so
sánh giữa 2 giá trị Z của 2 điểm tương ứng ,giá trị Z nào cho thấy tam
giác nằm xa hơn thì sẽ không được ghi vào Z_buffer hoặc sẽ bị xoá trên
Z_buffer.
Bây giờ chuyển sang Z_Stencil buffer ,đây cũng là bộ nhớ đệm nhưng nó
chứa những thông tin của các model đặc biệt ,thế nào là model đặc biệt ?
ví dụ như trong những game flight simulator thì nó sẽ chứa thông tin của
model tấm chắn gió của buồng lái ( HUD ), khi máy bay bay thì những
model khác sẽ hiện ra phía trước HUD ,do đó HUD bao giờ cũng nằm
trước tất cả những model mới xuất hiện . Tuy nhiên mỗi frame nếu có vật
gì xuất hiện tại những pixel mà HUD chiếm thì nó vẫn đưa các giá trị Z
của vật đó và HUD vào Z_buffer để so sánh. Nhờ vào bộ nhớ đệm này
mà những model thường xuyên nằm trước các model khác không phải
render lại nhiều lần ,mà chỉ thêm những texture ,hoặc effect mới mà thôi (
ví dụ như đạn bắn vào HUD ,hoặc ánh nắng chiếu vào HUD )

Tóm lại :
+ Các giai đoạn thực hiện ( texture filtering ) do TMU ( texture mapping
units ) thực hiện ,trong khi đó (antiliasing ,shadow ,Z_buffer, Z_stencil )
thì do ROPs thực hiện ( Raster operation units )

+ Tốc độ của ROPs và TMU thể hiện ở pixel fillrate và texture fillrate (
có thể gọi là tốc độ phủ các pixel và tốc độ phủ các texture ) 2 cái này có
gì khác nhau ? .Khi 1 model được xuất ra monitor thì trên model đó sẽ
được phủ nhiều texture .
Ví dụ : 1 vid có 16 ROPs ,32 TMU và có core clock là 100Mhz ,khi xuất
ra 1 vật/model thì nó chỉ xuất ra được tối đa là 16 pixels và mỗi pixel này
chỉ có 1 texture duy nhất ,vid có core clock là 100 Mhz thì nó có số pixel
fillrate là 100Mhz x 16 = 1600 pixels/s
Vid đó có khả năng gắn được 32 texture lên 1 pixel trong 1 clock có
nghĩa là số texture fillrate = 100MHz x32 texture /s , hoặc xuất được 2
pixels mỗi pixel có 16 textures ,tuy nhiên số lượng pixel giới hạn vẫn là
16 pixels ( mỗi pixel có 2 textures ) .


×