Mục lục HLSL cho Unity

Docs

HLSL cho Unity

Viết shader cho Unity URP từ con số 0: vertex, fragment, UV, màu, ánh sáng đơn giản.

Bắt đầu học
  1. 01Shader là gì? Nhập môn HLSL trong UnityShader là chương trình nhỏ chạy trên GPU để quyết định mỗi điểm ảnh có màu gì. Trang này giải thích vertex shader, fragment shader và lý do game cần shader.
  2. 02Shader đầu tiên trong Unity 6 URPTạo file .shader đầu tiên trong Unity 6 URP, gắn vào material và cube, tô một màu. Kèm cách xử lý khi vật thể hiện màu hồng.
  3. 03Cấu trúc một shader URP: ShaderLab, Pass và HLSLPROGRAMMổ từng khối của một file shader Unity URP: Shader, Properties, SubShader, Tags, Pass, HLSLPROGRAM và hai struct Attributes, Varyings.
  4. 04Kiểu dữ liệu trong HLSL: float, half, vector và ma trậnCác kiểu dữ liệu cơ bản trong HLSL cho Unity: float, half, int, bool, vector float2 float3 float4, ma trận float4x4, và khi nào nên dùng half.
  5. 05Swizzle trong HLSL: .xyzw và .rgbaSwizzle trong HLSL là cách lấy, đảo và gán từng thành phần của vector bằng .xyzw hoặc .rgba. Kèm các lỗi compile hay gặp khi dùng sai.
  6. 06Hàm có sẵn trong HLSL: lerp, step, smoothstep và các hàm hay dùngCác hàm có sẵn hay dùng nhất trong HLSL: lerp, saturate, clamp, step, smoothstep, frac, abs, sin, dot, length, normalize, kèm ví dụ làm game.
  7. 07Vertex shader trong HLSL: làm lá cờ bayVertex shader chạy cho từng đỉnh và đặt đỉnh lên màn hình bằng TransformObjectToHClip. Ví dụ đẩy đỉnh theo hàm sin để làm lá cờ bay trong Unity URP.
  8. 08Fragment shader trong HLSL: tô màu theo vị tríFragment shader chạy cho từng điểm ảnh và trả về màu qua SV_Target. Ví dụ tô sọc cảnh báo và vùng dung nham theo vị trí trong thế giới, Unity 6 URP.
  9. 09Properties trong shader Unity: CBUFFER và SRP BatcherKhai báo Properties trong shader URP, đưa chúng vào CBUFFER UnityPerMaterial để tương thích SRP Batcher, và đổi màu material từ Inspector hoặc từ C#.
  10. 10Texture và UV trong shader URPUV là gì, cách khai báo và đọc texture trong HLSL cho Unity URP bằng TEXTURE2D, SAMPLER, TRANSFORM_TEX, dùng tiling, offset và cuộn UV làm nền game bắn máy bay.
  11. 11Màu và gradient trong shader: lerp theo UV và tintTrộn màu bằng lerp theo UV để làm gradient dọc cho bầu trời, thanh máu, và nhân màu tint lên texture trong shader Unity URP.
  12. 12Thời gian trong shader: _Time, nhấp nháy khi trúng đòn và nước chảyDùng biến _Time trong shader Unity URP để làm quái nhấp nháy khi trúng đòn và cuộn texture mặt nước hai lớp, kèm script C# bật hiệu ứng.
  13. 13Ánh sáng Lambert trong shader URP và toon hai bậcTính ánh sáng khuếch tán Lambert trong shader Unity URP bằng normal, GetMainLight và dot(N, L), rồi đổi thành tô bóng toon hai bậc bằng step.
  14. 14Shader trong suốt trong Unity URP: Blend, ZWrite và clipLàm shader trong suốt trong Unity URP với Blend SrcAlpha OneMinusSrcAlpha, Queue Transparent, ZWrite Off, và cắt pixel bằng clip() cho lá cây, hàng rào, hiệu ứng tan biến.
  15. 15Debug shader trong Unity: xuất giá trị ra màu và Frame DebuggerCách debug shader HLSL trong Unity 6 URP: xuất giá trị ra màu để nhìn, đọc lỗi compile ở Console và Inspector, dùng Frame Debugger xem từng lần vẽ.