목록전체 글 (140)
Graphics Programming
큐브맵은 스카이박스와 환경 매핑(Environmental mapping)을 구현할 때 유용한 기능이다. 큐브맵을 샘플링할 때는 큐브맵 샘플러와 방향 벡터가 필요하다. #version 430 core layout (binding = 0) uniform samplerCube texCube; in VS_OUT { vec3 tc; } fs_in; layout (location = 0) out vec4 color; void main() { color = texture(texCube, fs_in.tc);} 원점에서 방향 벡터를 따라갈 때 도달하는 텍셀을 샘플링하는데, 이 벡터가 문제다. 모델의 기하 정보를 기술할 때 OpenGL은 오른손 좌표계를 사용한다. 즉 화면 오른쪽이 +x축, 위쪽이 +y축일 때 화면에서 나..
텍스처를 생성하면 크기와 포맷을 지정해야 한다. 그런데 두 가지 방법이 있다. // 텍스처 생성GLuint tex;glGenBuffers(1, &tex); // 바인딩glBindTexture(GL_TEXTURE_2D, tex); // 방법 1. glTexImage2D() 또는 glTexSubImage2D()// 타겟, 밉맵 레벨, 텍스처 포맷, 가로, 세로, 보더, 집어넣을 데이터의 포맷, 타입, 실제 데이터glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); // 방법 2. glTexStorage2D()// 타겟, 밉맵 레벨, 텍스처 포맷, 가로, 세로glTexStorage2D(GL_TEXTURE_2D..
만들고 있는 렌더링 엔진에서 Wavefront OBJ 모델을 불러오기 위해 tinyobjloader를 사용한다. 오랫만에 확인해보니 tinyobjloader의 버전이 올라가서 교체했는데 컴파일이 안 된다. 소스 코드를 열어보니 명세가 바뀌어서 그런 거였다. 내 엔진의 코드도 고쳐야 해서 귀찮은 상황이 되었는데, 명세를 찬찬히 보니 이전에 못다 구현한 기능이 생각났다. tinyobjloader는 하나의 3D 개체를 shape로 표현한다. shape는 position buffer, normal buffer, texcoord buffer, index buffer 등을 포함한다. 그리고 shape는 face의 모음인데 face마다 다른 재질을 가질 수도 있다. 예를 들어 축구공이라는 개체는 하나지만 이 공의 흰..
문제: https://www.hackerrank.com/challenges/range-minimum-query 숫자 n개가 주어지고, 일정 구간 내에서 최솟값을 찾는 쿼리 m개에 모두 답해야 한다. 각 숫자는 10^5를 넘지 않는다. n, m이 최대 10만이기 때문에 항상 구간 내의 모든 값을 확인해서 최솟값을 찾으면 시간복잡도가 O(nm)이여서 통과하지 못한다. 세그먼트 트리를 이용하면 트리 구축에 O(n), 쿼리 하나에 O(logn) 시간이 걸리므로 O(n) + O(mlogn) ⊆ O(mlogn)으로 테스트를 통과할 수 있다. 세그먼트 트리는 크게 세 가지 구현이 가능하다. 1. 트리 기반, 탑 다운 방식2. 트리 기반, 바텀 업 방식3. 배열 기반 이름에 트리가 들어가지만 세그먼트 트리는 배열로 구..
foldr의 정의는 다음과 같다. foldr :: (a -> b -> b) -> b -> [a] -> bfoldr f z [] = zfoldr f z (x:xs) = f x (foldr f z xs) 그리고 foldr의 fusion law는 다음과 같다. f . foldr g a = foldr h bif (1) f is strict (2) f a = b (3) f (g x y) = h x (f y) 증명은 수학적 귀납법을 이용한다. 기본 가정: (f . foldr g a) [] = foldr h b []foldr의 정의에 따라 양변을 각각 전개하면 (f . foldr g a) [] = f afoldr h b [] = b 조건 (2)에 의해 f a = b이므로 기본 가정 성립. 재귀 가정: f . fold..
Richard S. Millman과 George D. Parker의 책 의 표기를 따름. simple surface의 coefficients of the second fundamental form은 로 정의되는 함수들이다. coordinate transform , ,에 대해 다음이 성립한다. 증명