Smol Gaussian: Thuật toán làm mờ nhanh với bán kính động cho Blender và WebGPU

Công nghệ02 tháng 10, 2026·6 phút đọc

Một lập trình viên đồ họa đã phát triển Smol Gaussian — phương pháp làm mờ kết hợp downsample, Gaussian nhỏ và upsample để đạt tốc độ cao ngay cả khi bán kính mờ thay đổi liên tục. Thuật toán cho hiệu năng tương đương Skia blur, nhanh gấp 2-3 lần Dual Kawase và đang được đề xuất tích hợp vào Blender compositor.

Smol Gaussian: Thuật toán làm mờ nhanh với bán kính động cho Blender và WebGPU

Smol Gaussian: Khi làm mờ ảnh nhanh hơn nhờ bán kính động

Làm mờ Gauss (Gaussian blur) vốn là phép toán tốn kém khi bán kính tăng lớn. Một lập trình viên đồ họa đã tổng hợp nhiều ý tưởng có sẵn thành Smol Gaussian — thuật toán vừa nhanh, vừa giữ được hình dạng gần Gauss, lại xử lý mượt mà khi bán kính mờ được animate. Kết quả đang được đề xuất đưa vào Blender compositor.

Vì sao làm mờ Gauss lại khó?

Cách làm mờ Gauss ngây thơ nhất có chi phí tăng theo bình phương bán kính. May mắn thay, Gauss có tính tách được (separable), nên ta có thể làm mờ ngang và dọc riêng biệt — chi phí khi đó chỉ tăng tuyến tính theo bán kính. Cách này ổn với bán kính nhỏ, nhưng khi cần làm mờ thật lớn thì vẫn chậm.

Nhiều phương pháp đã được phát triển để mở rộng bán kính, trong đó Dual Kawase là giải pháp phổ biến và nhanh. Tuy nhiên, Dual Kawase có hai hạn chế lớn:

  • Không hỗ trợ bán kính mờ biến thiên liên tục.
  • Không hỗ trợ mức mờ ngang và dọc khác nhau.

Minh họa hiệu ứng lóa khi đầu vào có điểm sáng rất mạnhMinh họa hiệu ứng lóa khi đầu vào có điểm sáng rất mạnh

Chính hai hạn chế này đã thúc đẩy tác giả tìm cách mở rộng Dual Kawase — và cuối cùng ông phát hiện ra một hướng tiếp cận khác gần với Gauss hơn, cho cảm giác mượt hơn khi bán kính được animate. Nói cách khác, ông đã "khám phá lại" nguyên lý mà nhiều người khác cũng đã dùng: downsample, blur, upsample.

Smol Gaussian hoạt động thế nào?

Smol Gaussian gồm ba bước chính:

  • Downsample ảnh về độ phân giải làm việc (có thể khác nhau theo từng trục).
  • Áp dụng một Gaussian tách được nhỏ ở độ phân giải đó.
  • Tái tạo ảnh về độ phân giải gốc.

Điểm tinh tế nằm ở chỗ: khi downsample, thuật toán giữ lại một pixel viền để bảo toàn cạnh ảnh — nhờ vậy vùng sáng bên trong không làm cháy sáng kết quả khi bán kính lớn. Khi làm mờ Gauss cuối cùng, thuật toán trừ đi phương sai do quá trình downsample và tái tạo gây ra, để tổng lượng mờ đúng như mong muốn.

Kernel Gauss cuối cùng kéo dài tới sigma = 4 (thay vì cắt ở sigma = 3), với trọng số trong vùng 3–4 được thu nhỏ dần về 0. Điều này giúp giảm hiện tượng "mờ bị cắt cụt" với các điểm sáng HDR rất mạnh, và trông đẹp hơn khi bán kính được animate.

Kết quả làm mờ bằng Smol GaussianKết quả làm mờ bằng Smol Gaussian

Ở bước tái tạo, khi cần phóng to hơn 2 lần, thuật toán dùng cubic B-spline (kernel dương hoàn toàn, không gây ringing) thay vì bilinear — nhờ vậy tránh được các "bậc thang độ dốc" mà bilinear tạo ra.

So với Skia blur (bản 2026-09), Smol Gaussian có thêm vài cải tiến nhỏ:

  • Downsample ảnh có kích thước lẻ bằng cách tích phân diện tích pixel chính xác hơn, tránh hiện tượng nhấp nháy của pixel sáng đơn lẻ.
  • Downsample kích hoạt tại sigma = 6, giảm theo nửa (ceil), thay vì co giãn liên tục.
  • Cặp phép giảm 2 lần liên tiếp được gộp thành một phép giảm 4 lần.

So sánh với các phương pháp khác

Dual Kawase nhanh và dễ triển khai, nhưng khi mở rộng để hỗ trợ bán kính X/Y độc lập và trộn giữa các mức mờ rời rạc, kết quả không còn "mượt" trên các điểm sáng HDR.

Skia Gaussian là phương pháp gần nhất về mặt khái niệm — mỗi trục tự downsample về sigma làm việc ≤ 4. Trên nội dung LDR thường thì ổn, nhưng với điểm sáng HDR rất mạnh, hiện tượng aliasing và rung lắc khá rõ.

Kết quả làm mờ bằng Skia GaussianKết quả làm mờ bằng Skia Gaussian

Fast Gaussian của Blender (từ v5.2) dựa trên lọc đệ quy (recursive filtering) — chi phí gần như không đổi bất kể bán kính. Tuy nhiên, thuật toán này có từ hơn 25 năm trước, không song song hóa tốt cho GPU, và có thể tạo halo hoặc màu âm trên điểm sáng HDR cực mạnh.

Ryg Blur dùng tích chập box lặp lại — chi phí cố định, dễ triển khai, nhưng mức song song không đủ nuôi GPU hiện đại và tốn băng thông bộ nhớ.

Gaussian tách được thông thường chỉ dùng làm tham chiếu, vì chi phí tăng tuyến tính theo bán kính.

Hiệu năng thực tế

Kết quả đo trong Chrome (bao gồm cả thời gian CPU lẫn GPU):

  • Smol Gaussian có hiệu năng tương đương Skia blur: ngang nhau trên RTX 3080Ti, chậm hơn chút trên Apple M4 Max, nhanh hơn chút trên Intel Iris Xe.
  • Đáng chú ý: cả hai càng rẻ hơn khi bán kính tăng — vì phần đắt nhất (tích chập Gauss thật) diễn ra trên ảnh ngày càng nhỏ.
  • Dual Kawase chậm hơn Smol Gaussian 2–3 lần trong bản triển khai có trộn mức và xử lý mờ không đẳng hướng.

Hiệu năng của Fast Gaussian trên BlenderHiệu năng của Fast Gaussian trên Blender

Sân chơi WebGPU tương tác

Tác giả đã xây dựng một sân chơi WebGPU cho phép thử nghiệm sáu chế độ làm mờ khác nhau, kèm mã nguồn đầy đủ. Yêu cầu trình duyệt hỗ trợ WebGPU với float32-filterable và float32-blendable.

Các tính năng đáng chú ý:

  • Kéo thả hoặc chọn ảnh PNG, JPG, hoặc một tập con định dạng EXR.
  • Điều chỉnh bán kính mờ, có thể khóa hai trục X/Y.
  • Xem các texture trung gian mà thuật toán tạo ra.
  • Tự động animate bán kính và xoay ảnh nguồn.
  • Xuất video kết quả bằng WebCodecs.
  • Chạy benchmark và tải về biểu đồ SVG.

Tác giả thú nhận: "Tôi đã nhờ các trợ lý AI viết phần JavaScript và WebGPU, vì tôi chẳng biết gì về công nghệ này. Đó vừa là trải nghiệm ấn tượng, vừa khá khó chịu!"

Liệu có được đưa vào Blender?

Tất cả bắt đầu gần một năm trước, khi tác giả thắc mắc vì sao chế độ "Fast Gaussian" của Blender lại không nhanh trong một số trường hợp. Hiện ông đã có một pull request đang phát triển (PR 164496) cho node compositor của Blender, kèm cả bản triển khai CPU — nhanh hơn Fast Gaussian hiện tại nhiều lần và không còn hiện tượng ringing.

Câu hỏi mở vẫn là: nên thay thế Fast Gaussian hiện có, hay thêm thành một chế độ mờ mới? Với cộng đồng làm phim hoạt hình và dựng hậu kỳ tại Việt Nam — nơi Blender ngày càng phổ biến nhờ miễn phí và mã nguồn mở — một cải tiến về tốc độ lẫn chất lượng làm mờ HDR chắc chắn là tin đáng chờ đợi.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗