
Subsurface Scattering là gì? Ánh sáng bên trong bề mặt định hình render 3D như thế nào
Tổng quan
Giới thiệu
Subsurface scattering là gì? Đó là hiện tượng ánh sáng không chỉ bật ra khỏi bề mặt mà đi vào bên trong vật liệu, di chuyển lòng vòng rồi thoát ra từ một vị trí khác. Da, sáp, đá cẩm thạch và sữa trông như chúng ta thấy đều nhờ hiện tượng này, còn renderer bỏ qua nó thường cho ra vật liệu trông như nhựa hoặc kim loại.
Bài viết này giải thích phần vật lý bằng ngôn ngữ dễ hiểu, điểm khác nhau giữa BSSRDF và BRDF mà hầu hết shader dùng, và hai nhóm phương pháp renderer dùng để xấp xỉ nó. Sau đó bài chỉ ra vị trí các thiết lập trong Cycles, Arnold, V-Ray, Redshift và Corona, lý do subsurface scattering (SSS) làm tăng thời gian render và nhiễu, cùng những thiết lập giúp giữ chi phí hợp lý cho một animation dài. Cách renderer dò tia sáng nói chung được trình bày trong ray tracing vs path tracing; nếu bạn mới làm quen với rendering, hãy bắt đầu với what is rendering.
Mặt cắt đặt cạnh nhau: với BRDF, ánh sáng thoát ra đúng điểm nó đi vào; với BSSRDF, ánh sáng đi vào ở một điểm, tán xạ bên trong vật liệu rồi thoát ra ở một điểm khác
Subsurface Scattering về mặt vật lý
Shader cơ bản xem bề mặt như một ranh giới: ánh sáng đến một điểm rồi phản xạ, hoặc bị hấp thụ, hoặc với thủy tinh trong suốt thì đi thẳng qua. Nhiều vật liệu thật hoạt động khác. Một phần ánh sáng đi qua ranh giới, tán xạ trên các hạt bên trong, mất bớt năng lượng do hấp thụ, và phần còn lại quay ra khỏi bề mặt, thường ở cách chỗ đi vào một khoảng.
Chaos mô tả SSS trong bài giải thích về subsurface scattering (đọc ngày 10 tháng 11 năm 2026) là ánh sáng đi vào một bề mặt trong mờ, tán xạ bên trong và xuất hiện lại ở một điểm khác. Họ phân biệt hiệu ứng này với khúc xạ (refraction), vốn dành cho vật liệu trong suốt như thủy tinh, và với độ xuyên sáng (translucency), vốn dành cho vật liệu mỏng như chao đèn hoặc lá cây. SSS dành cho trường hợp dày và đặc: da, sáp, đá cẩm thạch, sữa.
Bạn có thể nhận ra nó ở bốn chỗ:
- Mép bóng mềm. Ánh sáng đi vào phía được chiếu sáng rồi rò sang phía tối, nên ranh giới giữa sáng và tối trông mềm hơn so với nhựa.
- Lem màu. Ánh sáng thoát ra mang màu của phần bên trong vật liệu, nên vùng da trong bóng đổ có sắc ấm thay vì xám trung tính.
- Phát sáng xuyên phần mỏng. Tai, ngón tay và sáp nến sáng lên khi có đèn mạnh phía sau.
- Mất chi tiết nhỏ. Tán xạ làm nhòe ánh sáng, nên các gờ nhỏ trông nhẹ nhàng hơn so với bề mặt đục.
Cái giá của sự chân thực đó là phải tính toán: renderer phải tính cả ánh sáng không còn ở điểm đang được shading.
BRDF và BSSRDF nói đơn giản
Hầu hết shader mô tả bề mặt bằng BRDF, tức bidirectional reflectance distribution function. Với một điểm, nó trả lời một câu hỏi hẹp: nếu ánh sáng đến từ hướng này thì bao nhiêu ánh sáng đi ra theo hướng kia? Giả định có sẵn là ánh sáng đi vào và đi ra ở cùng một điểm.
BSSRDF, tức bidirectional scattering-surface reflectance distribution function, bỏ giả định đó và liên hệ ánh sáng đến một điểm với ánh sáng đi ra ở một điểm khác. Sách giáo khoa Physically Based Rendering (ấn bản thứ ba, mục 11.4, đọc ngày 10 tháng 11 năm 2026) mô tả nó là hàm tám chiều: hai chiều bề mặt và hai chiều góc cho mỗi điểm trong hai điểm. Tích phân hàm này cho mọi điểm shading thì quá tốn kém, nên renderer dùng dạng tách được gồm ba phần: một số hạng cho ánh sáng đi ra khỏi bề mặt, một số hạng cho ánh sáng đi vào, và một profile không gian cho biết ánh sáng di chuyển bao xa giữa hai điểm.
Profile không gian đó chính là đường cong "ánh sáng lan rộng bao xa", và đây là nơi thiết lập radius của vật liệu hoạt động. Sách lưu ý rằng các phiên bản đơn giản nhất giả định bề mặt phẳng cục bộ và vật liệu khá đồng đều, và độ chính xác giảm trên hình học cong mạnh. Đó là lý do nhóm phương pháp thứ hai bên dưới tồn tại.
Mean free path và radius: con số quyết định diện mạo
Mọi shader SSS đều hỏi một câu cốt lõi: ánh sáng đi được bao xa bên trong vật liệu này trước khi tán xạ hoặc thoát ra? Thuật ngữ vật lý là mean free path, quãng đường trung bình giữa các lần tán xạ. Shader đưa nó ra dưới dạng radius, thường kèm hệ số nhân scale và một màu.
- Tài liệu Arnold về các tham số subsurface của Autodesk (đọc ngày 10 tháng 11 năm 2026) mô tả radius là khoảng cách xấp xỉ mà ánh sáng có thể tán xạ bên dưới bề mặt, còn gọi là mean free path, và nêu rằng SSS phụ thuộc rất mạnh vào scale.
- Trang node Subsurface Scattering trong Blender manual (đọc ngày 10 tháng 11 năm 2026) gọi radius là khoảng cách trung bình ánh sáng tán xạ bên dưới bề mặt, với các giá trị đỏ, xanh lục và xanh lam riêng biệt, còn scale là hệ số toàn cục nhân vào đó.
- Tài liệu Redshift Standard Material của Maxon (đọc ngày 10 tháng 11 năm 2026) đặt radius theo centimet và nhân với Scale để ra tổng khoảng cách tán xạ.
Từ đó có hai hệ quả. Vì mỗi kênh màu có thể mang một radius riêng, shader có thể cho một số bước sóng tán xạ xa hơn các bước sóng khác, và đó là cách các artist tạo sắc ấm lem ra trên da. Và vì radius là một khoảng cách thực, scale của scene quyết định diện mạo: giá trị trông như sáp mềm trên model dựng theo centimet sẽ thành một khối phát sáng nhòe trên model dựng theo mét. Chaos nêu điểm tương tự cho V-Ray (kiểm tra scene scale, vì scatter radius dùng đơn vị thực tế) và gợi ý radius khoảng 5 đến 20 mm cho da.
Diffusion và Random Walk
Renderer xấp xỉ BSSRDF theo hai hướng lớn, và hầu hết engine cung cấp cả hai.
Phương pháp diffusion và profile thay phần bên trong bằng một profile toán học. Ví dụ kinh điển là mô hình dipole diffusion trong bài báo SIGGRAPH 2001 "A Practical Model for Subsurface Light Transport" (Jensen, Marschner, Levoy và Hanrahan, đọc ngày 10 tháng 11 năm 2026), được kiểm chứng trên sữa, đá cẩm thạch và da. Một phương pháp sau này là Pixar Technical Memo 15-04 của Per Christensen và Brent Burley (tháng 7 năm 2015), dựng profile từ các đường cong thực nghiệm theo albedo và mean free path; Blender đặt tên phiên bản của mình là Christensen-Burley. Các phương pháp này rẻ và mượt, nhưng giả định bề mặt phẳng cục bộ, nên phần mỏng, độ cong gắt và chi tiết nhỏ có thể trông sai.
Phương pháp random walk không dùng profile. Chúng dò các đường đi của ánh sáng xuyên qua bên trong mesh, tán xạ ở khoảng cách và hướng ngẫu nhiên cho đến khi đường đi thoát ra. Tài liệu Arnold nói randomwalk, khác với phương pháp thực nghiệm dựa trên lý thuyết diffusion, thực sự dò tia bên dưới bề mặt, nên xử lý hình học lõm và mỏng tốt hơn. Cái giá là độ nhạy với mesh không kín: lỗ hổng, "mouth bag" và hình học nội bộ thừa có thể đổ bóng ngoài ý muốn. Ghi chú phát hành Blender 2.80 giới thiệu Random Walk cho kết quả chính xác hơn với vật thể mỏng và cong, còn ghi chú 2.93 bổ sung rằng nó nay dùng Dwivedi guiding để giảm nhiễu, dấu hiệu cho thấy nhiễu là điểm yếu đã được biết.
Hai khung: diffusion thay phần bên trong bằng một profile mượt quanh điểm đi vào, còn random walk dò một đường tán xạ gấp khúc bên trong mesh cho đến khi thoát ra
Đây là sự đánh đổi gặp ở khắp nơi trong rendering: profile nhanh, mượt và xấp xỉ; random walk chậm hơn, nhiễu hơn và sát với những gì hình học thực sự làm. Không phương pháp nào đúng cho mọi shot.
Cycles, Arnold, V-Ray, Redshift và Corona đưa SSS ra như thế nào
Tên gọi khác nhau nhưng các điều khiển tương ứng với nhau. Mỗi dòng đến từ tài liệu của hãng được liên kết trong bài, đọc ngày 10 tháng 11 năm 2026.
| Renderer | Vị trí điều khiển | Bạn chọn gì |
|---|---|---|
| Cycles (Blender) | Các input subsurface của Principled BSDF, hoặc node Subsurface Scattering | Phương pháp: Christensen-Burley, Random Walk, Random Walk (Skin); radius, scale, IOR, anisotropy |
| Arnold | Nhóm subsurface của standard_surface | Weight, color, radius, scale, anisotropy; type: diffusion, randomwalk hoặc randomwalk_v2 |
| V-Ray | Volumetric translucency của VRayMtl, VRayFastSSS2, VRayAlSurface | Scatter radius, màu subsurface và scatter, phase function |
| Redshift | Standard Material, nhóm Subsurface | Mode: Point-Based Diffusion, Ray-Traced Diffusion, Random Walk; radius, scale, samples |
| Corona | Physical Material, các nhóm Subsurface Scattering và Volumetric Scattering | Fraction, radius, scatter color; directionality cho volumetric scattering |
Cycles. Blender manual mô tả Christensen-Burley kém chính xác hơn Random Walk nhưng trong một số tình huống giải quyết nhiễu nhanh hơn. Random Walk phù hợp với vật thể mỏng và cong và hoạt động tốt nhất trên mesh kín; Random Walk (Skin) điều chỉnh radius dựa trên texture màu.
Arnold. Type mặc định là randomwalk. Diffusion được mô tả là phép xấp xỉ rẻ hơn nhiều so với randomwalk đầy đủ, trong khi randomwalk có thể nhanh hơn đáng kể khi mean free path lớn và chậm hơn trong môi trường đặc có mean free path nhỏ. randomwalk_v2 render tốn hơn và nhiễu hơn phương pháp gốc, và điều khiển anisotropy chỉ hoạt động với randomwalk.
V-Ray. Chaos liệt kê VRayMtl với refraction bật và translucency đặt là volumetric, VRayFastSSS2 với scatter radius và phase function, và VRayAlSurface được xây dựng cho da. Họ khuyên dùng VRayFastSSS2 cho vật thể nền và để dành volumetric SSS cho vật liệu hero cận cảnh.
Redshift. Tài liệu Standard Material mô tả Point-Based Diffusion là mode nhanh và sạch nhất nhưng kém chính xác nhất, và không hoạt động trong progressive rendering. Ray-Traced Diffusion chính xác hơn nhưng chậm và nhiễu hơn. Random Walk là mặc định và chính xác nhất, và có thể chậm hơn các mode còn lại. Điều khiển Samples chỉ áp dụng cho Ray-Traced Diffusion và Random Walk.
Corona. Tài liệu Corona Physical Material cho Cinema 4D (đọc ngày 10 tháng 11 năm 2026) liệt kê fraction, radius và scatter color của Subsurface Scattering, cùng một nhóm volumetric riêng với absorption color, scattering color, directionality và distance. Tài liệu cảnh báo rằng giá trị directionality gần 1 hoặc âm 1 làm tăng nhiễu ảnh.
Vì sao SSS làm tăng thời gian render và nhiễu
Chaos nêu rằng SSS làm tăng thời gian render và gọi volumetric SSS trong VRayMtl là tốn tài nguyên tính toán, dù họ nói thêm rằng mức tăng không lớn khi dùng SSS có chọn lọc. Có hai cơ chế đứng sau chi phí này, và mức độ quan trọng của từng cơ chế thay đổi theo phương pháp, vì vậy một frame test đáng tin hơn một quy tắc ngón tay cái.
Nhiều đường đi hơn trên mỗi pixel. Random walk là một đường đi được dò bên trong vật thể. Mỗi tia camera chạm bề mặt SSS có thể sinh ra một walk gồm nhiều bước tán xạ trước khi thoát ra, nên một sample làm nhiều việc hơn và dao động nhiều hơn giữa các sample. Phương sai cao hiện ra thành hạt nhiễu, cần thêm sample để làm sạch. Dạng tổng quát của sự đánh đổi này nằm trong ray tracing vs path tracing.
Radius lớn hơn, cần nhiều sample hơn. Tài liệu của Maxon nói rằng với Ray-Traced Diffusion, scatter radius càng cao thì càng cần nhiều sample để có kết quả sạch, và tăng thiết lập SSS Samples làm giảm hạt nhiễu với cái giá là thời gian render.
SSS cũng dựa vào global illumination. Chaos khuyên bật GI vì vật liệu có thể trông như nhựa nếu thiếu nó, và lưu ý rằng ánh sáng ngược chính là thứ làm lộ tán xạ. Nếu bạn đang tinh chỉnh scene bằng ambient occlusion, hãy lưu ý hai thứ này không liên quan: occlusion xấp xỉ lượng ánh sáng môi trường mà một điểm nhìn thấy, còn SSS nói về việc ánh sáng đi đâu sau khi đi vào vật liệu.
Mọi chi phí này lặp lại trên từng frame. Một shot dài mười giây ở 24 khung hình mỗi giây là 240 frame, nên thêm vài phút mỗi frame sẽ cộng thành rất nhiều giờ máy.
Giữ chi phí SSS hợp lý trên animation dài
Những thay đổi này thường giảm chi phí nhất mà không đổi diện mạo. Mỗi thay đổi là một phán đoán về những gì người xem nhìn thấy, nên hãy kiểm tra trên frame của chính bạn.
- Chỉnh scale đúng trước tiên. Làm việc theo đơn vị thực tế, hoặc đặt điều khiển scale một cách có chủ ý, trước khi đánh giá nhiễu hay tinh chỉnh sample.
- Sửa mesh. Blender nói Random Walk hoạt động tốt nhất trên mesh kín, Arnold cảnh báo randomwalk nhạy với mesh không kín và hình học nội bộ, còn Redshift ghi nhận lỗi hình ảnh với hình học chồng lên nhau.
- Chọn phương pháp theo shot. Dùng phương pháp đắt ở nơi camera ở gần và phương pháp rẻ ở nơi camera ở xa: VRayFastSSS2 hoặc Arnold diffusion cho nhân vật tầm trung và nền, Redshift Point-Based Diffusion khi không cần progressive rendering, và Random Walk cho hero cận cảnh có chi tiết mỏng.
- Tắt SSS ở nơi không nhìn thấy. SSS làm nhòe ánh sáng trong phạm vi khoảng cách radius. Nếu khoảng cách đó nhỏ hơn một pixel ở độ phân giải render của bạn, bạn đang trả tiền cho tán xạ mà không ai thấy. Subsurface weight của Arnold mặc định là 0 và pha trộn giữa diffuse và SSS, nên đặt theo từng vật liệu là bình thường.
- Giữ anisotropy gần 0. Corona lưu ý directionality gần 1 hoặc âm 1 làm tăng nhiễu, và anisotropy của Arnold chỉ áp dụng cho randomwalk.
- Dồn sample vào nơi có nhiễu. Tăng SSS samples trên các vật liệu có hạt nhiễu thay vì tăng sampling toàn cục cho cả frame.
- Đo frame nặng nhất hai lần. Render một cận cảnh đòi hỏi nhiều nhất với SSS weight 0 rồi lại với thiết lập cuối. Chênh lệch là chi phí SSS trên mỗi frame; nhân với số frame, đó là con số bạn cần.
Chuỗi các bước ước tính chi phí SSS: render một frame hero khi tắt và bật SSS, lấy hiệu hai thời gian, rồi nhân hiệu đó với số frame
Để có bức tranh rộng hơn về giảm thời gian render cho cả scene, render time optimization guide đề cập sampling, denoising, hình học và ánh sáng.
Render scene SSS trên Super Renders Farm
SSS là một thiết lập vật liệu, không phải tính năng riêng, nên scene dùng nó render trên một render farm (hệ thống máy tính kết xuất) giống như bất kỳ scene nào khác: các frame được xử lý song song dưới dạng batch job. Điều thay đổi là chi phí trên mỗi frame, và đó là lý do vài phút render test trước khi chạy cả sequence là xứng đáng.
Trên Super Renders Farm, một farm quản lý toàn diện, bạn tải scene lên và farm lo phần mềm, plug-in và license render. Cycles và EEVEE trong Blender, Arnold, V-Ray và Corona trong 3ds Max, cùng Redshift trong Maya và Cinema 4D đều sẵn sàng mà không cần yêu cầu thiết lập. Các tổ hợp host và engine khác, ví dụ V-Ray for Blender hoặc Redshift for 3ds Max, được cung cấp theo yêu cầu, vì vậy hãy liên hệ để xác nhận trước khi tải lên scene phụ thuộc vào chúng.
Corona, cùng Arnold hoặc V-Ray ở chế độ CPU, render trên các node CPU của chúng tôi. Redshift render trên các node GPU, mỗi node có hai card RTX 5090 với 32 GB VRAM mỗi card; bộ nhớ tính theo từng card và không gộp chung, nên scene Redshift phải vừa trong 32 GB. Tài khoản mới nhận $25 credit render miễn phí, để bạn render thử các frame của shot SSS nặng nhất trước khi chạy cả sequence. Mức giá hiện hành có trên trang bảng giá.
Tóm tắt: dùng cách tiếp cận SSS nào cho shot nào
| Shot hoặc vật liệu | Cách tiếp cận thường dùng | Lý do |
|---|---|---|
| Hero cận cảnh, chi tiết mỏng hoặc cong (tai, ngón tay) | Random walk | Không giả định bề mặt phẳng |
| Nhân vật tầm trung hoặc nền | Diffusion hoặc shader SSS nhanh | Mượt và rẻ; khác biệt khó nhận ra |
| Sáp, đá cẩm thạch, sữa | Diffusion trước; random walk nếu mép trông sai | Vật liệu dày hợp với cách tiếp cận profile |
| SSS còn nhiễu sau frame test | Kiểm tra scale, mesh, anisotropy, rồi mới đến sample | Sửa cách rẻ hơn trước |
FAQ
Q: Subsurface scattering là gì, nói đơn giản? A: Subsurface scattering là ánh sáng đi vào một vật liệu trong mờ, tán xạ bên trong rồi thoát ra ở một điểm khác. Đó là lý do da, sáp, đá cẩm thạch và sữa trông mềm và hơi phát sáng thay vì phẳng và như nhựa. Shader subsurface mô hình hóa sự lan truyền đó của ánh sáng.
Q: BRDF và BSSRDF khác nhau thế nào? A: BRDF mô tả ánh sáng rời bề mặt ở đúng điểm nó đến. BSSRDF còn bao gồm ánh sáng đi vào ở một điểm, tán xạ bên trong vật liệu và thoát ra ở điểm khác. Vì liên hệ hai điểm, renderer dùng các phép xấp xỉ như diffusion profile hoặc random walk.
Q: Mean free path trong SSS là gì? A: Mean free path là quãng đường trung bình ánh sáng đi trong vật liệu giữa các lần tán xạ. Renderer đưa nó ra dưới dạng radius của SSS, thường kèm hệ số nhân scale. Radius lớn hơn cho diện mạo mềm và giống sáp hơn, và vì là khoảng cách thực nên nó phụ thuộc vào scale của scene.
Q: Subsurface scattering có làm tăng thời gian render không? A: Có. Chaos nêu rằng SSS làm tăng thời gian render, và Maxon ghi nhận scatter radius lớn hơn cần nhiều sample hơn để có kết quả sạch. Mức tăng đến từ các đường đi ánh sáng bổ sung bên trong vật liệu và nhiễu mà chúng tạo ra, nên nó thay đổi theo phương pháp, radius và phần khung hình mà vật liệu chiếm.
Q: Nên dùng random walk hay diffusion cho SSS? A: Dùng random walk khi cần độ chính xác, như cận cảnh có hình học mỏng hoặc cong, và diffusion khi cần tốc độ, như vật thể nền. Arnold, Blender và Redshift đều cung cấp cả hai, và Arnold lưu ý không phương pháp nào luôn nhanh hơn, nên hãy render một frame test với mỗi phương pháp.
Q: Vì sao render subsurface scattering của tôi bị nhiễu? A: Các phương pháp random walk dò đường đi bên trong mesh, làm tăng phương sai. Nguyên nhân thường gặp là radius lớn, mesh không kín, anisotropy cực đoan và SSS samples quá ít. Hãy sửa scale và hình học trước, sau đó giảm anisotropy, rồi tăng sample trên vật liệu bị ảnh hưởng.
Q: Scene dùng subsurface scattering có render được trên render farm không? A: Có. SSS là một thiết lập vật liệu, nên scene render dưới dạng các frame batch như mọi scene khác. Trên Super Renders Farm, Cycles và EEVEE trong Blender, Arnold, V-Ray và Corona trong 3ds Max, cùng Redshift trong Maya và Cinema 4D đều sẵn sàng mà không cần yêu cầu thiết lập. Các tổ hợp host và engine khác được cung cấp theo yêu cầu, vì vậy hãy liên hệ để xác nhận trước khi tải lên.
About Thierry Marc
3D Rendering Expert with over 10 years of experience in the industry. Specialized in Maya, Arnold, and high-end technical workflows for film and advertising.



