Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

서명된 거리 필드 전역 조명(SDFGI)

부호 있는 거리 필드 전역 조명(SDFGI)은 Godot에서 사용할 수 있는 새로운 기술입니다. 이는 모든 세계 크기에 맞게 확장되고 절차적으로 생성된 레벨에서 작동하는 준실시간 전역 조명을 제공합니다.

SDFGI는 동적 조명을 지원하지만 동적 폐색기나 동적 방사 표면은 지원하지 않습니다. 따라서 SDFGI는 :ref:`베이크된 라이트맵 <doc_using_lightmap_gi>`보다 더 나은 실시간 기능을 제공하지만 :ref:`VoxelGI <doc_using_voxel_gi>`보다 실시간 기능은 나쁩니다.

성능 관점에서 볼 때, SDFGI는 Godot에서 가장 까다로운 전역 조명 기술 중 하나입니다. VoxelGI와 마찬가지로 품질을 희생하면서 성능 요구 사항을 조정할 수 있는 설정이 여전히 많이 있습니다.

중요

SDFGI는 모바일 또는 호환성 렌더러가 아닌 Forward+ 렌더러를 사용할 때만 지원됩니다.

더 보기

SDFGI가 귀하의 요구 사항에 적합한지 확실하지 않습니까? Godot 4에서 사용할 수 있는 GI 기술 비교는 :ref:`doc_introduction_to_global_illumination_comparison`를 참조하세요.

시각적 비교

SDFGI 비활성화.

SDFGI 비활성화.

SDFGI 활성화.

SDFGI 활성화.

SDFGI 설정하기

Godot에서 SDFGI는 다음을 활성화하는 데 필요한 최소한의 단계를 갖춘 전역 조명 기술입니다.

  1. MeshInstance 노드의 Global Illumination > Mode 속성이 인스펙터에서 **Static**으로 설정되어 있는지 확인하세요.

  • 가져온 3D 장면의 경우 FileSystem 도크에서 3D 씬 파일을 선택한 후 가져오기 도크에서 베이크 모드를 구성할 수 있습니다.

  1. WorldEnvironment 노드를 추가하고 이에 대한 환경 리소스를 만듭니다.

  2. 환경 리소스를 편집하고 SDFGI 섹션까지 아래로 스크롤하여 펼칩니다.

  3. **SDFGI > 활성화됨**을 활성화합니다. SDFGI는 카메라가 움직일 때 자동으로 따라가므로 (VoxelGI와 달리) 범위를 구성할 필요가 없습니다.

환경 옵션

환경 리소스에는 SDFGI 모양과 품질을 조정하는 데 사용할 수 있는 여러 속성이 있습니다.

  • 폐색 사용: 활성화된 경우 SDFGI는 빛 누출을 찾아서 줄이기 위해 추가 광선을 투사합니다. 이는 성능 비용을 발생시키므로 실제로 필요한 경우에만 이 속성을 활성화하십시오.

  • 스카이 라이트 읽기: 활성화되면 환경 조명이 전역 조명에 표시됩니다. 이 기능은 실외 장면에서는 활성화되어야 하며 실내 장면에서는 비활성화되어야 합니다.

  • 바운스 피드백: 기본적으로 간접 조명은 SDFGI를 사용할 때 한 번만 바운스됩니다. 이 값을 0.0``보다 높게 설정하면 SDFGI가 이상 바운스되어 적은 성능 비용으로 보다 사실적인 간접 조명을 제공합니다. 유효한 값은 일반적으로 씬에 따라 ``0.3``와 ``1.0 사이입니다. 일부 장면에서는 0.5 이상의 값으로 인해 무한 피드백 루프가 발생하여 씬이 몇 초 내에 매우 밝아질 수 있습니다. 간접 조명이 "불규칙하게" 보이는 경우 이 값을 ``0.0``보다 높게 늘려 더욱 균일해 보이는 조명을 얻는 것이 좋습니다. 결과적으로 조명이 너무 밝아지면 **에너지**를 줄여서 보상하세요.

  • 계단식: 값이 높을수록 더 자세한 GI 정보(및/또는 최대 거리)가 생성되지만 CPU 및 GPU 비용이 훨씬 더 많이 듭니다. 특히 카메라가 빠르게 움직일 때 더 많은 캐스케이드를 갖는 데 따른 성능 비용이 증가하므로 카메라가 빠르게 움직일 경우 이를 4 이하로 줄이는 것이 좋습니다.

  • 최소 셀 크기: 가장 가깝고 상세한 캐스케이드에 사용할 최소 SDFGI 셀 크기입니다. 값이 낮을수록 성능은 낮아지지만 간접 조명 및 반사가 더 정확해집니다. 이 설정을 조정하면 Cascade 0 Distance**Max Distance**에도 자동으로 영향을 미칩니다.

  • 캐스케이드 0 거리: 가장 가깝고 상세한 캐스케이드가 끝나는 거리입니다. 값이 클수록 가장 가까운 계단식 전환의 눈에 띄지 않게 되지만 가장 가까운 계단식 배열의 세부 수준은 낮아집니다. 이 설정을 조정하면 최소 셀 크기**최대 거리**에도 자동으로 영향을 미칩니다.

  • 최대 거리: 부호 있는 거리 필드가 계산될 거리를 제어합니다(가장 세부적인 캐스케이드의 경우). SDFGI는 이 거리를 지나면 아무런 영향을 미치지 않습니다. 이 값은 항상 카메라의 Far 값 아래로 설정되어야 합니다. 왜냐하면 보기 거리 이후에는 SDFGI를 계산하는 데 아무런 이점이 없기 때문입니다. 이 설정을 조정하면 Min Cell Size**Cascade 0 Distance**에도 자동으로 영향을 줍니다.

  • Y 스케일: SDFGI 프로브가 *수직*으로 얼마나 멀리 떨어져 있는지 제어합니다. 기본적으로 수직 확산은 수평 확산과 동일합니다. 그러나 대부분의 게임 장면은 수직 방향이 아니기 때문에 Y 스케일을 75% 또는 심지어 ``50%``로 설정하면 성능에 영향을 주지 않고 더 나은 품질을 제공하고 빛 누출을 줄일 수 있습니다.

  • 에너지: SDFGI의 간접 조명에 대한 밝기 배율입니다.

  • 일반 바이어스: SDFGI의 프로브 광선 바운스에 사용할 일반 바이어스입니다. **프로브 바이어스**와 달리 이는 메시의 법선과 관련된 값만 증가시킵니다. 이렇게 하면 바이어스 조정이 더욱 미묘해지고 아무 이유 없이 바이어스가 너무 많이 증가하는 것을 방지할 수 있습니다. 간접 조명이나 반사에서 줄무늬 아티팩트가 발견되면 이 값을 늘리십시오.

  • 프로브 바이어스: SDFGI의 프로브 광선 바운스에 사용할 바이어스입니다. 간접 조명이나 반사에서 줄무늬 아티팩트가 발견되면 이 값을 늘리십시오.

쿼터니언(quaternions) 으로 보간하기

빛이 방출하는 간접 에너지의 양은 빛의 색상, 에너지 간접 에너지 특성에 따라 결정됩니다. 특정 조명이 방출하는 직접광의 양에 영향을 주지 않고 간접 에너지를 다소간 방출하게 하려면 Light3D 검사기에서 간접 에너지 속성을 조정하세요.

SDFGI를 사용할 때 올바른 시각적 효과를 보장하려면 씬(정적 또는 동적)의 *목적*에 따라 메시 및 조명의 전역 조명 속성을 구성해야 합니다.

이렇게 하고 싶어하는 몇 가지 이유가 있습니다:

  • 비활성화됨: SDFGI 생성 시 메시가 고려되지 않습니다. 메시는 씬에서 간접 조명을 받지만 씬에 간접 조명을 제공하지는 않습니다.

  • 정적(기본값): SDFGI 생성 시 메시가 고려됩니다. 메시는 씬에 대한 간접 조명을 수신하고 *제공*합니다. SDFGI가 생성된 후 메시가 어떤 방식으로든 변경되면 카메라는 SDFGI가 재생성될 수 있도록 객체에서 멀어졌다가 다시 객체 가까이로 이동해야 합니다. 또는 SDFGI를 껐다가 다시 켤 수도 있습니다. 둘 다 수행되지 않으면 간접 조명이 올바르지 않게 보입니다.

  • 동적(SDFGI에서는 지원되지 않음): SDFGI 생성 시 메시가 고려되지 않습니다. 메시는 씬에서 간접 조명을 받지만 씬에 간접 조명을 제공하지는 않습니다. 이는 SDFGI를 사용할 때 **비활성화* 베이킹 모드와 동일하게 작동합니다.*

또한 조명에 사용할 수 있는 베이크 모드는 3가지입니다(DirectionalLight3D, OmniLight3D 및 SpotLight3D).

  • 비활성화됨: SDFGI 베이킹 시 조명이 고려되지 않습니다. 조명은 씬에 간접 조명을 제공하지 않습니다.

  • 정적: SDFGI 베이킹 시 조명이 고려됩니다. 조명은 씬에 간접 조명을 제공합니다. 베이킹 후 어떤 방식으로든 조명이 변경되면 카메라가 조명에서 멀어지고 뒤로 이동할 때까지 간접 조명이 올바르지 않게 보입니다(이로 인해 SDFGI가 다시 베이킹됩니다). 잘못된 것으로 보일 것입니다. 확실하지 않은 경우 레벨 조명에 이 모드를 사용하십시오.

  • 동적(기본값): SDFGI 베이킹 시 조명이 고려되지 않지만 여전히 실시간으로 씬에 간접 조명을 제공합니다. 이 옵션은 정적**에 비해 속도가 느립니다. 게임플레이 중에 크게 변하는 조명에는 **동적 전역 조명 모드만 사용하세요.

참고

빛이 방출하는 간접 에너지의 양은 색상, 에너지 간접 에너지 특성에 따라 달라집니다. 특정 조명이 방출하는 직접광의 양에 영향을 주지 않고 간접 에너지를 다소간 방출하게 하려면 Light3D 검사기에서 간접 에너지 속성을 조정하세요.

더 보기

일반적인 사용 권장 사항은 :ref:`doc_introduction_to_global_illumination_gi_mode_recommendations`를 참조하세요.

SDFGI 성능 및 품질 조정

SDFGI는 상대적으로 까다롭기 때문에 최신 전용 GPU가 장착된 시스템에서 최고의 성능을 발휘합니다. 구형 전용 GPU 및 통합 그래픽에서는 합리적인 성능을 얻으려면 설정을 조정해야 합니다.

프로젝트 설정' 렌더링 > 전역 조명 섹션에서 SDFGI 품질을 여러 가지 방법으로 조정할 수도 있습니다.

  • Sdfgi > 프로브 레이 수: 값이 높을수록 GPU 사용량이 높아지는 대신 품질이 향상됩니다. 이 값을 너무 낮게 설정하면 투사되는 광선 수가 매우 적기 때문에 표면에 간접 조명의 눈에 띄는 "반점"이 나타날 수 있습니다.

  • Sdfgi > 수렴할 프레임: 값이 높을수록 품질이 향상되지만 GI는 완전히 수렴하는 데 더 많은 시간이 걸립니다. 이 설정의 효과는 씬을 처음 로드할 때나 비활성화 이외의 베이킹 모드가 있는 조명이 빠르게 움직일 때 특히 두드러집니다. 이 값을 너무 낮게 설정하면 투사되는 광선 수가 매우 적기 때문에 표면에 간접 조명의 눈에 띄는 "반점"이 생길 수 있습니다. 씬의 조명에 GI에 기여하는 빠르게 움직이는 조명이 없는 경우 성능에 영향을 주지 않고 품질을 향상하려면 이를 ``30``로 설정하는 것이 좋습니다.

  • Sdfgi > 조명을 업데이트할 프레임: 값이 낮을수록 GPU 사용량이 높아지는 대신 움직이는 조명이 더 빠르게 반사됩니다. 씬의 조명에 GI에 기여하는 빠르게 움직이는 조명이 없는 경우 이를 ``16``로 설정하여 성능을 향상시키는 것이 좋습니다.

  • Gi > 절반 해상도 사용: 활성화되면 SDFGI와 VoxelGI 모두 절반 해상도에서 GI 버퍼 렌더링을 사용합니다. 예를 들어 3840×2160으로 렌더링할 때 GI 버퍼는 1920×1080 해상도로 계산됩니다. 이 옵션을 활성화하면 GPU 시간이 많이 절약되지만 얇은 디테일 주변에 눈에 띄는 앨리어싱이 발생할 수 있습니다.

SDFGI 렌더링 성능은 계단식 배열 수와 환경 리소스에서 선택한 셀 크기에 따라 달라집니다(위 참조).

성능

SDFGI는 계단식 특성으로 인해 몇 가지 단점이 있습니다. 카메라가 움직일 때 간접 조명에서 계단식 이동이 보일 수 있습니다. 이는 캐스케이드 크기를 조정하거나 안개를 추가하여 완화할 수 있습니다(멀리 있는 캐스케이드 이동이 덜 눈에 띄게 됩니다).

또한 카메라가 너무 빠르게 움직이면 성능이 저하됩니다. 이 문제는 두 가지 방법으로 해결할 수 있습니다.

  • 주어진 상황에서 카메라가 너무 빨리 움직이지 않도록 합니다.

  • 카메라를 고속으로 이동해야 하는 경우 환경 리소스에서 SDFGI를 일시적으로 비활성화하고, 카메라 속도가 느려지면 SDFGI를 활성화합니다.

SDFGI가 활성화되면 전역 조명이 완전히 수렴되는 데에도 시간이 걸립니다(기본적으로 25프레임). 이는 GI가 여전히 수렴하는 동안 눈에 띄는 전환 효과를 생성할 수 있습니다. 이를 숨기려면 전체 뷰포트에 걸쳐 있는 ColorRect 노드를 사용하고 AnimationPlayer 노드를 사용하여 장면을 전환할 때 페이드 아웃할 수 있습니다.

부호 있는 거리 필드는 카메라가 캐스케이드 안팎으로 이동할 때만 업데이트됩니다. 즉, 멀리 있는 위치에서 형상이 수정되면 카메라가 가까워지면 전역 조명 모양이 정확해집니다. 그러나 베이크 모드가 정적 또는 **동적**으로 설정된 근처 객체가 이동되면(예: 문) 카메라가 객체에서 멀어질 때까지 전역 조명이 올바르지 않게 나타납니다.

SDFGI의 선명한 반사는 불투명한 재질에서만 볼 수 있습니다. 투명한 재질은 재질의 거칠기가 0.2보다 낮더라도 거친 반사만 사용합니다.