Thuật toán Raytracing cơ bản gồm hai bước tính toán chính cho mỗi pixel: Tìm điểm giao gần nhất, sau đó tính toán màu tại điểm giao đó [1].
Thuật toán Raytracing được mô tả một cách tổng quát như sau: - Với mỗi điểm ánh trên ảnh cần tạo (buffer)
- Xác định điểm tương ứng trên view plain ( điểm P) - Xây dựng tia sáng đi từ mắt qua p
- Xác định giao điểm gần nhất giữa tia line và các vật thể trong mô hình - Nếu không tồn tại giao điểm thì màu của điểm ảnh là màu nền
- Nếu tồn tại:
- Tính vector pháp tuyến tại giao điểm cua vật thể - Với mồi nguồn sáng:
- Tạo tia đi từ giao điểm đến nguồn sáng - Xác định sự tạo bóng
- Tính màu theo mô hình tạo màu địa phương Phong (Phong lighting model) - Nếu vật thể phản xạ
- Tìm tia phản xạ
- Tìm màu của tia phản xạ - Cộng dồn vào m àu điểm ảnh - Nếu vật thể khúc xạ
- Tìm tia khúc xạ
III. Song song hóa quá trình tính toán thuật toán ray tracing
3.1 Mô hình tinh toán:
Hai mô hình tính toán chủ yêu trong tính toán song song là demand-driven và data-driven [10].
Hệ thống Demand-driven:
Trong hệ thông demand-driven, mỗi một bộ vi xử lý được cấp trọn vẹn một số nhiệm vụ, và sau đó phải xử lý tất cả các phép tính liên quan đến nhiệm vụ được giao. Đôi với ray tracing, nhiệm vụ câp cho mỗi bộ vi xử lý có thể là một vùng của một tâm ảnh, và bộ vi xử lý phải tính (hay lần theo) tất cả các tia xuất phát từ nguồn và đi qua vùng ảnh này.
Hệ thống Data-driven:
M ột phép tính bao gồm công thức tính và dữ liệu để đưa ra kết quả. Trong mô hình data-driven, dữ liệu của một phép tính được cấp cho nhiều bộ vi xử lý, bởi vậy một phép tính được tính bởi nhiều bộ vi xử lý. Đối với ray tracing, mồi bộ vi xử lý được cấp một phần của hoạt cảnh hình học, và có nhiệm vụ tính toán tất cả các phép tính có dữ liệu liên quan đến phần hoạt cảnh hình học được cấp, độc lập với nguồn của tia sáng. M ột bộ vi xử lý, trong quá trình tính toán có thể phải yêu cầu dữ liệu được tính bởi m ột bộ vi xử lý khác truyền đến.
Đánh giá:
Sự ảnh hưởng lớn nhất mà chúng ta cần quan tâm khi chọn một trong hai mô hình tính toán trên trong tính toán song song với Raytracing là về vấn đề bộ nhớ của máy tính. Với tính chất của thuật toán ray tracing (cần xác định điếm giao gần nhất của tia sáng với vật thể gần nhất), rất khó có thể dự đoán được đâu là giao điểm cần tìm nếu không dựa trên toàn bộ các vật thể có trong hoạt cảnh. Bởi vậy, với mô hình tính toán dem and-driven, mỗi bộ vi xử lý phải cỏ khả năng truy cập toàn bộ các vật thể có trong hoạt cảnh. Bởi vậy cần lưu trữ toàn bộ dữ liệu liên quan đến hoạt cảnh cần tạo ảnh. M ột yếu tố khác đó là việc truyền dữ liệu cũng có thể giảm hiệu suất. Mô hình tính toán song song data-driven sử dụng bộ nhớ hiệu quả hơn, nhưng với số lượng bộ vi xử lý tăng, hiệu suất của hệ thống có thể bị giảm đi do việc truyền dữ liệu bị quá tải.
Nếu không cần tính đến sự giới hạn của bộ nhớ (do sự phát triển của máy tính) thì mô hình tính toán dem and-driven chiếm ưu thế hơn. Bởi nó hỗ trợ nhiều cơ chế cân bàng tải hiệu quả hơn.
3.2 Cân bằng tải
M ột trong những vấn đề lớn nhất khi tính toán lưới với các máy tính có cấu hình khác nhau là làm cách nào đê phân phối công việc và điều phối sao cho đạt được hiệu suất cao, ví dụ giảm thiểu thời gian xử lý, giảm độ trễ truyền thông, hoặc tối ưu tài nguyên của cả hệ thống [12].
Cân băng tải trong tính toán song song là cơ chế đảm bảo mỗi bộ vi xử lý thực thi khối lượng phép tính ngang bàng nhau (đo theo thời gian sử dụng CPU).
Raytracing là thuật toán trong đó mỗi phép toán tính màu tại một điểm ảnh có độ phức tạp của thuật toán khác nhau, do tính chất quang hình của tia sáng (phản xạ nhiều lần, khúc xạ nhiều lần ...), do đó gần như không có khả năng dự đoán trước điểm ảnh nào sẽ có độ phức tạp tính toán lớn hay nhỏ, hoặc vật thể nào sẽ có nhiều tương tác hơn. V à vì vậy khi một bộ vi xử lý phải tính toán tại điểm ảnh có độ phức tạp lớn, điều này có thể ảnh hưởng tới sự thực thi hay hiệu suất của toàn bộ hệ thống.
Có hai phương pháp cân bằng tải là “cân bằng tải tĩnh” và “cân bằng tải động”. Trong phương pháp “cân bằng tải tĩnh” thông tin hay thời gian hoàn thành m ột khối lượng công việc được biết trước khi xử lý, và do đó có thể đưa ra một ước lượng sơ bộ sự phân tải- Công việc khi đã được cấp cho m ột node thì chỉ được xử lý bởi node đó. Phương pháp này không đảm bảo được cơ chế cân bằng tải hiệu quà. Nhưng ưu điểm của phương pháp này là không cần đến sự truyền thông trong quá trình xử lý, điều này đôi khi có thể mang lại kết quả khả quan. Phương pháp thử hai, cung cấp công việc cho bộ vi xử lý linh động hơn, dựa trên cơ chế điều phối công việc trong suốt quá trình thực thi. Trong quá trình điều phối công việc bộ điều phối sẽ chuyển công việc từ những máy tính đang quá tải tới những máy đang rỗi nhằm mục đích giảm thiểu thời gian xử ]ý của ứng dụng. Phương pháp này mang lại sự cân bằng tải tốt hơn, nhưng lại cần phải kiểm soát nhiều hơn.
Sự cân bằng tải có thể hoạt động tại một m áy trung tâm hoặc cũng có thể phân bổ giữ tất cả các m áy tính tham gia trong quá trình cân bằng tải. Có thể cỏ nhiều chính sách trong hoạt động cân bằng tải. Các chính sách liên quan đến thông tin (tốc độ xử lý, bộ nhó ...) có thể được xử lý tập trung, các chính sách liên quan đến truyền thông (độ trễ, băng thông đường truyền . ..) hay vị trí các máy có thế xử lý phân phối.
X a; cnira các máy tính tham giâ . Các thông tin cùa câe mây truyền di giữa các may unn
Ẵ+ /4ỉnVi rất) công viêc cho may un - Các tiến trình quyết định câp cong
Phần IV. THỰC NGHIỆM■ «
Chương trình xử lý Raytracing sau khi phát triển vẫn còn nhiều thiếu sót (như chưa xử lý được các hiệu ứng nâng cao của thuật toán) nên kết quả không hoàn toàn được như ý muốn. Tuy nhiên sau một thời gian triển khai chúng tôi cũng thu được m ột số kết quả.