[Startup] ; ================================================================================= ; RenderDoc HLSL 셰이더 디버깅 전용 세션 ; 실행 : UnrealEditor.exe ProjectGray.uproject -skipcompile -AttachRenderDoc -statnamedevents -cvarsini="D:\source\CustomVars.ini" ; 주의 : -gpucrashdebugging 같이 쓰지 말 것(crash 발생) / 이 세션의 GPU 타이밍은 신뢰 불가 ; ================================================================================= ; ; ---------- [필수] HLSL 소스 디버깅 ---------- ; 셰이더 최적화(-Od)를 꺼서 HLSL 변수가 디버거에 그대로 남게 함 r.Shaders.Optimize=0 ; 디버그 정보(PDB) 생성 → Saved\ShaderSymbols\PCD3D_SM6에 저장 (RenderDoc Settings > Core > Shader debug search paths 에 등록) r.Shaders.Symbols=1 ; ; ---------- [선택] 셰이더 ---------- ; RenderDoc에 셰이더 이름이 보이게 함 r.Shaders.ExtraData=1 ; 드라이버의 앱별 최적화를 끔 r.DisableEngineAndAppRegistration=1 ; 디버그 셰이더 압축을 생략해 컴파일 시간 단축 r.Shaders.SkipCompression=1 ; ---------- [선택] 캡쳐 가독성 ---------- ; 텍스처끼리 메모리를 나눠 쓰지 않게 해서, 나중 시점에서 봐도 내용이 덮어써지지 않음 (VRAM 증가) ; r.RDG.TransientAllocator=0 ; 모든 패스가 큐 하나에서 순서대로 실행돼 이벤트 순서가 알아보기 쉬움 r.RDG.AsyncCompute=0 ; ================================================================================= ; 캡처할 때 쓰는 콘솔 명령 (에디터 안에서) ; ; RDG 패스 이름 + 머터리얼 마커 ON ; r.RHISetGPUCaptureOptions 1 ; 다음 프레임 캡쳐 (뷰포트 버튼 / renderdoc.CapturePIE 1도 가능) ; renderdoc.CaptureFrame ; RenderDoc 창 뜬 것 확인 후 OFF ; r.RHISetGPUCaptureOptions 0 ; 1. r.RHISetGPUCaptureOptions 1: draw event, r.ShowMaterialDrawEvents=-1, r.RDG.Events=3(RDG 패스 이름 포함)을 한 번에 켬 ; 2. renderdoc.CaptureFrame: 다음 프레임을 캡처. 뷰포트의 RenderDoc 버튼을 눌러도 같음. ; 3. r.RHISetGPUCaptureOptions 0: 1번에서 켠 것을 원래대로 되돌림. 캡처가 끝나면 꼭 실행. ; PIE에서 캡처하려면 renderdoc.CapturePIE 1 ; =================================================================================