Máy ảo PixelShader

Một phần của tài liệu nghiên cứu và xây dựng thử nghiệm 3G Engine (Trang 33 - 35)

Pixel Shader dùng các toán tử toán học để xử lý dữ liệu bên trong từng điểm ảnh để tính ra giá trị màu sắc cuối cùng của điểm ảnh.

Dữ liệu trong mô hình được di chuyển từ trái sang phải. Pixel Shader sử dụng các thanh ghi (registers) để lưu trữ, quản lý các dữ liệu đầu vào (input), đầu ra (output), đồng thời thao tác trên chúng nhờ vào các vi lệnh được thực thi bởi đơn vị số học và luận lý (ALU). Pixel Shader khi thi hành sẽ biến đổi các thuộc tính bên trong của điểm ảnh (bao gồm vị trí, pháp tuyến, tọa độ texture, màu diffuse…) thành giá trị màu sắc của điểm đó. Các thanh ghi dữ liệu vào của Pixel Shader sẽ nhận dữ liệu vào là các giá trị nội suy của vertex. Chức năng của các texture sampler là dùng tọa độ texture từ các thanh ghi đầu vào để lấy mẫu texture và trả về giá trị màu lấy được.

Tương tự như Vertex Shader, Pixel Shader sẽ ghi các giá trị kết quả vào các thanh ghi đầu ra (thường là giá trị màu sắc của điểm ảnh). Thanh ghi đầu ra sau khi nhận dữ liệu sẽ trả dữ liệu về cho Graphic Pipeline để xử lý tiếp giai đoạn 2.

Sau đây là danh sách các loại thanh ghi được dùng trong Pixel Shader và chức năng của chúng.

Thanh ghi dữ liệu vào (input registers) chứa dữ liệu đầu vào (nhận được từ quá trình xử lý đối tượng cơ sở (Primitive processing)).

Thanh ghi hằng (constant registers) chứa các hằng số dùng trong ALU. Thanh ghi tạm (temporary registers) chứa các dữ liệu tạm thời.

Thanh ghi dữ liệu ra (output registers) chứa kết quả tính toán của Pixel Shader.

Thanh ghi điều khiển (Flow control registers) điều khiển thứ tự các vi lệnh được thực thi.

Texture sampler dùng tọa độ texture để lấy mẫu texture sau đó trả về lại cho Shader.

Các vi lệnh trong Pixel Shader chính là thành phần chính của Pixel Shader. Các vi lệnh đảm nhận việc thực thi một số tác vụ toán học trên dữ liệu ví dụ như tính tích vô hướng (dot product), nhân ma trận, tính vector đơn vị... Danh sách các loại thanh ghi cũng như các vi lệnh có thể kham thảo trong Direct3D SDK.

Một phần của tài liệu nghiên cứu và xây dựng thử nghiệm 3G Engine (Trang 33 - 35)