Shader Graph không chỉ giúp trực quan hóa quá trình tạo shader mà còn mở ra nhiều khả năng sáng tạo trong thiết kế đồ họa cho Game. Bài viết này được chia sẻ bởi thầy Nguyễn Đỗ Anh Khoa, giảng viên bộ môn Công nghệ thông tin, FPT Polytechnic TP HCM, người có nhiều năm kinh nghiệm trong lĩnh vực lập trình game. Hãy cùng tìm hiểu cách kết hợp các node trong Shader Graph để tạo hiệu ứng texture sống động và điều khiển chuyển động một cách linh hoạt.
Mục lục
Tạo đối tượng và chuẩn bị tài nguyên
- Trên scene, tạo một đối tượng Sphere làm model cho quả địa cầu.
- Thêm hình ảnh world-map.jpg vào project để sử dụng làm texture cho địa cầu.
- Trong Assets, tạo một shader mới bằng cách: Create -> Shader Graph -> HDRP -> Unlit Shader Graph.
- Nhấn mở rộng file Shader Graph, kéo shader này vào đối tượng Sphere để áp bề mặt vào Sphere.
Chỉnh sửa Shader Graph
Double click vào file Shader để mở Shader Graph.
Cấu trúc Shader Graph.
Trong cửa sổ edit, cửa sổ phụ bên trái cho phép tạo ra các biến để truyền dữ liệu từ bên ngoài vào. Cửa sổ phụ bên phải, là các settings của Node và Graph. Phần giữa để ta thiết kế Graph.
- Vertex (đỉnh): Xác định vị trí các điểm trong không gian (không tập trung vào phần này).
- Fragment (bề mặt): Xác định màu sắc và texture hiển thị.
Áp dụng màu sắc cơ bản
- Nhấn vào Base Color, chọn một màu sắc bất kỳ, lưu lại và kiểm tra kết quả trong tab Scene.
- Để tạo biến màu tùy chỉnh:
- Trong cửa sổ bên trái, nhấn +, chọn Color.
- Kéo node Color vào vùng làm việc, nối vào Base Color.
- Điều chỉnh màu trong Inspector để thấy sự thay đổi ngay lập tức.
- Giờ ta thử truyền đối số từ bên ngoài vào, ở cửa sổ bên trái, nhấn dấu + chọn Color, di chuyển khối Color vừa tạo vào vùng giữa và nối nó vào Base Color (3).
- Có thể chọn khối Color và bên cửa sổ bên phải chỉnh màu khác ở phần Default Value. Save, chuyển về Scene và xem kết quả.
- Ta có thể truyền đối số từ ngoài vào bằng cách chọn vào file Shader Graph và có thể chỉnh thuộc tính Color trong phần Inspector.
Áp dụng texture bản đồ thế giới
- Tạo Node mới: Create Node -> Sample Texture 2D.
- Chọn texture, chọn hình world-map.jpg, nối đầu ra vào Base Color.
- Quan sát kết quả trong Main Preview.
Điều chỉnh UV Map
- Tạo node Tiling And Offset, nối Out của node này vào UV.
- Thay đổi giá trị X, Y trong Tiling để điều chỉnh độ co giãn của UV.
- Thay đổi giá trị X, Y trong Offset để điều chỉnh độ lệch của UV.
Thêm hiệu ứng xoay cho quả địa cầu
- Để làm cho quả địa cầu xoay, chúng ta sẽ thay đổi giá trị X của Offset theo thời gian.
- Tạo biến Vector2, đặt tên Offset, kéo vào nối với Offset của Tiling And Offset.
- Quay lại Scene, chọn Sphere nhưng thấy rằng giá trị các đối số trong Inspector không thể thay đổi vì HDRP Lit Material có thuộc tính cố định.
Tạo Material mới từ Shader Graph
- Click phải vào Shader Graph, chọn Create -> Material.
Material mới nhìn giống cái đã có, tuy nhiên có thể chỉnh được Exposed Properties.
- Áp material mới này vào Sphere.
- Bây giờ, các thuộc tính trong Inspector có thể chỉnh sửa được.
Đến đây ta có thể viết mã C# để điều khiển X, tuy nhiên ta điều khiển nó chạy tự động trong Graph luôn, nếu truyền vào chỉ cần truyền tốc độ chạy thôi.
Làm quả địa cầu tự xoay
- Mở Shader Graph, xóa biến Offset.
- Tạo node Time để lấy giá trị thời gian thực.
- Tạo node Vector2, chỉ sử dụng trục X để tránh xoay theo cả hai chiều.
- Tạo biến Speed (kiểu float), đặt Default Value = 0.1.
- Tạo node Multiply, nối Time vào A, Speed vào B, đầu ra nối vào X của Vector2.
- Chạy thử trong Scene để thấy quả địa cầu tự xoay, có thể điều chỉnh tốc độ xoay bằng cách thay đổi giá trị Speed trong Inspector.
Shader Graph mang đến một cách tiếp cận trực quan và mạnh mẽ để tạo hiệu ứng đồ họa trong Unity mà không cần phải viết code phức tạp. Qua bài học này, bạn đã biết cách ứng dụng Shader Graph để tạo hiệu ứng texture động, điều chỉnh UV và làm cho mô hình xoay tự động.
Thầy Nguyễn Đỗ Anh Khoa chia sẻ: “Shader Graph không chỉ giúp lập trình viên dễ dàng tạo ra các hiệu ứng phức tạp mà còn mang đến sự linh hoạt trong thiết kế đồ họa game. Bằng cách nắm vững công cụ này, bạn có thể tối ưu hóa hiệu suất và mang lại trải nghiệm thị giác ấn tượng hơn cho người chơi”.
Đây chỉ là bước khởi đầu cho vô số khả năng sáng tạo với Shader Graph! Hãy tiếp tục khám phá và thử nghiệm để tạo ra những hiệu ứng độc đáo cho dự án của bạn!
Giảng viên Nguyễn Đỗ Anh Khoa
Bộ môn Công nghệ thông tin
FPT Polytechnic TP HCM