유니티 그림자

Desktop!

유니티 프로 어떤 빛에서도 실시간 shadows 를 사용하는 것이 가능함. 객체는 서로에게 그림자를 만들수 있으며 자기 자신에게도 ("self shadowing")에게도 그림자를 드리울 수 있다. 모든 Lights의 형태는 - Directional, Spot 과 Point – 그림자를 지원함.

그림자를 이용하는 것은 Light에서 Hard Shadows 또는 Soft Shadows 를 선택하는 것만큼 쉽다. 그러나 그림자의 최대 퀄리티와 성능을 원한다면 몇가지 고려해야 하는 것이 있다.

Shadow Troubleshooting 페이지는 흔한 그림자 문제들에 대한 해결책을 포함함.

신기하게도 최고의 그림자는 실시간이 아닌 것들 이다. 사용자 게임의 기하와 빛이 정적이면 사용자의 3D 프로그램에서 빛맵을 미리 계산하라. 그림자를 오프라인으로 미리 계산하는 것은 항상 실시간으로 계산하는 것보다 더 나은 퀄리티와 성능을 보여준다. 이제 실시간 그림자에 대해 말해 보겠다…

그림자 퀄리티 고치기

유니티는 그림자를 보여주기위해 shadow maps라는 것을 사용함. 그림자 맵핑은 텍스쳐 기반의 접근인데 빛에서 나와 화면에 뿌려지는 "shadow textures"라 생각하면 아주 쉽다. 그래서 다른 보통의 텍스쳐와 마찬가지로 그림자 맵핑의 퀄리티는 다음의 두가지 요소에 주로 의존 함:

  • 그림자 맵의 해상도(resolution) (크기). 그림자 맵이 커질수록 그림자 퀄리티는 향상된다.
  • 그림자 filtering. Hard shadows는 가장 가까운 그림자 맵 픽셀을 차지함. Soft shadows는 몇가지 그림자 맵 픽셀의 평균을 가지는데 이것은 부드럽게 보이는 그림자를 가능하게 함(그러나 소프트 그림자는 렌더하기 더 힘이듭니다).

다른 Light 타입은 그림자 계산을 위해 다른 알고리즘을 사용함.

  • 방향 빛에서 그림자 퀄리티를 위한 가장 중요한 설정은 Quality Settings에서 찾을 수 있는 Shadow DistanceShadow Cascades이다. Shadow Resolution 도 중요하지만 방향 빛의 퀄리티를 위해서는 가장 먼저 그림자 거리를줄이는 일이다. 모든 방향 빛에 대한 정보는 Directional Shadow Details를 보라.
  • 스포트라이트와 포인트 빛에서는 Shadow Resolution가 그림자 맵의 크기를 결정함. 또한 화면의 작은 부분을 커버하는 빛에서는 작은 그림자맵 해상도가 쓰이다.

어떻게 그림자 맵 크기가 계산되는지에 대한 제세한 사항은 Shadow Size Details를 보라.

그림자 성능

실시간 그림자는 고 성능을 필요로므로 가끔 씩만 사용 하도록 함. 그림자를 렌더할 각 빛을 위해선 첫째 어떤 잠재적으로 그림자를 내는 것은 그림자 맵에서 렌더되야 하고 그럼 모든 그림자를 받는 것은 그 그림자 맵에서 렌더되야 함. 이것은 그림자 비추는 것은 픽셀 빛보다 비싼 작업 이지만 컴퓨터 또한 빨라지고 있지 않습니까!

Soft shadowsHard shadows를 렌더하는 것보다 비싼 작입이다. 비용은 전적으로 그래픽 카드에 있다(단지 더 긴 그림자이다). 그래서 하드 대 소프트 그림자는 CPU나 메모리 사용에는 전혀 영향을 주지 않는다.

Quality SettingsShadow Distance이라 불리는 설정을 포함함 – 이것은 그림자가 카메라에서 얼마나 멀리 그려지는가 이다. 보통 카메라에서 500미터 떨어진 그림자를 계산하고 보여주는 것은 말이 되지 않기 때문에 가능한 낮은 그림자 거리를 사용하라. 이것은 성능에 도움을 줄 것이다(그리고 방향 빛 그림자의 퀄리티를 향상 시킬 것이다. 위를 보라).

hardware

그림자를 위한 하드웨어 지원

내장된 그림자는 조각 프로그램(pixel shader 2.0)이 가능한 그래픽 카드를 필요로 함. 아래는 지원되는 카드를 보여준다:

  • 윈도우즈:
    • ATI Radeon 9500이상, Radeon X series, Radeon HD series.
    • NVIDIA GeForce 6xxx, 7xxx, 8xxx, 9xxx, GeForce GT, GTX series.
    • Intel GMA X3000 (965) 이상.
  • On Mac OS X:
    • Mac OS X 10.4.11이상.
    • ATI Radeon 9500 이상, Radeon X, Radeon HD series.
    • NVIDIA GeForce FX, 6xxx, 7xxx, 8xxx, 9xxx, GT, GTX series.
    • Intel GMA 950 이상.

소프트 그림자는 드라이버 버그로 비활성화 되어있다(대신 하드 그림자가 사용된다).

주의

  • Forward rendering path는 한 방향의 그림자 비추기만을 지원함. Vertex Lit 렌더링 경로는 실시간 그림자를 지원하지 않는다.
  • Vertex-lit 빛은 그림자를 가지지 않는다.
  • Vertex-lit 재료는 그림자를 받지 않는다(그러나 비추기는 함).
  • 투명한 객체는 그림자를 비추거나 받지 않는다. 투명한 Cutout 객체는 그림자를 비추거나 받을수 있다.

iOS!

이기능은 현재 iOS에서는 지원되지 않는다.

Android!

이기능은 현재 안드로이드에서는 지원되지 않는다.

역링크