본문 바로가기

Game/Graphics

(68)
Learn OpenGL - Advanced Lighting : Bloom link : https://learnopengl.com/Advanced-Lighting/Bloom Bloom 밝은 광원 및 밝게 조명된 영역은 모니터의 강도 범위가 제한되어 있기 때문에 종종 시청자에게 전달하기 어렵다. 모니터에서 밝은 광원을 구별하는 한 가지 방법은 빛을 비추는 것이다. 광원을 중심으로 빛의 번짐이 발생한다. 이것은 효과적으로 관측자에게 이러한 광원 또는 밝은 영역이 강렬하게 빛나는 환상을 준다. 이 가벼운 블리딩 또는 글로우 효과는 블룸이라는 사후 처리 효과로 얻을 수 있다. 블룸(Bloom)은 모든 밝은 조명 영역에 반짝이는 효과를 준다. 반짝이는 장면과 없는 장면의 예가 아래에 있다. (Unreal의 이미지): 블룸은 오브젝트의 밝기에 대한 눈에 띄는 시각적 단서를 제공하여 블룸은..
LearnOpenGL - Advanced Lighting : HDR link : https://learnopengl.com/Advanced-Lighting/HDR HDR(High Dynamic Range) 기본적으로 밝기와 색상 값은 프레임 버퍼에 저장 될 때 0.0에서 1.0 사이로 고정된다. 이것은 처음에는 겉으로 보기에 문제가 없어보이지만, 우리는 이 범위의 어딘가에서 항상 빛과 색채 값을 지정해 장면에 적합하도록 했다. 이것은 괜찮았고 좋은 결과를 줬다. 그러나 합계가 1.0을 초과하는 여러 개의 밝은 광원을 사용해 특별히 밝은 지역을 보면 어떻게 될까? 1.0 이상의 밝기 또는 색상 합계를 갖는 모든 조각이 1.0으로 고정되어 보기 흉하게 바뀐다: 많은 수의 단편 색상 값이 1.0으로 클램핑되기 때문에 각 밝은 단편은 넓은 영역에서 정확히 동일한 흰색 색상을 가..
LearnOpenGL - Advanced Lighting : Parallax Mapping link : https://learnopengl.com/Advanced-Lighting/Parallax-Mapping Parallax Mapping Parallax Mapping은 일반적인 맵핑과 비슷한 기술이지만 다른 원칙에 기반한다. 일반 맵핑과 마찬가지로 텍스처 표면의 디테일을 대폭 향상시키고 깊이감을 주는 기법이다. 또한, 환상이지만 시차 맵핑은 깊이 감각을 전달하는데 훨씬 뛰어나며 일반 맵핑과 함께 매우 현실적인 결과를 제공한다. 시차 맵핑은 반드시 조명과 직접적으로 관련이 있는 기술은 아니지만, 이 기술은 일반적인 맵핑의 논리적인 후속 작업이므로 여기서도 논의 할 것이다. 시차 맵핑을 배우기 전에 일반 맵핑, 특히 탄젠트 공간에 대한 이해를 강력히 권장한다. 시차 맵핑은 텍스처 내부에 저장된 ..
Learn OpenGL - Advanced Lighting : Normal Mapping link : https://learnopengl.com/Advanced-Lighting/Normal-Mapping Normal Mapping 우리의 모든 장면은 수백 또는 수천 개의 평면 삼각형으로 구성된 다각형으로 채워져 있다. 우리는 이 평평한 삼각형에 2D 텍스처를 붙여서 사실성을 높이고, 폴리곤이 실제로 작은 평평한 삼각형으로 이루어져 있다는 사실을 숨기고 추가 세부 사항을 제공한다. 하지만 텍스처를 자세히 보면 아주 평평한 표면을 볼 수 있다. 실제 표면의 대부분은 평면이 아니며 많은 울퉁불퉁한 세부 사항을 나타낸다. 예를 들어, 벽돌 표면을 보자. 벽돌 표면은 상당히 거친 표면이며 분명히 완전히 평평하지 않다. 그것은 침몰한 시멘트 줄무늬와 상세한 작은 구멍과 균열을 많이 포함한다. 우리가 조..
Learn OpenGL - Advanced Lighting : Point Shadows (2) link : https://learnopengl.com/Advanced-Lighting/Shadows/Point-Shadows Omnidirectional shadow maps 모든 것이 설정되면 실제 무지향성 그림자를 렌더링 할 때입니다. 이 과정은 방향 맵 매핑 튜토리얼과 유사하지만 이번에는 2D 텍스처 대신에 큐브 맵 텍스처를 깊이 맵으로 바인딩하고 조명 프로젝션의 원거리 평면 변수를 쉐이더에 전달한다.glViewport(0, 0, SCR_WIDTH, SCR_HEIGHT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); shader.use(); // ... send uniforms to shader (including light's far_plane v..
Learn OpenGL - Advanced Lighting : Point Shadows (1) link : https://learnopengl.com/Advanced-Lighting/Shadows/Point-Shadows Point Shadows 마지막 튜토리얼에서는 그림자 맵핑을 사용해 동적 그림자를 만드는 방법을 배웠다. 이것은 훌륭하게 작동하지만 그림자가 광원의 한 방향으로만 생성되기 때문에 방향성 조명에만 적합하다. 따라서 방향 맵은 빛이 보고 있는 방향에서 생성되므로 방향 쉐도우 맵핑으로도 알려져 있다. 이 튜토리얼에서 초점을 맞출 것은 주변의 모든 방향에서 동적인 그림자를 생성하는 것이다. 우리가 사용하고 있는 기술은 실제 점 광원이 모든 방향으로 그림자를 드리우기 때문에 점 광원에 완벽하다. 이 기술은 point shadows(light) 또는 이전에는 omnidirectional s..
Learn OpenGL - Advanced Lighting : Shadow Mapping (3) link : https://learnopengl.com/Advanced-Lighting/Shadows/Shadow-Mapping Improving shadow maps 우리는 쉐도우 매핑의 기본 원리를 알 수 있었지만, 알 수 있듯이 더 더 나은 결과를 위해 수정하고자 하는 그림자 맵핑과 관련된 몇 가지 아티팩트가 있다. 다음 섹션에서 살펴 보겠다. Shadow ance 이전 이미지에서 잘못된 것이 분명하다. 더 가까이서 확대하면 아주 명확한 Moire 같은 패턴을 볼 수 있다: 우리는 교묘하게 검은 선으로 렌더링된 바닥 쿼드의 대부분을 볼 수 있습니다. 이 그림자 맵핑 아티팩트는 그림자 여드름이라고 하며 간단한 이미지로 설명 할 수 있다: 그림자 맵은 해상도에 의해 제한되기 때문에 여러 조각이 광원에서..
Learn OpenGL - Advanced Lighting : Shadow Mapping (2) link : https://learnopengl.com/Advanced-Lighting/Shadows/Shadow-Mapping Rendering shadows 적절하게 생성된 깊이 맵을 사용해 실제 그림자를 생성 할 수 있다. 조각이 그림자에 있는지를 확인하는 코드는 조각 쉐이더에서 (분명히) 실행되지만, 우리는 정점 쉐이더에서 light-space 변환을 수행한다:#version 330 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec3 aNormal; layout (location = 2) in vec2 aTexCoords; out VS_OUT { vec3 FragPos; vec3 Normal; vec2 TexCoords; ..