Ngay trước khi vẽ khu vực, quái hay hiệu ứng lần đầu xuất hiện, game phải đọc file và tạo shader nên bị dừng.
Vì sao Vào khu vực mới, skill, trang bị hoặc quái lần đầu xuất hiện → Dẫn đến Main thread phải chờ đọc file và biên dịch shader → Trên màn hình Chỉ đứng hình 0,1–1 giây ở lần đầu, từ lần thứ hai trở đi thì bình thường
Khi di chuyển hoặc chuyển bản đồ, Khi làm một thao tác nhất định
Phụ trách
Phụ trách chính Phát triển client (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Tải bất đồng bộ, tải sẵn trước (prewarm), biên dịch shader trước ở màn hình loading hoặc lần chạy đầu tiên, tận dụng màn hình loading.
Con số tham khảo
Biên dịch một shader mất vài chục ms, lâu thì trên 100 ms. Tải texture mất vài chục đến vài trăm ms tùy tốc độ ổ lưu trữ.
Trên đồ thị
Tăng vọt ngay sau đăng nhập hoặc bảo trì · Số lần khung hình vọt lên (ngay sau bản cập nhật hoặc cập nhật driver)
Chỗ cần xem
Dùng PresentMon ghi lại cùng một lộ trình hai lần, so sánh lần đầu với lần thứ hai. Trên bản build development: với Unreal, bật r.PSOPrecache.Validation rồi xem stat PSOPrecache và dòng “PSO PRECACHING MISS” trong log; với Unity, xem đoạn loading và shader của khung hình vọt lên trong Timeline của Profiler
Đúng nếu
chỉ vọt lên 0,1–1 giây ở chỗ lần đầu tới hoặc skill lần đầu dùng, lần thứ hai thì hết. Báo cáo dồn dập ngay sau bản cập nhật hoặc cập nhật driver đồ họa rồi giảm dần
Loại trừ nếu
lần nào tới cùng một chỗ cũng vọt lên thì không phải lỗi shader cache. Chỉ lặp lại mỗi lần di chuyển trên PC có ổ lưu trữ chậm → “Ổ lưu trữ chậm khiến streaming asset không theo kịp”; bộ nhớ GPU chuyên dụng đầy → “Thiếu bộ nhớ đồ họa (VRAM)”
Cách kiểm tra
Cần log và chỉ số của server, client game
Tìm hiểu thêm
Trên PC, shader đã tạo một lần sẽ được driver đồ họa lưu vào shader cache để dùng lại. Vì vậy, ngay sau khi cập nhật driver đồ họa hoặc game ra bản cập nhật, cache này bị vô hiệu, và cả những người trước đó chơi mượt cũng bị giật lại một thời gian. Báo cáo điển hình là “sau bản cập nhật, cứ tới chỗ nào lần đầu là khựng”.
Nguồn
Shader loadingUnity Lần đầu dùng một shader variant, driver đồ họa phải tạo bản dành cho GPU nên có thể dừng thấy rõ; bản đã tạo được cache nên không dừng lại nữa
Direct3D 12 Return CodesMicrosoft D3D12_ERROR_DRIVER_VERSION_MISMATCH: không dùng lại được PSO cache tạo bằng phiên bản driver khác (phải biên dịch lại sau khi cập nhật driver)
PSO Precaching for Unreal EngineEpic Games Bật r.PSOPrecache.Validation thì xem được thống kê PSO bị bỏ sót bằng stat PSOPrecache và log ghi “PSO PRECACHING MISS”; tạo PSO lúc runtime vượt ngưỡng mặc định 20 ms thì bị tính là hitch