그래픽스 25

선형보간 및 폴리곤 메시

선행보간 선형 보간을 통한 매개변수 방정식을 이용하여 색상 보간으로 색을 추출할 수 있다. 그렇다면 만약 엔진 제작자가 마우스 위치에 따른 색상표를 뽑아낸다고 한다면 해당 이미지처럼 마우스 위치와 정점의 거리를 계산하여 선형보간으로 색상을 추출할 수 있다. 폴리곤 메시 저해상도의 메시는 빠르게 렌더링할 수 있지만 폴리곤의 각진 특징이 드러나기 쉽다. 반면 고해상도 메시는 처리 시간이 더 걸리지만 폴리곤의 각진 특징을 가려줄 수 있다. 정점의 개수가 많으면 해상도가 높다고 말하며, 정점이 적으면 해상도가 낮다고 말한다. 폴리곤 메시 표현은 삼각형 메시를 표현하는 것을 예로 들겠다. 이는 정점 배열로 나열하여 나타낼 수 있다. 이렇게 정점들이 저장된 배열을 정점배열이라고 한다. (vertex array) 삼..

그래픽스/OpenGL 2023.11.01

컴퓨터 그래픽스의 개요

컴퓨터 그래픽스란? 컴퓨터를 이용하여 영상을 생성하는 작업을 컴퓨터 그래픽스라 한다. 이 작업의 입력이 3차원 데이터로 주어지는 경우 3차원 그래픽스라고 부른다. 그래픽스의 발전은 나날이 눈에 띄게 발전되오고있다. 지난 30년간 영화 특수효과 뿐만 아니라 3차원 게임 내에서도 굉장한 발전을 이뤄오고있다. 이는 단순한 PC, 콘솔 게임 뿐만 아니라 모바일 영역에서도 고성능의 그래픽스를 찾아볼 수 있다. 실시간 그래픽스란? 그래픽스는 실시간 그래픽스와 비실시간 그래픽스로 나눌 수 있는데 실시간 그래픽스의 기준은 각 이미지를 1/30초 이내로 렌더링해야한다는 것이 기준이다. ( = Real-time graphics systems must render each image in less than 1/30th of..

그래픽스/OpenGL 2023.10.24

물리 기반 렌더러 - 레이 트레이싱 (2) - 카메라

레이 트레이싱 (2) - 카메라 레이 트레이싱에서 카메라란? 대부분의 사람들이 카메라를 사용하고, 이러한 카메라의 기본 기능에 익숙하다. 게임 엔진에서 카메라는 뷰포트에 보이는 장면을 보여준다. 카메라와 렌더러는 뗄 수 없는 관계이다. 어떻게 그릴 것이냐는 카메라의 위치, 카메라로 들어오는 광량에 따라 갈리니까 말이다. 카메라는 이미지를 저장하거나 보여주고, 한 조각의 필름이나 전자 센서에 이미지를 기록하기도 한다. 세상에서 사진을 찍는 가장 간단한 장치는 핀홀 카메라이다. 핀홀 카메라는 한쪽 면에 작은 구멍이 뚫린 빛이 새지 않는 박스로 구성되어있다. 구멍이 열러 있을 때 빛이 이 구멍으로 들어와서 다른 면에 부착된 사진 원진에 조사된다. 단순하지만 이런 종류의 카메라는 현재도 여전히 사용되며, 주로 ..

그래픽스 2023.10.16

레이 트레이싱 Ray-trace 예제와 원리

극사실적 렌더링의 목표는 사진과 구분할 수 없을 정도의 3D 장면 이미지를 생성한 것이다. 거의 대부분의 극사실적 렌더링 시스템은 레이트레이싱(ray-tracing)알고리즘에 의존한다. 사실 레이트레이싱은 매우 단순한 알고리즘이다. 환경에 있는 물체와 간섭하고 반사되는 장면을 지나는 광선 경로를 추적하는 방법이다. 레이 트레이싱에 깊게 알기 앞서, DX12 API에 있는 레이 트레이싱 샘플을 살펴보자. (번역 수준이 높지 않으니 원문을 통해 이해하길 추천) - 출저, NVIDIA DEVELOPER (https://developer.nvidia.com/rtx/raytracing/dxr/dx12-raytracing-tutorial-part-1) By Martin-Karl Lefrançois and Pasca..

그래픽스/DX12 2023.10.15

물리 기반 렌더러 - 레이 트레이싱 (1)

문학적 프로그래밍은 어떠한 코딩에서든 가장 중요하다. 하지만, 필자가 이해하는 문학적 프로그래밍과 여러분이 아는 문학적 프로그래밍은 다를 수 있다. 또한 책에서 이야기하는 문학적 프로그래밍은 다를 수 있다. 개인적으로 필자는 문학적 프로그래밍 == 좋은 코드라고 생각한다. 번역을 할 때 불필요하게 중복된 표현은 독자의 해석을 어렵게 만든다. 필자는 글이나 코드 또한 작성자의 생각을 논리적으로 깔끔하게 작성해야 한다고 생각한다. 그렇게 노력해도 코드나 글 자체는 깔끔하지 않을 수 있지만, 그렇게라도 해야지 독자로 하여금 더 나은 이해를 낳을 수있다. 그게 컴파일이 됐던 같이 일하는 동료가 되었던 말이다. 그렇다면 논리적으로 깔끔한 코드란 뭘까? 물리 법칙 기반 렌더러에 관한 코드라면 물리 법칙에 벗어나지 ..

그래픽스 2023.10.13