그림자는 어쨌든 빛이 없는 모든 곳에 자연스럽게 생기기만 하면 되기 때문에 설정하고 관리하기가 간단해 보일 수 있습니다. 하지만 실시간으로 렌더링되는 게임에서는 그림자 나름의 기술적 고충과 제약이 존재합니다.
Stingray는 그림자 맵을 사용하여 동적 라이트에서 생기는 그림자를 시뮬레이트합니다. 그림자 맵의 원리는 그림자를 투사하는 각 라이트가 장면에서 자신의 관점으로부터 깊이 맵을 생성하는 것입니다. 이 깊이 맵이 라이트 소스로부터 그 조명이 도달하는 장면 내 모든 위치까지의 거리를 기록합니다. 렌더러는 카메라의 관점에서 장면 내 오브젝트를 그리면서 각 표면을 라이트의 로컬 공간에 투영합니다. 그런 다음, 라이트의 깊이 맵을 기준으로 표면의 위치를 확인하여 해당 표면이 라이트 소스로부터 가려져야 하는지 여부를 판단합니다.
대개 태양을 나타내는 장면 내 첫 번째 방향 라이트는 계단식 그림자 맵이라는 특별한 유형의 그림자 맵을 가집니다. 이 맵은 본질적으로 각각 카메라로부터 서로 다른 거리에 위치하는 그림자를 처리하는 여러 그림자 맵의 조합입니다. 이 상황에서는 카메라에 가까이 있는 오브젝트가 멀리 있는 오브젝트보다 그림자가 훨씬 세부적으로 묘사될 수 있습니다.
참고: 수준 내 첫 번째 방향 라이트만 그림자를 투사할 수 있습니다.
그림자 맵을 게임에서 사용하는 데 있어 그 기술적인 세부 사항까지 익힐 필요는 없습니다. 더 자세히 알아보려면 Wikipedia 또는 이 튜토리얼에서 살펴볼 수 있습니다.
단, 그림자 투사 라이트를 추가할 때마다 각 프레임에서 게임 표준을 렌더링하기 위한 성능 오버헤드가 커질 수 있다는 점을 기억해 두십시오. 때문에 불필요한 그림자 투사 라이트는 생성하지 않는 것이 좋습니다.
Stingray는 그림자를 투사하는 라이트 및 오브젝트를 제어하고, 그림자 매핑에 대한 기술적 매개변수를 설정하는 데 사용할 수 있는 몇 가지 추가 매개변수를 제공합니다. 이 매개변수는 이후 섹션에서 설명합니다.
각 라이트 소스는 라이트의 직접 조명이 그림자를 생성할지 여부를 결정하는 Cast Shadows 특성을 가지고 있습니다. 이 옵션을 비활성화하면 다른 오브젝트에 의해 가려진 표면까지 포함하여 라이트가 자신의 효과 볼륨 내 모든 표면에 빛을 비춥니다. 라이트 소스 특성을 참조하십시오.
유닛 내 각 메시는 라이트가 비출 때 메시가 그림자를 투사할지 여부를 결정하는 Cast Shadows 옵션을 가지고 있습니다. 이 특성을 설정하려면 Unit Editor에서 유닛을 열고, 메시를 선택한 다음 Unit Editor의 Properties 패널에서 해당 설정을 찾습니다.
오브젝트가 그림자를 투사하도록 하려면 라이트와 오브젝트 모두 Cast Shadows 특성이 활성화되어야 합니다.
음영처리 환경의 전역 그림자 품질 매개변수는 최대 그림자 거리와 그림자 모서리의 선명도를 제어합니다. 음영처리 환경 특성을 참조하십시오.
각 라이트에는 구성 가능한 Shadow Bias 설정이 있는데, 이 설정은 그림자 맵을 장면에 적용할 때 약간의 거리만큼 이 그림자 맵을 오프셋합니다. 이 값을 조정하면 그림자 맵에서 발생할 수 있는 몇 가지 공통 아티팩트를 해결하는 데 도움이 될 수 있습니다.
깜박거림, 밴딩(주황색 정육면체에 발생) 또는 "Shadow Acne"(바닥에 보이는 것 같은 물결 패턴)가 보이는 경우 이 값을 높이면 도움이 될 수도 있습니다.

오브젝트의 그림자가 오브젝트의 베이스로부터 오프셋 또는 분리된 것처럼 나타나는 "피터팬" 아티팩트가 보이는 경우에는 이 값을 낮추는 것이 도움이 될 수 있습니다. 피터팬 아티팩트는 오브젝트가 표면 위에 떠있는 것처럼 보이게 합니다.

settings.ini 파일은 그림자 맵 텍스처 크기 및 필터 품질을 제어하는 일부 렌더 설정을 제공합니다. 이 매개변수의 기본값을 미세조정하면서 성능 및 메모리 사용량과 그림자 품질 간의 절충점을 찾아볼 수 있습니다.
Stingray 엔진 settings.ini 파일 참조를 참조하십시오.