목록게임 (69)
센로그
◆ Output-Merger Stage 최종적으로 스크린에 한번에 보여질 color들을 결정하는 스테이지. Pixel Shader의 output으로써, pixel들이 넘어왔을 것임. 이제 실제 스크린에 보여줄 칼라를 결정해야 한다. 이전에는 오브젝트 각각의 칼라를 결정해 준 것이고, 이번에는 오브젝트들의 칼라를 모아서 최종적으로 스크린에 한번에 보여질 칼라를 결정하는 것. 이 픽셀을 찍을건지 말건지, 그냥 보일건지 변형시킬건지.. 이런거 결정. Output-merger stage에서는 다음 두가지 처리를 수행함 Depth-Stencil Test Color Blending 또, 다음 요소들을 고려해서 최종 칼라 값을 결정함. 1) a combination of pipeline state, 2) the pi..
◆ Phong Lighting Model Raterizer에서, face 안쪽의 pixel 데이터를 생성해줬었다. 이제, 이 pixel들에 하나하나 접근할 수 있다! Pixel Shader에서는 p1~pn까지 가득 채워져있는 pixel data들에 각각 접근해서 pixel의 색깔을 결정함 이 pixel 정보들을 일렬로 세우고, 병렬 처리로 한번에 계산해서 pixel마다의 색깔을 결정하는 것. (병렬이므로, 인접한 애들에 대한 접근 까지는 못함) 이때 pixel의 색깔을 결정하는 중요한 두 가지 요소가 있다. Texturing (벽지 바르기) Lighting (빛 처리) 이번에는 그중 Lighting에 대해 다뤄볼 것이다. Lighting이란, object와 light 간의 상호작용을 다루는 기술을 의미한..
◆ Singular Value Decomposition (SVD) 뒤에 나올 pseudo-inverse matrix의 개념을 이해하기 위해, SVD(특잇값 분해)의 개념부터 설명하고 넘어가겠음! ■ SVD Introduction SVD(Singular Value Decomposition)는 고윳값 분해(Eigen Decomposition)과 극분해(Polar Decomposition)과 관련이 있음. 선형 대수에서, 행렬의 SVD는 해당 행렬을 세 개의 행렬로 factorization하는 과정입니다. 더보기 ※ Matrix factorization(decomposition)이란? Matrix factorization는 행렬을 여러 부분으로 분해하여 곱셈을 통해 원래의 행렬을 재구성하는 과정입니다. 이를 ..
◆ Pixel Shader Raterizer에서, face 안쪽의 pixel 데이터를 생성해줬었다. 이제, 이 pixel들에 하나하나 접근할 수 있다! Pixel Shader에서는 p1~pn까지 가득 채워져있는 pixel data들에 각각 접근해서 pixel의 색깔을 결정함 이 pixel 정보들을 일렬로 세우고, 병렬 처리로 한번에 계산해서 pixel마다의 색깔을 결정하는 것. (병렬이므로, 인접한 애들에 대한 접근 까지는 못함) 이때 pixel의 색깔을 결정하는 중요한 두 가지 요소가 있다. Texturing (벽지 바르기) Lighting (빛 처리) 이번에는 그중 Texturing에 대해 다뤄볼 것이다. ◆ Texture Coordinate - Image texturing texturing의 종류로..
◆ Rasterizer Stage Clip Space의 vertex데이터(position, color, uv 등)를 Viewport로 변환하고, 정점 데이터를 기반으로 보간된 프래그먼트(픽셀 데이터)를 생성한다 쉽게 말해서 삼각형 내부를 pixel로 채우는 것! 이 단계 이후로 픽셀 각각에 대해 접근가능해짐 Vertex Shader을 거쳐, vertex들의 final position (clip space position)을 구해서 이제 Rasterizer로 넘어감. Rasterizer는 있어도 되고 없어도 되는데, 어쨌든 미리 만들어진 fixed 형태로 작동한다. Rasterizer 스테이지의 주 역할은, Vertex들을 기준으로, primitive 내부의 Pixel을 채워주는 것이다. 그전에, 아래와 ..
◆ View Frustum 우선 카메라에 관한 이야기를 좀 해보자. 카메라는 무한한 공간을 보지 않는다. Fov(Field of View; 시야)가 한정되어 있기 때문. 따라서 우리는 카메라가 어느정도 볼건지를 결정해야 함. View frustum(잘린 피라미드) 안에 있는 애들만 보도록 한다! ▲directX 기준이므로 -f, -n이 아니라 f, n인듯? 총 4가지 파라미터: fovy(얼마나 넓은 y만큼 볼거냐. 안잘린 피라미드 꼭대기 각도 느낌) aspect(가로/세로 비율. 16:9 이런거) n(원점에서 near plane 까지의 거리) f(원점에서 far plane 까지의 거리) 에 의해서 이 frustum이 결정됨. 이 frustum에 아예 들어오지 않는 애들은 최종 이미지에 영향을 미치지 않기..