Computer Graphics/Project

20250515

surkim 2025. 5. 15. 10:38

MIS 수정

Path Tracing에서 Next Event Estimation (NEE)  도입하면

직접광 샘플링과 BRDF 샘플링이 동시에 조명을 샘플링할 수 있으므로

Multiple Importance Sampling (MIS)  통해  샘플링 방식의 중복 기여를 보정해야 합니다만

 

NEE 적용한 이후 직접광 샘플에 대해서는 MIS weight 올바르게 적용했지만

간접광 (BRDF 따라간 bounce)  대해서는 MIS weight 계산이 누락 것을 확인했습니다.

 

NEE 적용 전
NEE를 적용했지만 간접광에는 mis적용이 안된 이전 이미지
전부 적용
1: nee 적용전, 2: 잘못된 적용, 3: 제대로 적용 (1spp)

 

 

왼쪽: 샘플 수 많이 늘렸을 때, 오른쪽: 레퍼런스


 

svgf 디모듈레이션 수정

 

직접광, 간접광을 따로 샘플링하고 정확하게 알베도의 영향을 디모듈레이션 해줘야하는데

간접광 (brdf 따라간 bounce)샘플링은 재질 특성에 따라 확률적으로 디퓨즈, 스펙큘러중 하나를 선택해 적용하기 때문에 알베도를 제거하기가 쉬웠지만

 

직접광은 샘플링할 때

디퓨즈, 스펙큘러 혼합재질일 경우 한 샘플링 광원에 대해 각각 계산한 후 합해서 사용했었기 때문에

알베도를 정확하게 제거하기가 어려웠습니다.

따라서 간접광 계산할 때 처럼 재질 특성에 따라 확률적으로 디퓨즈, 스펙큘러를 하나 선택해 적용하는 것으로 바꿨고

디퓨즈일 때만 알베도를 디모듈 해주는 방식으로 바꿨습니다.

 

사실 이렇게 해도 NEE 샘플링자체가 간접광의 패스를 따라서 샘플링이 진행되기 때문에

2번째 바운스 이후부터는 직접광 누적에 간접광의 throughput이 들어가는 구조라

알베도의 영향을 전부 제거하지는 못했습니다.

그래도 영향도가 매우 낮아 이상한 색이 나오진 않는 거 같습니다.

 

또한 모듈레이션도 지금 그냥 알베도를 곱하는 형식으로 하고있는데 이러면

필터링된 디퓨즈 + 스펙큘러 영향에 그냥 albedo를 곱하는 형식이라

정확한 계산이 아닌거 같습니다.

 

정확하게 하려면 직접광의 디퓨즈 스펙큘러, 간접광의 디퓨즈 스펙큘러

싹 다 나눠서 디모듈 -> 필터링 -> 모듈레이션 해야 정확할 거 같은데

이러면 논문에 제시한 방법도 아니거니와

필터링 자체가 무거운데 그걸 두번 더 해야하는 거라

고민이 필요한거 같습니다.

 

고치기 전

 

고친 후

일단은 푸른빛 돌던게 사라졌습니다.

혼합재질에서 스펙큘러 부분이 거의 사라져버렸는데 이게 지금 잘 적용이 되서 이런건지

아니면 계산부분에서 누락된 부분이 있는건지 확인해봐야 할것 같습니다.

 


거울 재질 조정

씬의 4분의 1이 거울인데 흐릿하게 나와 안이쁜 것 같아서 이 부분만 조금 조정했습니다.

우선 흐릿하게 나오는 이유가 필터링 거칠 때 사용하는 인자들이

1. 표면의 법선벡터, 2. 뎁스, 3. 루미넌스 값인데

거울 재질에서 보이는 부분은 법선벡터와 뎁스차이가 거의 없으니깐

강한 필터링을 거치게 되어 생긴 문제입니다.

 

거울일 때만 gbuffer를 튕겨 보이는 부분의 정보로 바꿔서

엣지를 보존하게 바꿨습니다.

 

 


가까이 가면 전프레임에 있는 부분이었지만 갱신되는 부분은

일치도 검사할 때 depth차이에 대한 부분을 너무 강하게 잡아서 생긴 문제였습니다.

약간 느슨하게 바꿔줘서 해결했습니다.

'Computer Graphics > Project' 카테고리의 다른 글

20250516  (0) 2025.05.16
20250514  (0) 2025.05.14
20250513  (0) 2025.05.13
주차정리  (0) 2025.05.12
20250512  (0) 2025.05.12