본문 바로가기

All250

3 - 래스터화(Rasterization) 책을 보며 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 자료 및 내용 출처 래스터화(Rasterization) 렌더링 파이프라인의 2단계인 래스터화는 1단계인 정점 처리의 출력을 입력으로 받는다. 정점 처리 단계는 모델링으로부터 얻어진 폴리곤 메쉬의 각 정점들에 여러 변환을 적용하여 클립 공간으로 이동시켰다. 이러한 정점들이 래스터화의 입력으로 들어온다. 래스터화 단계에선 각 정점들을 정점, 선분, 삼각형(폴리곤) 단위로 처리하는데, 보통 삼각형 단위로 처리한다. 그리고 이러한 단위를 프리미티브(primitive)라 한다. 실시간 렌더링에서 대부분 삼각형 메쉬를 사용하는 이유는 다음과 같다. 삼각형은 가장 단순한 다각형이다. 삼각형은 언제나 평평하다. 아핀 변환, 투영 등을 거치더라도 .. 2020. 8. 7.
합병 정렬(Merge sort)을 구현해보자 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 있다면 알려주세요 :) Merge sort는 분할정복법(Divide and Conquer)을 사용한다. 분할정복을 사용하는 대표적인 정렬 알고리즘은 퀵 소트, 머지 소트, 힙 소트가 있다. 분할정복이란 해결하고자 하는 하나의 큰 문제를 동일한 크기의 여러개의 분할로 나누고, 분할된 작은 문제를 해결(정복)하여 합병을 통해 합쳐주는 것이다. 각각의 문제를 순환적으로 해결하기 위해 보통 재귀를 사용한다. 머지 소트의 동작을 그림으로 나타내면 다음과 같다. 정렬이 되지 않은 배열 {4, 8, 13, 2, 23, 16}이라는 하나의 큰 문제를 동일한 크기로 재귀적으로 분할한다. 가장 작은 크기인 1개의 분할에 도달하면 각 분할을 정렬된 상태로 합친다.. 2020. 8. 3.
[C/C++] 인자로 넘겨받은 배열로는 배열의 크기를 구할 수 없다. 다음과 같이 배열이 주어지면 배열의 크기와 원소의 크기를 통해 배열의 길이를 알 수 있다. void main() { int arr[] = {1,2,3,4,5,6}; size_t arr_size = sizeof(arr)/sizeof(int); // 6 } 그런데 다음과 같이 함수의 인자로 배열을 넘겨받아서 위와 같이 계산하면 구할 수 없다. void Foo(int arr[]) { size_t arr_size = sizeof(arr)/sizeof(int); // 1 } void main() { int arr[] = {1,2,3,4,5,6}; Foo(arr); } 그 이유는 인자로 arr을 받을 때 배열이 아닌 포인터로 받기 때문이다. 즉 배열의 이름(주소)을 받는다. 그래서 분자가 배열의 크기가 아닌 포인터.. 2020. 8. 2.
빠른 렌더링을 위한 오브젝트 제외 기술(유영천님 발표) C++ Korea 제7회 세미나 - "게임 개발 타임" 에서 진행된 내용 정리 예정... youtu.be/wnBRg5c5-bk?t=14278 2020. 8. 2.
콘솔 클라이언트 개발 기술 면접 후기 얼마 전에 ㅂㅌㄱㄹㅇㄷ를 개발한 회사의 인턴쉽에 지원했는데 운좋게 서류에 합격하고 테스트도 통과해서 기술 면접을 보러갔다. 회사는 되게 깔끔하고 쾌적하고 자유로운 분위기였다. 첫 기술 면접이라 떨렸는데 면접보는 공간도 그렇고 분위기도 그렇고 좀 오픈되어 있는 느낌이라 그나마 덜 긴장됨. 면접 전에 가장 걱정되었던 부분은 해당 게임에 대한 경험이 거의 없는 것과 게임 개발에 대한 경험이 없는 것이었다. 게임 개발 경험이 있으면 좋지만 뭐 신입은 기초 탄탄하게 더 중요하다 하길래 그나마 덜 걱정되긴 했다. 필기 테스트도 거의 C++, 전산학 지식을 묻는 것이어서 좀 더 안심됐고.. 근데 분명히 해당 게임을 많이 해보지도 좋아하지도 않는데 지원한 이유를 물어볼 것 같았다. 어쨌든 처음에 인터뷰 시작하고 간단하.. 2020. 7. 30.
2 - 정점 처리(Vertex processing) 책을 보며 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 자료 및 내용 출처 정점 또는 폴리곤 메쉬에 대한 내용은 이전 글 참고하세요. 정점 처리 그래픽 아티스트에 의해 폴리곤 메쉬가 완성이 되고, 게임 프로그램에 넘어오게 되면 폴리곤 메쉬의 각 정점들이 정점 버퍼에 저장이 된다. 우리의 목표는 폴리곤 메쉬를 단순히 화면에 그리는 것이 아니라, 게임 내 적절한 공간에 배치하는 것이다. 이를 위해선 정점 버퍼에 저장된 정점들을 그대로 사용하면 안되고, 변환을 통해 적절한 공간으로 이동시킨 후에 사용해야 한다. 이처럼 각 정점에 대해 여러 변환을 수행하는 단계를 정점 처리라고 한다. 정점 처리 단계는 프로그래머에 의해 작성된 정점 처리 루틴에 맞게 동작한다. 즉 우리가 정점 처리 코드를 작성.. 2020. 7. 24.