본문 바로가기

C++

(113)
[백준 10217번] KCM Travel link : https://www.acmicpc.net/problem/10217 KCM Travel 성공시간 제한메모리 제한제출정답맞은 사람정답 비율10 초256 MB392559330915.653%문제각고의 노력 끝에 찬민이는 2014 Google Code Jam World Finals에 진출하게 되었다. 구글에서 온 초대장을 받고 기뻐했던 것도 잠시, 찬찬히 읽어보던 찬민이는 중요한 사실을 알아차렸다. 최근의 대세에 힘입어 구글 역시 대기업답게 비용 감축에 열을 내고 있었던 것이다.초대장 내용에 의하면 구글은 찬민에게 최대 M원까지의 비용만을 여행비로써 부담해주겠다고 한다. 인천에서 LA행 직항 한 번 끊어주는게 그렇게 힘드냐고 따지고도 싶었지만, 다가올 결승 대회를 생각하면 대회 외적인 곳에 마음을 ..
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; ..
Learn OpenGL - Advanced Lighting : Shadow Mapping (1) link : https://learnopengl.com/Advanced-Lighting/Shadows/Shadow-Mapping Shadow Mapping 그림자는 폐색으로 인한 빛의 부재로 인한 결과이다. 광원의 광선이 어떤 물체에 의해 가려지기 때문에 물체에 부딪치지 않으면 그 물체는 그림자 속에 있다. 그림자는 밝은 장면에 많은 사실감을 더하고, 관찰자가 물체 간의 공간적 관계를 더 쉽게 관찰 할 수 있게 한다. 그들은 우리 장면과 사물에 깊이 감을 준다. 예를 들어, 그림자가 있거나 없는 장면의 다음 이미지를 살펴보자: 그림자를 사용하면 오브젝트가 서로 어떻게 관련되는지 훨씬 더 분명해진다는 것을 알 수 있다. 예를 들어, 큐브 중 하나가 다른 큐브 위로 떠 다니는 사실은 그림자가 있을 때 훨씬 ..