Using sRGB colorspace with OpenGL/OpenGL ES

안드로이드 기기에서만 화면이 어둡게 나와서 안드로이드 쪽 sRGB 렌더링 관련 기능을 끄고 있었는데 이번에 고쳐보려고 관련 OpenGL spec 문서도 다시 읽어보고 깨달은 바가 있어 기록으로 남긴다. 크게 sRGB 컬러 스페이스를 고려한 렌더링은 두가지로 나눠서 보면 되는데, 첫째는 컬러 스페이스의 디코딩 (sRGB -> Linear) 과정이고, 둘째는 인코딩 (Linear -> sRGB) 과정이다. 우선 일반적인 이미지 파일은 sRGB…

Continue reading →

OpenGL 에서 GPU 스키닝

1. vertex shader constants 2. vertex shader with bindable uniform 3. vertex shader with VTF (Vertex Texture Fetch) 1. 쉐이더를 지원하는 모든 그래픽 카드에서 가능, SM3 이하 카드에서 상수개수 제한(256 * vec4)이 문제가 됨 2. SM4 이상에서 가능, SM4 에서 이미 충분한 상수 개수(4069 * vec4) 제한 3. SM3 이상에서 가능, 상수개수 제한 없음 (정확히는…

Continue reading →

OpenGL Buffer Object

3D Application 은 항상 어떻게 하면 빠르게 그릴까를 연구해왔다. Geometry 를 좀 더 빠른 속도로 그리기 위해 매번 새로운 기법들이 개발되어 왔는데.. OpenGL 1.1 시절에는 Display List 로 rendering command 를 미리 컴파일하여 binary 버퍼화해버리는 원시적인 방법이 사용됐다. 그러다가 동적인 Geometry 를 일반적인 방법으로 사용하기 위해 Vertex Array 를 사용했고, CVA(Compiled Vertex Array) 나 T&L…

Continue reading →