Appearance
지오메트리 셰이더(7)~지오메트리 셰이더를 활용한 새로운 표현(3)
[칼럼 핵심 요약]
지난 2.5D 블러의 기법에는 하나의 문제점이 있다. 그것은, 최종적으로는 화상 처리적으로 흐림 처리를 하기 때문에, 속도가 다른 물건이 겹치고 있는 것 같은 장소에서, 부자연스러운 흐림이 나와 버리는 것이다.🌐 원문 링크: ジオメトリシェーダ(7)~ジオメトリシェーダを活用した新表現(3) (Mynavi News)
📅 원문 발행일: 2008-10-24 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 본 칼럼에서 다루는 핵심 렌더링 기법은 현대 실시간 렌더링 엔진(DirectX 12, Vulkan, Unreal Engine, Unity)의 기초 이론을 구성하고 있으며, 최신 하드웨어 가속 기법 및 컴퓨트 셰이더와 결합하여 고도화되었습니다.
📖 본문 해설
[원문 리드문] > 지난 2.5D 블러의 기법에는 하나의 문제점이 있다. 그것은, 최종적으로는 화상 처리적으로 흐림 처리를 하기 때문에, 속도가 다른 물건이 겹치고 있는 것 같은 장소에서, 부자연스러운 흐림이 나와 버리는 것이다.
지오메트리 셰이더를 활용한 신표현(3)~지오메트리 셰이더에 의한 라인 베이스의 블러
지난 2.5D 블러의 기법에는 하나의 문제점이 있다.
그것은, 최종적으로는 화상 처리적으로 흐림 처리를 하기 때문에, 속도가 다른 물건이 겹치고 있는 것 같은 장소에서, 부자연스러운 흐림이 나와 버리는 것이다. 예를 들어, 움직이는 것의 앞에 정지물이 있었을 경우, 이 정지물의 픽셀이 움직이고 있는 것의 흐림에 들어가 버리거나 하는 것이다.
이것에 대해서는, 간단한 궁리인 어느 정도 대처할 수 있다고 되어 있다.
벨로시티 맵 생성시에는, 전술한 3D 모델의 신장이 행해지지만, 이 처리가 끝났을 때에는, 신장된 3D 모델을 포함한 장면의 심도 정보(Z 버퍼)가 완성되어 있을 것이다. 이것을 이용해, 블러 생성시의 장면 텍스처 판독시에, 이 Z 버퍼를 참조해, 그 참조처가 깊이로서 참조원보다 앞이면, 이것은 잔상 생성의 참조처로서는 부적합이라고 하는 판단을 내리는 것이다. 이렇게하면 부적절한 흐림 픽셀 유입을 피할 수 있습니다.
「로스트 플래닛」(캡콤)보다. 장면 텍스처
장면 텍스처 깊이 정보
벨로시티 맵
아무런 궁리도 하지 않으면 이렇게 블러에 장면의 전후 관계를 무시한 픽셀의 침입이 일어나 버린다
아무런 궁리도 하지 않으면 이렇게 블러에 장면의 전후 관계를 무시한 픽셀의 침입이 일어나 버린다
벨로시티 맵의 심도 정보도 요구하고, 이것을 음미해, 앞의 오브젝트의 픽셀이 뒤의 흐림에 영향을 주지 않도록 궁리해 주면…
픽셀 침입을 크게 줄일 수 있습니다.
픽셀 침입을 크게 줄일 수 있습니다.
덧붙여 캡콤의 「로스트 플래닛」에서는, 먼 움직임에 대해서는, 이 2.5D 블러 생성을 해도 눈에 띄기 어렵기 때문에, 균일한 카메라 블러로 대용할 수 있다는 근사 개념을 도입해, 모션 블러 생성 부하의 저감과 균일화를 도모하고 있다.
전술한 세오리대로의 카메라 블러를 도입해 버리면, 화면 전체가 너무 움직여 버려, 2.5D 블러와의 친화성이 좋지 않기 때문에, 카메라 블러를 2.5D 블러의 구조에 통합하는 형태를 취한다.
이것은 장면의 깊이 정보를 사용합니다. 장면의 깊이 정보는 장면의 각 픽셀의 원근 정보가 기록되어 있기 때문에, 각각의 픽셀에 대해, 이 원근 정보와 카메라의 이동 벡터의 정보를 이용하여 개산하여, 벨로시티 맵용의 값을 출력해 버리는 것이다. 예를 들어 카메라가 옆으로 이동하면 가까운 픽셀이 많이 가로로 이동하고 먼 픽셀이 약간 가로로 이동합니다. 이러한 정보를 벨로시티 맵에 그려 버리는 것이다. 이렇게 하면 카메라 블러와 2.5D 블러를 통합할 수 있습니다.
지오메트리 셰이더로 라인 기반 블러
「로스트 플래닛」의 DirectX 10 패치 적용 후에는, 전출의 2.5D 블러에, 한층 더 지오메트리 쉐이더를 효과적으로 활용한 라인 베이스의 모션 블러를 추가 합성하고 있다.
라인 베이스의 모션 블러에서도, 벨로시티 맵을 생성하는 곳과, 블러 생성원이 되는 통상 렌더링 한 씬 텍스처를 준비하는 곳까지는, 2.5D 블러와 같다.
그런 다음 벨로 시티 맵을 참조하여 추출 된 속도와 방향에 해당하는 선 (라인)을 지오메트리 셰이더를 사용하여 생성합니다.
이 선분의 색은, 준비해 둔 장면 텍스처로부터 꺼낸 색을, 선분의 시점의 색으로서, 종점을 향해 색을 얇게 하여 묘화한다. 라인이 길면 길수록 색이 얇아지고, 그 얇아지는 정도를 α값에 넣어 간다. 나중에, 이 α값은 2.5D 블러와의 합성 마스크로서 이용한다.
또한, 라인의 묘화는 화면 좌표계에서 행해지지만, 제대로 장면의 깊이값을 음미하여 실시하므로, 장면의 차폐 구조에 배려되어 흐림이 묘화되게 된다.
라인 블러 개념 그림
이 공정을 벨로시티 맵의 모든 텍셀에 대해 실시하게 되지만, 과연 이것을 렌더링 해상도로 실시하면 선분이 지나치게 많아지기 때문에, 선분 생성용의 벨로시티 맵은 적당한 저해상도로 하고, 이와 같이, 라인 블러로서 생성하는 버퍼도 적당한 저해상도로 한다.
최종적으로는 저해상도 라인블러 결과를 확대하고 렌더링 해상도와 같은 해상도의 2.5D 블러 결과와 해상도를 일치시켜 합성하여 완성된다. (계속)
「로스트 플래닛」보다. 2.5D 블러만의 경우. 블러에 면의 경계와 같은 것이 나오고 있다
2.5D 블러에 라인 블러를 추가한 경우. 면의 경계감은 사라지고 움직임의 역동감을 강조하는 극화적인 효과선으로 보인다
(트라이Z 니시카와 젠지)