Rasterization — nó là gì, các giai đoạn và nguyên lý hoạt động

Tác giả: IT Sectr Đã đăng: 2026-06-11 Thời gian đọc: 10 phút

Rasterization (raster hóa) là quá trình chuyển đổi mô tả vector của các nguyên thủy ba chiều (tam giác, đường thẳng, điểm) thành một tập hợp pixel (mảnh) để hiển thị trên màn hình. Theo Khronos Group, 2025, raster hóa là giai đoạn tự động (không lập trình được) của pipeline đồ họa, nằm giữa Vertex Shader và Fragment Shader. Rasterization xác định pixel màn hình nào thuộc về tam giác nào và tính toán các thuộc tính nội suy cho mỗi mảnh.

Những điểm chính

  • Rasterization — chuyển đổi các nguyên thủy vector thành hình ảnh raster (pixel).
  • Scanline conversion — thuật toán cơ bản xác định vùng phủ pixel của một tam giác.
  • Nội suy thuộc tính — tính toán màu sắc, tọa độ texture và pháp tuyến cho mỗi mảnh.
  • MSAA — đa mẫu, làm mịn các cạnh răng cưa (aliasing) trong quá trình raster hóa.
  • Hiệu suất của raster hóa phụ thuộc vào số lượng tam giác và độ phân giải màn hình.

Raster hóa là gì?

Rasterization là một giai đoạn của pipeline đồ họa chuyển đổi các nguyên thủy hình học (tam giác, đường thẳng) thành một tập hợp các mảnh để xử lý tiếp theo bởi Fragment Shader. Dữ liệu đầu vào là các đỉnh của tam giác trong tọa độ màn hình và các thuộc tính của chúng (màu sắc, pháp tuyến, UV). Đầu ra là một tập hợp các mảnh với các thuộc tính được nội suy.

Không giống như các shader có thể lập trình (Vertex Shader và Fragment Shader), raster hóa là một giai đoạn cố định (không lập trình được). Nhà phát triển không thể thay đổi thuật toán raster hóa, nhưng có thể kiểm soát các tham số của nó: chế độ culling, độ rộng đường, độ lệch độ sâu (polygon offset) và đa mẫu.

Vai trò của raster hóa trong đồ họa thời gian thực

Hầu như tất cả đồ họa thời gian thực hiện đại — game, UI, AR/VR — đều sử dụng raster hóa. Đây là phương pháp rendering hiệu quả nhất, có thể xử lý hàng triệu tam giác mỗi khung hình ở 60 FPS. Các bộ raster hóa GPU được tối ưu hóa để xử lý song song hàng nghìn tam giác cùng lúc thông qua các khối ROP (Render Output Units) chuyên dụng.

Raster hóa hoạt động như thế nào?

Raster hóa tam giác bắt đầu sau khi Vertex Shader đã chuyển đổi các đỉnh thành tọa độ màn hình. GPU lấy ba đỉnh của một tam giác và xác định pixel màn hình nào nằm bên trong tam giác đó.

Các giai đoạn raster hóa tam giác

Quy trình bao gồm ba bước tuần tự: xác định hộp giới hạn (bounding box) của tam giác tính bằng pixel — kiểm tra từng pixel bên trong hộp giới hạn xem có thuộc tam giác không (hàm cạnh) — tính toán các thuộc tính nội suy (tọa độ trọng tâm) cho mỗi pixel được phủ. Hàm cạnh (Edge function) là một phương trình tuyến tính xác định một điểm nằm ở phía nào của cạnh tam giác.

Giai đoạnMô tảKết quả
ClippingCắt các tam giác nằm ngoài ranh giới viewportCác nguyên thủy hiển thị
Biến đổi viewportChuyển đổi thành tọa độ màn hìnhTọa độ pixel
Thiết lập tam giácTính toán hàm cạnh và hộp giới hạnTham số raster hóa
Tạo mảnhKiểm tra vùng phủ và nội suyCác mảnh + thuộc tính

Các thuật toán raster hóa

Rasterization có thể được triển khai bằng nhiều thuật toán khác nhau, mỗi thuật toán có sự đánh đổi riêng giữa hiệu suất và chất lượng. GPU hiện đại sử dụng kết hợp nhiều cách tiếp cận.

Thuật toán Scanline

Thuật toán raster hóa cổ điển được phát triển cho các GPU đời đầu. Tam giác được xử lý theo từng dòng (scanline): đối với mỗi dòng màn hình, các điểm vào và ra của tam giác được xác định và tất cả pixel giữa chúng được tô đầy. Scanline conversion hiệu quả cho các tam giác lớn nhưng đòi hỏi logic phức tạp cho các tam giác có hình dạng tùy ý.

Phương pháp Half-Space (Hàm cạnh)

GPU hiện đại sử dụng phương pháp raster hóa half-space: cho mỗi cạnh của tam giác, một hàm cạnh được tính — một phương trình tuyến tính dương ở một bên và âm ở bên kia. Một pixel thuộc về tam giác nếu cả ba hàm cạnh đều dương. Half-space rasterization dễ dàng song song hóa và rất phù hợp với kiến trúc SIMD của GPU.

Raster hóa dựa trên tile (TBR)

GPU di động (Qualcomm Adreno, ARM Mali) sử dụng Tile-Based Rendering (TBR). Màn hình được chia thành các tile nhỏ (16x16 hoặc 32x32 pixel), và raster hóa được thực hiện riêng cho từng tile. Điều này giảm thiểu truy cập bộ nhớ bằng cách lưu trữ framebuffer trong bộ nhớ cục bộ nhanh (bộ nhớ tile). TBR giảm mức tiêu thụ điện năng, điều rất quan trọng đối với các thiết bị di động.

Raster hóa vs Ray Tracing

Rasterization và ray tracing là hai cách tiếp cận khác nhau cơ bản để rendering đồ họa 3D. Raster hóa chiếm ưu thế trong các ứng dụng thời gian thực, trong khi ray tracing được sử dụng trong rendering ngoại tuyến và đang dần thâm nhập vào thời gian thực (trên GPU tương thích RTX).

Tham sốRasterizationRay Tracing
Nguyên lýTam giác → mảnhTia → giao với cảnh
Tốc độRất nhanh (hàng triệu tam giác/khung hình)Chậm (hàng nghìn tia/khung hình)
Chất lượngCần kỹ thuật bổ sung (bóng, phản chiếu)Bóng và phản chiếu chính xác vật lý
GPU di độngPhương pháp tiêu chuẩnHỗ trợ hạn chế (A17 Pro, Snapdragon Gen 3)
Tiêu thụ điệnThấpCao

MSAA và khử răng cưa trong raster hóa

Raster hóa gây ra vấn đề aliasing — các cạnh răng cưa (jaggies) tại ranh giới tam giác. Điều này xảy ra vì pixel là rời rạc và không thể bị tam giác che phủ một phần. Để chống aliasing, người ta sử dụng đa mẫu (MSAA).

Cách MSAA hoạt động

MSAA (Multisample Anti-Aliasing) thực hiện raster hóa với tốc độ lấy mẫu tăng lên (2x, 4x, 8x). Thay vì một mẫu trên mỗi pixel, nhiều mẫu con được sử dụng, mỗi mẫu được kiểm tra vùng phủ tam giác. MSAA 4x xử lý 4 mẫu con trên mỗi pixel, mang lại sự làm mịn cạnh đáng chú ý mà không tăng hoàn toàn độ phân giải rendering.

FXAA và các phương pháp hậu xử lý khác

Không giống như MSAA, các phương pháp khử răng cưa hậu xử lý (FXAA, SMAA, TAA) hoạt động sau raster hóa bằng cách phân tích hình ảnh cuối cùng. FXAA (Fast Approximate Anti-Aliasing) phát hiện các cạnh hình ảnh và áp dụng làm mờ để làm mịn, hoạt động nhanh hơn đáng kể so với MSAA nhưng chất lượng thấp hơn.

Raster hóa trên GPU và tối ưu hóa

Rasterization trên GPU hiện đại được thực hiện bởi các khối phần cứng chuyên dụng — ROP (Render Output Units). Số lượng ROP ảnh hưởng trực tiếp đến tốc độ fill (fill rate) — số pixel mà GPU có thể xử lý mỗi giây.

Các yếu tố hiệu suất raster hóa

  • Số lượng tam giác — số tam giác mỗi khung hình. Mỗi tam giác yêu cầu chi phí cho thiết lập và kiểm tra cạnh.
  • Tốc độ fill — số pixel được xử lý bởi các khối ROP mỗi giây. Phụ thuộc vào tần số xung nhịp GPU và số lượng ROP.
  • Overdraw — raster hóa lặp lại cùng một pixel do chồng lấp tam giác. Được tối ưu hóa bằng cách sắp xếp đối tượng theo độ sâu.

Tối ưu hóa raster hóa cho GPU di động

Đối với GPU di động (Tile-Based Rendering), các yếu tố quan trọng bao gồm: giảm thiểu overdraw thông qua early-Z rejection, sử dụng back-face culling để loại bỏ các tam giác không nhìn thấy và occlusion culling để loại bỏ các tam giác bị che phủ hoàn toàn bởi các đối tượng khác.

Câu hỏi thường gặp

Raster hóa là gì một cách đơn giản?

Raster hóa là quá trình biến các tam giác thành pixel trên màn hình. GPU lấy một tam giác ba chiều, xác định pixel màn hình nào nó che phủ và chuyển chúng đến Fragment Shader để tô màu.

Raster hóa khác ray tracing như thế nào?

Raster hóa chiếu các tam giác lên màn hình và xác định vùng phủ pixel (rất nhanh). Ray tracing phát ra các tia từ camera và kiểm tra giao điểm với hình học (chính xác về mặt vật lý hơn nhưng chậm hơn đáng kể).

Tại sao cần khử răng cưa (anti-aliasing) trong raster hóa?

Trong quá trình raster hóa, một pixel hoàn toàn thuộc về một tam giác hoặc không — do đó xuất hiện các cạnh răng cưa (aliasing). MSAA làm mịn các cạnh bằng cách sử dụng nhiều mẫu con trên mỗi pixel, trong khi FXAA áp dụng bộ lọc cho hình ảnh cuối cùng.

Có thể lập trình giai đoạn raster hóa không?

Không, raster hóa là một giai đoạn cố định của pipeline đồ họa. Nhà phát triển không thể thay đổi thuật toán, nhưng có thể kiểm soát các cài đặt: culling, polygon offset, chế độ raster hóa (điểm, đường, tam giác) và tham số MSAA.

Tại sao GPU di động sử dụng Tile-Based Rendering?

Tile-Based Rendering (TBR) chia màn hình thành các tile và xử lý chúng trong bộ nhớ cục bộ nhanh thay vì VRAM toàn cục. Điều này giảm triệt để mức tiêu thụ điện năng và băng thông, rất quan trọng đối với các thiết bị di động chạy pin.

Tổng kết

  • Rasterization — chuyển đổi tam giác vector thành các mảnh raster để hiển thị trên màn hình.
  • Phương pháp Half-space — thuật toán raster hóa chính trong GPU hiện đại.
  • Tile-Based Rendering — kiến trúc raster hóa được sử dụng trong GPU di động (Adreno, Mali).
  • Aliasing — vấn đề các cạnh răng cưa, được giải quyết qua MSAA, FXAA hoặc TAA.
  • Tốc độ fill — tham số hiệu suất raster hóa chính phụ thuộc vào số lượng khối ROP.
  • Overdraw — raster hóa lặp lại pixel, được tối ưu hóa qua early-Z và occlusion culling.
  • Ray Tracing — phương pháp thay thế cung cấp rendering chính xác vật lý với chi phí hiệu suất.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm