그래픽스 42

DX11 - 무게중심좌표계 이론

Interpolation v1에서 v2까지의 거리가 있다고 가정했을 때. v0은 v1,v2 중간 어딘가에 있다, 이때, v1에서 v0까지 거리를 a라고 할 때, v0에서 v2는 b이다. 그럼 v0이 v1에 가까워지면 b가 커지고, v0이 v2에 가까워지면 a가 커지는 것을 알 수 있다. 이러한 v는 다음과 같이 표현할 수 있다. v = b/a+b* v1 + a/a+b *v2 여기서 b/a+bv1을 w라고 표현하면, a/a+b * v2는 1-w로 표현할 수 있다. 그럼 이제… 세 점 사이의 정 가운데 p가 있다고 해보자. 세 점은 각각 v1, v2, v3라 할 때 p를 다음과 같이 표현할 수 있다. p = v1 + v2 + v3 / 3 = 1/3 v1 + 1/3 v2 + 1/3 v3 = w1v1 + w2v..

그래픽스/DX11 2024.09.24

D3D11 - 벡터와 레스터화

벡터 동차 계산 보통 1이면 포인터이다(0이 아니면 포인터), 0이면 벡터이다. 가장 마지막이 동차좌표계이다. 레스터화가 빠른 이유 레스터화가 빠른 이유를 설명하기 전에, 비교군인 레이트레이싱을 설명하겠습니다. 레이트레이싱 우리가 가장 많이 사용하는 알고리즘은 레이트레이싱 (역방향 알고리듬) 이다. 이 알고리듬은 시점에서 ray를 쏘고, 이 ray가 hit하게되면, 색을 결정한 다음에 hit point의 픽셀을 계산하여 렌더링하는 기술이다. 근데 모든 픽셀을 계산하려면 모든 픽셀에 광선을 쏘개된다. 만약 픽셀이 10만개면 최소 광선을 10만개는 쏴줘야한다. 레이트레이싱에서 가장 부담이 되는 것은 광선하고 물체가 충돌하는 부분을 계산해야 된다는 것입니다. 이러한 이론적인 것을 코드화하면 레이트레이싱은 다음..

그래픽스/DX11 2024.09.13

DX11 - 빛의 반사

구의 Reflection 수치 값을 변경해주기 전이다. 구 1개만 반사 적용 구 2개에 반사광 적용 바닥까지 반사광 적용 이는 레이트레이싱을 이용한 반사광 적용이다. 반사되는 횟수가 많아질수록 고성능을 요구하기 때문에 컴퓨터 사양에 따라 좀 느려지기도 한다. 해당 이론은 Bilinear Interpolation즉 이중선형 보간과 관련이 있다. 우리는 해당 그림을 통해서 먼저 두개의 선형 보간을 수행하여 a와 b를 계산한 다음 a와 b를 보간하여 c를 찾을 수 있다. c는 당연히 (tx , ty)의 값을 가지게 될 것이다. 이중선형 보간은 일반 2D 그리드의 임의 위치에 있는 값을 알아야 할 때 사용된다. 이 그리디는 이미지나 텍스처 맵에 사용될 수 있다. 이 예에서는 녹색 점으로 표시된 위치(좌표 cx,..

그래픽스/DX11 2024.04.17

DX11 - 수퍼 샘플링

수퍼 샘플링의 이론은 해당 지점에 도달한 레이 픽셀을 다시 N개로 나누어 쏴준다 해당 픽셀의 N개의 레이를 다시 쏴맞추는 효과로 인해 그 하나의 픽셀 안에서 N개의 평균을 낸 뒤 해당 픽셀 값을 도출해내는 샘플링이다. 슈퍼 샘플링이란 샘플링할 때 즉, 하나만 샘플링만 하는 것이 아니라 추가로 샘플링을 하여 평균을 낸다라는 아이디어는 기본적으로 동일하나, 방법은 여러가지 방법이 있다.

그래픽스/DX11 2024.04.17

DX11 - 텍스춰링

적용 전 Point Texturing Linear Texturing 이론 선형 보간법(Linear Interpolation) 이용해서 값 구함 해당 값을 적용해서 최종적으로 찾고싶은 컬러 값을 샘플링하는 것이 가능하다. 이를 Linear Sampling 한다라고 말한다. 2차원 공간에서 1차원의 선형 보간법(Linear Interpolation) 을 두번 반복하는 것을 BiLinear Interpolation 이라고 한다. Linear Texturing 적용 높은 해상도 이미지를 적용한 예시 텍스춰링은 단순히 이미지를 3D 모델에 씌워주는 것 뿐만 아니라 마치 그래픽스를 다루는 개발자가 아주 자세하고 복잡한 3D 모델을 렌더링한 것 같은 결과를 매우 효율적으로 만들어준다. 이는 언리얼에서 고해상도 그래픽..

그래픽스/DX11 2024.04.03

게임 객체와 컴포넌트의 관계

게임 객체란? 게임 객체는 게임 세계에서 자신을 갱신하거나 그리거나 또는 갱신과 그리기 둘 다 수행하는 모든 오브젝트를 가리킨다. 게임 객체를 표현하는 데는 몇 가지 방법이 있다. 일부 게임에서는 객체 계층 구조를 사용하고, 다른 게임에서는 합성을 사용하며, 또 다른 게임에서는 매우 복잡한 방법을 활용한다. 구현 방법에 상관없이 게임은 이러한 게임 객체를 추적하고 갱신하는 방법이 필요하다. 게임 객체의 타입 일반적인 타입의 게임 객체는 루프의 '게임 세계 갱신' 단계 동안 갱신되며, '출력 생성' 단계에서는 그려진다. 모든 캐릭터나 생명체 또는 움직일 수 있는 오브젝트는 이 범주에서 벗어나지 않는다. 예를 들어 슈퍼 마리오 브라더스에서 마리오나 적들 그리고 모든 동적인 블록은 게임이 갱신하거나 그리는 게..

그래픽스/OpenGL 2024.03.26

D3D12 3D 프로그래밍 입문 - 기본 지식 (3)

다중표본화의 이론 모니터의 픽셀들이 무한히 작지는 않기 때문에, 모니터 화면에 임의의 선을 완벽하게 나타내는 것은 불가능하다. 흔히 이 때, 나타나는 현상이 앨리어싱 효과, 다른 말로는 계단현상을 보여준다. 선을 픽셀들의 배열로 "근사"치에 가깝게 연산하더라도 완벽히 일치할 수 없기에 나타나는 현상이다. 삼각형의 변에서도 이와 비슷한 앨리어싱 효과가 나타난다. 근래의 모니터는 모니터의 해상도가 높아, 픽셀 크기를 줄이면 문제가 크게 완화되었기에 계단 현상이 거의 눈에 띄지 않을 정도가 되었다. 그러나 모니터 해상도를 키우는 것이 불가능하거나 키워도 충분하지 않을 경우에는 antialiasing 안티엘리어싱 혹은 앨리어싱 제거 기법을 적용할 수 있다. 그런 기법 중 하나가 초과표본화(supersamplin..

그래픽스/DX12 2023.12.22