TECHARTNOMAD | TECHARTFLOWIO.COM

TECH.ART.FLOW.IO

[번역] UE5 셰이더 디버깅 툴 - Microsoft PIX

jplee 2024. 7. 16. 14:06

저작 : 徐門子美

텐센트 엔진 그래픽 프로그래머

 

렌더독은 DX12 셰이더를 디버깅할 때 다음과 같은 문제가 있습니다:
● 많은 렌더링 명령이 누락되었거나 재생할 수 없습니다.
● 셰이더 심볼 테이블이 누락되어 소스 코드를 디버깅할 수 없습니다.
● 렌더링 시간 지속 시간의 값이 정확하지 않습니다.
Microsoft PIX를 사용해 보니 정말 좋은 냄새가 나고 함정을 밟는 과정을 간단히 기록합니다.。

디버깅 시 엔진 쪽

엔진의 기본 RHI가 DX12인지 확인하세요:

두 플러그인 모두 엔진 충돌의 원인이 되는 dxgi.DLL을 로드하려고 시도하므로 RenderDoc 플러그인을 먼저 꺼야 하며, 기본적으로 켜져 있는 PIX 플러그인이 켜져 있는지 확인해야 합니다:

엔진에서 셰이더 컴파일 구성 파일을 변경합니다:
ConsoleVariables.ini

r.ShaderDevelopmentMode=1
r.Shaders.Optimize=0
r.Shaders.Symbols=1
r.Shaders.ExtraData=1

r.D3D12.AutoAttachPIX=1

엔진을 재시작하면 엔진 프롬프트가 표시되고 PrScrn(인쇄 화면)을 눌러 프레임을 잘라냅니다:

그러나 일부 운영체제의 경우 PIX의 기본 프레임 잘라내기 단축키가 F12 또는 PrScrn과 같은 시스템 단축키와 충돌하는 경우가 있으므로 PIX로 이동하여 추가 프레임 잘라내기 단축키를 변경할 수 있습니다:

PIX를 열고 언리얼 프로세스를 찾아 PIX에 연결합니다:

언리얼에서 PrintSceen 키 또는 F12 키를 눌러 프레임을 잘라냅니다:


두 번 클릭하면 분석을 열어야하며 분석을 열려면 Windows 운영 체제 개발자 모드 개발자를 열어야하며 작업은 다음과 같습니다.

Windows11

분석 플레이 버튼을 누르면 언리얼 에디터인 경우 프로세스가 종료되고, 패키지 게임 패키지인 경우 플레이 도중 프레임 자르기를 지원합니다:

PIX 공통 기능 포털

TimingData 컬렉션을 엽니다:

그런 다음 디버깅해야 하는 DrawCall을 찾을 수 있습니다:

특정 셰이더 리소스 및 지침은 파이프라인 탭에서 확인할 수 있습니다:

마우스 왼쪽 버튼에서 픽셀 하나를 선택해도 Debug Pixel이 가능하며, 어두운 색 모드는 매우 쿨하지만 Shader 코드가 잘 보이지 않습니다. 여전히 흰색 구식 프로그래머의 테마 색상을 사용합니다:

언리얼에서 셰이더 심볼 쓰기를 활성화했기 때문인데, 그렇지 않은 경우 컴파일 옵션의 플래그를 다음과 같이 변경하면 됩니다.:Flags /Od /Zi 셰이더 컴파일의 심볼릭 최적화를 제거할 수 있습니다:

안타깝게도 PIX는 현재 DX11 및 Vulkan 디버깅을 지원하지 않습니다.

DX12 파이프라인 소개

마지막으로 몇 가지 DX12 파이프라인 용어의 의미를 소개합니다:

파이프라인 상태 현재 렌더링 파이프라인의 파라미터와 상태입니다.

루트 서명 루트 서명은 셰이더 애플리케이션과 파이프라인 상태 오브젝트(PSO) 간의 리소스 바인딩 인터페이스를 정의합니다.루트 서명은 셰이더에서 액세스할 수 있는 리소스(예: 상수 버퍼, 텍스처, 샘플러 등)의 유형, 양, 액세스 방법을 지정합니다.이는 효율적인 리소스 관리 및 액세스를 위한 기반을 제공하며 Vulkan의 DescriptorSetLayout에 해당합니다.

IA는 입력 어셈블러를 의미합니다 .입력 어셈블러는 그래픽 렌더링 파이프라인의 첫 번째 단계로, 버텍스 데이터(예: 버텍스 위치, 색상, 텍스처 좌표 등)와 인덱스 데이터를 읽은 다음 이 데이터를 후속 파이프라인 단계에서 처리할 튜플(예: 점, 선, 삼각형)로 조립하는 작업을 담당합니다.

VS 버텍스 셰이더.

PS 픽셀 셰이더.

OM은 출력 병합을 의미합니다 .출력 병합은 그래픽 렌더링 파이프라인의 마지막 단계로 픽셀 셰이더의 출력을 렌더링 타겟에 병합하는 작업을 담당합니다.이 프로세스에는 블렌딩, 뎁스 및 스텐실 테스트와 같은 다양한 작업이 포함되며 마지막으로 프레임 버퍼 또는 렌더 대상에 픽셀 값을 기록합니다.

참조 링크

 

GPU Captures

A PIX GPU capture records all the Direct3D 12 API calls made by the game, including their parameter data.  These calls can later be replayed, which enables a range of debugging and analysis features. It is not always possible for PIX to successfully take

devblogs.microsoft.com

 

 

Download

The PIX downloads on this website are for use on Windows 10. If you are an Xbox developer, use the version of PIX that is included with the XDK instead.

devblogs.microsoft.com

 

 

Enable your device for development - Windows apps

Activate Developer Mode on your PC to develop apps.

learn.microsoft.com

 


원문.

 

https://zhuanlan.zhihu.com/p/706117237

 

zhuanlan.zhihu.com