어제는 1-bounce reflection 도입을 완료하였고
그 후 2- bounce reflection, 1- bounce glossy reflection 도입중입니다.
roughness 값을 기반으로 반사 방향을 퍼뜨리는 방식인 glossy reflection을 도입 중입니다.
우선 간단한 균일 난수 함수로
vec3 rand = normalize(vec3(
hash1(uv),
hash1(uv + 0.13),
hash1(uv + 0.37)
));
랜덤 벡터 만들어서
vec3 perfectReflect = normalize(reflect(viewDir, worldNormal));
float spread = pow(roughness, 2.0);
vec3 reflectDir = normalize(mix(perfectReflect, rand, spread));
레이 방향을 roughness 따라 바꿔봤는데
이 수식이 맞는지
결과가 제대로 나오는건지 잘 모르겠습니다.
조금 더 조사와 연구가 필요할 것 같습니다.
노이즈가 생기는 이유는
현재 픽셀마다 랜덤 방향을 개별로 적용하다 보니,
인접 픽셀 간 결과값이 크게 달라져 노이즈가 발생하는 것으로 보입니다.
정반사일 경우에도 마찬가지지만, glossy에서는 더 도드라집니다.
추후 빛계산 하며 적용할 때 주변 픽셀과의 평균으로 계산을 도입할 지 고민 중 입니다.
우선 하나만 샘플링했는데
레이를 여러개 쏴서 샘플링하는 것도 적용해보고
그 다음 glossy + multi sampling + 2bounce 도 적용해보겠습니다.
오늘은 우선 주차 정리를 마친 후,
한 픽셀당 여러 레이를 쏘는 멀티 샘플링 기반 glossy reflection을 구현해볼 예정입니다.
'Computer Graphics > Project' 카테고리의 다른 글
20250417 (1) | 2025.04.17 |
---|---|
주차 정리 250410 ~ 250415 (0) | 2025.04.15 |
RT reflection 첫 도입 (0) | 2025.04.14 |
20250414 (0) | 2025.04.14 |
Vulkan에 Ray Tracing 도입 하기 (2) (1) | 2025.04.11 |