Face culling 큐브를 생각해보자 어느 방향에서 볼 수 있는 최대 면들의 개수는 3개이다. 다른 면들은 보이지 않는다. 이들을 폐기하면, 50%이상 비용을 절약할 수 있다. 문제는 view 입장에서 보이지 않는 면인지 어떻게 알 수 있는가이다. ...
[learn-opengl] Advanced OpenGL: Blending
Blending OpenGL에서 블렌딩은 오브젝트 내의 투명도(transparency)를 구현하는 기술로 알려져 있음. 투명도: 단색(solid color)를 가지지 않는 오브젝트에 관한것이지만, 오브젝트 자체와 그 뒤에 있는 오브젝트의 색상을 다양한 강도로 조합한것. 유리에는 자체 색상이 있지만,...
[백준][C++] 2206: 벽부수고 이동하기 (Floyd Warshall)
문제 1504번: 특정한 최단 경로 풀이 들려야하는 두 점 을 지나면서 최단 경로를 구하는 문제. 두 점을 A, B라고 하면 최단 경로는 대략 다음과 같다. 1 - A - B - N 1 - B - A - N 그러므로 정점에서 정점까지의 최단경로를 전부 구하...
[learn-opengl] Advanced OpenGL: Stencil testing
Stencil testing Fragment shader가 fragment를 처리하고 나면, depth test와 비슷한 stencil test라고 불리는 것이 수행된다. fragment가 폐기될지 안될지 테스트하는 것이다. 이를 수행한 후 depth test로 또한번 폐기되는지 테스트한다. ...
[learn-opengl] Advanced OpenGL: Depth testing
Depth testing 앞에서(좌표시스템) depth buffer를 사용하여 뒤에있는 면들이 앞에 그려지지 않도록 했다. 이번에는 depth values를 다룰것이며, 이는 이 버퍼를 더 강력하게 만들 것이다. 또한 특정 fragment가 다른 fragment들의 뒤에 있는지 판별하는 방법에 대해서 다...
[백준][C++] 2206: 벽부수고 이동하기 (bfs)
문제 2206 풀이 최단거리를 구하는 문제 보통 이런 문제는 상태가 2가지이다. 방문 o 방문 x 하지만 이 문제에는 상태가 더 추가되었다. 벽부수지 않고 방문 o 벽부수고 방문 o 방문 x 그러므로 이를 처리해...
[learn-opengl] Model Loading: Model
Model 이제 Assimp를 사용해야한다. 실제 로딩, 변환 코드를 생성할 것이다. 여러 메시를 가지는 전체적인 모델을 나타내는 클래스를 만들것이다. class Model { public: Model(char *path) { loadModel(p...
[learn-opengl] Model Loading: Mesh
Mesh Assimp로 불러온 모델의 데이터를 OpenGL이 이해할 수 있는 포맷으로 변환시켜 오브젝트를 렌더링할 수 있도록 해야한다. mesh는 그려질 수 있는 하나의 독립체 Mesh가 최소한 어떠한 데이터들을 가지고 있어햐는지 정해야한다. 위치벡터, 법선 벡터, 텍스처 좌표 ...
[learn-opengl] Model Loading: Assimp
Assimp 이때까지는 단순한 정육면체를 가지고 놀았다.(정적인 컨테이너) 실제는 더 복잡한 모델들이 존재한다. 우리는 이 모델들을 import할 수 있다. 이 모델들은 Blender, 3DS Max, Maya 같은 툴을 사용하여 디자인한 것들이다. 이 툴들은 복잡한 ...
[learn-opengl] Lighting: Multiple lights
Multiple lights 이번에는 6개의 광원들을 생성한다. directional light로 태양과 같은 빛을 시뮬레이션 4개의 point light를 사용하여 scene 전체에 빛을 산란 flashlight 추가 하나 이상의 광원을 scene에 사용하기 위해,...