Skip to content

그림자 생성(10)~개량형 깊이 그림자 기법(5)

[칼럼 핵심 요약]
깊이 그림자 기법의 그림자의 쟈기를 보카해 소프트 그림자 표현으로 하려고 하는 아이디어는 그 밖에도 있다. 요즘 최근에 채용 예를 늘리고 있는 것이 '바리언스 섀도우 맵 기법'이다.

🌐 원문 링크: 影の生成(10)~改良型デプスシャドウ技法(5) (Mynavi News)
📅 원문 발행일: 2008-08-24 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)

NOTE

💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)

  • 섀도우 맵의 한계와 진화: 본문에서 다루는 캐스케이드 섀도우 맵(CSM)과 VSM 등은 여전히 실시간 렌더링의 주력이지만, 해상도 에일리어싱과 자가 차폐 오류(Shadow Acne)의 구조적 한계를 갖습니다.
  • 하드웨어 가속 레이트레이싱 섀도우: 현재는 DXR/Vulkan RT를 이용한 실시간 광선 추적 섀도우(Ray-Traced Soft Shadows) 및 가상화 그림자 맵(Virtual Shadow Maps, VSM in UE5)을 통해 해상도 제약 없는 완벽한 반그림자(Penumbra) 연산이 실시간으로 이루어집니다.

📖 본문 해설

[원문 리드문] > 뎁스 그림자 기법의 그림자 쟈기를 보카해 소프트 그림자 표현으로 하려고 하는 아이디어는 그 밖에도 있다. 요즘 최근에 채용 예를 늘리고 있는 것이 '바리언스 섀도우 맵 기법'이다.

바리언스 섀도우 맵 기법 ~ 효율적으로 소프트 섀도우를 얻는다

깊이 그림자 기법의 그림자의 쟈기를 보카해 소프트 그림자 표현으로 하려고 하는 아이디어는 그 밖에도 있다.

요즘 최근에 채용 예를 늘리고 있는 것이 '바리언스 섀도우맵 기법'(VSM:Variance Shadow Maps)이다.

VSM 기법에서도, 섀도우 맵을 생성하는 곳은 완전히 깊이 그림자 기법 그대로 같다(그야말로 PSM, LSPSM 기법으로 생성해도 좋다). 그러나 실제 최종 장면의 픽셀을 그릴 때 그림자인지 여부를 결정할 때 약간 특수 계산을 수행하기 위해 섀도우 맵은 부동소수점(Floating-Point) 텍스처를 사용합니다. 또한, 섀도우 맵을 생성 할 때, 광원으로부터의 차폐물의 깊이 값뿐만 아니라 그 깊이 값의 제곱 값도 저장된다. 따라서 하나의 값만 저장할 수있는 단일 요소 텍스처가 아닌 일반적인 αRGB로 표시되는 여러 요소로 구성된 컬러 텍스처 형식이어야합니다.

최종적인 시점에서 본 장면의 묘화시에는, 묘화 하는 각 픽셀에 대해, 그 픽셀로부터 광원까지의 거리를 구해, 섀도우 맵으로부터 그 픽셀과 대응하는 광원과 차폐물까지의 거리를 비교해, 「그림자인지 아닌지」의 판정을 실시하려고 하는 곳까지는 같다.

가장 큰 차이점은이 "그림자인지 여부"의 결정에 확률론에서 자주 사용되는 "체비 셰프의 부등식"이라고 불리는 방정식을 사용하는 것입니다.

통상의 깊이 그림자 기법에서는, 「그림자인지 아닌지」의 YES OR NO의 2치 판정을 하지만, VSM 기법에서는 여기서 「체비셰프의 부등식」을 이용해 「빛이 맞고 있는 최대 확률」을 산출하는 것이다. 3D 그래픽에 확률론 방정식을 가져오는 곳이 독특하다. 이 그림자인지 아닌지 판정의 결과가 최대 확률은 0~1로 나타내므로, 이 값은 그대로 그림자의 색(≒그림자의 진도)으로서 이용할 수 있다.

통상의 깊이 그림자 기법에 있어서 그림자 영역의 윤곽에 쟈기가 나오기 쉬운 것은, 이 개소의 「그림자인지 아닌지 판정」이 어려운데 「그림자(0)인가, 빛이 맞고 있는(1)인가」의 2택으로 해 버렸기 때문이다. 여기를 확률, 즉 실수로 표현할 수 있으므로 부드럽게 할 수 있습니다. 그림자의 본체에 가까울수록 그림자의 확률은 높아지고 그림자는 진해지고, 멀어지면 멀어질수록 그림자의 확률은 낮아지고 얇아진다……라는 이미지이다. 이렇게 그림자의 윤곽 부근이 매끄럽게 된다… … 라고 하는 것은 정확하게 소프트 그림자 표현이 된다. 물론, 물리적으로 올바른 결과의 소프트 그림자는 아니지만, 본 목적에는 강한 설득력이 있다.

일반적인 깊이 그림자 기술과 VSM 기술의 비교일반적인 깊이 그림자 기술과 VSM 기술의 비교

이제 체비체프의 부등식은 이와 같이 표현된다.

그림그림

이것은 분산 σ2와 평균값 E(x)의 데이터가 있을 때 'x≧t'가 될 확률 P()의 최대값은 이렇게 계산된다는 것을 나타내는 수식이다.

깊이 그림자 기법에 있어서, 「섀도우 맵에 기록되어 있는 값(차폐물로부터 광원까지의 거리)」>「렌더하고자 하는 픽셀의 광원까지의 거리」가 된 특히는 빛이 맞고 있다고 판단할 수 있다.

그래서, 구하고 싶은 확률 「P(x≧t)」에 있어서, t를 「렌더링 하고 있는 픽셀의 광원까지의 거리」로서 이 부등식을 활용하면, 확률 P(x≧t)는 빛이 맞고 있는 확률을 구하는 것에 상당한다.

분산 σ2는 다음과 같이 표현되고, 평균값 E(x)는 쉐도우 맵에 기록된 값을 이용하여 계산된다.

그림그림

이 기술은 그대로도 그림자 가장자리가 부드러워지지만 생성 된 섀도우 맵에 흐림 효과를 적용하면 그림자 경계가 부드러워집니다. 다만, 이 블러를 극단적으로 걸면, 그림자의 윤곽이 겹치는 개소에서, 빛이 새는 듯한 "근육"이 나옵니다. 섀도우 맵 측에 블러를 걸는 법은 이 "근육"의 출방을 의식하면서 조정할 필요가 있는 것이다.

그런데, 이 VSM 기법은, 「그림자인지 아닌지 판정」의 궁리가 메인의 기법이기 때문에, 전술한 PSM, LSPSM, 캐스케이드 LSPSM이라고 하는 섀도우 맵 생성측에 궁리를 한 뎁스 섀도우 기법의 개량형과 조합해 사용할 수도 있다. 근처에서 먼 곳까지는 고품위로, 게다가 소프트 그림자까지를 내고 싶을 때에는 그러한 하이브리드 기법을 활용하면 좋을 것이다.

그림그림


🔗 연관 지식 베이스 (Wiki)

Based on Zenji Nishikawa's 3D Graphics Maniax series. Translated & Knowledge-Based for Korean Game Developers.