![Shader Compilation là gì và tại sao nó làm cho các trò chơi trên PC bị giật hình? Shader Compilation là gì và tại sao nó làm cho các trò chơi trên PC bị giật hình?](https://www.howtogeek.com/wp-content/uploads/2022/11/Elden-Ring.jpeg?width=1198&trim=1,1&bg-color=000&pad=1,1)
Một số trò chơi có một loại giật hình xảy ra bất kể máy tính của bạn mạnh đến đâu hoặc bạn chọn cài đặt nào. Điều này là do một quá trình gọi là “biên dịch shader” gây ra và đó là một vấn đề ngày càng gia tăng trong trò chơi trên PC.
Shader là gì?
Trình tạo bóng là các chương trình máy tính giúp xác định các khía cạnh khác nhau của đồ họa được hiển thị. Ví dụ, trình đổ bóng pixel tính toán các thuộc tính của pixel. Điều này bao gồm màu sắc, độ sáng, độ phản xạ hoặc độ trong suốt của pixel đó. Nếu bạn muốn thứ gì đó trong trò chơi của mình trông ướt át, bạn sử dụng một công cụ đổ bóng đặc biệt để đạt được vẻ ngoài đó thay vì làm bằng tay một cách tỉ mỉ.
Bộ đổ bóng là thứ làm cho GPU hiện đại trở nên linh hoạt vì những GPU này được thiết kế để chạy bất kỳ thứ gì có thể được thể hiện bằng ngôn ngữ lập trình bộ đổ bóng. Chúng thay thế công nghệ GPU “đường dẫn chức năng cố định” cũ, nơi các loại phép toán đồ họa mà GPU có thể thực hiện được kết nối cứng vào silicon của nó.
Biên dịch Shader là gì?
“Biên dịch” là một thuật ngữ máy tính dùng để chỉ việc lấy mã do một lập trình viên là con người viết và dịch mã đó sang mã máy mà bộ xử lý cụ thể dùng để chạy phần mềm được đề cập có thể hiểu được. Vì vậy, ví dụ: bạn có thể biên dịch mã của mình để chạy trên CPU Intel hoặc Apple Silicon.
Điều tương tự cũng cần thiết cho GPU. Mã shader phải được biên dịch để chạy trên nhãn hiệu và kiểu GPU cụ thể được đề cập. Nếu bạn thay đổi GPU, cập nhật trình điều khiển của nó hoặc trò chơi nhận được bản cập nhật, bộ đổ bóng phải được biên dịch lại.
Tại sao một số trò chơi trên PC có phần tổng hợp Shader nói lắp?
Trong một số trò chơi, việc biên dịch các trình tạo bóng ở chế độ nền sẽ can thiệp vào chính trò chơi đó, gây ra hiện tượng giật hình có thể nhìn thấy được. Máy tính đang làm việc quá sức trong việc biên dịch các shader để trò chơi chạy trơn tru. Một số nhà phát triển cố gắng tối ưu hóa quá trình biên dịch để nó có ít hoặc không ảnh hưởng đến hiệu suất trò chơi, trong khi những người khác trải rộng quá trình biên dịch shader trong suốt trò chơi, hy vọng rằng quá trình này sẽ chỉ tồn tại trong thời gian ngắn. Trong trường hợp đó, bạn chỉ gặp phải tình trạng nói lắp khi bắt đầu một cấp độ mới hoặc khi bạn bước vào một môi trường mới sử dụng các trình đổ bóng không cần thiết cho đến thời điểm đó.
Lỗi biên dịch đặc biệt nghiêm trọng trong các trò chơi Unreal Engine 4, đây là một công cụ trò chơi phổ biến và rộng rãi. Cụ thể, những hiện tượng nói lắp này trở thành một vấn đề khi chạy trò chơi trong DirectX 12. Điều này một phần là do DirectX 12 thay đổi cách thức hoạt động của trình biên dịch shader, trao nhiều quyền kiểm soát hơn cho nhà phát triển. Tuy nhiên, điều này cũng có nghĩa là các nhà phát triển có thể không có cách tốt nhất để tối ưu hóa quá trình biên dịch shader được đóng đinh bằng cách sử dụng phiên bản DirectX mới nhất và tốt nhất.
Tại sao bảng điều khiển không có trình biên dịch Shader nói lắp?
Trình biên dịch Shader nói lắp là một vấn đề hoàn toàn không có trên các bảng điều khiển như PS5 và Xbox Series X|S. Điều này đơn giản là vì các nhà phát triển biết chính xác phần cứng bên trong mỗi bảng điều khiển để họ có thể biên dịch trước tất cả các trình đổ bóng; không cần biên dịch chúng trên hệ thống cục bộ vì bạn đã biết mình đang nhắm mục tiêu GPU nào.
Có thể làm điều này trên PC, nhưng vì có quá nhiều GPU và cấu hình hệ thống nên sẽ không thực tế. Tuy nhiên, trong trường hợp của Valve Steam Deck, Valve bao gồm bộ nhớ đệm đổ bóng được biên dịch trước với một số trò chơi vì tất nhiên, tất cả các Steam Deck đều có cùng một GPU.
Bạn có thể làm gì về việc tổng hợp nói lắp?
Thật không may, hầu hết thời gian, các nhà phát triển phải khắc phục sự cố biên dịch shader. Tin tốt là cuối cùng họ sẽ xử lý được quá trình này. Unreal Engine 5.1 có thể bao gồm một tính năng tự động giúp các nhà phát triển tạo bộ nhớ đệm mà không ảnh hưởng quá nghiêm trọng đến hiệu suất.
Danh sách những điều bạn có thể làm để giảm bớt nói lắp không dài, nhưng một số tùy chọn này có thể hữu ích:
- Nếu một trò chơi cho phép bạn biên dịch trước các shader, hãy để nó. Quá trình này có thể mất một chút thời gian, nhưng trải nghiệm trò chơi sẽ không bị giật hình.
- Trừ khi bản cập nhật trò chơi bao gồm bản sửa lỗi nói lắp của trình đổ bóng, hãy chờ cho đến khi bạn chơi xong, nếu không trình đổ bóng có thể biên dịch lại.
- Giữ cập nhật trình điều khiển GPU cho đến khi bạn hoàn thành trò chơi hiện tại của mình trong trường hợp nó kích hoạt quá trình biên dịch lại.
- Khi bắt đầu nói lắp trong trò chơi, hãy nhấn nút tạm dừng và đợi cho đến khi quá trình này kết thúc trước khi chơi tiếp.
- Sử dụng DirectX 11 thay vì phiên bản DirectX 12 của trò chơi. Thông thường, hiện tượng giật hình của shader được giảm bớt hoặc không có, mặc dù bạn sẽ từ bỏ các tính năng của DX12 với giá hời.
- Thay vào đó, hãy chơi trò chơi trên bảng điều khiển.
Theo thời gian, vấn đề này có thể sẽ biến mất hoặc trở nên ít xâm phạm hơn. Ví dụ: các nhà phát triển có thể giảm tải quá trình biên dịch shader lên các lõi CPU mà trò chơi không cần, đây là tình huống phổ biến trên các PC hiện đại có nhiều lõi. Cho đến lúc đó, các # nói lắp sẽ vẫn là một vấn đề khó chịu khi chơi game trên PC.