Hoạ tiết

Làm theo các phương pháp hay nhất sau đây để tối ưu hoá giao diện và hiệu suất của hoạ tiết trò chơi trên Android.

Hoạ tiết là yếu tố cốt lõi đối với đồ hoạ 3D. Trò chơi 3D chạy tốt trên nhiều thiết bị nhất chính là trò chơi có đồ hoạ 3D được thiết kế để khai thác tối đa trình xử lý đồ hoạ. Hướng dẫn này nêu bật cách tối ưu hoá và các phương pháp hay nhất về hoạ tiết trên thiết bị di động để giúp trò chơi hoạt động hiệu quả hơn, đồng thời giảm thiểu mức tiêu thụ điện năng trong khi vẫn duy trì chất lượng hình ảnh cao.

Các phần của bài viết này dựa trên nội dung do Arm Limited giữ bản quyền và đóng góp.

Tạo tập bản đồ hoạ tiết

Tập bản đồ hoạ tiết là một hoạ tiết được thiết kế để chứa dữ liệu hình ảnh của nhiều đối tượng đồ hoạ, chẳng hạn như lưới 3D hay sprite 2D. Thay vì mỗi đối tượng có một hoạ tiết riêng, hoạ tiết tập bản đồ được dùng để kết hợp hình ảnh từ từng đối tượng.

Các lưới dùng chung tập bản đồ hoạ tiết
Hình 1. Điểm đánh dấu màu vàng trong cảnh được kết xuất (bên trái) chỉ rõ các lưới dùng chung tập bản đồ hoạ tiết (bên phải).

Việc giảm thiểu số hàm gọi vẽ của khung trò chơi là yếu tố quan trọng để đạt được hiệu suất kết xuất tối ưu. Việc sử dụng cùng một hoạ tiết cho các đối tượng khác nhau là yếu tố để kết hợp các đối tượng đó vào một hàm gọi vẽ duy nhất. Việc giảm số hàm gọi vẽ đặc biệt quan trọng đối với trò chơi bị giới hạn bởi CPU, vì mỗi hàm gọi vẽ sẽ gây ra mức hao tổn CPU khi được trình điều khiển đồ hoạ xử lý. Tập bản đồ hoạ tiết cũng làm giảm số lượng tệp tài sản hoạ tiết trong dữ liệu thời gian chạy của trò chơi. Hàng trăm hoặc thậm chí hàng nghìn hoạ tiết có thể được hợp nhất thành lượng tập bản đồ hoạ tiết nhỏ hơn nhiều.

Bạn nên lên kế hoạch cho bố cục tập bản đồ hoạ tiết khi tạo lưới 3D. Nếu tập bản đồ được biên soạn trước khi tạo tài sản lưới, thì thành phần lưới phải là UV được khám phá theo tập bản đồ hoạ tiết. Nếu tập bản đồ được tạo sau khi biên soạn bằng cách sử dụng công cụ tạo tập bản đồ hay hợp nhất trong phần mềm hội hoạ, thì cần phải sắp xếp lại đảo UV theo hoạ tiết.

Tạo lô hàm gọi vẽ theo công cụ

Công cụ phát triển trò chơi Unity có tính năng tạo lô hàm gọi vẽ có thể tự động kết hợp các đối tượng. Để đủ điều kiện tạo lô tự động, các đối tượng phải dùng chung một vật liệu, bao gồm cả hoạ tiết, và được đánh dấu là tĩnh.

Unreal Engine 4 đòi hỏi thiết lập thủ công để tạo lô. Bạn có thể hợp nhất các đối tượng trong phần mềm 3D trước khi nhập vào Unreal. Unreal cũng bao gồm công cụ UE4 Actor Merging có thể kết hợp các lưới và tạo tệp tập bản đồ hoạ tiết.

Tạo mipmap

Mipmap là các phiên bản có độ phân giải thấp hơn của hoạ tiết. Một tập hợp mipmap cho một hoạ tiết nhất định được gọi là một chuỗi mipmap. Mỗi cấp mipmap phía sau trong chuỗi có độ phân giải thấp hơn cấp trước đó. Mipmap được dùng để triển khai LOD (mức độ chi tiết) của hoạ tiết trong khi kết xuất. Khi một hoạ tiết được tạo mipmap liên kết với một cấp độ hoạ tiết, phần cứng đồ hoạ sẽ sử dụng không gian hoạ tiết do một mảnh chiếm giữ để chọn một cấp trong chuỗi mipmap. Khi kết xuất cảnh 3D, đối tượng ở xa máy ảnh sẽ sử dụng mipmap có độ phân giải thấp hơn so với cùng đối tượng đó khi ở gần máy ảnh hơn.

Chất liệu được tạo mipmap sẽ sử dụng nhiều bộ nhớ hơn so với hoạ tiết không được tạo mipmap. Các cấp mipmap bổ sung sẽ tăng 33% mức sử dụng bộ nhớ của hoạ tiết. Nếu một hoạ tiết được vẽ ở một khoảng cách cố định so với máy ảnh, thì việc tạo mipmap sẽ gây lãng phí bộ nhớ.

Chuỗi mipmap từ độ phân giải hoạ tiết cơ bản 512 x 512 pixel
Hình 2. Một chuỗi mipmap, độ phân giải cơ bản của hoạ tiết là 512 x 512 pixel.

Việc sử dụng đúng mipmap sẽ cải thiện hiệu suất GPU. Việc cung cấp các cấp mipmap có độ phân giải thấp hơn giúp giảm mức sử dụng băng thông của bộ nhớ và cải thiện khả năng lưu trữ của bộ nhớ đệm hoạ tiết.

Việc tạo mipmap cũng giúp cải thiện chất lượng hình ảnh bằng cách giảm tình trạng răng cưa của hoạ tiết. Bạn có thể nhận thấy tình trạng răng cưa của hoạ tiết qua hiệu ứng chập chờn ở các khu vực cách xa máy ảnh.

Ví dụ về tình trạng răng cưa của hoạ tiết
Hình 3. Ví dụ về tình trạng răng cưa của hoạ tiết. Một hình ảnh được kết xuất mà không có mipmap (trái), một hình ảnh có mipmap (phải). Bạn có thể nhận thấy tình trạng răng cưa của hoạ tiết bên trong hình chữ nhật màu đỏ trong hình ảnh bên trái.

Thông tin chi tiết về mipmap theo công cụ

Unreal Engine 4 đòi hỏi kích thước hoạ tiết là luỹ thừa của 2 (ví dụ: 512x1024, 128x128) để có thể tạo mipmap. Không thể tạo chuỗi mipmap nếu một hoặc cả hai chiều kích thước của hoạ tiết không phải là luỹ thừa của 2.

Công cụ Unity sẽ tự động chuyển tỷ lệ các hoạ tiết có kích thước không phải là luỹ thừa của 2 để tạo mipmap. Đảm bảo tệp hoạ tiết nguồn có kích thước là luỹ thừa của 2 để tránh bị chuyển tỷ lệ.

Chọn chế độ lọc hoạ tiết thích hợp

Lọc hoạ tiết là một tính năng kết xuất phần cứng ảnh hưởng đến hình ảnh trực quan của hình tam giác được kết xuất. Việc sử dụng tính năng lọc hoạ tiết đúng cách có thể cải thiện chất lượng hình ảnh của cảnh. Có nhiều chế độ lọc hoạ tiết, mỗi chế độ có sự cân bằng khác nhau giữa mức cải thiện kết xuất hình ảnh và chi phí. Chi phí bao gồm cả thời gian tính toán và băng thông bộ nhớ. Ba chế độ lọc hoạ tiết thường thấy là: gần nhất (hoặc điểm), song tuyến tính và tam tuyến tính. Không đẳng hướng là một phương thức lọc hoạ tiết bổ sung có thể kết hợp với bộ lọc song tuyến tính hoặc tam tuyến tính.

Gần nhất

Gần nhất là chế độ lọc hoạ tiết đơn giản và ít tốn kém nhất. Bộ lọc gần nhất lấy mẫu một texel duy nhất bằng cách sử dụng các toạ độ được chỉ định trong hoạ tiết nguồn. Hình tam giác kết xuất bằng bộ lọc gần nhất sẽ bị bết khối hoặc vỡ ảnh, nhất là khi kết xuất gần máy ảnh.

Song tuyến tính

Bộ lọc song tuyến tính lấy mẫu bốn texel xung quanh các toạ độ được chỉ định trong hoạ tiết nguồn. Bốn texel này được tính trung bình để xác định màu hoạ tiết của mảnh. Bộ lọc song tuyến tính sẽ giúp các pixel chuyển màu mượt mà hơn, tránh hình ảnh bị bết khối như khi dùng bộ lọc gần nhất. Hình tam giác kết xuất gần máy ảnh sẽ bị mờ thay vì bị vỡ ảnh. Chi phí của bộ lọc song tuyến tính lớn hơn bộ lọc gần nhất do phải lấy mẫu texel bổ sung và tính trung bình.

So sánh giữa bộ lọc gần nhất và bộ lọc song tuyến tính
Hình 4. So sánh giữa bộ lọc gần nhất (bên trái) và bộ lọc song tuyến tính (bên phải) về hoạ tiết.

Tam tuyến tính

Khi kết xuất lưới trong điều kiện khoảng cách từ các đỉnh đến máy ảnh thay đổi, bạn có thể chọn nhiều cấp mipmap trong quá trình kết xuất. Những thay đổi giữa hai cấp mipmap có thể dẫn đến sự sụt giảm đáng kể tại điểm chuyển đổi. Bộ lọc tam tuyến tính sẽ làm mềm sự chuyển đổi này bằng cách thực hiện lọc song tuyến tính trên hai cấp mipmap khác nhau rồi nội suy kết quả. Việc sử dụng nhiều cấp mipmap và nội suy khiến bộ lọc tam tuyến tính có chi phí tính toán lớn hơn so với bộ lọc song tuyến tính.

So sánh giữa bộ lọc song tuyến tính và bộ lọc tam tuyến tính
Hình 5. So sánh giữa bộ lọc song tuyến tính (bên trái) và bộ lọc tam tuyến tính (bên phải) về hoạ tiết. Phần phóng to nêu bật sự khác biệt về kết xuất trong quá trình chuyển đổi mipmap.

Không đẳng hướng

Bộ lọc không đẳng hướng làm tăng chất lượng hình ảnh của lưới có hoạ tiết được kết xuất ở một góc cực hạn so với máy ảnh. Mặt đáy là một ví dụ phổ biến về loại lưới này. Để sử dụng bộ lọc không đẳng hướng, phải tạo mipmap cho hoạ tiết. Bạn có thể thiết lập tỷ lệ hoặc mức lọc không đẳng hướng được áp dụng khi kết xuất. Chi phí của bộ lọc không đẳng hướng sẽ tăng khi mức lọc tăng.

So sánh giữa bộ lọc không đẳng hướng mức 1x và 2x
Hình 6. So sánh giữa bộ lọc song tuyến tính/bộ lọc không đẳng hướng mức 1x (bên trái) và bộ lọc song tuyến tính/bộ lọc không đẳng hướng mức 2x (bên phải)

Chiến lược lựa chọn chế độ

Bộ lọc song tuyến tính thường là sự cân bằng tốt nhất giữa hiệu suất và chất lượng hình ảnh. Bộ lọc tam tuyến tính đòi hỏi băng thông bộ nhớ lớn hơn đáng kể và nên được sử dụng có chọn lọc. Trong nhiều trường hợp, bộ lọc song tuyến tính kết hợp với bộ lọc không đẳng hướng mức 2x sẽ hiển thị và hoạt động hiệu quả hơn bộ lọc song tuyến tính kết hợp với bộ lọc không đẳng hướng mức 1x. Việc tăng mức lọc không đẳng hướng quá 2x là cực kỳ tốn kém và nên được sử dụng rất chọn lọc cho các tài sản trò chơi quan trọng.

Vì bộ lọc hoạ tiết có thể chiếm tới một nửa tổng mức tiêu thụ điện năng của GPU nên việc chọn bộ lọc hoạ tiết đơn giản hơn nếu có thể sẽ là cách hiệu quả để giảm nhu cầu năng lượng của trò chơi.

Tối ưu hoá kích thước hoạ tiết

Hãy đảm bảo kích thước hoạ tiết nhỏ nhất có thể trong khi vẫn đạt được chất lượng hình ảnh mong muốn. Xem lại tài sản hoạ tiết để kiểm tra xem có hoạ tiết lớn một cách bất hợp lý không. Nguyên tắc này áp dụng cho cả hoạ tiết rời và hoạ tiết tập bản đồ. Nếu trò chơi hỗ trợ nhiều thiết bị, bao gồm nhiều loại độ phân giải và hiệu suất, bạn hãy cân nhắc tạo phiên bản tài sản hoạ tiết có độ phân giải thấp và cao cho loại thiết bị thích hợp.

Khi kết xuất lưới có sử dụng nhiều hoạ tiết trong vật liệu, hãy cân nhắc giảm độ phân giải của một số hoạ tiết. Ví dụ: khi sử dụng hoạ tiết khuếch tán 1024x1024, việc giảm hoạ tiết bản đồ kim loại hay độ nhám xuống 512x512 có thể chỉ ảnh hưởng rất nhỏ đến chất lượng hình ảnh. Hãy xác minh tác động của tất cả thử nghiệm đổi kích thước đó để đảm bảo không ảnh hưởng đến mức chất lượng mong muốn.

Sử dụng hệ màu phù hợp

Nhiều gói phần mềm dùng để biên soạn hoạ tiết hoạt động và xuất dữ liệu bằng hệ màu sRGB. Hoạ tiết khuếch tán (được xử lý dưới dạng màu) có thể sử dụng hệ màu sRGB. Bạn không nên xuất hoạ tiết không được xử lý dưới dạng màu, chẳng hạn như bản đồ độ nhám, kim loại, hoặc bản đồ pháp tuyến, trong hệ màu sRGB.

Chế độ cài đặt hoạ tiết trong công cụ phát triển trò chơi bao gồm một thông số cho biết hoạ tiết có sử dụng hệ màu sRGB hay không.

Chế độ cài đặt hoạ tiết sRGB trong Unity và Unreal Engine 4
Hình 7. Chế độ cài đặt hoạ tiết sRGB trong Unity (bên trái) và Unreal Engine 4 (bên phải).

Vì dữ liệu pixel của hoạ tiết đó không được dùng làm dữ liệu màu, nên việc sử dụng hệ màu sRGB sẽ tạo ra hình ảnh không chính xác.

Kết xuất bản đồ kim loại độ nhám trong hệ màu tuyến tính so với hệ màu sRGB
Hình 8. Bản đồ kim loại độ nhám tuyến tính (không phải sRGB) (bên trái) và bản đồ kim loại độ nhám sRGB (bên phải). Ánh phản chiếu ở bên phải có vẻ không chính xác.

Sử dụng nén hoạ tiết

Nén hoạ tiết là một thuật toán nén hình ảnh được áp dụng cho dữ liệu pixel không nén, nhờ đó phần cứng đồ hoạ có thể giải nén hoạ tiết nhanh chóng trong khi kết xuất. Việc sử dụng nén hoạ tiết hiệu quả có thể làm giảm mức sử dụng bộ nhớ và tăng hiệu suất nhưng chỉ tác động tối thiểu đến chất lượng hình ảnh. Ba thuật toán nén hoạ tiết phổ biến nhất trên Android: ETC1, ETC2 và ASTC. Đối với các trò chơi hiện đại, ASTC thường là lựa chọn chính tốt nhất, trong đó ETC2 là một lựa chọn dự phòng nếu trò chơi nhắm đến các thiết bị không hỗ trợ ASTC.

ETC1

ETC1 được tất cả thiết bị Android hỗ trợ. ETC1 chỉ hỗ trợ chế độ dữ liệu màu RGB 4 bit cho mỗi pixel. ETC1 không hỗ trợ kênh alpha. Nhiều công cụ phát triển trò chơi hỗ trợ ETC1 cho phép chỉ định một hoạ tiết ETC1 thứ hai để biểu thị dữ liệu kênh alpha.

ETC2

ETC2 được hơn 90% thiết bị Android đang hoạt động hỗ trợ. Các thiết bị rất cũ không hỗ trợ API OpenGL ES 3.0 không thể sử dụng ETC2. So với ETC1, ETC2 bổ sung thêm:

  • Hỗ trợ kênh alpha, cả 8 bit và 1 bit "punchthrough"
  • Các phiên bản sRGB của hoạ tiết RGB và RGBA
  • Hoạ tiết kênh đơn R11 và kênh kép RG11

ASTC

ASTC được hơn 75% thiết bị Android đang hoạt động hỗ trợ. ASTC có kích thước khối nén có thể định cấu hình, cho phép bạn kiểm soát chi tiết để cân bằng tỷ lệ nén với chất lượng hình ảnh cho một hoạ tiết cụ thể. ASTC thường có thể đạt được chất lượng vượt trội ở cùng dung lượng bộ nhớ với ETC2 hoặc đạt số lượng tương đương ở dung lượng bộ nhớ nhỏ hơn ETC2.

So sánh trực quan các định dạng nén hoạ tiết bằng cùng một hình ảnh nguồn
Hình 9. So sánh giữa các hình ảnh: không nén (bên trái, kích thước 17 MB), nén bằng ETC1 (ở giữa, kích thước 3 MB), nén bằng ASTC (bên phải, kích thước 2,5 MB).

Tốc độ nén hoạ tiết

Việc nén hoạ tiết có thể mất nhiều thời gian nếu trò chơi có nhiều hoạ tiết. Cả ETC và ASTC đều có các tuỳ chọn cài đặt về chất lượng nén cho người dùng lựa chọn. Chế độ cài đặt chất lượng cao hơn sẽ cần nhiều thời gian nén hơn. Trong quá trình phát triển, bạn nên giảm mức chất lượng để giảm thời gian nén và tăng mức chất lượng trước khi tạo bản dựng quan trọng.

Nén hoạ tiết trong công cụ phát triển trò chơi

Nếu đang sử dụng công cụ phát triển trò chơi, bạn có thể phải chọn định dạng nén hoạ tiết (ETC hoặc ASTC) ở cấp dự án. Để hỗ trợ nhiều định dạng nén nhằm đạt được khả năng tương thích tối đa, bạn có thể phải thực hiện thêm một số thao tác. Tính năng Nhắm mục tiêu định dạng nén hoạ tiết của Google Play Asset Delivery có thể hỗ trợ đưa nhiều định dạng vào trò chơi và chỉ cung cấp định dạng tối ưu nhất cho một thiết bị riêng lẻ tại thời điểm cài đặt.

Trải phẳng UV

Hãy giữ đảo UV càng thẳng càng tốt. Việc này hỗ trợ hoạ tiết theo các cách sau:

  • Đóng gói đảo UV dễ dàng hơn, nhờ đó bớt lãng phí không gian.
  • UV thẳng làm giảm "hiệu ứng cầu thang" trên hoạ tiết.
  • Việc đóng gói tốt UV đảm bảo hoạ tiết có độ phân giải tối ưu.
  • Tạo hoạ tiết chất lượng tốt hơn, ngay cả khi UV bị méo một chút do làm thẳng.
Đảo UV chưa tối ưu hoá so với đảo UV đã tối ưu hoá
Hình 10. Đảo UV chưa được tối ưu hoá (bên trái) và đảo UV đã làm thẳng/không bao bọc (bên phải).

Đường phân giới hoạ tiết xuất hiện trên mô hình trông không đẹp. Hãy cố gắng đặt đường phân giới UV ở vị trí ít nhìn thấy hơn. Để giúp lập bản đồ pháp tuyến tốt hơn, hãy tách đảo UV tại các cạnh sắc nét và chừa ra một số khoảng trống xung quanh đảo.

Tránh chi tiết không thể thấy được

Khi thiết kế hình ảnh, bạn không nên thêm chi tiết không thấy được, nhất là trên các trò chơi được thiết kế cho những thiết bị có màn hình nhỏ. Đối với một mô hình ghế nhỏ hầu như không thấy được ở góc phòng, việc tạo một hoạ tiết có kích thước 4096x4096 với chi tiết phức tạp là lãng phí. Trong một số trường hợp, bạn có thể cần phóng đại các cạnh (thêm điểm nổi bật bổ sung) và tô bóng để cải thiện khả năng nhận biết hình dạng.

Hoạ tiết nhỏ được sử dụng trên mô hình kết xuất từ khoảng cách xa
Hình 11. Hoạ tiết nhỏ có kích thước 256x256 không có quá nhiều chi tiết được sử dụng trên mô hình quân lính kết xuất từ khoảng cách xa.

Tích hợp chi tiết

Thiết bị di động có màn hình nhỏ hơn và phần cứng đồ hoạ yếu hơn máy tính cá nhân hoặc máy chơi trò chơi. Thay vì tính toán các hiệu ứng như đổ bóng không gian hoặc vùng sáng phản chiếu trong thời gian chạy, bạn hãy cân nhắc việc "tích hợp" chúng vào hoạ tiết khuếch tán khi có thể. Điều này giúp cải thiện hiệu suất và đảm bảo khả năng hiển thị chi tiết.

Tích hợp hiệu ứng vùng sáng và đổ bóng không gian vào hoạ tiết khuếch tán
Hình 12. Hiệu ứng vùng sáng và đổ bóng không gian được đưa vào hoạ tiết khuếch tán (bên trái) và kết xuất trong trò chơi (bên phải).

Sử dụng tính năng phủ màu

Nếu bạn có thể tạo chương trình đổ bóng tuỳ chỉnh và sở hữu lưới có bảng phối màu tương tự hoặc đồng nhất, hãy cân nhắc sử dụng tính năng phủ màu cho lưới hiện có. Với tính năng phủ màu, hoạ tiết thang màu xám được sử dụng, giúp chiếm ít bộ nhớ hơn so với hoạ tiết RGB. Chương trình đổ bóng áp dụng dữ liệu màu trên mỗi đỉnh để tô màu lưới. Một phương pháp phủ màu thay thế là sử dụng mặt nạ RGB và áp dụng hoạ tiết dựa trên dải màu của mặt nạ.

Hoạ tiết thang màu xám được phủ màu trong thời gian chạy
Hình 13. Hoạ tiết thang màu xám (bên trái) được phủ màu trong thời gian chạy cho mô hình cột (bên phải).

Đóng gói kênh hoạ tiết

Khi kết xuất vật liệu có nhiều hoạ tiết, hãy tìm cơ hội kết hợp các hoạ tiết chỉ sử dụng một kênh màu duy nhất thành một hoạ tiết duy nhất sử dụng cả ba kênh màu. Điều này làm giảm mức sử dụng bộ nhớ và giảm số lượng thao tác lấy mẫu hoạ tiết của chương trình đổ bóng theo mảnh.

Ba hoạ tiết đơn kênh kết hợp thành một hoạ tiết đa kênh
Hình 14. Ba hoạ tiết đơn kênh (bên trái) được kết hợp thành một hoạ tiết đa kênh (bên phải). Dữ liệu đổ bóng không gian được gán màu đỏ, bản đồ độ nhám/độ mượt được gán màu xanh lục và bản đồ kim loại được gán màu xanh lam.

Khi đóng gói, hãy chỉ định dữ liệu chi tiết nhất cho kênh màu xanh lục. Vì mắt người nhạy cảm với màu xanh lục hơn nên phần cứng đồ hoạ thường gán nhiều bit cho kênh màu xanh lục hơn. Ví dụ: bản đồ độ nhám/độ mượt thường có nhiều chi tiết hơn bản đồ kim loại và là lựa chọn phù hợp hơn để gán kênh màu xanh lục.

Đối với vật liệu sử dụng kênh alpha, nếu bạn chỉ đang sử dụng hai kênh trong hoạ tiết dạng đóng gói, hãy xem xét đặt dữ liệu kênh alpha vào hoạ tiết dạng đóng gói thay vì hoạ tiết khuếch tán. Tuỳ thuộc vào định dạng của hoạ tiết khuếch tán, bạn có thể giảm kích thước hoặc tăng chất lượng hình ảnh bằng cách loại bỏ dữ liệu kênh alpha.

Kênh alpha được thêm vào một hoạ tiết khác
Hình 15. Bản đồ độ mờ của kênh alpha được thêm vào hoạ tiết cùng với bản đồ độ nhám/độ mượt và bản đồ kim loại.

Hãy đảm bảo rằng hoạ tiết dạng đóng gói được đặt thành hệ màu RGB tuyến tính chứ không phải sRGB.

Lập bản đồ pháp tuyến

Lập bản đồ pháp tuyến là một kỹ thuật giúp mô hình 3D xuất hiện chi tiết mà không cần sử dụng thêm hình dạng. Các đặc điểm như nếp nhăn hoặc bu lông đòi hỏi nhiều hình tam giác để mô hình hoá có thể được mô phỏng bằng cách sử dụng bản đồ pháp tuyến. Việc lập bản đồ pháp tuyến có thể phù hợp hoặc không phù hợp, tuỳ thuộc vào phong cách đồ hoạ và định hướng của trò chơi.

Mô hình được kết xuất khi có và không có bản đồ pháp tuyến
Hình 16. Mô hình được kết xuất khi không có bản đồ pháp tuyến (bên trái), có bản đồ pháp tuyến (ở giữa) và khi có hoạ tiết bản đồ pháp tuyến (bên phải).

Bản đồ pháp tuyến sẽ làm phát sinh một số chi phí hiệu suất, nên cần được sử dụng một cách hạn chế trên các thiết bị yếu hơn. Bản đồ pháp tuyến đòi hỏi thêm hoạ tiết, dẫn đến việc lấy mẫu hoạ tiết bổ sung và tính toán trong chương trình đổ bóng theo mảnh.

Các phương pháp hay nhất về bản đồ pháp tuyến

Dưới đây là một số phương pháp hay nhất để lập bản đồ pháp tuyến:

Sử dụng lồng

Lồng là phiên bản mở rộng hoặc phiên bản phát hành của mô hình đa giác thấp. Lồng cần bao gồm mô hình đa giác cao để hoạt động tốt trong quá trình tích hợp bản đồ pháp tuyến. Lồng dùng để hạn chế khoảng cách truyền tia trong quá trình tích hợp bản đồ pháp tuyến và giúp tránh sự cố với việc phân tách đường phân giới pháp tuyến trên bản đồ pháp tuyến.

Lồng bao quanh lưới đa giác thấp
Hình 17. Lồng bao quanh lưới đa giác thấp.
Mô hình kết xuất bằng bản đồ pháp tuyến khi có và không có lồng
Hình 18. Mô hình kết xuất bằng bản đồ pháp tuyến được tạo khi có lồng (bên trái) so với mô hình kết xuất bằng bản đồ pháp tuyến được tạo khi không có lồng (bên phải).

Tích hợp trùng khớp theo tên lưới

Nếu phần mềm tích hợp của bạn hỗ trợ, hãy tích hợp trùng khớp theo tên lưới. Tính năng này giúp làm giảm vấn đề chiếu sai bản đồ pháp tuyến. Khi ở khoảng cách quá gần nhau, các đối tượng có thể bất ngờ chiếu bản đồ pháp tuyến lên sai mặt. Khớp theo tên lưới đảm bảo việc tích hợp chỉ được thực hiện trên đúng bề mặt. Để biết thêm thông tin về tính năng này trong Substance Painter, hãy xem trang này. Để biết thêm thông tin về tính năng này trong Marmoset Toolbag, hãy xem trang này.

Nổ lưới

Nếu bạn không thể khớp theo tên lưới khi tích hợp, hãy cân nhắc việc nổ lưới. Việc nổ lưới sẽ di chuyển các phần ra xa nhau để bản đồ pháp tuyến không chiếu lên sai bề mặt. Nếu đang tích hợp để đổ bóng không gian, bạn có thể phải thực hiện việc tích hợp riêng biệt bằng một lưới không bị nổ.

Lưới nổ để tích hợp bản đồ pháp tuyến
Hình 19. Lưới nổ để tích hợp bản đồ pháp tuyến

Thu nhỏ đường phân giới

UV liền mạch trên các cạnh cứng sẽ gây ra các đường phân đoạn hiển thị, bạn hãy phân tách UV trên các cạnh cứng để giảm thiểu tác động này. Theo quy tắc chung, khi thiết lập các nhóm làm mượt, hãy giữ cho góc nhỏ hơn 90 độ. Đường phân giới UV cần có nhóm làm mượt khác trên các tam giác.