본문 바로가기
vfxai 잡학지식 vfxai 잡학지식

샘플을 2배로 늘려도 렌더 노이즈가 반으로 안 줄 때: √N 법칙

vfx 잡학지식 읽는 시간 약 7분 조회 2

렌더 노이즈를 줄이려고 Cycles 샘플 수를 올렸는데, 화면은 나아져도 얼마나 좋아졌는지는 감으로만 판단하기 쉽습니다. 샘플을 두 배로 늘리면 노이즈도 절반이 될까요? 아래의 체험과 계산기로 먼저 확인하고, 같은 장면을 Blender 5.0에서 렌더한 실측표와 비교해보겠습니다.

여기서는 세 가지를 짚습니다. 샘플을 늘릴 때 노이즈가 줄어드는 모습, Cycles에서 직접 측정한 값, 목표 노이즈에 필요한 샘플 수입니다. 체험 캔버스는 설명용 모형이고, 계산기는 내 렌더에서 측정한 값을 넣어 쓰는 도구입니다.

① 샘플 수에 따라 노이즈가 줄어드는 모습

슬라이더를 움직여 기준 16 samples에서 노이즈가 얼마나 남는지 보세요.

기준 대비 예상 노이즈 100%

이 장면은 실제 Cycles 렌더가 아닙니다. 무작위 오차의 진폭을 1/√N에 맞춰 보여 주는 설명용 모형입니다.

② 목표 노이즈에 필요한 샘플 수 계산

현재값과 목표값은 같은 씬·같은 렌더 설정·같은 측정 방식으로 얻어야 합니다. 아래 초기값은 이 글의 Blender 실측 예시입니다.

예상 필요량: 256 samples

계산값은 1/√N 모델의 추정치입니다. 실제 장면의 결과는 샘플링 패턴과 픽셀별 난이도에 따라 달라질 수 있습니다.

캔버스의 구와 바닥은 노이즈 진폭이 줄어드는 정도를 보기 위한 모형입니다. 실제 Cycles 렌더의 픽셀값을 재현하지는 않습니다. 숫자를 현장에 적용할 때는 아래 실측표처럼 내 장면에서 같은 방법으로 측정한 값이 필요합니다.

Blender Cycles에서 같은 씬을 7개 샘플 수로 렌더했습니다

Blender 5.0.0의 Cycles CPU로 diffuse 바닥과 클레이 구, area light, world, 카메라를 고정했습니다. 각 샘플 수에서 random seed를 10개씩 바꿔 렌더했고, 해상도는 160×160입니다. Noise Threshold에 따른 적응형 샘플링과 디노이즈는 껐습니다. 그래야 픽셀마다 샘플 수가 달라지거나 후처리가 표준편차에 섞이지 않습니다.

렌더 노이즈 실측 장면: Blender Cycles 16 samples의 클레이 구와 바닥 그림자
같은 장면의 16 samples 렌더입니다. 그림자와 구의 어두운 면에서 무작위 오차가 잘 보입니다.
Blender Cycles 샘플 수 256의 같은 장면: 16 samples보다 줄어든 렌더 노이즈
같은 장면, 카메라와 seed에서 256 samples로 렌더했습니다. 저샘플 그림자보다 오차가 덜 거칠지만, 실측은 이미지 한 장의 겉모습이 아니라 여러 seed를 비교해 계산했습니다.

측정한 값은 화면 전체의 선형 휘도 표준편차 RMS입니다. 먼저 각 픽셀에서 10개 seed 결과의 표준편차를 구하고, 픽셀 전체를 RMS로 합쳤습니다. 장면의 큰 명암 차이는 픽셀마다 평균을 따로 계산해서 분리했습니다. 따라서 이 숫자는 밝은 이미지에서 어두운 이미지까지의 차이가 아니라, 같은 픽셀에서 seed를 바꿀 때 생기는 무작위 변화의 크기입니다.

Cycles Samples측정 표준편차 RMS16 samples 대비 실측 잔여율√N 예상 잔여율
160.02568100.0%100.0%
320.0169766.1%70.7%
640.0113344.1%50.0%
1280.0076229.7%35.4%
2560.0051520.1%25.0%
5120.0035213.7%17.7%
10240.002409.4%12.5%
Blender 5.0.0 Cycles CPU, 160×160, 각 Samples에서 seed 10개. 휘도 표준편차는 display transform 전 EXR 선형값으로 계산했습니다. 측정된 실측 비율은 이 시험 장면에 한정됩니다.

샘플 수를 2배로 올린 여섯 구간에서 실측 노이즈는 앞 구간의 약 66~68%가 남았습니다. 이 장면에서는 이론값 70.7%보다 조금 빠르게 줄었지만, 매번 거의 비슷한 비율로 감소했습니다. 16 samples의 노이즈가 100%였다면 64 samples에서 44.1%, 256 samples에서 20.1%가 남았습니다.

샘플을 두 배 늘려도 절반이 아닌 이유는 √N에 있습니다

Cycles는 픽셀마다 빛의 경로를 여러 번 추적하고 그 결과를 평균냅니다. 독립적인 무작위 추정값을 평균내면 표준편차는 샘플 수의 제곱근만큼 줄어듭니다. 그래서 샘플 수를 N, 측정한 노이즈 표준편차를 σ라고 하면, 같은 조건의 새 샘플 수 M에서 예상되는 값은 다음과 같습니다.

σ(M) ≈ σ(N) × √(N / M)

샘플을 2배로 만들면 √2로 나누므로 노이즈가 약 70.7% 남습니다. 반으로 만들려면 표준편차를 2로 나눠야 하고, 제곱근 안의 샘플 수는 4배가 되어야 합니다. 64에서 128은 절반이 아니라 약 70.7%가 남는 변화이고, 64에서 256이 절반 목표의 계산값입니다.

샘플을 두 배로 늘리면 노이즈는 절반이 아니라 약 70.7% 남고, 절반까지 낮추려면 샘플을 네 배로 계산해야 합니다.

노이즈 표준편차를 넣어 필요한 Cycles 샘플 수를 구하세요

계산기의 식은 목표 샘플 수 = 현재 샘플 수 × (현재 노이즈 ÷ 목표 노이즈)²입니다. 소수 샘플은 쓸 수 없으므로 결과는 올림합니다. 예를 들어 이 실측에서 64 samples의 표준편차는 0.01133이었습니다. 목표를 절반인 0.005665로 넣으면 256 samples가 나옵니다. 실제 256 samples 측정값은 0.00515로, 이 시험에서는 목표보다 조금 더 낮았습니다.

이 계산은 같은 씬, 같은 해상도, 같은 렌더 설정, 같은 측정 방법끼리 비교할 때 의미가 있습니다. 현재 노이즈 값을 모르면 각 픽셀의 noise pass나 서로 다른 seed의 같은 픽셀 값을 비교하는 방법부터 정해야 합니다. 단순히 화면 전체의 밝기 편차를 넣으면 재질과 조명 차이를 노이즈로 잘못 셀 수 있습니다.

Noise Threshold와 디노이저를 끄고 비교한 이유

Blender Cycles의 Noise Threshold는 픽셀마다 샘플을 더 할지 말지 정하는 적응형 샘플링 설정입니다. 디노이즈는 렌더 뒤 노이즈를 줄이는 별도 처리입니다. 둘을 켜면 고정 Samples만 바꾼 비교가 아니게 되므로, 이번 실측에서는 둘 다 껐습니다. 실제 작업에서는 이 설정들이 렌더 결과에 함께 영향을 주지만, 이번 글에서는 √N 계산과 구분하기 위해 자세한 튜닝은 다루지 않습니다.

한 줄 정리

원하는 노이즈를 절반으로 줄이려면 샘플을 두 배가 아니라 네 배로 계산하고, 마지막 값은 내 씬에서 측정해 확인하세요.

참고 자료

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.