2 điểm bởi GN⁺ 2024-03-01 | 1 bình luận | Chia sẻ qua WhatsApp

Cách sử dụng LUT trong trò chơi điện tử và cách bạn cũng có thể dùng nó

  • Trong trò chơi điện tử, LUT (Look-up tables) được dùng để triển khai các kỹ thuật sáng tạo.
  • Bài viết giải thích cách thao tác dữ liệu video theo thời gian thực thông qua các ví dụ dùng WebGL.
  • Người dùng có thể tự thực hành với video của riêng mình hoặc webcam.

Thiết lập

  • Sử dụng video đen trắng quay bằng camera ảnh nhiệt làm điểm khởi đầu.
  • Tải video lên GPU thông qua WebGL và dùng shader để hiển thị giống hệt bản gốc.

Tô màu

  • Tô màu cho video bằng cách sử dụng Fragment Shader, thành phần quyết định màu của từng pixel.
  • Giải thích cách thao tác màu thông qua một ví dụ đơn giản là phủ màu cam.

Chi phí hiệu năng: bằng không

  • Tác động hiệu năng do việc tô màu gần như không đáng kể, đến mức có thể bỏ qua nhờ latency hiding của GPU.

Cách Valve Software sử dụng việc tô màu

  • Trong trò chơi Left 4 Dead của Valve Software, việc tô màu được áp dụng cho mô hình xe để tạo ra nhiều biến thể khác nhau.

LUT - đơn giản nhưng mạnh mẽ

  • Giải thích cách dùng LUT để định nghĩa và biến đổi dải màu.

1D LUT mộc mạc

  • 1D LUT là một mảng màu, được dùng để chuyển video thang độ xám sang RGB.
  • Minh họa việc chuyển đổi màu bằng các 1D LUT có kích thước khác nhau.

Rất nhiều màu sắc

  • Cung cấp toàn bộ các color map mà matplotlib hỗ trợ dưới dạng 1D LUT.
  • Khuyến nghị sử dụng các color map Perceptually Uniform.

Liệu vẫn không có chi phí hiệu năng?

  • Với 1D LUT nhỏ, tác động đến hiệu năng không lớn và tận dụng hiệu quả bộ nhớ đệm của GPU.

Sự đa dạng cho zombie

  • Trong Left 4 Dead 2, LUT được dùng để tạo ra nhiều biến thể màu sắc khác nhau cho zombie.

Tiền tính toán các phép tính

  • Có thể dùng 1D LUT để cache các phép tính tốn kém, ví dụ như thực hiện hiệu chỉnh gamma một cách nhanh chóng.

3D LUT mạnh mẽ

  • 3D LUT biểu diễn toàn bộ không gian RGB như một khối lập phương duy nhất để ánh xạ lại màu sắc.

Thiết lập

  • Giải thích xử lý 3D LUT bằng video profile log quay từ Panasonic GH6.

Chỉnh sửa đơn giản

  • Mô tả quá trình áp dụng hiệu chỉnh màu bằng DaVinci Resolve và xuất lại LUT.

Cách Left 4 Dead dùng 3D LUT

  • Đây là một workflow nổi tiếng trong ngành game, dùng công cụ bên ngoài để tạo phong cách màu sắc cho trò chơi.

Cuộc phiêu lưu nâng cao

  • Giải thích cách dùng các công cụ color grading như DaVinci Resolve để xuất các biến đổi màu phức tạp thành LUT.

Các cách sử dụng khác

  • Giới thiệu một trường hợp sử dụng khác của LUT: LUT từng được dùng để port Tomb Raider lên Game Boy Advanced.

Ý kiến của GN⁺

  • LUT là một công cụ mạnh mẽ để thao tác màu sắc và tối ưu hóa trong trò chơi điện tử cũng như lập trình đồ họa. Kỹ thuật này có thể mang lại nhiều hiệu ứng thị giác đa dạng trong kết xuất thời gian thực mà không làm giảm hiệu năng, nên hữu ích cho cả nhà phát triển lẫn nghệ sĩ.
  • Khi sử dụng LUT, cần cân nhắc độ chính xác màu sắc và cách biểu diễn trực quan của dữ liệu. Đặc biệt, điều quan trọng là phải hiểu tầm quan trọng của các color map Perceptually Uniform, nhất là khi tính đến người bị mù màu.
  • Kỹ thuật này có thể được ứng dụng trong nhiều lĩnh vực như hiệu chỉnh màu, tạo phong cách hình ảnh và trực quan hóa dữ liệu. Ví dụ, có thể áp dụng cho phát triển game kỹ thuật tương tự LUT dùng trong color grading của ngành điện ảnh.
  • Kích thước và độ chính xác của LUT có thể thay đổi tùy theo mục đích sử dụng và nền tảng, nên cần hiểu rõ điều này. Chẳng hạn, trong ngành điện ảnh, LUT kích thước 33³px là tiêu chuẩn, nhưng trong game hoặc các ứng dụng đồ họa khác có thể cần kích thước khác.
  • Khi sử dụng kỹ thuật này, điều quan trọng là tìm được sự cân bằng giữa biểu đạt màu sắc chính xác và tối ưu hiệu năng. Để sử dụng LUT hiệu quả, cần có hiểu biết sâu về lý thuyết màu sắc và lập trình đồ họa.

1 bình luận

 
GN⁺ 2024-03-01
Ý kiến trên Hacker News
  • Giải thích cách sử dụng bảng tra cứu (LUT) để tạo hiệu ứng

    • Một bảng tra cứu lớn được dùng để lưu chi tiết ánh sáng hình tròn quanh người chơi, cùng với bảng tra cứu thứ hai để xáo trộn thứ tự các hàng nền.
    • Chỉ có thể cập nhật 1/20 màn hình, nhưng nhờ thứ tự ngẫu nhiên có thể tạo hiệu ứng viền mượt và che đi hiện tượng quét raster.
    • Những phần quá chậm để tính toán theo thời gian thực được xử lý bằng bảng tra cứu để tránh việc các hàng không được cập nhật.
  • Chia sẻ kinh nghiệm dùng bảng tra cứu cho hiệu ứng đường hầm kết cấu

    • Sử dụng bảng tra cứu cho biết góc và khoảng cách từ tâm đối với từng pixel trên màn hình.
    • Trông như đang di chuyển qua một đường hầm có hình học 3D, nhưng chi phí thấp nên có thể triển khai cả trên Pico.
    • Từng nghĩ trò chơi 'Stardust' dùng hiệu ứng này, nhưng thực ra nó dùng nền là hoạt ảnh 6 khung hình lặp lại.
  • Cung cấp liên kết video về cách trò chơi 'The Legend of Zelda: Wind Waker' dùng bảng tra cứu để tạo nên phần hình ảnh độc đáo

    • 'Breath of the Wild' và 'Tears of the Kingdom' cũng dùng cùng kỹ thuật này.
  • Thông báo rằng tác giả đã gửi bài viết về bảng tra cứu sẵn sàng trả lời câu hỏi.

  • Giải thích tầm quan trọng của bảng tra cứu trong phát triển game retro

    • Trước đây tốc độ bộ nhớ nhanh hơn nhưng bộ xử lý chậm, nên người ta đưa càng nhiều phép tính càng tốt vào bảng tra cứu.
    • Càng tận dụng tốt bảng tra cứu thì càng có thể tạo ra những trò chơi hào nhoáng hơn.
  • Chia sẻ trải nghiệm về trò chơi 'Bobl' trong cộng đồng homebrew NES, vốn tạo ra các hiệu ứng vật lý ấn tượng bằng bảng tra cứu

    • Các hiệu ứng trông phức tạp hơn rất nhiều so với khả năng tính toán thời gian thực của hệ thống được đạt được nhờ bảng tra cứu.
  • Chia sẻ một tập podcast về cách bản port 'Doom' trên SNES dùng bảng tra cứu để tính các hàm lượng giác

    • SNES không có bộ xử lý đồ họa, nên đã dùng bảng tra cứu để thực hiện tính toán.
  • Bày tỏ sự khó chịu trước việc những người có kiến thức về lập trình động lại nhầm lẫn giữa caching và memoization

    • Memoization là trạng thái chia sẻ cục bộ, còn caching là trạng thái chia sẻ toàn cục, nên chúng có những vấn đề khác nhau.
    • Caching là dự đoán thứ sẽ cần trong tương lai, còn memoization là trạng thái biết chắc thứ đang cần ngay lập tức.
    • Tabulation là việc tìm và giải trước các bài toán con chung, còn bảng tra cứu là tabulation có kích thước cố định.
  • Chia sẻ thông tin về ứng dụng Mac 'Lattice' dùng để xử lý bảng tra cứu

  • Đưa ra danh sách ví dụ về nhiều hiệu ứng dùng bảng tra cứu

    • Tán xạ khí quyển, thay đổi tông màu sprite, kính nhìn đêm, camera ảnh nhiệt, hiệu ứng video đen trắng, hiệu ứng glitch, đổ bóng heightmap, các phần tử điểm alpha của luồng khí xả tàu vũ trụ, bản đồ nhiệt thời gian dừng chuột của khách truy cập website, hiệu ứng tinh thể, tô màu hậu xử lý trong không gian màu nguyên thủy, v.v.
    • Bảng tra cứu là cách trực quan hóa một mảng các giá trị đã biết và rất hữu ích.