목록전체 글 (39)
KH_C++

[ 절두체 컬링 ] 절두체 컬링(Frustum Culling)은 컴퓨터 그래픽스에서 사용되는 최적화 기술 중 하나로, 화면에 표시될 부분만을 렌더링하여 성능을 향상시키는 방법입니다. 이는 시야를 화면 안에 들어가는 부분만 렌더링하고, 화면 밖의 객체는 그리지 않는 것을 의미합니다. 절두체(Frustum)란 카메라의 시야를 나타내는 뷰 프러스텀(View Frustum)이라는 다각형의 모양을 가진 입체적인 도형입니다. 이 뷰 프러스텀은 카메라의 위치와 방향에 따라 결정되며, 뷰 프러스텀 내에 포함되는 객체만이 실제로 화면에 나타나야 할 객체로 간주됩니다. 절두체 컬링은 다음처럼 작동합니다. 1.뷰 프러스텀 계산 : 카메라의 위치와 방향에 따라 뷰 프러스텀을 계산합니다. 이는 시야 범위 내에 들어갈 수 있는 ..

[ Render To Texture ] Render-to-Texture(RT, RTT)은 그래픽스에서 사용되는 기술로, 렌더링 결과를 텍스처로 저장하는 방식을 말합니다. 이는 렌더 타겟(Render Target)으로 지정한 텍스처에 원하는 장면을 렌더링하여 중간 단계의 렌더링 결과를 텍스처로 저장하는 과정입니다. Render-to-Texture의 주요 특징 1. 렌더 타겟 설정 : 렌더 타겟은 렌더링 결과를 저장할 텍스처로 설정합니다. 이 텍스처는 보통 프레임 버퍼(Frame Buffer) 또는 렌더링 타겟(Render Target)으로 사용됩니다. 2. 렌더링 : 렌더 타겟으로 설정한 텍스처에 원하는 장면을 렌더링합니다. 이 때, 실제 화면에는 직접 그리지 않고 텍스처에만 렌더링합니다. 3. 후처리 또..

[ A* 알고리즘 ] 다익스트라, A* 모두 그리디 기반의 길 찾기 알고리즘인데 다익스트라는 모든 경로를 구하고 A*는 목적지까지의 경로만을 구하려 하는 이유가 무엇일까? 기본적으로 다익스트라 알고리즘은 시작 노드로부터 가장 최소의 비용으로 도달한 노드를 다음 탐색 노드로 선정한다. 반면 A* 알고리즘은 다음 탐색 노드를 선정하는 방식이 다익스트라와 사뭇 다른데, 시작 노드부터 현재 노드까지의 비용을 g(n), 현재 노드에서 목표 노드까지의 예상 비용을 h(n)이라 할 때, 이 두 값을 더한 f(n) = g(n) + h(n)이 가장 최소가 되는 노드를 다음 탐색 노드로 선정한다. 일반적으로 가장 작은 f(n)을 찾기 위해 우선순위 큐가 사용된다. 현재 노드에서 목표 노드까지의 예상 비용을 구하는 함수 h..
[ GPGPU ] GPGPU(General-Purpose Graphics Processing Unit)는 일반용으로 사용되는 그래픽스 처리 장치인 GPU를 활용하여 범용 컴퓨팅 작업을 수행하는 기술입니다. GPGPU는 GPU의 병렬 처리 능력을 활용하여 대규모 데이터와 복잡한 연산 작업을 효율적으로 처리할 수 있습니다. 주요 특징 병렬 처리: GPU는 많은 수의 코어를 갖추고 있으며, 이를 활용하여 병렬적으로 작업을 처리합니다. 이는 대량의 데이터나 복잡한 계산 작업에 특히 유용합니다. 고성능 : GPU는 병렬 처리에 최적화되어 있으므로, CPU보다 높은 성능을 제공합니다. 따라서 GPGPU를 사용하면 연산 작업을 빠르게 처리할 수 있습니다. 프로그래밍 모델 : GPGPU를 사용하려면 CUDA, Open..

[ Key frame Animation ] 애니메이션 초기에는, 작품의 각 프레임을 손으로 그려야 했습니다. 이제 애니메이터는 디지털 키 프레임 애니메이션을 사용하여 그래픽의 다양한 요소를 식별하고 이러한 요소가 시간에 따라 이동하거나 변경되는 방식을 선택함으로써 몇 시간 또는 심지어 몇 주 또는 몇 개월의 작업 시간을 절약할 수 있습니다. 디지털 애니메이션 시퀀스에서 작업을 만들려면 먼저 해당 작업의 시작점과 끝점을 정의해야 합니다. 이러한 마커는 키 프레임이라고 하며 Character Animator를 비롯한 모든 유형의 애니메이션 프로그램에서 작업의 앵커 포인트로 사용됩니다. 키 프레임 애니메이션 기본 사항 원이 화면이나 비디오 프레임에서 공처럼 튀길 원한다고 상상해 보십시오. 공이 한 위치에서 다..

[ Forward Rendering ] 이 방식은 모바일 환경에서 주로 쓰인다. 오브젝트와 동적 라이팅이 적으면 성능 부하도 그만큼 적어진다. 그러나 동적 라이트의 갯수나 동적 라이트에 영향받는 오브젝트가 많아지면 성능 저하가 기하급수적으로 커진다. 포워드 렌더링은 포워드 라이팅, 포워드 쉐이딩이라고도 부르는데, 사실 디퍼드 이전에 사용되던 전통적인 오브젝트 렌더링 기법이다. 포워드 렌더링은 오브젝트들을 픽셀화 하여 각 픽셀마다 쉐이딩과 라이팅 연산을 더하는 방식으로 렌더링이 진행된다. 포워드 렌더링은 일반적으로 디퍼드 렌더링보다 더 나은 퍼포먼스를 보일 수 있으며 디퍼드 렌더링보다 더 나은 안티에일리어싱을 기대할 수 있다. Forward Rendering과정 Vertex Generation -> Ver..

[ Shadow Mapping ] 그림자는 폐색으로 인해 빛이 없는 결과입니다. 광원의 광선이 다른 개체에 의해 가려져 개체에 닿지 않으면 개체가 그림자에 있는 것입니다. 그림자는 조명이 켜진 장면에 많은 사실감을 더하고 뷰어가 개체 간의 공간 관계를 더 쉽게 관찰할 수 있도록 합니다. 그들은 우리의 장면과 물체에 더 큰 깊이감을 줍니다. 예를 들어 그림자가 있거나 없는 장면의 다음 이미지를 살펴보도록하겠습니다. 그림자를 사용하면 개체가 서로 어떻게 관련되어 있는지 훨씬 더 분명해집니다. 예를 들어 큐브 중 하나가 다른 큐브 위에 떠 있다는 사실은 그림자가 있을 때만 눈에 띕니다. 그러나 그림자는 구현하기가 약간 까다롭습니다. 특히 현재 실시간(래스터화된 그래픽) 연구에서 완벽한 그림자 알고리즘이..

[ Normal Mapping ] 법선 매핑, 노멀 매핑(normal mapping)은 3차원 컴퓨터 그래픽스에서 튀어나온 곳과 움푹 틀어간 곳의 빛을 왜곡시키는 기법으로, 범프 매핑의 구현체이다. Dot3 bump mapping이라고도 한다. 더 많은 폴리곤을 사용하지 않고 세세한 부분을 추가하기 위해 사용한다. 단순해진 메시(mesh)를 더 자세하게 만들기 위해 사용되는 법선 매핑. [ Tangent Space ] 지구본이 있다고 하자, 이걸 쫙 펼쳐 지도를 만들었다고 하자, 그런데 다시 지구본이 필요해서 지도를 다시 지구본으로 만들어야 한다고 했을 때, 어떻게 하면 지구본을 다시 만들 수 있을까? 쉬워보이지만 그런 단순한 문제는 아니다. 완벽하게 맞춰진 예는 아니지만 탄젠트 공간이 필요한 이유를 가..