Level : WORDPRESS BOOK LINKEDIN PATENT Send Mail 동냥하기 hajunho.com

반응형

언리얼 내장 플러그인 분석 - 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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기