- vừa được xem lúc

Một số thuật ngữ về Graphics cho Game Developer

0 0 16

Người đăng: Phuong Le

Theo Viblo Asia

Phuongne, Th3 14, 2020


Mở đầu

Dưới đây là một số thuật ngữ mình viết lại sau khi tìm hiểu, các khái niệm này được trình bày và giải thích đơn giản, đủ để hiểu chứ không đi quá sâu (vì mình không làm việc nhiều với đồ họa).

1. HDR (High Dynamic Range)

Theo logic, màu của một pixel sẽ được biểu diễn bằng 3 giá trị thành phần màu (hay 3 kênh màu) RGB (red green và blue), các thành phần này có giá trị từ [0..1], trong đó 1 là độ sáng lớn nhất.

Tuy nhiên logic này là không đúng với mắt người, bởi mắt chúng ta có xu hướng điều chỉnh màu phù hợp với ánh sáng không gian.

Ví dụ một vật màu trắng ở nơi thiếu sáng có thể tối hơn một vật màu xám ở không gian đầy đủ ánh sáng, hay một ví dụ khác, mắt người khi ở ngoài sáng và di chuyển vào nơi tối một cách đột ngột thường có xu hướng không nhìn rõ và phải điều chỉnh lại độ sáng.

Nếu bạn che phần màu trắng ở giữa sẽ thấy rằng 2 phần có màu sắc giống nhau

HDR hỗ trợ chúng ta sử dụng bảng màu RGB vượt ngoài giới hạn (0..1), tăng phạm vi nhạy sáng cũng như chênh lệch sáng tối, mô phỏng tốt hơn mắt người.

Ảnh (trái) kết hợp giữa 2 độ nhạy sáng

2. Gamma & Linear Color Space

Không gian màu Linear cho ra hình ảnh có vẻ thực tế (realistic) hơn so với Gamma, ở hình ảnh dưới cũng có thể thấy rằng, màu sắc ở Gamma color space sẽ nhanh chóng chuyển sang màu trắng khi giá trị của độ sáng tăng cao

So sánh hình ảnh render về độ sáng giữa Gamma và Linear color space

Ở hầu hết các low-end devices như mobile, chỉ hỗ trợ Gamma Space, một số dòng máy đời sau mới bắt đầu hỗ trợ Linear color space và tất nhiên Gamma Space có performance tốt hơn so với Linear color space

Vì vậy cần phải xem xét các target platforms cũng như performance trước khi đổi color space.

3. Anti-aliasing: MSAA vs Post-processing AA

  • AA (anti-aliasing): phương pháp khử răng cưa chắc không còn lạ gì lắm với dân lập trình game cũng như các bạn gamer, khi vẽ một đường chéo lên các ô vuông pixel, nếu số lượng pixels ít sẽ xảy ra tình trạng như hình dưới và có thể nhìn thấy bằng mắt thường.

AA (Anti-aliasing)
  • Multi-sample Anti-aliasing (MSAA): phương pháp khử răng cưa lấy mẫu này ra đời nhằm thay thế cho một phương pháp khử đời cũ là SSAA (Super Sampling Anti-aliasing) nhằm tối ưu performance, cân bằng giữa chất lượng và hiệu năng

Thay vì khử răng cưa tất cả các pixels (như SSAA hay FSAA) thì MSAA chỉ khử răng cưa ở phần border (viền, khung) của vật thể và không động chạm gì tới phần texture.
=> Phương pháp khử răng cưa này được Unity3D sử dụng (vào tab Quality để xem).

MSAA 4x (lấy 4 samples ở 1 pixel)
  • Post-processing Anti-aliasing: hay còn gọi là Post AA, là phương pháp khử răng cưa ảnh sau khi đã render xong, phương pháp này sẽ không lấy sample rồi điều chỉnh màu xung quanh như MSAA, mà nó sẽ làm mờ (blur) ở các chỗ bị răng cưa.

3 kỹ thuật Post-AA trong Unity:

Phương pháp Hoạt động
Fast Approximate Anti-aliasing (FXAA) Phương pháp khử nhanh, tối ưu cho mobile và các nền tảng không hỗ trợ motion vector
Subpixel Morphological Anti-aliasing (SMAA) Giống như FXAA nhưng chất lượng khử cao hơn kèm theo performance giảm
Temporal Anti-aliasing (TAA) Khử răng cưa nâng cao, thường xài cho high-end pc hay desktop

Ngoài ra, khái niệm cũng như Post-processing nằm ở giai đoạn nào của quy trình Render trong Unity mình cũng đã nói qua trong bài viết Render Pipeline trong Unity nên không giải thích về Post-processing trong bài này nha.

Claims

Bài viết được đăng vào 2020 nên chỉ có giá trị tham khảo các bạn nhé 😉

Lời kết và nguồn tham khảo

Bài viết kiểu này thường là bài viết tổng hợp hay sưu tầm, vì vậy mình sẽ update bài này thường xuyên hoặc viết thêm một bài mới thành list hay series gì đấy. Nếu các bạn thấy sai sót hay không hiểu thuật ngữ nào có thể contact mình hoặc comment, mình sẽ update sớm nhất (nếu có thể) nhé 🙂

Nguồn tham khảo:

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tạo setting game trên inspector.

. Chào các bạn,. Hôm nay chúng ta sẽ cùng tạo 1 setting/config cho game trên inspector nhé. Câu trả lời đó là khi chúng ta cần 1 cái gì đó để thao tác trong editor, trực quan nhất, không cần sửa code để cập nhật dữ liệu.... Và hẳn các bạn cũng từng làm việc với những value trên inspector rồi, ví dụ

0 0 22

- vừa được xem lúc

Hướng dẫn đưa nhân vật từ Mixamo vào demo.

. Chào các bạn. Bài này chúng ta chỉ tìm hiểu cách để lấy model, animation về, setting sao cho nó chạy được trong Unity để làm demo là ngon rồi nhé . Bước 1: Đăng nhập. Hãy tạo tài khoản nếu các bạn chưa có.

0 0 25

- vừa được xem lúc

Cơ bản về Rigidbody trong Unity3D

Phuong Le at 31-10-2019 - phuongne. Bài viết từ 2019 nên chỉ có giá trị tham khảo bạn nhé . . Rigidbody là gì.

0 0 18

- vừa được xem lúc

Một số folder đặc biệt trong Unity

Phuong Le 2019 - phuongne. Bài viết từ 2019 nên chỉ có giá trị tham khảo bạn nhé .

0 0 15

- vừa được xem lúc

Coroutine trong Unity là gì? Có liên quan tới Threads hay không?

Phuongne, Th11 17, 2019. Sơ qua một chút về Coroutine và StartCoroutine(.

0 0 11

- vừa được xem lúc

So sánh nhẹ Coroutine và Invoke

Phuongne - 31-10-2019. . Roài, đây sẽ là một bài viết ngắn nên mình đi vào chi tiết luôn, khởi mở đầu giới thiệu dài dòng nhá anh em. Coroutine với Invoke là gì.

0 0 17