이름 그대로 화면 공간(Screen Space) 의 데이터를 활용해 반사를 계산하는 기법이다. 즉, 이번 프레임에서 이미 렌더링된 정보를 재사용하기 때문에, 반사를 위해 물체를 다시 렌더링하지 않아도 된다. 덕분에 장면이 복잡해도 성능에 큰 영향을 받지 않으며, 실시간 반사 효과를 구현하는 데 효율적이다.
SSR은 자기 자신을 포함한 반사를 처리할 수 있고, 특정 표면에 한정되지 않는다. 주로 물, 금속, 유리와 같은 반사 표면에서 시각적 효과를 강화하는 용도로 많이 쓰이며, Deferred Rendering 방식과 특히 잘 어울린다.
SSR을 구현하기 위해서는 화면에서 각 픽셀에 대해 다음 네 가지 정보가 필요하다

Deferred Rendering 기법에서는 위 정보를 G-Buffer를 통해 얻을 수 있다. SSR을 라이팅 파이프라인에 통합할 때 별도의 큰 렌더링 비용은 들지 않지만, 메모리 사용과 밴드위스는 고려해야 한다.
SSR의 핵심 연산은 Ray Marching이다.
광선을 반사 방향으로 일정 간격(step)으로 쏘아, 표면과의 충돌을 검사한다.
광선 길이는 사용자가 조정할 수 있으며, 너무 길면 오브젝트를 통과해 잘못된 결과를 낼 수 있다.
스텝 크기를 줄이면 정확도는 올라가지만 연산 비용이 증가한다.


SSR은 화면 공간에 의존하기 때문에 몇 가지 제약이 따른다:
뷰포트 제한 : 카메라에 보이지 않는 물체는 반사에 포함되지 않는다.
오클루전 문제 : 반사 표면이 다른 물체에 가려져 있으면 해당 부분 반사가 비어 보인다.
저해상도 아티팩트 : 화면 해상도가 낮을 경우 반사 효과가 뭉개지거나 계단 현상이 발생한다.
품질 저하 : 정확한 충돌 지점을 찾기 어렵기 때문에 반사가 부정확할 수 있다.
이런 문제를 보완하기 위해 SSR은 보통 다른 기법과 혼합해서 사용한다.
Ray Tracing과의 혼합
레이 트레이싱은 카메라에 보이지 않는 물체까지 반사에 포함할 수 있다.
하지만 고성능 GPU가 필요하기 때문에 SSR과 하이브리드 형태로 활용하는 경우가 많다.
Reflection Probes
씬의 특정 지점에서 환경을 큐브맵 형태로 저장하는 방식.
고정된 환경 반사는 프로브로 처리하고, 움직이는 오브젝트는 SSR로 보완하는 식으로 사용한다.
Temporal Reprojection
이전 프레임의 반사 데이터를 현재 프레임에 재투영해 반사 품질을 개선하는 기술.
뷰포트 제한, 저해상도 문제, 노이즈 등을 줄일 수 있다.
다만 동적 오브젝트에서는 고스트 현상이 발생할 수 있어 추가 보정이 필요하다.

