그림자 매핑이 표준 인 이유는 무엇입니까?


41

나는 무역을하는 프로그래머이지만 게임 개발에 거의 닿지 않았습니다. 나는이 질문을 한동안 가지고 있었고, 이제 게임 개발을 조사하고 있는데, 그것이 좋은 시간이 될 것이라고 생각했습니다.

그림자 매핑이 게임이 그림자를 만드는 데 독점적으로 사용하는 이유는 무엇입니까? 무뚝뚝한 것은 끔찍해 보인다. 그림자 설정이 최대 인 현대 게임조차도 울퉁불퉁 한 울퉁불퉁 한 그림자가 있습니다.

11 년 전에 제작 된 Doom 3는 내가 본 그림자 맵 구현보다 훨씬 좋아 보이는 그림자 볼륨을 사용했습니다. 여기에는이 질문이 게시 된 같은 주에 출시 된 AAA 게임이 포함됩니다. Doom 3의 타사 모드는 그림자의 가장자리를 부드럽게하여 더욱 시각적으로 인상적이었습니다.

섀도우 볼륨과 같은 것을 구현할 때 어떤 기술적 문제 나 제한이 있습니까? 그림자 맵은 구현하기가 너무 쉬워 개발자가 다른 것을 고려하지 않습니까?

제가이 주제에 관해 알게 된 유일한 정보는 볼륨을 구성하는 다각형이 상당히 커질 수 있다는 것입니다. 섀도우 볼륨은 시스템 요구 사항이 훨씬 높을 수 있지만, 그렇다면 2004 년에 섀도우 볼륨을 어떻게 사용하지 못했습니까?

이 질문은 섀도우 매핑 대 섀도우 볼륨에만 국한된 것이 아니라 풀 제품에서 사용 된 것으로 유일하게 다른 기술에 대한 많은 정보를 찾을 수 없었습니다.


3
참고 사항-Doom 3은 그날 성능이 매우 높았으며 일부 최신 시스템에서도 여전히 고르지 않습니다 (그리고 여기에서는 실제로 부적절하지는 않지만 통합 GPU에 대해 이야기하고 있지 않습니다. 나이 때문에 ...). 그림자와 조명 이 작동하지 않는 많은 컴퓨터에서 실행되는 것을 보았습니다 . 당연히 게임에는 그림자가 복잡해지면서 많은 복잡성이 있으며 Doom 3은 수많은 컴퓨터 구성에서 현실감있는 그래픽이 얼마나 어려운지 보여주는 좋은 예입니다.
Luaan

1
Doom 3은 개발이 시작된 시간보다 몇 년 앞서있었습니다 (적어도 그래픽 API의 선택이 주어짐). 여러 세대의 하드웨어 사전 쉐이더 모델 2.0을 처리 할 수있는 백엔드가 있었으며 엔진의 약 1/4은 거의 휴대 할 수 없었으며 (GLSL 이전 버전) 나머지 3/4는 고대 NV 및 ATI 하드웨어 확장을위한 코드 경로입니다. 게임이 출시 될 당시에는 관련이 없었습니다. 스텐실 섀도우 볼륨의 선택은 아마도 가장 작은 문제 일 것입니다.
Andon M. Coleman

답변:


48

쉐도우 매핑과 스텐실 섀도우 (그림자 볼륨)는 분명히 두 가지입니다. 두 가지를 비교할 것입니다. 섀도우 매핑의 가장 명백한 단점과 스텐실 섀도우의 장점을 지적 했으므로 그 반대의 경우를하겠습니다.

스텐실 그림자 단점

  1. 그림자는 캐스팅 메쉬의 모양과 일치합니다. 이것은 매우 제한적 이며 아마도 스텐실 그림자를 사용하지 않는 가장 큰 기술적 이유 일 것입니다 . 나무 잎, 덤불, 철사 울타리, 천의 찢기 및 기타 일반적인 그림자 투사 게임 요소는 알파 투명도를 사용하여 객체의 모양을 정의합니다. 그러나 스텐실 그림자는 메시와 일치하지만 메시에서 텍스처의 가시적 인 부분이 아니기 때문에 그러한 오브젝트에는 사용할 수 없습니다. 예를 들어, 나무의 나뭇잎 무리는 일반적으로 쿼드의 나뭇잎 무리의 질감입니다. 스텐실 그림자는 쿼드 자체의 그림자 만 표시 할 수 있습니다 (쿼드가 닫힌 메쉬가 아니기 때문에 문제가 발생하지만, 이것은이 답변에 대해 건너 뛸 약간의 세부 사항입니다. 일반적으로 해결할 수 있습니다).
  2. 정확한 부드러운 그림자를 수행 할 수 없습니다. Doom 3는 부드러운 그림자를 허용하도록 수정되었습니다. 이 버전 은 적어도 부드러운 그림자에 그림자 매핑을 사용합니다. 또한 하드 그림자를 부드럽게하는 화면 공간 기술을 보았지만 모든 종류의 문제가 발생하기 쉽습니다.
  3. 투명한 물체에는 그림자를 만들 수 없습니다. 이에 대한 해결 방법이 있습니다. 투명 패스의 그림자를 별도의 패스로 렌더링 한 다음 나중에 합성하는 것입니다. 그러나 어려운 해결 방법 외에, 스텐실 그림자의 본질은 화면의 각 픽셀이되도록입니다 중 하나 그림자 여부. 이것은 앞에서 언급 한 것처럼 부드러운 그림자가없는 이유이기도합니다.
  4. Angew가 주석에서 지적한 것처럼 일반적으로 선호되고 가장 강력한 스텐실 그림자 구현 ( "Carmack 's Reverse"라고 함)은 실제로 특허를 받았습니다. (Carmack은 특허를받지 않았으며, 오픈 소스 버전 인 Doom 3을 위해이 문제를 해결해야했습니다.)

그림자 매핑에 찬성

스텐실 그림자에 대해 특별히 나열된 제한이없는 것 외에도 그림자 매핑에는 몇 가지 추가 이점이 있습니다.

  1. 확장 성. 섀도우 매핑은 저렴하거나 완벽 하지는 않지만 ( ed : 스텐실 그림자 도 저렴하지는 않지만 ) 섀도 맵의 해상도를 변경하거나 섀도에 대한 필터링을 변경하여 성능에 대한 충실도를 비교적 쉽게 교환 할 수 있습니다. 이것은 다른 시스템에 대한 쉐도우 품질 / 성능을 조정하기가 비교적 쉽습니다. 당신이 지적했듯이, 이것은 종종 완벽하지는 않지만, 이것의 많은 부분은 플레이어의 지각과 그들이 연주하는 해상도에 달려 있습니다 (화면 해상도가 높을수록 그림자의 방해를 쉽게 볼 수 있습니다) 매핑). Fracture 와 같은 일부 AAA 게임 은 올바른 필터를 선택하고 올바른 노브를 조정하는 것만으로도 그림자 매핑을 통해 놀라운 일을 수행하는 반면, 많은 AAA 게임 은 거기에서 때리고 "충분히 좋은"이라고 말합니다.
  2. 쿠키 (질감 그림자) : 스포트라이트 또는 스테인드 글라스의 질감을 추가하면 모든 종류의 실제 광원을 에뮬레이션 할 수 있습니다. 이것은 스텐실 그림자로도 가능하지만 어쨌든 거의 모든 그림자 매핑 설정이 필요합니다 (물체에 빛의 질감을 투영하는 데 사용되는 것과 동일한 투영 행렬이 그림자 매핑에 사용되는 것과 동일합니다).
  3. 투명한 그림자 : 대부분의 게임은이 방법으로 많이 시도하지 않지만 그림자 매핑을 사용하면 투명한 그림자가 가능합니다. 이전에 언급 한 것처럼 나무 나 울타리 같은 알파 컷 아웃을 의미하는 것이 아니라 연기 나 먼지 같은 부분적으로 투명한 그림자를 의미합니다.

이 목록 중 어느 것도 철저하지 않습니다.

따라서 섀도우 매핑 및 스텐실 섀도우에 대한 관찰 결과는 정확하지만 스텐실 섀도우의 단점은 많은 바람직한 효과를 보여줄 수 있으며 섀도우 매핑에는 몇 가지 장점이 있습니다.


1
아, 나는 대부분의 것들을 고려하지 못했고 잎과 같은 투명한 질감은 상당히 중요한 문제입니다. 답변 해주셔서 감사합니다!
gnoblin

1
문제 없습니다 :)이 중 일부는 놓치기 쉽습니다!
Jibb Smart

8
그림자 볼륨의 또 다른 문제는 깊이 통과는 카메라가 그림자 안에있는 것을 좋아하지 않으며 깊이 실패는 특허를 받았다는 것입니다.
Reinstate Monica

좋은 지적이야, Angew. 저는 스텐실 그림자를 사용하지 않는 이유에 스텐실 그림자를 사용하지 않는 "가장 큰 기술적 이유" 로 사용하지 않는 주된 이유를 설명했습니다 . 특허 문제는 그 자체로 쇼 스토퍼 일 수 있기 때문입니다.
Jibb Smart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.