TL;DR
OpenGL을 사용하여 작업하는데 렌더링이 제대로 되지 않는 경우가 빈번해서 꽤나 골치아팠다. 이럴 때 디버깅을 할 수 있는 도구가 있을까 찾아보다가 렌더독(RenderDoc)을 알게 되었다! 렌더독을 사용하면서 많은 문제들을 해결할 수 있게 되었다. 지금은 렌더독을 사용하는 방법에 대해 정리해보고자 한다.
설치
https://renderdoc.org/builds 에서 파일을 다운 받아 설치
Capturing a frame
File
-> Launch Application
Program
Setting
Excutable Path
: 캡쳐할 어플리케이션의 실행 파일 경로를 선택. 캡쳐하려는 프로그램이 어디에 설치되어 있는지 정확히 지정해야한다.Working Directory
: 어플리케이션을 실행할 때 필요한 작업 디렉토리를 설정. 어플리케이션이 관련된 파일을 찾을 수 있도록 정확한 디렉토리를 지정해야 한다.Command-line Arguments
: 어플리케이션을 실행할 때 필요한 커맨드 라인 인자를 설정.
Launch
버튼으로 실행.
프레임 캡처
RenderDoc이 성공적으로 로드외어 프레임을 캡쳐할 준비가 되었음을 나타내기 위한 최소한의 인앱 오버레이가 존재.
준비가 되면 F12
또는 PrintScreen
를 누르면 다음 프레임이 캡쳐되며 이는 오버레이에 표시되어 프레임이 성공적으로 저장되었음을 알려줌.
어플리케이션이 종료될 때 프레임을 캡처한 경우 자동으로 RenderDoc UI에서 열리기 시작함.
그래픽 파이프라인 검사
파이프라인 뷰어는 그래픽 파이프라인의 모든 상태 설정을 보여주며, 바인딩 된 리소스, 래스터라이저 설정 등을 포함한다.Window
-> Pipeline State
파이프라인 흐름도
파이프라인 뷰어 상단에 파이프라인 흐름도가 존재.
그래픽 파이프라인의 고수준 블록 레벨 다이어그램을 보여줌.
- 빨간색 : 선택한 블록.
- 연한 회색 : 현재 활성화되어 이 작업에 참여하는 부분.
- 어두운 회색 : 비활성화되어 패스스루 / 아무 동작도 수행하지 않음.
버퍼 검사
파이프라인 단계(VTX(Vertex Input)
, VS
, FS
) 에서 버퍼를 확인할 수 있다.
glDrawElements
이벤트의VTX (Vertex Input)
단계의 버퍼 확인.
이동 아이콘을 누르면 더 자세한 보기가 가능하다.
- 자세한 보기를 누른 상태.
vertex.aPos
의 값을 확인할 수 있다.
텍스처 검사
텍스처 뷰어는 어플리케이션에서 텍스처를 검사하고 대상을 렌더링 할 수 있다.
다양한 시각화 컨트롤이 있어 여러 채널, 밉 레벨 등을 볼 수 있다.
사용 예시
VertexShader Input 값과 Output 값을 확인(Opengl)
Event Browser
에서glDrawElements
이벤트 선택.Pipeline State
에서VTX(Vertex Input)
단계Vertex Attribute Format
을 아무거나Go
(초록색 화살표 클릭).Mesh Viewer
창이 뜨며VS Input
에서 입력 값과VS Output
에서 버택스 셰이더의 아웃풋 값을 확인할 수 있다.
Preview에서 메시를 확인할 수 있다.
VS In
의 메시.VS Out
의 메시.