목록2018/05 (2)
Graphics Programming
OpenGL 시작할 때는 화면에 뭘 그리는 거에 관심이 있었지 코어 프로필, GL 컨텍스트 생성, OS/벤더 확장이 뭔지 관심도 없었다. 그런 것들은 튜토리얼 따라하면서 freeglut, glew 등으로 대충 떼우고 기억 속에서 잊혀졌다. 빌드 환경, 프로그램 초기화 과정, 버전 관리가 중요하다는 걸 깨닫고 뒤늦게 신경쓰고 있다. DirectX 11, Vulkan을 디버깅할 때 RenderDoc를 유용하게 써서 OpenGL에도 써볼려고 했더니 나니? GL 4.6인데? 검색을 좀 해보니 freeglut에서 OpenGL 컨텍스트 버전과 프로필을 명시해야 하는 것 같다. // glutInit() 호출 후glutInitContextVersion(4, 3);glutInitContextProfile(GLUT_COR..
불칸 책을 다 읽고 뭔가를 만들려고 보니 코딩 분량이 너무 막막해서 예전에 버린 OpenGL 프로젝트를 다시 꺼내들었다.PBR을 조금 알아봤는데 계산만 복잡하지 기존의 블린-퐁 셰이딩과 구현 방법이 별로 다르지 않아서 이거나 해볼려고 했는데 프로젝트를 열어보니 DOF를 만들다 말았었다. DOF는 대략 이런 식으로 구현한다.1. 일단 장면을 그린다.2. 장면 텍스처의 subsum을 컴퓨트 셰이더로 계산한다.3. subsum을 가지고 박스 블러를 계산한다. 이 때 박스 블러의 세기는 각 픽셀의 깊이값을 가지고 결정한다. 뷰에 의존적인 이펙트여서 뷰 스페이스에서 픽셀의 z값을 가지고 계산해야 하는데 내 디퍼드 렌더러를 가만히 보니 라이팅 계산을 월드 스페이스에서 하고 있다. 다행히 추가로 바꿀 것은 별로 없었..