Computer Graphics/VulkanPT

pt - 7. svgf 필터 추가

surkim 2025. 5. 12. 10:39

SVGF 기법을 Path Tracing 렌더러에 단계적으로 도입 중이다.

현재는 초기 구현 단계로, 카메라 정지 상태에서의 샘플 누적 A-Trous 필터 기반의 분산 가이드 블러링이 구현된 상태다.

 

 


현재 구현된 구조

 

1. 기본 구조

  • G-buffer 구성
    • Normal, Depth, AlbedoG-buffer출력
  • 조명 분리
    • 직접광(Direct)간접광(Indirect)분리하여 샘플링
    • 결과에 대해 Albedo 디모듈레이션 수행 (Radiance / Albedo)

2. Temporal Accumulation (단순 방식)

  • 이전 프레임의 누적 버퍼가 존재할 경우, 현재 프레임과 8:2 비율선형 보간하여 누적
  • 현재는 카메라 이동 모든 히스토리 삭제 (정확한 모션 벡터 기반 일치는 미도입 상태)

3. Variance Computation

  • 픽셀에 대해 누적 평균과 제곱 평균을 저장하여 분산(variance) 계산
  • 계산된 분산은 3x3 Gaussian 필터통해 보간

4. A-Trous 기반 가이드 필터링

  • 직접광, 간접광 각각에 대해 5단계 필터링 수행
  • 단계에서:
    • 샘플 간격(step size)점진적으로 증가
    • 현재 프레임의 Normal, Depth, Variance 정보사용하여 주변 픽셀과의 유사도를 계산
    • 유사도에 따라 필터의 가중치를 조절 (edge-aware)
  • Step 1 결과는 History 버퍼로 저장되어 다음 프레임에서 temporal 합성에 사용

5. 최종 출력

  • Step5직접광, 간접광 결과를 합산 후,
  • 다시 Albedo곱해 최종 색상 복원
  • 결과 이미지를 화면에 출력

 

까지 했는데 결과가 생각대로 안나온 상태

 

 

결과 이미지까지 출력하는 단계까지 구현을 마쳤으나, 현재 결과가 예상한 품질과 일치하지 않는 상태다.