3D graphic pipeline

Thảo luận trong 'Card Đồ họa - Video Cards' bắt đầu bởi Rockie, 27/1/07.

  1. Rockie

    Rockie New Member

    Bài viết:
    237
    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 .
     

    Các file đính kèm:

    • 1.JPG
      1.JPG
      Kích thước:
      21.5 KB
      Đọc:
      295
    :
  2. Rockie

    Rockie New Member

    Bài viết:
    237
    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 .
     

    Các file đính kèm:

    • 2.JPG
      2.JPG
      Kích thước:
      16.4 KB
      Đọc:
      290
  3. Rockie

    Rockie New Member

    Bài viết:
    237
    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 .
     

    Các file đính kèm:

    • 3.JPG
      3.JPG
      Kích thước:
      41.9 KB
      Đọc:
      314
  4. Rockie

    Rockie New Member

    Bài viết:
    237
    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ụ :
     

    Các file đính kèm:

    • 4.JPG
      4.JPG
      Kích thước:
      13.9 KB
      Đọc:
      285
  5. Rockie

    Rockie New Member

    Bài viết:
    237
    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 )
     

    Các file đính kèm:

    • 5.JPG
      5.JPG
      Kích thước:
      31.5 KB
      Đọc:
      279
  6. Rockie

    Rockie New Member

    Bài viết:
    237
    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 )
     

    Các file đính kèm:

    • 6.JPG
      6.JPG
      Kích thước:
      10.1 KB
      Đọc:
      194
  7. Rockie

    Rockie New Member

    Bài viết:
    237
    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 )

    http://www.pcworld.com.vn/pcworld/magazine_a.asp?t=mzdetail&atcl_id=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.
     

    Các file đính kèm:

    • 7.JPG
      7.JPG
      Kích thước:
      45 KB
      Đọc:
      213
  8. Rockie

    Rockie New Member

    Bài viết:
    237
    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 Mpixels/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 Mtexture /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 ) .
     
  9. tantuan

    tantuan Shades Of Purple

    Bài viết:
    319
    thank vi đả dich cho anh em xem,chac phải đua vao sổ tay tin học 2.0,ông bên voz đúng không, cho hỏi thêm là frezzman da update CSDL cũ cua VOZ chua vậy
     
  10. linkin_ns

    linkin_ns empty Thành viên BQT

    Bài viết:
    3,783
    Nơi ở:
    Australia
    bài này hôm được Rockie cho đọc tham khảo trước, rất hay
    Thanks.
     

Chia sẻ trang này