II. Thực thi chương trình sau khỉ đã thêm các module phát triển thêm:
1.2 Tổng quan và khái niệm :
được từ vị trí măt (view point). Xác định màu (shading) là tiến trình tính toán màu của điêm ảnh. Công việc tính màu tại điểm ảnh được dựa trên các yếu tố như ánh sáng, bóng, độ trong, sự phản xạ, khúc xạ, và kiểu dáng của bề mặt vật thể. Thuật toán Raytracing cung câp những giải pháp để thể hiện được tất cả các thuộc tính cùa vật thê như đã đề cập. Ngoài ra có thể kết hợp Raytracing với các kỹ thuật khác để có được những bức ảnh đáng kinh ngạc.
Raytracing là phương pháp tạo ra hình ảnh dựa theo nguyên lý của ánh sáng trong thế giới tự nhiên.
Sự tương tác giữa ánh sáng và bóng tối với vật thể được thể hiện giống như ta thấy trong tự nhiên.
Kết hợp các hiệu ứng ánh sáng như: tạo bóng, phản xạ, khúc xạ Mô phỏng đường đi của ánh sáng theo qui luật của quang hình học
Hình ảnh được tạo bởi thuật toán Raytracing bằng cách tính toán màu tại từng điểm ảnh cần thể hiện.
Khái niệm trên Encyclopedia [5]:
Phương pháp tạo ảnh mô phỏng sự phản xạ khúc xạ và tạo bóng cùa tia sáng. Bằng cách lần theo đường đi của tia sáng từ một nguồn xác định đến từng điểm ảnh (cần tạo) để mô phỏng hiệu ứng của tia sáng. Đây là một thuật toán với khối lượng tính toán lớn.
1.3 ư u nhược điểm của phương pháp Raytracìng:
Ưu điểm:
Ư u điểm nổi bật của Raytracing chính là việc m ang lại những bức ánh siêu thực so với các phương pháp khác (như quét ảnh). Các hiệu ứng như phản xạ, tạo bóng, rất khó có thể được thể hiện khi sử dụng một thuật toán khác nhưng lại là tính chất đặc trưng của thuật toán Raytracing.
Raytracing là m ột thuật toán khá đơn giản và dễ thực thi.
Raytracing là m ột thuật toán có thê đưa vào tính toán song song bởi tính độc lập của các phép tính trong Raytracing.
N hược điểm:
N hược điểm quan trọng và lớn nhất của Raytracing là tốc độ xử lý thuật toán. Các thuật toán quét ảnh cũng như một số thuật toán khác sử dụng dữ liệu đã có và có sự liên lạc khi tính toán m àu tại các điểm ánh, trong khi đó với mỗi một điểm
biệt. Trên thực tế, mỗi bức ảnh được tạo nên bằng phương pháp Raytracing thường phải mat vài phút, đến vài tiếng thậm chí vài ngày để hoàn thành.
Hiện tại chưa có phần cứng hỗ trợ xử lý Raytracing (ví dụ card đồ họa cho Raytracing) m à mới chỉ đang trong nghiên cứu.
O penGL cũng không hỗ trợ Raytracing [1], bởi vậy khi phát triển thuật toán Raytracing phải tự xây dựng thư viện.
1.4 ửng dụng của Raytracing:
Các nhà khoa học đồ họa máy tính luôn muốn tạo được những hình ảnh như thật trong tự nhiên. Đ iều đó có thể đạt được khi ngày nay máy tính đã trở nên mạnh hon. Vì thế không ai không bị gây ấn tượng khi những gì họ thấy trong phim khoa học viễn tưởng thực chất là do máy tính tạo ra. Đối với những công việc cần có mô hình phức tạp và tốn công để vẽ thì giờ đây có thể mô hình hóa trên máy tính với những chi tiết phức tạp nhưng lại mang lại kết quả hết sức trung thực. Kỹ thuật Raytracing đã được áp dụng rất nhiều trong đời sống, dưới đây là một số lĩnh vực sử dụng kỹ thuật Raytracing.
T ạ o ản h và p h im :
Ngày nay R aytracing là một trong những phương pháp tạo ảnh phổ biển nhất trong lĩnh vực đồ họa ba chiều, bởi tính đơn giản, trung thực và dễ thực thi của nó. Việc tạo ra những tấm ảnh trung thực với độ sắc nét cao là mục tiêu của phương pháp Raytracing. Phương pháp Raytracing cỏ thể mang lại các hiệu ứng như phản xạ, khúc xạ ... (các hiệu ứng của ánh sáng tự nhiên) vì thế mà nó có thể mang lại những hình ảnh siêu thực m à ta mong đợi. Bức ảnh dưới đây (Hình 14) cũng thể hiện phần nào những gì m à Raytracing cỏ thể đem lại.
Raytracing trên thực tế đã được sử dụng để tạo nên những hình ảnh sinh động trong một sô phim hoạt hình gân đây, điển hình là hai bộ phim nổi tiếng “Ratatouille”, “C ars” . Đối với bộ phim “Cars” có một số lý do mà nhà sản xuất đã lựa chọn R aytracing là: sự phản xạ trung thực, độ sắc nét của bóng. Những chiếc xe trong thực tê luôn có độ sáng chói, và sự phản xạ là yếu tố quan trọng trong việc hiển thị trung thực bề m ặt của chiếc xe.
Hình 55: Cảnh giới thiệu bộ phim Cars
T rò ch ơ i:
Với những kết quả đạt được từ phương pháp Raytracing, lĩnh vực trò chơi một trong những lĩnh vực rất cần những hình ảnh có độ trung thực cao cũng đã tìm cách áp dụng phương pháp này mặc dù nhược điểm lớn nhất của Raytracing là tốc độ nên có thể nói nó không phù hợp trong những ứng dụng cần xử lý thời gian thực như ứng dụng trò chơi.
N hững ứng dụng trò chơi trên máy tính hiện tại sù dụng rất nhiều kỹ thuật để tăng mức độ thật của hình ảnh nhưng vẫn giữ được tốc độ xử lý các frame phù hợp.
O p en R T [9]:
O penRT là m ột dự án mã nguồn mở đang được phát triển. Mục đích của dự án này là phát triển Raytracing nhàm tìm ra sự thay thế của Raytracing với các phương pháp tạo ảnh hiện tại (ví dụ quét ảnh). Hiện nay dự án đã phát triển được phần lõi Raytracing, các hàm API tương tự như các hàm trong OpenGL.
1.6 Xu thế ph át triển Rayiracing:
Raytracing mang lại tiềm nãng lớn cho công nghệ tạo ảnh trên máy tính. Raytracing đang được nghiên cứu để tạo nên những hình ảnh thời gian thực. Dự án OpenRT Real-Tim e Ray-Tracing đã được lập ra với mục đích phát triển Raytracing để đưa ra m ột sự thay thế cho phương pháp quét ảnh (hướng tiếp cận của đồ họa ba chiều hiện tại).
Theo Intel một tập đoàn khổng lồ về sán xuất chip máy tính, chúng ta sẽ thấy ứng dụng trò chơi sử đụng ray tracing trong vòng hai đển năm năm nữa và sẽ có thể khiến GPU (G raphic Processing Unit) trờ nên lỗi thời [10]. Những kỹ sư của Intel đang viết code cho Raytracing, và họ đã có bản trò chơi mẫu (Quake) chạy ở độ phân giải 1280 với tỷ lệ các khung ảnh cao (100 fps) sử dụng chip CPU 4 lõi Clovertown. Hiện tại, Intel cài đặt Raytracing dựa trên xử lý song song, với các cỗ máy X eon kết nối với nhau bằng đường cáp 1 Gb Ethernet, và không hề có sự can thiệp của G PU cũng như sử dụng kỹ thuật khác như quét ảnh (rasterization)
Hình 16: M ột cảnh trong trò chơi Quake sử dụng Raytracing
Có rất nhiều người cho ràng Raytracing không phải công nghệ cho tương lai của đồ họa máy tính cho trò chơi. Tuy nhiên, công ty NVIDIA , đã có cái nhìn thực tế trong công nghệ tạo ảnh bao gồm cả kỹ thuật quét ảnh và Raytracing.
lâp vào chỗ trống khuyết điểm của phương pháp này. Các kỹ thuật liên quan đến các vật thể, ánh sáng, độ phản xạ và khúc xạ được tính đến khi áp dụng thuật toán Raytracing.
ứ n g d ụ n g R a y tr a c in g tro n g m ô hình các đ ặ c trư n g của són g radio tro n g n h à [7]:
Với sự phát triển của truyền thông cá nhân đang ngày một tăng, nguời ta tìm cách mô phỏng các kênh phát sóng nhằm mục đích nhận được các tính chất và đặc điểm của chúng phục vụ cho nghiên cứu và đưa vào sử dụng.
Khác với môi trường bên ngoài (môi trường tự nhiên rộng lớn), môi trường trong nhà bao gồm nhiều vật thể có bề mặt mịn, và có độ phản xạ cao như tủ kính hay gương soi. Khi khoảng cách ngắn giữ trạm phát và các vật thể phàn xạ cũng như các thiết bị nhận được tính đến, các mô hình cơ bản đã được sử dụng để mô tả sự truyền phát ở môi trường bên ngoài không thể thể hiện được những đặc trưng tính chất của môi trường trong nhà.
Đè xây dựng m ột mô hình có khả năng mô tả tính chất của sự lan truyền sóng radio trong nhà, cần m ột phân tích cụ thể về các vật thể mà sóng có thể tương tác. Phương pháp R aytracing phù hợp cho trường hợp này. Nó có thể sự dụng để tìm khoảng thời gian trễ khi tín hiệu được phát đi từ trạm phát đến thiết bị nhận. Khoảng thời gian trễ được đo bàng tổng độ dài của đường đi của sóng từ trạm phát tới thiết bị nhận.
1.5 Các dự án đã p h á t triển:
P O V R a y [8]:
PO V-Ray (Persistence o f Vision Raytracer), là một chương trình mã nguồn mở áp dụng thuật toán R aytracing trong việc tạo ảnh và có thể hoạt động trên nhiều nền máy tính.
Hiện tại, PO V -R ay có m ột số đặc điểm: - D ựa trên ngôn ngữ mô tả (SDL)
- Thư viện tạo các khung cảnh, kiểu dáng và vật thể - Hỗ trợ các dạng hình học cơ bán
- Hỗ trợ m ột số dạng nguồn sáng . . .
Phiên bản hiện tại của POV-Ray là 3.6 với m ột vài đặc tính được thêm vào. Chi tiết có thể tham khảo trên trang chủ w w w .povray.org
sử dụng Raytracing trên GPU, một số đã được đưa ra tại các hội thảo nghiên cứu khoa học như Siggraph (Special Interest Group on GRAPHics and Interactive Techniques). Tuy nhiên, hiện tại những chương trình này mới có khả năng như các chương trình tạo ảnh bằng ray tracing dựa trên CPU. (theo David Kirk, NVIDIA)
[11]
II. Thuật toán:
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ả.
I. Mô hình triển khai
Máy trung tâm chạy hệ điều hành M icrosoft W indow XP sp2, các phần mềm