Substrate - Bước tiến mới trong sáng tạo vật liệu trong Unreal Engine

Substrate là một hệ thống khung (framework) mới của Unreal Engine dùng để tạo ra các loại vật liệu (Materials), thay thế cho cách làm truyền thống với các mô hình shading cố định. Trong bài viết này, chúng ta sẽ cùng tìm hiểu Substrate là gì và tại sao nó lại là "tương lai" của vật liệu trong Unreal Engine một cách đơn giản nhất.

Substrate - Bước tiến mới trong việc sáng tạo vật liệu cho Unreal Engine

Nếu bạn là người mới bắt đầu làm quen với Unreal Engine, có thể bạn đã nghe đến thuật ngữ Substrate. Đây là một hệ thống khung (framework) mới của Unreal Engine dùng để tạo ra các loại vật liệu (Materials), thay thế cho cách làm truyền thống với các mô hình shading cố định.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu Substrate là gì và tại sao nó lại là "tương lai" của vật liệu trong Unreal Engine một cách đơn giản nhất.  

 

Substrate Stats Panel

Hình 1. Giao diện trạng thái Substrate Material Editor

1. Substrate là gì?

Trước đây, khi tạo vật liệu, bạn thường phải chọn các mô hình có sẵn như "Default Lit" (vật liệu thông thường) hay "Clear Coat" (vật liệu có lớp phủ bóng). Cách này đôi khi hạn chế sự sáng tạo khi bạn muốn kết hợp nhiều loại bề mặt khác nhau.

Substrate thay đổi hoàn toàn cách tiếp cận này bằng cách coi vật liệu là các "lớp vật chất" (slabs of matter). Thay vì bị bó buộc trong các khuôn mẫu, bạn có thể tự do lắp ghép, trộn lẫn và xếp chồng các lớp vật chất này để tạo ra những bề mặt chân thực hơn bao giờ hết.

Hình 2. So sánh một shader legacy và shader Substrate cơ bản

2. LỊCH SỬ PHÁT TRIỂN

1. Giai đoạn thử nghiệm (Experimental)

Substrate bắt đầu được giới thiệu rộng rãi tới cộng đồng nhà phát triển vào khoảng thời gian diễn ra sự kiện GDC 2023 (thông qua bài thuyết trình "The Future of Materials in Unreal Engine"). Ở giai đoạn này, nó xuất hiện trong các phiên bản Unreal Engine 5 đời đầu (như UE 5.1 và 5.2) dưới dạng một tính năng thử nghiệm để người dùng làm quen với khái niệm "Slab" (lớp vật chất). Trong giai đoạn này, nhiều tính năng như hỗ trợ lớp vật liệu (material layer) hay các phép tính phản xạ phức tạp vẫn được đánh dấu là Experimental.

Substrate BSDF Nodes

Hình 3. Các Substrate BSDF Nodes

2. Trạng thái Beta và cải tiến (Hiện tại)

Theo tài liệu mới nhất, Substrate hiện đang ở trạng thái Beta. Một số đặc điểm quan trọng trong giai đoạn này bao gồm:

  • Hỗ trợ đa nền tảng: Đang được mở rộng nhưng vẫn chưa hoàn thiện trên một số nền tảng như DirectX 11 hoặc macOS.
  • Khả năng tương thích: Các vật liệu cũ (non-Substrate) vẫn hoạt động bình thường và có thể chuyển đổi sang Substrate thông qua công cụ trong Material Editor.
  • Tối ưu hóa: Hệ thống đã giới thiệu các định dạng GBuffer như Blendable (ưu tiên hiệu suất) và Adaptive (ưu tiên chất lượng hình ảnh) để người dùng lựa chọn tùy theo mục tiêu dự án.

3. Giai đoạn "Chính thức" (Enabled by Default)

Một cột mốc quan trọng đã đạt được trong phiên bản Unreal Engine 5.7, đó là Substrate hiện đã được bật mặc định cho tất cả các dự án mới. Điều này đánh dấu việc Epic Games coi Substrate là tương lai tiêu chuẩn cho việc tạo vật liệu trong engine.

Tuy nhiên, cần lưu ý một số điểm về độ ổn định:

  • Mặc dù đã bật mặc định, Substrate vẫn được khuyến cáo là không nên sử dụng cho các dự án sản xuất (production work) quan trọng ở thời điểm hiện tại do các tính năng và trải nghiệm người dùng vẫn có thể thay đổi.
  • Hệ thống đang trong quá trình chuyển mình để đạt tới trạng thái "Production-ready" (sẵn sàng cho sản xuất), lúc đó độ phủ về kiểm thử và tính ổn định trên mọi nền tảng sẽ được đảm bảo hoàn toàn.

 

2. Khái niệm cốt lõi: "Slab" (Lớp vật chất)

Khối xây dựng cơ bản nhất trong Substrate được gọi là Substrate Slab. Hãy tưởng tượng mỗi Slab là một miếng vật chất thực thụ với hai phần chính:

  • Bề mặt (Interface): Nơi ánh sáng chạm vào và phản xạ lại (quy định bởi độ nhám, màu sắc bề mặt...).
  • Môi trường bên trong (Medium): Nơi ánh sáng đi xuyên qua, bị tán xạ hoặc hấp thụ (quy định độ trong suốt, cách ánh sáng xuyên qua vật thể...)

Material Root Node Front Material Input

Hình 4. Một shader vật liệu Substrate cơ bản

Composition of a Substrate Slab

Hình 5. Mô phỏng cấu tạo chia lớp substrate

3. Tại sao Substrate lại mạnh mẽ?

Substrate mang lại sự linh hoạt vượt trội thông qua hai khả năng chính:

  • Xếp chồng (Vertical Layering): Bạn có thể đặt một lớp vật chất lên trên một lớp khác một cách vật lý. Ví dụ: một lớp bụi trên bề mặt kim loại, một lớp nước trên mặt đường, hay lớp sơn bóng trên gỗ.
  • Trộn lẫn (Horizontal Blending): Bạn có thể pha trộn giữa các loại vật liệu khác nhau trên cùng một bề mặt (như kim loại chuyển sang nhựa) một cách mượt mà và chính xác hơn về mặt thị giác.

4. Cách hoạt động đơn giản

Trong trình soạn thảo vật liệu (Material Editor), thay vì nối trực tiếp các thông số vào nút gốc (Root Node) như trước, bạn sẽ sử dụng các nút Substrate Slab.

Các nút Operator (như Vertical Layer hay Horizontal Blend) sẽ giúp bạn kết nối các Slab này lại với nhau.

Cuối cùng, tất cả sẽ được nối vào cổng Front Material trên nút gốc để hiển thị kết quả.

5. Một số lưu ý cho người mới

Dễ dàng chuyển đổi: Nếu bạn có các vật liệu cũ, Unreal Engine có thể tự động chuyển đổi chúng sang dạng Substrate để bạn tiếp tục làm việc.

Hiệu suất linh hoạt: Substrate có khả năng tự đơn giản hóa tùy theo cấu hình máy tính hoặc thiết bị (như điện thoại hay console) để đảm bảo trò chơi luôn mượt mà nhưng vẫn giữ được chất lượng hình ảnh tốt nhất có thể.

Trạng thái thử nghiệm: Hiện tại Substrate vẫn đang ở giai đoạn Beta, vì vậy Epic Games khuyến khích bạn nên trải nghiệm để làm quen nhưng cần cẩn trọng khi sử dụng cho các dự án sản xuất quan trọng.

Substrate Parameter Blending Example

Hình 6. Substrate Parameter Blending Example

6. Các yếu tố kỹ thuật cốt lõi đằng sau Substrate

Nếu bạn muốn hiểu sâu hơn về cách hệ thống này vận hành, dưới đây là những nền tảng kỹ thuật quan trọng nhất:

  1. Chuyển đổi sang mô hình BSDF: Thay vì sử dụng các mô hình shading cố định và hạn chế như trước, Substrate dựa trên khung làm việc BSDF (Bidirectional Scattering Distribution Function). Mỗi vật liệu được coi là một "Slab" (phiến vật chất), đại diện cho các đặc tính vật lý được đo lường bằng các đơn vị chuẩn xác. Cách tiếp cận này giúp mô phỏng chính xác hơn cách ánh sáng tương tác với các bề mặt phức tạp.
  2. Hệ thống GBuffer linh hoạt: Substrate giới thiệu hai định dạng lưu trữ dữ liệu Material (GBuffer) khác nhau để cân bằng giữa hiệu suất và chất lượng:
  3. Blendable GBuffer: Tập trung vào tốc độ và bộ nhớ cố định, phù hợp cho các dự án yêu cầu hiệu suất cao như trò chơi 60Hz.
  4. Adaptive GBuffer: Ưu tiên độ chân thực hình ảnh tối đa, cho phép các vật liệu có độ phức tạp cao nhưng sẽ tiêu tốn tài nguyên tính toán và bộ nhớ hơn.

Hình 7. So sánh hai chế độ GBuffer

  1. Hệ tham số F0 và Diffuse Albedo: Khác với hệ thống cũ (dựa trên Base Color, Metalness, Specular), Substrate chuyển sang sử dụng F0 (độ phản chiếu ở góc nhìn trực diện) và Diffuse Albedo. Sự thay đổi này giúp hệ thống tự động đảm bảo nguyên tắc bảo toàn năng lượng, giúp vật liệu trông tự nhiên hơn dưới mọi điều kiện ánh sáng mà không cần điều chỉnh thủ công nhiều.
  2. Tối ưu hóa bằng Parameter Blending: Khi bạn xếp chồng quá nhiều lớp (Slab), chi phí tính toán ánh sáng sẽ tăng lên rất cao. Để giải quyết vấn đề này, Substrate sử dụng kỹ thuật Parameter Blending. Kỹ thuật này sẽ gộp các thông số của nhiều lớp lại thành một lớp duy nhất trước khi tính toán ánh sáng, giúp tiết kiệm đáng kể bộ nhớ và băng thông trong khi vẫn giữ được diện mạo tổng thể của vật liệu.
  3. Phân loại vật liệu (Material Classification): Sau bước render cơ bản, Substrate thực hiện một bước phân loại vật liệu để giúp quá trình tính toán ánh sáng hiệu quả hơn. Hệ thống sẽ xác định độ phức tạp của từng pixel (Simple, Single, hay Complex) để phân bổ tài nguyên xử lý phù hợp, tránh lãng phí sức mạnh của GPU

7. MỨC ĐỘ TIÊU TỐN TÀI NGUYÊN XỬ LÝ (KIẾN THỨC NÂNG CAO)

Tiếp nối các yếu tố kỹ thuật, khi nói về độ nặng (performance/cost) của shader trong Substrate, chúng ta cần xem xét cách hệ thống này quản lý tài nguyên và các lựa chọn đánh đổi giữa chất lượng hình ảnh và hiệu suất:

  • Sự phụ thuộc vào số lượng Slab (Closure): Độ nặng của shader tỷ lệ thuận với số lượng BSDF (Slab) được sử dụng trong một pixel. Việc đánh giá ánh sáng cho hai Slab sẽ chậm gấp đôi so với một Slab duy nhất. Nếu bạn sử dụng nhiều lớp vật chất xếp chồng mà không tối ưu hóa, chi phí khung hình sẽ tăng gần như tuyến tính.

Lựa chọn định dạng GBuffer: Đây là yếu tố quyết định độ nặng tổng thể của dự án:

  • Blendable GBuffer: Được thiết kế để có hiệu suất tương đương với hệ thống cũ, ưu tiên tốc độ và bộ nhớ cố định, phù hợp cho các trò chơi mục tiêu 60Hz.
  • Adaptive GBuffer: Cho phép độ phức tạp vật liệu tối đa nhưng đi kèm chi phí hiệu suất cao hơn, phụ thuộc vào độ phức tạp của vật liệu hiển thị trên màn hình. Định dạng này cũng làm tăng thời gian build shader (cook time) thêm khoảng 15%.

Cơ chế Tối ưu hóa Parameter Blending: Để giảm "độ nặng", Substrate cung cấp tùy chọn Parameter Blending trên các nút Operator. Thay vì tính toán ánh sáng riêng biệt cho từng Slab (rất tốn kém), nó sẽ gộp các thông số của các Slab thành một Slab duy nhất trước khi tính toán. Ví dụ, một vật liệu phức tạp có thể giảm mức chiếm dụng bộ nhớ từ 108 bytes/pixel xuống còn 28 bytes/pixel nhờ kỹ thuật này.

Tự động đơn giản hóa vật liệu (Material Simplification): Hệ thống có các cơ chế "ngưỡng" như Closure Count (số lượng lớp tối đa mỗi pixel) và Bytes Per Pixel (giới hạn bộ nhớ). Nếu một shader vượt quá ngân sách thiết lập của dự án hoặc khả năng của nền tảng (ví dụ: mobile), Substrate sẽ tự động hợp nhất và đơn giản hóa các Slab cho đến khi đạt yêu cầu.

Hình 8. Giao diện Visualize Substrate properties

Phân cấp độ phức tạp (Complexity Sets): Substrate phân loại vật liệu thành các mức độ để GPU xử lý hiệu quả hơn:

  • Simple: Vật liệu cơ bản (tương đương Default Lit cũ).
  • Single: Vật liệu có thêm các hiệu ứng như Fuzz, Clear Coat hoặc SSS.
  • Complex/Complex Special: Vật liệu sử dụng Anisotropy (dị hướng) hoặc Glints (lấp lánh), đây là những loại nặng nhất.
  • Material Classification Pass: Substrate thêm một bước phân loại vật liệu sau Base Pass. Dù việc này tạo ra một khoản chi phí cố định nhỏ, nhưng nó giúp giảm tổng chi phí tính toán ánh sáng bằng cách giúp GPU biết chính xác pixel nào cần xử lý phức tạp và pixel nào không.

Tóm lại, nếu bạn chỉ sử dụng Substrate với một lớp vật chất duy nhất (tương đương cách làm cũ), độ nặng gần như không thay đổi. Shader chỉ thực sự "nặng" khi bạn tận dụng khả năng đa lớp phức tạp mà không sử dụng các tính năng tối ưu hóa như Parameter Blending.

8. KẾT LUẬN

  • Substrate không chỉ là một công cụ mới mà là một tư duy mới về cách chúng ta tạo ra thế giới ảo. Nó giúp xóa bỏ ranh giới giữa các loại vật liệu và mang lại sự tự do tối đa cho các nghệ sĩ kỹ thuật số.
  • Hiện nay bạn có thể tải bộ thư viện Automotive Substrate thông qua Fab trên Epic Games launcher.

Bài viết chính thức:

https://dev.epicgames.com/documentation/en-us/unreal-engine/overview-of-substrate-materials-in-unreal-engine

Video tham khảo chính thống:

[Epic Games] Introduction to Substrate Materials | Unreal Engine 5.7 - https://www.youtube.com/watch?v=d1ncs8M6Lkg

[Epic Games] Exploring Substrate Materials: Basic to Advanced Techniques | Unreal Fest Bali 2025 - https://www.youtube.com/watch?v=4X-nZ7qflcw

[Epic Games] Automotive Substrate Materials: Free on Fab - https://www.youtube.com/watch?v=sINPU1KDy1U

[Epic Games] Everything You Wanted to Know About Substrate(But Are Too Afraid to Ask)| Unreal Fest Stockholm 2025 - https://www.youtube.com/watch?v=SqPaL8HS_Lw