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

Khái niệm Render Pipeline trong Unity3D

0 0 21

Người đăng: Phuong Le

Theo Viblo Asia

Phuongne, Th3 17, 2020


Render Pipeline là cái gì?

Theo mình hiểu (một cách đơn giản), Render Pipeline là một nhóm các kỹ thuật mà Unity dùng để vẽ một hay nhiều objects lên màn hình sao cho đơn giản nhưng đẹp và tối ưu nhất có thể, các kỹ thuật có thể phân thành 3 loại chính theo thứ tự:

  1. Culling: chọn object nào để đưa lên màn hình (object quá xa, object không nằm trong vùng camera, object bị che…)
  2. Rendering Objects: vẽ objects lên.
  3. Post Processing: xử lý hình ảnh sau khi đã vẽ các vật thể lên bộ nhớ đệm, trước khi vẽ lên màn hình.

Culling

Bởi chi phí khi render nhiều objects không hề nhỏ nên để tối ưu, khi bắt đầu Render thì Culling là quá trình đầu tiên nhằm xác định và lọc các objects nào sẽ được vẽ, quá trình này sẽ trả về một list các gameObjects và lights (ánh sáng) hợp lệ để áp dụng vào Render pipeline. trong Unity có 2 loại Culling chính:

  • Frustum Culling: tính toán chỉ render các vật thể nằm trong vùng từ Clipping Planes (Near – Far) của Unity, nằm ngoài 2 khoảng này thì sẽ bị cull (loại bỏ).

image.png

Loại bỏ các vật thể nằm ngoài vùng Render (Unity3D Documents)
  • Occlusion Culling: kỹ thuật cull các vật thể bị che khuất phía sau các vật thể khác.

image.png

Loại bỏ các vật thể bị che khuất (Unity3D Documents )

Rendering Objects

Sau quá trình Culling, chúng ta đã có list các vật thể cần vẽ lên màn hình, điều tiếp theo chúng ta cần xác định đó là mục tiêu mà chúng ta vẽ lên có cấu hình như thế nào, phần cứng của máy, hệ điều hành, 2D hay 3D… để chọn các kỹ thuật render cũng như xử lý ảnh khác nhau.

Một số tiêu chuẩn:

  • HDR (High Dynamic Range) hay LDR (Standard/ Low Dynamic Range)
  • Linear hay Gamma Color Space
  • MSAA hay Post-AA
  • PBR Materials vs Simple Materials
  • Có xài Lighting hay không, nếu sử dụng thì dùng kỹ thuật nào?
  • Shadow?

“Có giải thích các khái niệm này không?”

Các bạn có thể tham khảo ở Một số thuật ngữ về Graphic cho Game Developer

Đây chỉ là bài tổng quan nên mình sẽ giải thích chi tiết hơn về phần Rendering Objects trong Unity ở một bài viết khác về Scriptable Render Pipeline.

Nếu các bạn quan tâm cách CPU gửi dữ liệu tới GPU cũng như cách GPU render thì có thể đọc GPU vẽ lên màn hình như thế nào?.

Post-Processing

Khi các vật thể đã được render lên image trong bộ nhớ đệm (buffer) của Camera, trước khi ảnh này xuất hiện trên màn hình, chúng ta có thể sử dụng Post-Processing để áp dụng các bộ lọc và hiệu ứng cho ảnh.

Hiểu tương tự, Post-Processing cũng giống như việc chỉnh sửa ảnh ở trong điện thoại trước khi post lên Instagram hay Facebook vậy.

image.png

Hiệu ứng Color Grading (phải) (Unity3D Documents )

Bảng dưới mô tả một số Post-Processing trong Unity3D:

Effect Mô tả
Anti-aliasing Khử răng cưa nếu độ phân giải của màn hình thiết bị thấp
Ambient Occlusion Làm các vùng hố, trũng hay các nếp gấp trở nên tối hơn vì không nhận được ánh sáng không gian (realistic hơn)
Bloom Khử răng cưa nếu độ phân giải của màn hình thiết bị thấp
Anti-aliasing Tạo ánh sáng xung quanh viền của vật thể, tạo cảm giác chói hay ánh sáng quá mạnh.
Chromatic Aberration Mô phỏng hiệu ứng của camera khi 3 kênh màu red-green-blue của 1 pixel không thể kết hợp với nhau, (chỉ áp dụng quanh viền)
Color Grading Tăng sự chênh lệch sáng tối, hiệu chỉnh màu sắc và độ chói
Deferred Fog Tạo sương mù bằng cách phủ màu lên bức ảnh theo độ xa gần từ camera tới vật thể
Depth of Field Hiệu ứng xóa phông của camera
Motion Blur Làm mờ ảnh khi camera di chuyển nhanh, được sử dụng nhiều trong game 3D

Claims

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

Tạm kết và nguồn tham khảo

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