본문 바로가기

Game/Graphics

(68)
OpenGL : Terrain link : http://www.videotutorialsrock.com/opengl_tutorial/terrain/text.php Representing and Loading 3D Terrains 게임 및 기타 3D 프로그램의 한 가지 일반적인 기능은 3D 지형이 있다는 것이다. 이 강의에서는 다음 지형을 작성한다: 문제는 지형을 어떻게 표현할 것인가이다. 가장 직접적이고 좋은 방법 중 하나는 x-z 평면에 2D 그리드를 만들고, 각 그리드 지점에 지형의 높이를 저장하는 것이다. 이것은 우리가 모든 지형을 만들지 못하게한다. 예를 들어, 순수한 수직 벽이나 "뒤로" 기울어진 벽을 가질 수는 없다. 그러나 여전히 우리는 많은 것을 이를 통해 만들 수 있다. 모든 높이를 프로그램 자체에 하드 코딩 할 수 ..
OpenGL Figure draw function OpenGL을 사용하면서 자주 그리는 물체들의 함수들을 정리해서 올려두어야겠다. 많은 OpenGL 초보자들이 이 글을 보고 기본적인 도형들을 그리는 것에 도움을 받으면 좋을듯하다. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - 여기서 정리하는 function들은 shader를 사용한다. 그러므로 함수를 사용하기 전에..
Learn OpenGL - PBR : IBL(Specular IBL) link : https://learnopengl.com/PBR/IBL/Specular-IBL Specular IBL 앞의 튜토리얼에서는 조명의 간접 확산 부분인 일루미네이션 맵을 사전 계산해 이미지 기반 조명과 함께 PBR을 설정했다. 이 튜토리얼에서는 반사율 방정식의 반사 부분에 초점을 맞춘다: 당신은 Cook-Torrance 반사 부분(kS를 곱한값)이 적분에 대해 일정하지 않고, 들어오는 빛의 방향뿐만 아니라 들어오는 시야 방향에도 의존한다는 것을 알 수 있다. 모든 가능한 뷰 방향을 포함해 모든 들어오는 빛의 방향에 대한 적분을 풀려고하는 것은 조합 과부하이며 실시간으로 계산하기에는 너무 비싸다. 에픽 게임즈(Epic Games)는 분할합 근사로 알려진 몇 가지 타협을 감안할 때 실시간 목적으로 ..
Learn OpenGL - PBR : IBL(Diffuse irradiance) link : https://learnopengl.com/PBR/IBL/Diffuse-irradiance Diffuse irradiance IBL 또는 Image Based lighting은 이전 튜토리얼에서와 같이 직접적인 분석 조명이 아닌 객체를 조명하는 기술 모음이다. 주변 환경을 하나의 큰 광원으로 간주해 조명한다. 이것은 일반적으로 우리의 조명 방정식에서 직접 사용할 수 있는 큐브맵-환경맵을 조작해 조명 방정식에서 직접 사용할 수 있도록해 수행된다: 각 큐브맵 픽셀을 light emitter(빛 방출?)로 처리한다. 이렇게하면 환경의 전역 조명과 일반적인 느낌을 효과적으로 포착해 객체에 주변 환경을 더 잘 속박할 수 있다. IBL(Image based lighting)은 일부 (global)환경의..
Learn OpenGL - PBR : Lighting link : https://learnopengl.com/PBR/Lighting Lighting 이전 튜토리얼에서는 사실적인 물리적 기반 렌더러를 바닥에서 벗어나게하는 토대를 마련했다. 이 튜토리얼에서는 앞서 설명한 이론을 직접 (또는 분석) 광원을 사용하는 실제 렌더러로 변환하는데 초점을 맞춘다: point light, directional light, spotlights를 생각해라. 이전 튜토리얼의 최종 반사율 방정식을 다시 보고 시작하자: 이제 우리는 대부분 무슨 일이 벌어지고 있는지 알지만, 여전히 큰 불확실성은 장면의 전체 복사 강도 L을 얼마나 정확하게 나타낼 것인가이다. 이제 우리는 밝기 L (computer graphics land에서 해석 됨)이 주어진 입체각 ω에 대한 광원의 복사 에너지..
Learn OpenGL - PBR : Theory link : https://learnopengl.com/PBR/Theory Theory PBR, 또는 더 일반적으로 physically based rendering으로 알려진 렌더링 기술의 집합은 물리적인 세계의 것과 더 가깝게 일치하는 동일한 기본 이론에 기반한다. 물리적 기반 렌더링은 물리적으로 그럴듯한 방법으로 비을 모방하는 것을 목표로 하기 때문에 Phong 및 Blinn-Phong과 같은 원래의 조명 알고리즘과 비교할 때 일반적으로 더 현실적으로 보인다. 실제 물리학에 매우 가깝기 때문에 우리는 물리적인 매개 변수를 기반으로 표면 재질을 제작 할 수 있다. 조명을 돋보이게 하기 위해 값싼 해킹과 개조 작업을 하지 않아도된다. 물리적 매개 변수에 기반한 저작물의 더 큰 장점 중 하나는 조명 조건에..
Learn OpenGL - Advanced Lighting : SSAO link : https://learnopengl.com/Advanced-Lighting/SSAO SSAO(Screen Space Ambient Occlusion) * 사물에 의해 생기는 빛의 감쇠를 리얼타임으로 나타내는 3D 쉐이딩기법 우리는 기본 조명 튜토리얼에 대해 간략히 설명했다. 주변 조명은 빛의 산란을 시뮬레이션하기 위해 장면의 전반적인 조명에 추가하는 고정된 광원 상수이다. 실제로 빛은 다양한 강도의 방향으로 모든 종류의 산란을 일으키므로 장면의 간접 조명 부분은 일정한 주변 구성 요소 대신 다양한 강도를 가져야한다. 한 가지 유형의 간접 조명 근사법은 서로 가깝게 있는 주름, 구멍 및 표면을 어둡게해 간접 조명을 근사하려고하는 Ambient occlusion이라고 한다. 이 영역은 주변 ge..
Learn OpenGL - Advanced Lighting : Deferred Shading link : https://learnopengl.com/Advanced-Lighting/Deferred-Shading Deffferd Shading 지금까지 조명을 사용한 방식은 Forward Rendering 또는 Forward Shading 이라고 불렀다. 즉, 객체를 렌더링하고 장면의 모든 광원에 따라 빛을 비운 다음 객체를 렌더링하는 등의 직접적인 방법이었다. 상당히 이해하기 쉽고 구현하기는 하지만 각 렌더링된 객체가 렌더링 된 모든 조각에 대해 각 광원에 대해 반복해야하므로 성능면에서 상당히 중요하다! 또한, 앞으로 렌더링은 대부분의 조각 쉐이더 출력을 덮어쓰므로 깊이 복잡도가 높은 장면에서 많은 조각 쉐이더 실행을 낭비하는 경향이 있따. (여러 객체가 동일한 화면 픽셀을 가리는 경우) 지연된 ..