언리얼 내장 플러그인 분석 - 2024 updated with ChatGPT-4o
// Copyright Epic Games, Inc. All Rights Reserved.
using EpicGames.Core;
using UnrealBuildTool;
[SupportedPlatformGroups("Windows")]
public class D3D11RHI : ModuleRules
{
public D3D11RHI(ReadOnlyTargetRules Target) : base(Target)
{
PrivateIncludePaths.Add("../Shaders/Shared");
PrivateDependencyModuleNames.AddAll(
"CoreUObject",
"Engine",
"RHICore",
"RenderCore"
);
PublicDependencyModuleNames.AddAll(
"Core",
"RHI"
);
if (Target.IsInPlatformGroup(UnrealPlatformGroup.Windows))
{
PrivateDependencyModuleNames.Add("HeadMountedDisplay");
}
AddEngineThirdPartyPrivateStaticDependencies(Target, "AMD_AGS");
AddEngineThirdPartyPrivateStaticDependencies(Target, "DX11");
AddEngineThirdPartyPrivateStaticDependencies(Target, "IntelExtensionsFramework");
AddEngineThirdPartyPrivateStaticDependencies(Target, "IntelMetricsDiscovery");
AddEngineThirdPartyPrivateStaticDependencies(Target, "NVAftermath");
AddEngineThirdPartyPrivateStaticDependencies(Target, "NVAPI");
}
}
이 코드 스니펫은 Unreal Engine의 D3D11RHI 모듈의 설정 파일입니다. 이 파일은 모듈이 빌드될 때 어떤 설정과 의존성을 가져야 하는지를 정의합니다. 분석을 위해 몇 가지 주요 부분을 설명하겠습니다.
### 모듈 선언
```csharp
using EpicGames.Core;
using UnrealBuildTool;
[SupportedPlatformGroups("Windows")]
public class D3D11RHI : ModuleRules
{
public D3D11RHI(ReadOnlyTargetRules Target) : base(Target)
{
...
}
}
```
- `using EpicGames.Core;`와 `using UnrealBuildTool;`: EpicGames와 UnrealBuildTool 네임스페이스를 사용하여 모듈 규칙과 빌드 도구를 활용합니다.
- `[SupportedPlatformGroups("Windows")]`: 이 모듈은 Windows 플랫폼 그룹을 지원합니다.
- `public class D3D11RHI : ModuleRules`: D3D11RHI는 ModuleRules를 기반으로 하는 클래스입니다. 이 클래스는 모듈의 빌드 규칙을 정의합니다.
- `public D3D11RHI(ReadOnlyTargetRules Target) : base(Target)`: 생성자로, ReadOnlyTargetRules라는 빌드 타겟 규칙을 받아옵니다.
### Include Paths
```csharp
PrivateIncludePaths.Add("../Shaders/Shared");
```
- `PrivateIncludePaths`: 해당 모듈에만 적용되는 포함 경로를 설정합니다. `../Shaders/Shared` 디렉터리를 포함하도록 설정되어 있습니다.
### 의존성 모듈
```csharp
PrivateDependencyModuleNames.AddAll(
"CoreUObject",
"Engine",
"RHICore",
"RenderCore"
);
PublicDependencyModuleNames.AddAll(
"Core",
"RHI"
);
```
- `PrivateDependencyModuleNames`: 비공개 의존 모듈 목록입니다. 다른 모듈에서 이 모듈을 직접적으로 참조하지 않도록 합니다.
- "CoreUObject": Unreal Engine의 기본 객체 시스템.
- "Engine": Unreal Engine의 핵심 엔진 기능.
- "RHICore": Render Hardware Interface 코어 기능.
- "RenderCore": 렌더링 코어 기능.
- `PublicDependencyModuleNames`: 공개 의존 모듈 목록입니다. 다른 모듈에서 이 모듈을 사용할 때 참조 가능합니다.
- "Core": 기본 코어 기능.
- "RHI": Render Hardware Interface 기능.
### 플랫폼 특정 설정
```csharp
if (Target.IsInPlatformGroup(UnrealPlatformGroup.Windows))
{
PrivateDependencyModuleNames.Add("HeadMountedDisplay");
}
```
- `Target.IsInPlatformGroup(UnrealPlatformGroup.Windows)`: 빌드 타겟이 Windows 플랫폼 그룹에 속하는지 확인합니다.
- Windows 플랫폼의 경우:
- "HeadMountedDisplay": 헤드 마운트 디스플레이(예: VR)의 지원을 추가합니다.
### 서드 파티 라이브러리
```csharp
AddEngineThirdPartyPrivateStaticDependencies(Target, "AMD_AGS");
AddEngineThirdPartyPrivateStaticDependencies(Target, "DX11");
AddEngineThirdPartyPrivateStaticDependencies(Target, "IntelExtensionsFramework");
AddEngineThirdPartyPrivateStaticDependencies(Target, "IntelMetricsDiscovery");
AddEngineThirdPartyPrivateStaticDependencies(Target, "NVAftermath");
AddEngineThirdPartyPrivateStaticDependencies(Target, "NVAPI");
```
- `AddEngineThirdPartyPrivateStaticDependencies(Target, "라이브러리명")`: 필요한 서드 파티 라이브러리를 추가합니다.
- "AMD_AGS": AMD GPU Services.
- "DX11": DirectX 11.
- "IntelExtensionsFramework": Intel 확장 프레임워크.
- "IntelMetricsDiscovery": Intel 메트릭스 디스커버리.
- "NVAftermath": NVIDIA 크래시 애프터매스.
- "NVAPI": NVIDIA API.
이 코드는 Unreal Engine D3D11RHI 모듈이 빌드될 때 필요한 다양한 의존성과 설정을 명확하게 정의하고 있습니다. 이 정보를 통해 모듈의 빌드 환경과 의존 사항을 이해할 수 있습니다.
커피숖...
'3D world > Unreal Engine Plug-ins' 카테고리의 다른 글
NDI (0) | 2019.09.12 |
---|---|
unreal + rider (0) | 2019.03.13 |
WindowsPlatformFeatures (0) | 2019.02.18 |
AudioMixerXAudio2 (0) | 2019.01.22 |
메신저 서비스를 할 때 고려해야 할 점. (0) | 2019.01.07 |
최근댓글