목록전체 글 (244)
지우너
나중에 서버를 쌓아올리게 되면 ①핵심적인 코어 부분만 멀티스레드로 만들 것인지 ②게임과 관련된 콘텐츠도 멀티스레드로 만들 것인지 선택해야 한다. ②의 경우 모든 코드에서 다 멀티쓰레드로 돌아갈 수 있다고 하면 난이도가 확연하게 올라간다. 심리스(=경계가 없는) MMORPG(ex. 젤다:야숨, 몬스터헌터:월드 등)를 만들 때 조금 유리하다는 장점이 있다. 그게 아니라 바람의 나라나 뮤 같은 게임을 보면 존 단위로 나뉘어져 있다. 공간이 갈 수 있는 지역이 구분이 되어 있고 그 공간 안에 서 있는 모든 컨텐츠 코드는 싱글쓰레드로 그냥 실행시키면 훨씬 더 생각하기도 쉽고, 버그 확률도 줄일 수 있다. 이럴 때는 굳이 멀티쓰레드로 갈 필요 없이 전체적인 코어만 멀티쓰레드로 돌리고 핵심적인 컨텐츠 코드는 싱글쓰레..
임계영역(Critical Section) 동시다발적으로 Thread들이 접근을 하면 문제가 되는 코드 영역을 의미한다. 해당 영역에서 race condition이 발생한다. race condition 멀티쓰레드 프로그래밍(1)에서 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다. 입력 변화의 타이밍이나 순서가 예상과 다르게 작동하면 정상적인 결과가 나오지 않게 될 위험이 있는데 이를 경쟁 위험이라고 한다.(Wikipedia) 이를 해결하기 위한 방법 중 하나가 interlocked였다. Interlocked.Increment(ref num); interlocked계열은 성능도 굉장히 빠른 편이고, 우수하긴 한데 앞서 봤던 것처럼 정수만 사용할 수 있다는 치명적..
1. Thread 생성 Using System.Threading 을 추가하여 쓰레드를 사용할 수 있도록 만들기. using System; using System.Threading; namespace ServerCore { class Program { static void MainThread(object state) { for (int i = 0; i < 5; i++) { Console.WriteLine("Hello Thread!"); } } static void Main(string[] args) { ThreadPool.QueueUserWorkItem(MainThread); for (int i = 0; i < 1000; i++) { Thread t = new Thread(MainThread); t.Nam..
본 글은 한정현 교수님의 "컴퓨터 그래픽스" 강의를 정리한 글입니다(강의에 사용된 ppt 링크). 4장에서는 세 가지 중요한 변환을 살펴본다. ① Scaling (축소/확대) ② Rotation (회전) ③ Translation (이동) Scaling (축소/확대) 2 차원 축소/확대 경우 축소/확대 인자(x 방향, y 방향) 사용 어떤 벡터 x좌표가 주어졌을때 그 앞에 Sx 를 곱하고, y 좌표가 주어졌을 때 Sy 를 곱하면 이것이 축소/확대된 벡터를 나타냄. 그래픽스에서는 이러한 변환을 모두 행렬의 곱셈으로 표현한다. 따라서 축소/확대 되어야 할 벡터를 그림 16의 오른쪽과 같이 column vector로 표현하고 축소 확대될 벡터를 주 대각선에 놓아서 2x2 행렬을 만들어 곱한다. 예를 들어 어떤 ..
본 글은 한정현 교수님의 "컴퓨터 그래픽스" 강의를 정리한 글입니다(강의에 사용된 ppt 링크). 모델링: 그래픽스에서 렌더링 할 어떤 물체를 만들어내는 것 위 그림의 구를 어떻게 정의할 것인지 생각해보자. 가장 간단한 방법은 구의 중점과 반지름을 갖고 구의 방정식으로 정의하는 것. 이런 것을 음함수(implicit function)라고 이야기한다. 문제는 gpu가 음함수를 처리하기에 적합하게 설계되어 있지 않다. 따라서 음함수 표현대신 부드러운 표면의 점을 샘플링(sample)한다. 그러면 일정한 갯수의 꼭짓점, 정점이 나온다. 이런 정점들을 보이는 것처럼 다각형으로 이어둔 것이 폴리곤 메쉬이다. GPU가 폴리곤 처리에 최적화되어 있기 때문에 폴리곤 메쉬 표현이 실시간 그래픽스에서 선호된다. 매끄러운 ..
본 글은 한정현 교수님의 "컴퓨터 그래픽스" 강의를 정리한 글입니다(강의에 사용된 ppt 링크). 3차원 컴퓨터 그래픽스의 정의 3차원으로 표현된 물체를 입력으로 받아서 2차원 영상을 출력하는 작업. 그런 2차원 영상을 프레임(frame) 이라고도 이야기 함 영화고 게임에서처럼 연속적으로 프레임을 보여 주면 물체의 움직임을 표현 가능 프레임을 얼마나 빨리 만들어 내는가에 따라서 실시간 그래픽스 / 비실시간 그래픽스로 구분 실시간 그래픽스의 대표는 게임, 가상현실, 증강현실 등 보통 초당 30개 이상의 프레임을 만들어 내야 되는데, 그런 것들을 frames per second(=fps) 라고 이야기. 비실시간 그래픽스는 영화에서 쓰이는 특수효과 영화의 특수 효과의 대개 목표는 실사 영상 과 구분이 되지 않..