
Tối ưu hóa hiệu năng cho đồ họa cao cấp trên PC và máy chơi game console.
Trang web này đã được dịch bằng máy để thuận tiện cho bạn. Chúng tôi không thể đảm bảo tính chính xác hoặc độ tin cậy của nội dung được dịch. Nếu bạn có thắc mắc về tính chính xác của nội dung được dịch, vui lòng tham khảo phiên bản tiếng Anh chính thức của trang web.
Đây là bài viết thứ hai trong loạt bài hướng dẫn tối ưu hóa dự án Unity của bạn. Hãy sử dụng chúng như một hướng dẫn để chạy ở tốc độ khung hình cao hơn với ít tài nguyên hơn. Sau khi đã thử áp dụng những phương pháp tốt nhất này, hãy nhớ xem thêm các trang khác trong loạt bài này:
- Cấu hình dự án Unity của bạn để đạt hiệu suất mạnh mẽ hơn
- Quản lý mức sử dụng GPU cho game PC và console
- Lập trình nâng cao và kiến trúc mã
- Hiệu năng vật lý được nâng cao mang lại trải nghiệm chơi game mượt mà hơn.
Xem các hướng dẫn tối ưu hóa mới nhất của chúng tôi dành cho nhà phát triển và nghệ sĩ Unity 6:
Các công cụ đồ họa của Unity cho phép bạn tạo đồ họa tối ưu theo bất kỳ phong cách nào, trên nhiều nền tảng – từ thiết bị di động đến các máy chơi game cao cấp và máy tính để bàn. Quá trình này thường phụ thuộc vào định hướng nghệ thuật và quy trình kết xuất của bạn, vì vậy trước khi bắt đầu, chúng tôi khuyên bạn nên xem xét các quy trình kết xuất hiện có .
Cam kết sử dụng quy trình kết xuất (render pipeline).
Tối ưu hóa ánh sáng trong cảnh quay không phải là một khoa học chính xác mà là một quá trình lặp đi lặp lại. Quá trình này bao gồm thử nghiệm và điều chỉnh, và thường phụ thuộc vào định hướng nghệ thuật và quy trình dựng hình.
Trước khi bắt đầu thiết lập ánh sáng cho các cảnh, bạn cần chọn một trong các quy trình kết xuất có sẵn. Quy trình kết xuất thực hiện một loạt các thao tác để lấy nội dung của một cảnh và hiển thị chúng trên màn hình.
Unity cung cấp ba pipeline render được xây dựng sẵn với các khả năng và đặc điểm hiệu năng khác nhau, hoặc bạn có thể tạo của riêng mình.
1. Hệ thống xử lý kết xuất đa năng (URP) là một Scriptable Render Pipeline (SRP) được xây dựng sẵn. URP cung cấp quy trình làm việc thân thiện với nghệ sĩ để tạo đồ họa tối ưu trên nhiều nền tảng, từ thiết bị di động đến các máy chơi game cao cấp và máy tính cá nhân. URP là phiên bản kế nhiệm của Built-In Render Pipeline, cung cấp các tính năng đồ họa và kết xuất mà pipeline cũ không có. Để duy trì hiệu năng, hệ thống phải thực hiện các sự đánh đổi để giảm chi phí tính toán cho việc chiếu sáng và tạo bóng. Hãy chọn URP nếu bạn muốn tiếp cận nhiều nền tảng mục tiêu nhất, bao gồm cả thiết bị di động và thực tế ảo (VR).
Để có cái nhìn tổng quan đầy đủ về các khả năng của URP, hãy tham khảo sách điện tử " Giới thiệu về Universal Render Pipeline dành cho người sáng tạo Unity nâng cao" (phiên bản Unity 6) .
2. Quy trình kết xuất độ phân giải cao (HDRP) Đây là một SRP được xây dựng sẵn khác được thiết kế cho đồ họa tiên tiến, chất lượng cao. HDRP nhắm đến các phần cứng cao cấp như PC, Xbox và PlayStation. Đây là quy trình kết xuất được khuyến nghị để tạo ra đồ họa chân thực như ảnh chụp với độ chi tiết cao nhất trong trò chơi của bạn, với hệ thống chiếu sáng, phản chiếu và đổ bóng tiên tiến. HDRP sử dụng ánh sáng và vật liệu dựa trên các nguyên lý vật lý và hỗ trợ các công cụ gỡ lỗi được cải tiến.
Tìm hiểu tổng quan đầy đủ về các khả năng trong HDRP trong sách điện tử " Ánh sáng và môi trường trong quy trình kết xuất độ phân giải cao" .
3. Quy trình kết xuất tích hợp sẵn Đây là hệ thống xử lý đồ họa đa năng cũ hơn của Unity với khả năng tùy chỉnh hạn chế. Quy trình này sẽ tiếp tục được hỗ trợ trong suốt vòng đời Unity 6.x.

Hình ảnh từ bản demo cao cấp Time Ghost của Unity.
Kết xuất chuyển tiếp
Trong kỹ thuật dựng hình xuôi (forward rendering), card đồ họa chiếu hình học và chia nó thành các đỉnh. Các đỉnh đó được chia nhỏ hơn nữa thành các mảnh, hay pixel, được hiển thị trên màn hình để tạo hình ảnh cuối cùng.
Quy trình này chuyển từng đối tượng một đến API đồ họa. Việc dựng hình hướng về phía trước sẽ phát sinh chi phí cho mỗi nguồn sáng. Càng nhiều nguồn sáng trong cảnh, thời gian kết xuất càng lâu.
Bộ xử lý đồ họa tích hợp (Built-in Pipeline) vẽ từng nguồn sáng trong một lượt riêng biệt cho mỗi đối tượng. Nếu có nhiều nguồn sáng chiếu vào cùng một GameObject, điều này có thể tạo hiện tượng vẽ chồng chéo đáng kể, trong đó các khu vực chồng chéo cần phải vẽ cùng một pixel nhiều hơn một lần. Giảm thiểu số lượng đèn báo trạng thái hoạt động để hạn chế tình trạng tiêu thụ điện năng quá mức.
Thay vì xử lý một lượt riêng cho mỗi nguồn sáng, URP loại bỏ các nguồn sáng theo từng đối tượng. Điều này cho phép tính toán ánh sáng chỉ trong một lần xử lý duy nhất, dẫn đến số lượng lệnh vẽ ít hơn so với trình kết xuất chuyển tiếp của Built-In Render Pipeline.
Tiến lên +
Công nghệ dựng hình Forward+ cải tiến công nghệ dựng hình Forward tiêu chuẩn bằng cách loại bỏ các nguồn sáng theo không gian thay vì theo từng đối tượng. Điều này làm tăng tổng số lượng đèn có thể được sử dụng để hiển thị một khung hình. Trong chế độ kết xuất trì hoãn (Deferred rendering), nó hỗ trợ API Native RenderPass, cho phép kết hợp các pass G-buffer và ánh sáng thành một pass kết xuất duy nhất.

Hình minh họa về cách hoạt động của kỹ thuật dựng hình chuyển tiếp.
Kết xuất trì hoãn
Trong kỹ thuật đổ bóng trì hoãn, ánh sáng không được tính toán riêng cho từng đối tượng.
Phương pháp tạo bóng mờ trì hoãn việc tính toán ánh sáng – đến giai đoạn sau. Công nghệ tạo bóng mờ trì hoãn sử dụng hai bước xử lý.
Trong bước xử lý đầu tiên, hay còn gọi là bước xử lý hình học G-Buffer , Unity sẽ hiển thị GameObjects. Bước này thu thập một số loại thuộc tính hình học và lưu trữ chúng trong một tập hợp các họa tiết. Các kết cấu G-buffer có thể bao gồm:
- màu khuếch tán và màu phản xạ
- độ nhẵn bề mặt
- tắc nghẽn
- pháp tuyến không gian thế giới
- phát xạ + môi trường xung quanh + phản xạ + bản đồ ánh sáng
Trong bước xử lý thứ hai, hay còn gọi là bước chiếu sáng , Unity sẽ dựng hình ánh sáng của cảnh dựa trên G-buffer. Hãy tưởng tượng việc lặp qua từng pixel và tính toán thông tin chiếu sáng dựa trên bộ đệm thay vì dựa trên từng đối tượng riêng lẻ. Do đó, việc thêm nhiều nguồn sáng không tạo bóng trong kỹ thuật đổ bóng trì hoãn không gây ra sự suy giảm hiệu năng tương tự như khi sử dụng kỹ thuật kết xuất trực tiếp.
Mặc dù việc lựa chọn đường dẫn hiển thị không phải là một biện pháp tối ưu hóa trực tiếp, nhưng nó có thể ảnh hưởng đến cách bạn tối ưu hóa dự án của mình. Các kỹ thuật và quy trình làm việc khác trong phần này có thể khác nhau tùy thuộc vào pipeline kết xuất và đường dẫn kết xuất mà bạn đã chọn.

Hình minh họa về cách thức hoạt động của đường dẫn kết xuất đổ bóng trì hoãn.
Đồ thị Shader
Cả HDRP và URP đều hỗ trợ Shader Graph , một giao diện trực quan để tạo shader. Điều này cho phép một số người dùng tạo các hiệu ứng đổ bóng phức tạp mà trước đây có thể nằm ngoài khả năng thực hiện được. Sử dụng hơn 150 nút trong hệ thống đồ thị trực quan để tạo thêm nhiều shader. Bạn cũng có thể tạo các node tùy chỉnh của riêng mình bằng API.
Mỗi Shader Graph bắt đầu bằng một nút chủ tương thích, nút này sẽ xác định đầu ra của đồ thị. Thêm các nút và toán tử bằng giao diện trực quan và xây dựng logic đổ bóng.
Shader Graph này sau đó được chuyển đến phần xử lý phía sau của quy trình kết xuất. Kết quả cuối cùng là một shader ShaderLab, có chức năng tương tự như shader được viết bằng HLSL hoặc Cg.
Việc tối ưu hóa Shader Graph tuân theo nhiều quy tắc tương tự như đối với các Shader HLSL/Cg truyền thống. Shader Graph càng xử lý nhiều dữ liệu, hiệu năng của ứng dụng càng bị ảnh hưởng.
Nếu hiệu năng bị giới hạn bởi CPU, việc tối ưu hóa shader sẽ không cải thiện tốc độ khung hình, nhưng vẫn có thể giúp kéo dài thời lượng pin trên các nền tảng di động.
Nếu hiệu năng bị giới hạn bởi GPU, hãy làm theo các hướng dẫn sau để cải thiện hiệu năng bằng Shader Graphs:
- Giảm số lượng node của bạn: Xóa các nút không sử dụng. Không nên thay đổi bất kỳ cài đặt mặc định nào hoặc kết nối các nút trừ khi những thay đổi đó là cần thiết. Shader Graph tự động loại bỏ bất kỳ tính năng nào không được sử dụng. Khi có thể, hãy tích hợp các giá trị vào kết cấu. Ví dụ, thay vì sử dụng một node để làm sáng họa tiết, hãy áp dụng độ sáng bổ sung vào chính tài nguyên họa tiết đó.
- Sử dụng định dạng dữ liệu nhỏ hơn : Nên chuyển sang cấu trúc dữ liệu nhỏ hơn khi có thể. Hãy cân nhắc sử dụng Vector2 thay vì Vector3 nếu điều đó không ảnh hưởng đến dự án của bạn. Bạn cũng có thể giảm độ chính xác nếu tình huống cho phép (ví dụ: một nửa thay vì float).
- Rút gọn các phép toán : Các thao tác xử lý shader diễn ra nhiều lần mỗi giây, vì vậy hãy tối ưu hóa bất kỳ toán tử toán học nào nếu có thể. Hãy cố gắng kết hợp các kết quả thay vì tạo ra một nhánh logic riêng biệt. Hãy sử dụng các hằng số và kết hợp các giá trị vô hướng trước khi áp dụng vectơ. Cuối cùng, hãy chuyển đổi bất kỳ thuộc tính nào không cần hiển thị trong Inspector thành các Node nội tuyến. Tất cả những cải tiến nhỏ này đều có thể giúp tiết kiệm chi phí khung hình.
- Xem trước nhánh : Khi đồ thị của bạn càng lớn, quá trình biên dịch có thể càng chậm. Đơn giản hóa quy trình làm việc của bạn bằng cách tạo một nhánh riêng biệt, nhỏ hơn, chỉ chứa các thao tác bạn muốn xem trước tại thời điểm hiện tại, sau đó lặp lại nhanh hơn trên nhánh nhỏ này cho đến khi đạt được kết quả mong muốn.
Nếu nhánh đó không được kết nối với nút chính, bạn có thể yên tâm để nhánh xem trước trong biểu đồ của mình. Trong quá trình biên dịch, Unity loại bỏ các nút không ảnh hưởng đến kết quả cuối cùng.
- Tối ưu hóa thủ công: Ngay cả khi bạn là một lập trình viên đồ họa giàu kinh nghiệm, bạn vẫn có thể sử dụng Shader Graph để viết một số đoạn mã cơ bản cho shader dựa trên script. Chọn tài nguyên Shader Graph , sau đó chọn Sao chép Shader.Từ menu ngữ cảnh.
Tạo một Shader HLSL/Cg mới rồi dán Shader Graph đã sao chép vào đó. Đây là một thao tác một chiều, nhưng nó cho phép bạn tối ưu hóa hiệu năng thủ công để đạt được hiệu suất cao hơn nữa.

Một giao diện trực quan dựa trên nút để xây dựng shader trong Shader Graph.
Xóa cài đặt shader tích hợp sẵn
Hãy xóa mọi shader mà bạn không sử dụng khỏi danh sách shader Luôn Bao gồm trong Cài đặt Đồ họa ( Chỉnh sửa > Cài đặt Dự án > Đồ họa ). Thêm các shader cần thiết cho toàn bộ vòng đời của ứng dụng vào đây.

Luôn bao gồm các shader
Biến thể shader dải
Các biến thể shader có thể hữu ích cho các tính năng dành riêng cho từng nền tảng nhưng làm tăng thời gian biên dịch và kích thước tệp.
Bạn có thể sử dụng các chỉ thị pragma biên dịch Shader để biên dịch shader theo cách khác nhau cho từng nền tảng mục tiêu. Tiếp theo, sử dụng từ khóa shader (hoặc nút Shader Graph Keyword ) để tạo các biến thể shader với các tính năng nhất định được bật hoặc tắt.
Bạn có thể ngăn việc đưa các biến thể shader vào bản dựng nếu bạn biết rằng chúng không cần thiết.
Phân tích tệp Editor.log để lấy thông tin về thời gian và kích thước của shader. Hãy tìm những dòng bắt đầu bằng “Compiled shader” và “Compressed shader”. Trong một ví dụ về nhật ký, shader TEST của bạn có thể hiển thị như sau:
Biên dịch shader 'TEST Standard (Specular setup)' trong 31.23 giây.
d3d9 (tổng số chương trình nội bộ: 482, duy nhất: 474)
d3d11 (tổng số chương trình nội bộ: 482, duy nhất: 466)
kim loại (tổng số chương trình nội bộ: 482, duy nhất: 480)
glcore (tổng số chương trình nội bộ: 482, duy nhất: 454)
Đã nén shader 'TEST Standard (Specular setup)' trên d3d9 từ 1.04MB xuống 0.14MB.
Đã nén shader 'TEST Standard (Specular setup)' trên d3d11 từ 1,39MB xuống còn 0,12MB.
Shader nén 'TEST Standard (Specular setup)' trên Metal từ 2,56MB xuống còn 0,20MB.
Đã nén shader 'TEST Standard (Specular setup)' trên glcore từ 2.04MB xuống còn 0.15MB.
Điều này cho bạn biết một vài điều về shader này:
- Shader mở rộng thành 482 biến thể do #pragma multi_compile và shader_feature.
- Unity nén shader có trong dữ liệu trò chơi sao cho kích thước của nó xấp xỉ bằng tổng kích thước đã nén: 0.14+0.12+0.20+0.15 = 0.61MB.
- Trong quá trình chạy, Unity giữ dữ liệu đã nén trong bộ nhớ (0,61MB), trong khi dữ liệu cho API đồ họa bạn đang sử dụng hiện tại sẽ không bị nén. Ví dụ, nếu API hiện tại của bạn là Metal, thì dung lượng sẽ là 2,56MB.
Sau khi biên dịch xong, Project Auditor có thể phân tích tệp Editor.log để hiển thị danh sách tất cả các shader, từ khóa shader và biến thể shader được biên dịch vào dự án. Nó cũng có thể phân tích tệp Player.log sau khi trò chơi kết thúc. Điều này cho bạn biết ứng dụng thực sự đã biên dịch và sử dụng những biến thể nào trong quá trình chạy.
Hãy sử dụng thông tin này để xây dựng một hệ thống loại bỏ shader có thể lập trình và giảm số lượng biến thể. Điều này có thể cải thiện thời gian biên dịch, kích thước bản dựng và mức sử dụng bộ nhớ trong quá trình chạy.
Hãy đọc bài đăng trên blog "Stripping scriptable shader variants" để hiểu rõ hơn về quy trình này.
Làm mịn các cạnh với khử răng cưa
Khử răng cưa giúp làm mịn hình ảnh, giảm các cạnh răng cưa và giảm thiểu hiện tượng răng cưa phản chiếu.
Nếu bạn đang sử dụng chế độ kết xuất Forward với đường dẫn kết xuất tích hợp sẵn, tính năng khử răng cưa đa mẫu (MSAA) sẽ có sẵn trong cài đặt Chất lượng . MSAA tạo ra hiệu ứng khử răng cưa chất lượng cao, nhưng nó có thể khá đắt tiền. Chọn số lượng mẫu MSAA từ menu thả xuống (Không, 2X, 4X, 8X)Xác định số lượng mẫu mà trình kết xuất sử dụng để đánh giá hiệu ứng.
Nếu bạn đang sử dụng chế độ kết xuất Forward với URP hoặc HDRP, bạn có thể bật MSAA trên Render Pipeline Asset.
Ngoài ra, bạn cũng có thể thêm khử răng cưa như một hiệu ứng xử lý hậu kỳ. Mục này xuất hiện trong phần Camera, dưới mục Khử răng cưa (Anti-aliasing ):
- Khử răng cưa xấp xỉ nhanh (FXAA) làm mịn các cạnh ở cấp độ từng pixel. Đây là phương pháp khử răng cưa ít tốn tài nguyên nhất và làm mờ nhẹ hình ảnh cuối cùng.
- Khử răng cưa hình thái dưới mức pixel (SMAA) kết hợp các pixel dựa trên các đường viền của hình ảnh. Phương pháp này cho kết quả sắc nét hơn nhiều so với FXAA và phù hợp với phong cách đồ họa phẳng, hoạt hình hoặc đơn giản.
Trong HDRP, bạn cũng có thể sử dụng FXAA và SMAA với thiết lập Khử răng cưa hậu kỳ trên Camera. URP và HDRP cũng cung cấp thêm một tùy chọn nữa:
- Khử răng cưa theo thời gian (TAA) làm mịn các cạnh bằng cách sử dụng các khung hình từ bộ đệm lịch sử. Phương pháp này hoạt động hiệu quả hơn FXAA nhưng yêu cầu sử dụng vector chuyển động để hoạt động. TAA cũng có thể cải thiện khả năng che khuất ánh sáng xung quanh và thể tích. Nhìn chung, chất lượng cao hơn FXAA, nhưng tốn nhiều tài nguyên hơn và đôi khi có thể tạo ra hiện tượng bóng mờ.

Trong URP, hãy tìm cài đặt MSAA trên Render Pipeline Asset.
Xử lý hậu kỳ không gian-thời gian
Xử lý hậu kỳ không gian-thời gian (STP) được thiết kế để nâng cao chất lượng hình ảnh trên nhiều nền tảng khác nhau như thiết bị di động, máy chơi game và máy tính cá nhân. STP là một bộ nâng cấp khử răng cưa không gian-thời gian hoạt động với cả đường dẫn kết xuất HDRP và URP, cung cấp khả năng nâng cấp nội dung chất lượng cao mà không cần thay đổi nội dung hiện có. Giải pháp này được tối ưu hóa đặc biệt cho hiệu năng GPU, đảm bảo thời gian kết xuất nhanh hơn và giúp dễ dàng đạt được hiệu năng cao trong khi vẫn duy trì chất lượng hình ảnh.
Để kích hoạt STP trong URP:
- Chọn Tài sản URP đang hoạt động trong cửa sổ Dự án.
- Trong cửa sổ Inspector, điều hướng đến Quality > Upscaling Filter và chọn Spatial-Temporal Post-Processing .

Kích hoạt STP trong tài sản URP
Tạo bản đồ ánh sáng
Phương án nhanh nhất để tạo hiệu ứng ánh sáng là phương án không cần tính toán cho từng khung hình. Để làm điều này, hãy sử dụng Lightmapping để "lưu" ánh sáng tĩnh chỉ một lần, thay vì tính toán nó trong thời gian thực.
Thêm hiệu ứng ánh sáng ấn tượng cho hình học tĩnh của bạn bằng cách sử dụng Chiếu sáng toàn cục (GI) . Đánh dấu các đối tượng bằng Contribute GI để bạn có thể lưu trữ ánh sáng chất lượng cao dưới dạng bản đồ ánh sáng.
Quá trình tạo môi trường được chiếu sáng bằng bản đồ ánh sáng mất nhiều thời gian hơn so với việc chỉ đặt một nguồn sáng vào khung cảnh trong Unity, nhưng điều này thì khác:
- Chạy nhanh hơn, nhanh hơn 2-3 lần đối với đèn hai điểm ảnh.
- Trông đẹp hơn – GI có thể tính toán ánh sáng trực tiếp và gián tiếp trông chân thực hơn. Bộ xử lý ánh sáng (lightmapper) làm mịn và khử nhiễu bản đồ kết quả.
Nhờ đó, bóng và ánh sáng được tính toán trước có thể được hiển thị mà không gây ảnh hưởng đến hiệu năng như ánh sáng và bóng thời gian thực.
Các cảnh phức tạp có thể yêu cầu thời gian nung lâu. Nếu phần cứng của bạn hỗ trợ Progressive GPU Lightmapper , tùy chọn này có thể tăng tốc quá trình tạo bản đồ ánh sáng một cách đáng kể, lên đến gấp mười lần trong một số trường hợp.
Hãy làm theo hướng dẫn này để bắt đầu sử dụng Lightmapping trong Unity.

Điều chỉnh cài đặt Lightmapping (Windows > Rendering > Lighting Settings) và kích thước Lightmap để hạn chế việc sử dụng bộ nhớ.
Giảm thiểu đầu dò phản xạ
Linh kiện Reflection Probe có thể tạo các phản chiếu chân thực, nhưng điều này có thể rất tốn kém về mặt sản xuất theo lô. Sử dụng cubemap độ phân giải thấp, mặt nạ loại bỏ và nén текстура để cải thiện hiệu suất thời gian chạy. Sử dụng Kiểu: Nướng để tránh cập nhật từng khung hình.
Nếu sử dụng Kiểu: Thời gian thực Điều này là cần thiết trong URP, hãy tránh sử dụng Every Frame nếu có thể. Điều chỉnh cài đặt Chế độ làm mới và Phân chia thời gian để giảm tốc độ cập nhật. Bạn cũng có thể điều khiển quá trình làm mới bằng tùy chọn Via Scripting và hiển thị dữ liệu thăm dò từ một tập lệnh tùy chỉnh.
Nếu sử dụng Kiểu: Thời gian thực Điều này là cần thiết trong HDRP, hãy sử dụng chế độ Theo yêu cầu (On Demand ). Bạn cũng có thể chỉnh sửa Cài đặt khung hình trong Cài đặt dự án > Cài đặt mặc định HDRP . Giảm chất lượng và các tính năng trong chế độ Phản chiếu thời gian thực để cải thiện hiệu năng.
Giảm chất lượng và các tính năng trong phần Phản chiếu thời gian thực để cải thiện hiệu suất.

Mỗi đầu dò phản xạ thu thập hình ảnh môi trường xung quanh dưới dạng kết cấu bản đồ khối lập phương.
Sử dụng thể tích đầu dò thích ứng
Unity 6 giới thiệu Adaptive Probe Volumes (APVs), một giải pháp tinh vi để xử lý chiếu sáng toàn cục trong Unity, cho phép chiếu sáng động và hiệu quả trong các cảnh phức tạp. APV có thể tối ưu hóa cả hiệu năng và chất lượng hình ảnh, đặc biệt là trên thiết bị di động và các thiết bị cấu hình thấp, đồng thời cung cấp các khả năng nâng cao cho các nền tảng cao cấp.
APV cung cấp một loạt các tính năng để tăng cường khả năng chiếu sáng tổng thể, đặc biệt là trong các cảnh động và rộng lớn. URP hiện hỗ trợ lấy mẫu trên từng đỉnh để cải thiện hiệu suất trên các thiết bị cấu hình thấp, trong khi các hạt VFX được hưởng lợi từ ánh sáng gián tiếp được tích hợp sẵn trong thể tích thăm dò.
Dữ liệu APV có thể được truyền trực tiếp từ ổ đĩa đến CPU và GPU, tối ưu hóa thông tin chiếu sáng cho các môi trường lớn. Các nhà phát triển có thể tích hợp và kết hợp nhiều kịch bản chiếu sáng khác nhau, cho phép chuyển đổi theo thời gian thực như chu kỳ ngày/đêm. Hệ thống này cũng hỗ trợ che khuất bầu trời, tích hợp với API Ray Intersector để tính toán thăm dò hiệu quả hơn và cung cấp khả năng kiểm soát mật độ mẫu Light Probe để giảm hiện tượng rò rỉ ánh sáng và tăng tốc độ lặp lại. API tạo ảnh APV mới bằng C# cũng cho phép tạo ảnh APV độc lập từ lightmap hoặc reflection probe.
Để bắt đầu sử dụng APV, hãy xem bài thuyết trình " Ánh sáng hiệu quả và ấn tượng với Adaptive Probe Volumes" từ GDC 2023.

Việc có nhiều APV giúp kiểm soát tốt hơn mật độ đầu dò ở cấp độ đó.
Tắt bóng đổ
Bạn có thể tắt tính năng đổ bóng cho từng MeshRenderer và nguồn sáng riêng biệt. Hãy tắt hiệu ứng đổ bóng bất cứ khi nào có thể để giảm số lượng lệnh vẽ.
Bạn cũng có thể tạo bóng giả bằng cách sử dụng kết cấu mờ được áp dụng cho một lưới đơn giản hoặc hình tứ giác nằm bên dưới nhân vật của bạn. Ngoài ra, bạn có thể tạo bóng đổ dạng khối bằng các shader tùy chỉnh.
Đặc biệt, hãy tránh bật đổ bóng cho đèn điểm. Mỗi nguồn sáng điểm có bóng đổ yêu cầu sáu lần xử lý bản đồ bóng đổ cho mỗi nguồn sáng – hãy so sánh điều đó với chỉ một lần xử lý bản đồ bóng đổ cho đèn pha. Hãy cân nhắc thay thế đèn điểm bằng đèn pha ở những nơi cần tạo ra hiệu ứng đổ bóng sống động. Nếu có thể tránh đổ bóng động, hãy sử dụng cubemap làm Light.cookie với các đèn điểm của bạn.

Tắt tính năng đổ bóng để giảm số lượng lệnh vẽ.
Thay thế hiệu ứng đổ bóng
Trong một số trường hợp, bạn có thể áp dụng những thủ thuật đơn giản thay vì thêm nhiều đèn chiếu sáng phụ. Ví dụ, thay vì tạo một nguồn sáng chiếu thẳng vào camera để tạo hiệu ứng ánh sáng viền, hãy sử dụng Shader mô phỏng ánh sáng viền (xem các ví dụ về Surface Shader để biết triển khai điều này trong HLSL).
Hãy mặc nhiều lớp quần áo mỏng.
Đối với các cảnh phức tạp có nhiều nguồn sáng, hãy tách các đối tượng bằng cách sử dụng các lớp, sau đó giới hạn phạm vi ảnh hưởng của mỗi nguồn sáng vào một mặt nạ loại bỏ cụ thể (Culling Mask ).

Các lớp có thể giới hạn phạm vi ảnh hưởng của ánh sáng vào một mặt nạ loại bỏ cụ thể.
Sử dụng GPU Lightmapper
Công cụ GPU Lightmapper đã sẵn sàng cho sản xuất trong Unity 6. Nó giúp tăng tốc đáng kể quá trình tạo dữ liệu ánh sáng bằng cách tận dụng GPU, mang lại thời gian xử lý nhanh hơn đáng kể so với phương pháp tạo bản đồ ánh sáng truyền thống bằng CPU. Nó giới thiệu một hệ thống xử lý bánh nhẹ mới giúp đơn giản hóa mã nguồn và mang lại kết quả dễ dự đoán hơn. Ngoài ra, yêu cầu tối thiểu về GPU đã được giảm xuống còn 2GB, đồng thời bao gồm một API mới để di chuyển vị trí của các điểm dò ánh sáng trong thời gian chạy, điều này đặc biệt hữu ích cho nội dung được tạo ra theo thuật toán, cùng với nhiều cải tiến về trải nghiệm người dùng.

Chọn GPU Lightmapper
Thêm mẹo dành cho Unity 6
Bạn có thể tìm thấy nhiều mẹo và kinh nghiệm thực tiễn tốt nhất dành cho các nhà phát triển và người sáng tạo Unity chuyên nghiệp tại trung tâm kinh nghiệm thực tiễn tốt nhất Unity . Hãy lựa chọn từ hơn 30 hướng dẫn được tạo ra bởi các chuyên gia trong ngành, các kỹ sư và nghệ sĩ kỹ thuật Unity , giúp bạn phát triển hiệu quả với bộ công cụ và hệ thống của Unity.
