본문 바로가기

전체 글304

쉐이더 심화학습 04-Vertex Shader (~변환 행렬, 단위 행렬) 4. 변환 행렬5. 변환 행렬 애니메이션6. 단위 행렬       4. 변환 행렬= 대부분의 게임에서 크기 변환, 이동 변환, 회전 변환을 합쳐서 처리하는 방법  4.1. 행렬= 사각형의 형태로 정렬된 숫자의 배열.= 이동 회전, 크기의 조합을 저장하기 위해 사용되는 데이터 구조= 곱하기를 통해 변환 행렬을 합칠 수 있다. 결과는 각 행렬에 들어 있는 연산을 합친 행렬이다.= 벡터에 변환 행렬을 곱하면 행렬의 이동, 회전, 크기 연산을 벡터에 적용할 수 있다.   4.2. GLM 클래스를 사용한 행렬 만들기GLM 클래스를 이용한 예시는 아래와 같다.using namespace glm;mat4 translation=translate(vec3(0.5, 0.0, 0.0));mat4 rotation=rotate.. 2024. 3. 6.
쉐이더 심화학습 04-Vertex Shader (~이동, 회전, 크기 조절) 이번에는 vertex shader의 기능을 중심으로 공부한다.   1. Mesh 이동 처리2. 크기 변환3. 회전        1. Mesh 이동 처리1.1. Mesh Vertex 갱신대상을 x축 방향으로 5유닛만큼 이동시킨다고 가정하겠다.ofApp.cpp의 KeyPressed에 아래 내용을 추가하여 움직일 수도 있다.int numVerts=charMEsh.GetNumVertices();for(int i=0; i 이 방법의 단점을 아래와 같다.* mesh의 Vertex를 매 프레임마다 갱신할 경우, 연산량 증가로 인해 비효율적이다.* 게임 속 오브젝트들이 자신만의 mesh instance를 가지므로, mesh 데이터 저장용으로 메모리가 낭비된다.(게임 속 오브젝트들이 메모리에 있는 mesh를 공유하는 방.. 2024. 3. 2.
쉐이더 심화-3. 투명도와 깊이(~스프라이트 애니메이션) 이번에 구름을 만들면서 alpha blending, alpha texture의 차이를 알아보고 태양을 통해 addictive blending, 스프라이트 애니메이션 생성 과정을 알아볼 것이다.   4. Alpha Blending5. Addictive Blending6. Sprite Sheet Animation       4. Alpha Blending4.1. Alpha Testing과의 불투명도 표현 차이= Alpha Testing : 보이는 fragment / 보이지 않는 fragment로만 구분 가능.= Alpha Blending : 투명도 수치를 조절 가능.이 둘의 직관적인 차이를 보기 위해 alpha texture, alpha blending으로 각각 다르게 구름을 렌더링해 차이를 볼 것이다.구름.. 2024. 2. 20.
쉐이더 심화 3-투명도와 깊이(~Depth Testing) 컴퓨터 그래픽에서의 색상은 R, G, B, A 채널로 이루어져 있다. 여기서는 Alpha Channel을 이용해 다양한 형태의 오브젝트가 들어있는 씬을 그리고, 모든 대상을 렌더링하고, 캐릭터에 애니메이션 작업을 하는 방법을 배우겠다.(=이와 관련된 연산은 fragment 처리 단계에서 이루어진다.)  1. Quad Mesh에 대상 그리기2. Alpha Testing3. Depth Testing     1. Quad Mesh에 대상 그리기= 사각형이 아닌 형태를 그려보자!= 2D 게임은 사용하지 않는 fragment를 감춰버린다.(모든 것을 Quad에 그리기 때문에 Alpha Testing으로 투명하게 만듦.)(3D 게임 : 복잡한 mesh로 다양한 형태 렌더링.)  1.1. Mesh= 원하는 좌표, 원.. 2024. 2. 15.