본문 바로가기

DirectX49

230111_D2D 렌더링 파이프라인 개요 이전까지 화면에 있는 픽셀 데이터만으로 화면에 그려주었음 그러나 이제부터 앞으로 다룰 데이터는 3차원 데이터임. 모니터는 x, y좌표 즉 2차원인데 데이터는 3차원이면 출력은 어떻게? 3d 데이터가 2d 데이터로 바뀌어서 출력되는 과정을 렌더링 파이프라인이라고 한다. 정점 데이터 : 점 하나 하나를 의미함 레스터라이저 : 정점데이터를 GPU가 받았으면 화면에 보이는 픽셀들을 계산해서 넘겨주는 과정 픽셀 데이터 : 무슨 색깔로 할래? 색깔을 정하는 부분 1. Input Assembler 단계 - 입력 데이터를 읽어오는 단계 - 정점 데이터와 인덱스 데이터를 읽어들여 그리는 순서 결정 - 그래픽 카드가 정점 데이터를 읽을 수 있도록 정렬 - 인덱스 데이터로 그리는 순서 결정 2. Vertex Shader 단.. 2023. 1. 11.
파트1-Chapter-01. 벡터의 외적 외적 벡터곱셈이라고 하고 가위곱 또는 외적이라고 함 결과값으로 벡터가 나옴 3차원 벡터에 대해서만 정의됨 두 3차원 벡터 u, v와의 외적을 취하면 u와 v 모두에게 직교인 w 벡터가 나온다. u = (ux, uy, uz), v = (vx, vy, vz)가 있을 때 둘의 외적은 다음과 같다 w = u x v = (uyvz - uzvy, uzvx - uxvz, uxvy - uyvx) u = (2, 1, 3) v = (2, 0, 0) w = u x v를 계산해보면 = (1*0 - 3*0, 3*2 - 2*0, 2*0 - 1*2) = (0, 6, -2) 외적으로 얻은 벡터가 어떤 방향인지는 왼손 엄지 법칙으로 알 수 있음 w에 u가 직교인지, v가 직교인지 확인하려면 w * u = 0, w * v = 0이면 직.. 2022. 10. 21.
파트1-Chapter-01. 벡터의 내적 내적 내적은 대응되는 성분들의 곱들의 합, 점곱이라고도 부름 u*v = (ux*vx) + (uy*vy) + (uz*vz) 크기와 방향을 가지고 있으나 일반적인 곱셈과는 다름 동일 방향 길이의 곱이 벡터 내적이다. 벡터는 방향이라는 값을 가지고 있기 때문에 막 곱할 수 없음 그러니 다른 벡터에서 또 다른벡터에 수선을 내려서 그 성분(cos)만큼 곱하는 것 따라서 아래와 같이 쓸 수 있다. u*v = |u|*|v|*cos(θ) u, v가 단위벡터일 경우 u*v는 두 벡터 사이 각도의 코사인 중요한 기하학적 속성 3가지 1. u*v = 0이면 u와 v는 직교이다. 2. u*v > 0이면 두 벡터 사이 각도는 90도보다 작다 3. u*v < 0이면 두 벡터 사이 각도는 90도보다 크다 예제 1. u와 v사이 각.. 2022. 10. 18.
파트1-Chapter-01. 길이와 단위벡터 벡터의 길이 기하학적으로 한 벡터의 크기는 지향 선분의 길이 벡터의 크기는 이중 수직선으로 나타낸다. (||u||) u의 크기 x,y,z가 있을 때 그 크기를 대수적으로 구해보면? 3차원 벡터의 길이는 피타고라스 정리를 2번 적용해서 구할 수 있다. xz좌표만 놓고 삼각형 그려서 1번, 그 위치에서 y까지 삼각형 그려서 1번 벡터의 그림자가 생긴다고 가정하고 그림자를 먼저 구하고 그림자를 밑변으로 해서 다시 구함 단위 벡터 벡터를 방향만 사용하는 경우 길이는 그다지 중요하지 않게 됨 그런 방향 전용벡터는 길이를 1로 맞춰두면 편리함 크기가 1인 벡터를 단위벡터라고 하고 임의의 벡터를 단위벡터로 만드는걸 정규화라고 함 벡터의 각 요소를 길이로 나누게 되면 그게 단위벡터이다. Normalize라고도 하며 N.. 2022. 10. 18.