SSAO나 HBAO와는 마찬가지로, 최신 게임에서 많이 사용되는 그래픽 기술입니다. SSR은 그대로 한국어로 번역하자면
화면 공간 반사(screen space reflection) 이며 화면 공간 데이터를 재사용하여 화면의 반사율을 계산하는 기법입니다. 젖은 바닥 표면이나 웅덩이에서와 같이, 크지 않은 부분에서 반사 효과를 일으키는 데 일반적으로 사용됩니다. 화면 공간 반사는 사용하기 쉬운 기법은 아니지만 올바르게 사용하면 좋은 결과를 얻을 수 있습니다.
언리얼 엔진4나 유니티 등, 대부분의 최신 엔진에서는 SSR 기능을 대부분 담고 있습니다.
SSR의 구현 기법은 화면의 복잡도와는 별개로 자동적으로 계산되기 때문에 구현 자체를 하는 것에 큰 어려움은 없습니다. 화면의 색상 정보, 화면의 법선정보, 화면의 위치 정보를 토대로 광선의 진행 방향을 통해 Ray Marching을 사용하여 충돌점을 찾아 반사 효과를 사용할 지점을 찾는 것이 기본적인 구현 방식입니다.
SSR은 레이트레이싱(Raytracing)에 비해 상당히 가볍고, 잘만 사용하면 좋은 반사 효과를 얻을 수 있어 SSR을 잘 사용한 게임은 레이트레이싱의 효과만큼은 아니지만 꽤 뛰어난 현실적인 그래픽을 보여주기도 합니다.
다만 SSR 기술엔 단점이 있는데 SSAO와 마찬가지로 화면 공간 밖의 구역은 기하 연산하지 못하며, Ray Marching 중 진행 길이가 너무 늘어나면 어떤 위치에서는 광선이 물체를 그냥 통과해버리게 되고 그 결과 반사된 상에 군데 군데 구멍이 생기게 됩니다. 광선의 진행 길이는 장면에 따라 신중하게 결정해야 하는데 이것이 쉽지 않습니다.
따라서, 개발자가 일일이 그래픽 작업을 하면서 광선의 진행 방향이나 반사 표현이 잘못된 부분을 Fade out을 시켜주는 작업이 필요하며, 이는 사소한 부분만 반사 효과를 구현하려고 해도 손이 가게 되는 작업이기에 결국 시간을 잡아먹는다는 단점이 있습니다.
SSR은 자동적으로 모든 것을 자연스럽게 연산해주는 레이트레이싱에 비해서 많이 가볍고 RTX 그래픽카드처럼 전용 그래픽카드도 필요하지 않아서 유저들 입장에선 좋은 기술이지만, 개발자 입장에서는 손이 많이 가는 기술이고 일일이 광원을 굽고 반사 효과를 배치해야하는 개발자 입장에선, 사양을 많이 타더라도 레이트레이싱을 적용하는 것이 더 편할 수도 있겠습니다.