TomTsagk의 정답을 확장하면서 게임이 왜 이런 식으로 작동하는지에 대해 조금 더 설명하는 것이 도움이 될 것이라고 생각했습니다.
게임의 빛은 소스, 표면, 카메라로 이동하는 데 방해가되지 않습니다.
주어진 빛을 기준으로 표면의 각 픽셀을 얼마나 밝게 그리는지 알아 내기 위해 표면의 마주 보는 방향과 표면의이 점에서 광원까지의 방향을 사용하는 수학 공식을 사용합니다. 그것이 바로 그 방향입니다. 빛이 실제로이 픽셀에 도달하는지 확인하기 위해 광선을 캐스트하지는 않습니다. 왜냐하면 화면의 모든 픽셀에 대해 그렇게하고 장면의 모든 상세한 지오메트리에 대해 광선을 확인하기 때문입니다. 일반적으로 실시간 게임에는 여전히 너무 비쌉니다.
따라서 기본적으로 게임 라이트는 그림자를 드리 우지 않습니다. 그림자 캐스터가 있어도 빛의 방향은 동일하게 유지되므로 수학은 동일한 밝기 값을 제공합니다.
그림자를 시뮬레이트하려면 별도로 수행해야합니다. 한 가지 일반적인 방법은 그림자 맵이라고하는 것입니다. 이 버전에서는 장면을 가리기 전에 먼저 조명이 카메라 인 것처럼 각 조명의 관점에서 장면을 렌더링합니다. 각 픽셀의 깊이는 화면 외부 텍스처에 저장됩니다.
그런 다음 장면을 가리면 광원에서이 픽셀의 수학적 거리와 그림자 맵의 해당 픽셀에서 기록한 깊이를 비교할 수 있습니다. 그림자 맵 깊이가 더 작 으면 여기와 빛 사이에 다른 표면이 있음을 의미하고 대신이 픽셀을 그림자로 그립니다.
아티팩트 / 앨리어싱을 줄이면서 이러한 맵 기반 그림자를 더 멋지게 보이게하는 멋진 기술이 많이 있지만 지금은 그에 대해 설명하겠습니다. 말하기에는 충분하지만 일반적으로 무료가 아닙니다.
각 라이트의 관점에서 다시 전체 장면을 렌더링 (최대)해야합니다. 모든 방향 (북쪽, 남쪽, 동쪽, 서쪽, 위, 아래)으로 비춰지는 포인트 라이트 인 경우 최대 6 배이므로 다시 사용해야합니다. -무언가가 움직일 때마다 그림자 맵을 렌더링하면 매우 비쌀 수 있습니다.
따라서 게임은 종종 그림자가 잘 보이도록 방향성 태양 광과 같이 장면에서 가장 중요한 조명에 렌더링 예산을 집중시킵니다. 폭발의 섬광과 같은 작고 수명이 짧은 작은 조명은 폐쇄 장치를 약간 지나서 누출되는 경우 종종 용서할 수 있습니다. 모든 추가 그림자 맵 렌더링 및 계산으로 인해 렌더링 비용이 갑자기 증가하여 프레임 속도의 장애보다 플레이어에게 더 입맛을 잡는 경우가 많습니다. 특히 유동성이 픽셀 완성보다 중요한 바쁜 액션 장면이라면.