전체 글 142

20250519

taa 적용 Path Tracing 파이프라인에서 서브픽셀 단위로 지터링된 primary ray를 생성하여 샘플을 수집하고이를 프레임마다 누적하는 방식으로 TAA를 적용하였습니다. 레스터라이제이션을 활용한 gbuffer 생성 방식을 고려해보았지만 primary ray 생성 로직 자체를 변경하지 않는 이상 구조적으로 오히려 성능 저하 요인이 된다고 판단하여 해당 방식은 일단 폐기하였습니다. primary ray 생성 로직을 수정하려면rgen shader에서도 brdf 계산을 해야하는데밑에 나올 리펙토링 작업 때문에 지금 적용하는게 의미가 없어 폐기를 했습니다.재질 통합, gltf 파일 지원 중기존에는 .pbrt 파일 기반으로 씬을 구성해왔지만 이는 학습용으로는 적절하나 범용성이 부족해 실사용에 적합하지..

20250516

spp가 적을때 로직을 수정했습니다. 필터 적용시 픽셀의 분산 샘플이 적으면 루미넌스를 제외한 depth, normal 인자로 7x7 bilateral 필터를 적용해야합니다.atorus 1step만 적용했었는데 1step이 아니라 5step 전부 7x7 bilateral 필터로 적용해야 했었습니다.고친 후TAA 적용 전에프라이머리 레이로 gbuffer 생성했었는데레스터라이제이션으로 생성하는 것으로 고치고 있습니다.

20250515

MIS 수정Path Tracing에서 Next Event Estimation (NEE) 을 도입하면직접광 샘플링과 BRDF 샘플링이 동시에 조명을 샘플링할 수 있으므로Multiple Importance Sampling (MIS) 을 통해 두 샘플링 방식의 중복 기여를 보정해야 합니다만 NEE를 적용한 이후 직접광 샘플에 대해서는 MIS weight를 올바르게 적용했지만간접광 (BRDF를 따라간 bounce) 에 대해서는 MIS weight 계산이 누락된 것을 확인했습니다. svgf 디모듈레이션 수정 직접광, 간접광을 따로 샘플링하고 정확하게 알베도의 영향을 디모듈레이션 해줘야하는데간접광 (brdf 따라간 bounce)샘플링은 재질 특성에 따라 확률적으로 디퓨즈, 스펙큘러중 하나를 선택해 적용하기 때..

20250514

직접광 / 간접광을 분리하여 샘플링하고 디모듈레이션 하는 과정에서 잘못된 방법을 사용하여 푸른빛이 도는 결과가 나온 것이었습니다. 간접광 계산할 때 디퓨즈와 스페큘러 샘플링을 확률적으로 선택하여 진행되는데 이 중 디퓨즈 샘플링일때만 albedo 영향을 받기 때문에 일괄적으로 albedo를 나누면 안되고 실제 albedo영향을 받는 픽셀만 선택하여 디모듈레이션 해줘야했습니다. 위 이미지는 정확한 결과 이미지는 아니고간접광에서는 정확하게 albedo영향을 계산해서 빼줬는데직접광 영향은 아직 정확하게 계산을 못해서 직접광은 잠시 albedo 성분을 vec3(1.0)으로 없애고 실험해보았습니다. 오늘 계획은 직접광도 정확하게 디모듈레이션하고거울 재질 부분만 좀 제대로 나올 수 있게 조정해보겠습니다.

주차정리

레퍼런스 복습 모든 렌더링은 이 렌더링 방정식을 푸는 것으로 시작됩니다.렌더링 방정식은 순환 적분식 구조이므로 직접푸는 것은 불가능합니다. 따라서 몬테카를로와 같은 근사식으로 렌더링 방정식을 근사합니다.path tracing은 경로 하나만 샘플링하여 그 경로하나가 전체 적분 값을 대표하도록 처리합니다. 기존 구현 방식 초기에는 BRDF 중요도 기반 샘플링을 통해 path tracing을 구성했습니다.BRDF로 샘플링한 방향이 우연히 광원에 도달하면그때만 throughput × radiance를 계산하는 방식이었습니다.BRDF 샘플링 → 경로 따라 ray를 쏨광원에 닿을 때까지 bounce맞으면 그때만 기여 누적 문제점1 SPP에서 광원에 도달하지 못하면 그 샘플이 버려짐노이즈가 심하고 수렴이 느림 NE..

20250512

SVGF 기법을 Path Tracing 렌더러에 단계적으로 도입 중입니다. 현재는 초기 구현 단계로, 카메라 정지 상태에서의 샘플 누적 및 A-Trous 필터 기반의 분산 가이드 블러링이 구현된 상태입니다. 현재 구현된 구조 입니다. 1. 기본 구조G-buffer 구성Normal, Depth, Albedo를 G-buffer에 출력조명 분리직접광(Direct)과 간접광(Indirect)을 분리하여 샘플링각 결과에 대해 Albedo 디모듈레이션 수행 (Radiance / Albedo)2. Temporal Accumulation (단순 방식)이전 프레임의 누적 버퍼가 존재할 경우, 현재 프레임과 8:2 비율로 선형 보간하여 누적현재는 카메라 이동 시 모든 히스토리 삭제 (정확한 모션 벡터 기반 일치는 미도입 ..

20250508

1. NEE 이상 고침데이터 정렬 문제였습니다.샘플중 r 값만, (실질적으로 앞의 4bytes만) 0이 되어버려 전반적인 색이 푸르게 변하는 문제가 있었는데,데이터 정렬 문제였습니다. 이제 BRDF 기반 경로 추적 과정에 Next Event Estimation(NEE)을 도입하여,레이가 표면에 도달했을 때 광원을 샘플링해 직접광을 계산하고,그 기여를 휴리스틱 밸런스를 통해 보정한 뒤 최종 radiance에 반영하도록 구현했습니다. brdf기반으로 path tracing 과정에서레이가 닿는 모든 표면에 대해 라이트를 샘플링 하는데모든 라이트에 대해 기여를 전부 계산하지는 않고 현재 있는 모든 라이트를 삼각형 단위로 분해한 뒤그 삼각형들 중 하나를 유니폼하게 선택하고선택된 삼각형 내부에서 면적 기반 샘플링..

20250507

1. 광원 정상적인 정규화 초기에는 Blackbody 스펙트럼을 RGB로 변환할 때,CIE XYZ 변환 과정에서 Y 성분을 1로 고정하는 임의의 정규화 방식을 사용했습니다.하지만 이 방식은 색온도에 따른 고유한 색감을 제대로 반영하지 못해,렌더링 결과에서 색 표현이 부정확하게 왜곡되는 문제가 발생했습니다.이를 해결하기 위해, Physically Based Rendering에서 소개하는 방식대로Planck 분포의 λ_peak 지점에서의 복사휘도를 기준으로 전체 스펙트럼을 정규화하는 절차를 적용했습니다.그 결과, CIE XYZ 변환을 통해 얻어진 RGB 색상과 밝기는레퍼런스 이미지와 비교했을 때 색감과 세기 모두에서 일관된 결과를 보여주었습니다.즉, 절대 복사량을 직접 사용하는 것이 아니라,온도 기반으로 색..