목록2017/05 (2)
Graphics Programming
스켈레탈 애니메이션은 대충 본 계층도에 버텍스 스키닝을 한다는 정도로만 알고 있었는데, Frank D. Luna의 에서 개념과 구현 방법을 확실히 숙지하고, 코딩을 시작한 것이 아니라... 몇 주를 밍기적거리다 저번 주말에 구현했다. 일단 지금까지는 Wavefront OBJ 모델만 썼는데 OBJ 포맷은 뼈대도 애니메이션도 지원하지 않기 때문에 블렌더로 뼈대 애니메이션을 급조하고 DAE 포맷으로 익스포트했다. 예전에 모델 로더를 처음 만들 때만 해도 DAE 로더를 작성하려 했지만 무슨 이유에선가 OBJ 로더만 만들고 말았는데, 이번 기회에 Assimp 라이브러리를 이용해서 DAE 로더를 작성했다. 구현은 ogldev 튜토리얼을 참고했는데 내 경우는 기존 엔진에 버텍스 스키닝을 통합하려니 셰이더를 전부 손봐..
HDR은 forward/deferred rendering에 무관하게 기존 렌더링 파이프라인에 쉽게 끼워넣을 수 있는 테크닉이다. 일반적인 모니터는 RGB 채널 별로 256가지 강도만 표현할 수 있고 OpenGL의 기본 프레임버퍼(default framebuffer)도 마찬가지다. 기본 프레임버퍼에 출력할 때 프래그먼트 셰이더의 출력은 0.0에서 1.0 사이로 clamping된다. 따라서 여러 광원으로부터 빛을 받아 최종 셰이딩 값이 1.0을 넘어서는 부분은 모두 똑같이 하얀색으로 보인다. HDR은 최종 셰이딩한 색상을 기본 프레임버퍼에 기록하는 대신, 별도로 생성된 고해상도 부동소수점 프레임버퍼에 기록한다. 이 부동소수점 텍스처를 소스로 사용하여, 톤 매핑(tone mapping)한 결과를 기본 프레임버..