SVGF 기법을 Path Tracing 렌더러에 단계적으로 도입 중이다.
현재는 초기 구현 단계로, 카메라 정지 상태에서의 샘플 누적 및 A-Trous 필터 기반의 분산 가이드 블러링이 구현된 상태다.
현재 구현된 구조
1. 기본 구조
- G-buffer 구성
- Normal, Depth, Albedo를 G-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를 곱해 최종 색상 복원
- 결과 이미지를 화면에 출력
까지 했는데 결과가 생각대로 안나온 상태
결과 이미지까지 출력하는 단계까지 구현을 마쳤으나, 현재 결과가 예상한 품질과 일치하지 않는 상태다.
'Computer Graphics > VulkanPT' 카테고리의 다른 글
| pt - 9. 푸른 빛 원인 찾음 (0) | 2025.05.14 |
|---|---|
| pt - 8. 전반적인 정리 (NEE 개념, svgf 개념), 현재 문제점들 (0) | 2025.05.12 |
| pt - 6. 푸른빛 해결, 안티 엘리어싱, 러시안룰렛 추가 (0) | 2025.05.08 |
| pt - 5. 광원 정규화, bloom 적용, NEE 적용 중 (0) | 2025.05.07 |
| pt - 4. 문제 해결 + blackbody 관련 정리 (0) | 2025.05.02 |