2010년 5월 30일 일요일

Sobel Filter


이미지는 x, y 두 개의 인자를 가지는 다변수 함수라고 볼 수 있다. 따라서 x, y 방향 각각으로 불연속점이 존재할 수 있으므로, 각 방향에 따라서 두 개의 커널이 존재한다.

 

Sobel Filter의 커널은 다음과 같다.

 

x

 -1  0  +1
 -2  0  +2
 -1  0  +1

 

y

 +1  +2  +1
 0  0  0
 -1  -2  -1

 

필터링을 수행하는 3단계는 다음과 같다.

 

  • x방향 커널을 이미지에 적용해서 x방향의 편미분을 계산한다.
  • y방향 커널을 이미지에 적용해서 y방향의 편미분을 계산한다.
  • 두 편미분 값을 이용해서 다음 수식을 계산한다.

 

 

factorial구하기

n!을 구하는 함수를 순차적, 재귀적, 템플릿 메타프로그래밍을 이용해서 구현해보라?

 

순차적 방법

펼쳐두기..

 

재귀적 방법

펼쳐두기..


템플릿 메타프로그래밍

펼쳐두기..


 

2010년 5월 27일 목요일

Rendering Pipeline Overview

그리기 위해 필요한 것들

 

  • 누가   : 보는 주체가 누구인가? 3D Graphics에선 Virtual Camera
  • 무엇을 : 무엇을 보는가? 가상 월드
  • 어디서 : 가상 카메라의 위치
  • 어떻게 : 가상 카메라의 방향, fov, viewport의 크기 등의 특성
  • 언제   : 시간

 

Rendering이란

 

  • 수학적으로 이야기하자면, Primitives(triangle,line.point)의 집합을 Pixel의 집합으로 사상하는 함수라고 할 수 있다.

 

Pipeline의 특성

 

  • n번째의 Job이 완료될 때까지 n-1번째의 작업이 얼마나 빨리 완료되든 대기해야한다.
  • Pipeline의 속도는 가장 느린 Stage의 수행 시간에 의존적이다
  • nonepipelined system을 n-stage pipelined system으로 변경하면 n배 속도가 향상된다.

 

Rendering Pipeline의 구성단계

 

  • Application
  • Geometry
  • Rasterize

 

각 단계가 수행하는 작업

 

  • Application 단계는 그려져야할 Primitive 집합을 만든다.
  • Geometry 단계는 3D->2D로 변환하는 일련의 과정을 수행한다.
  • Rasterize 단계는 2D 삼각형을 Pixel 집합으로 사상을 수행한다.

 

PS - 이 글은 개인적으로 그래픽스 이론을 설명하려고 집필하고 있던 노트에서 발췌한 부분입니다. 본래는 좀 더 많은 내용이 손그림과 수식들로 설명되어 있는데, 어떻게 블로그로 옮겨올지 방법이 없어서 그냥 간단한 개요만 적어봅니다.

 

샌드 캣

멸종 위기에 있는 가장 작은 고양이과 동물인 샌드 캣(모레 고양이)가 인공 수정으로 태어났다고 하네요.

 

몇일전에도 멸종된 조류 종에 대한 기사를 봤는데 참 씁쓸하더군요, 샌드 캣은 멸종이 되지않길 바랍니다.

 

 

 

회사 이야기

오늘 TIG(www.thisisgame.com)에서 인터뷰 기사와 게임 동영상을 캡쳐하기 위해서 기자분이 방문을 했다. 오후 2시 방문이었고 1-2시간이면 모든 것이 완료될 것이라고 생각했다.

 

하지만 공개용 동영상 소스들을 모으는데 2시간이 넘게 시간이 흐르고 인터뷰와 마지막 우리 사장님의 사진 찍는 것까지 하니 4시간 가량이 후딱 지나갔다.

 

6월초쯤 신작 소개 형식으로 기사가 나올 것 같은데, 어떤 반응이 있을지와 퍼플리셔들에게서 연락이 올지 자뭇 궁금하다.

재미있는 USB 메모리

'무게'를 컨셉으로 디자인된 제품으로 실제 콘크리트로 만들었다고 메모리 용량을 giga byte에서 g로 표기하는 점을 착안해서 용량과 동일한 그램의 무게를 적용했다네요.

 

 

미국 디자인 전문 웹진 Yanko Design에서 소개된 이 제품은 Shu-Chun Hsiao라는 디자이너가 개발했다고 합니다.

 

2010년 5월 25일 화요일

역시 좋은 회사를 다녀야......

SK 아이미디어에 다닐때 받았던 대출이 만기가 도래해서 만기연장을 했다. 작년 연장할 때 이미 지금 다니는 회사가 하나은행의 family 회원사가 아니라서 5%대의 이자율에서 7.5%대의 이자율로 증가했었는데,

 

올해는 서류만 보내주면 연장될 것처럼 말하더니, 만기일인 오늘 천만원을 갚으라고 하더라 이거 뭐 장난하는 것도 아니고 또 기분도 우라지게 나쁘게 분명 원청징수 영수증하고 재직증명서도 보냈는데, 재직 사실을 확인한다고 회사로 전화를 하는 짓거리라니......

 

솔직히 SK 아이미디어있을 때 대출받을때보다 신용등급도 상당히 좋아졌고 그때나 지금이나 받는 급여는 같고 4년여간 하나은행 신용카드도 열심히 써주고 급여도 이체하고 이런저런 자동이체도 하고 있는데 대우는 해가 갈수록 나빠지니 서럽다.

3DMark11

아래 Heaven Benchmark 소개글을 포스팅하면서 3DMark의 DX11을 지원하는 버전이 없다고 얘기했는데, 이제야 공개되는군요.

 

6월1일-5일까지 진행되는 컴덱스 전시회의 MSI 전시 부스에서 공개된다고 하네요. 아래는 3DMark11의 테크데모 중 하나인 Deep Sea의 공개된 영상입니다.

 

 

 

2010년 5월 24일 월요일

미니 서평 #10

 

 

제목 : How to solve it

저자 : G. Polya

출판 : PrincetonUniversityPress

 

실제로 책은 문제를 풀기 위해서 일련의 질문을 통해서 문제를 좀 더 정확하게 이해하기 위한 방법들을 설명하고 있지만, 개인적으로는 만약 내가 문제를 풀지 못한다면, 내게 그 문제를 풀기위한 배경 지식이 부족하기 때문이라는 것을 알려준 것 같다.

2010년 5월 23일 일요일

팩맨 30주년 기념 구글 로고

 

남코의 히트작인 팩맨의 30주년을 기념해서 구글의 로고가 바뀌었네요.

 

재미있는 것은 영문 구글 사이트로 접속하면 I'm Feeling Lucky버튼이 Insert Coin버튼으로 바뀌어 있고 그 버튼을 누르면 저 로고에서 팩맨 게임을 할 수 있습니다.

 

이틀 동안만 진행되는 이벤트이니 옛 향수를 가지고 계신 분들은 한 번쯤 즐겨보세요.

여자 사람 #16

사사키 노조미

 

 

 

 

2010년 5월 21일 금요일

기억의 파편 #2

 

일본의 네덜란드 테마파크라고 할 수 있는 하우스텐보스는 4계절마다 분위기가 다르다고 하는데, 가을에만 가봐서 나머지 3계절에도 한번쯤 방문을 해보고싶다.

 

2005년도 하우스텐보스에서 찍은 사진 몇점.

 

 

 

Heaven Benchmark

현존하는 그래픽 카드 성능을 테스트하기 위한 벤치마크 프로그램 중에 가장 유명한 것은 아마 FutureMark사의 3DMark063DMark Vantage일 것이다. 두 프로그램은 각각 DX9.0과 DX10.0을 지원한다.

 

하지만 아직 DX11을 지원하는 벤치 프로그램은 출시되지 않았다. 그리고 위의 프로그램들은 기본 기능 이외의 기능을 사용하려면 유료다.

 

그래서 오늘은 무료로 DX9, DX10, DX11 모두를 벤치마크할 수 있는 Heaven Benchmark를 소개하고자 한다.

 

[프로그램 기능]

 

  • DirectX 9, DirectX 10, DirectX 11, OpenGL 지원
  • Comprehensive use of tessellation technology
  • Advanced SSAO (screen-space ambient occlusion)
  • Volumetric cumulonimbus clouds generated by a physically accurate algorithm
    Dynamic sky with light scattering
  • Interactive experience with fly/walk-through modes
    Benchmark mode

 

[소프트웨어 요구사항]

 

  • .NET framework 2.0 필요
  • OpenAL (included into Windows installer)
  • 사용하고 있는 그래픽카드의 정식 드라이버

 

[하드웨어 요구사항]

 

  • ATI Radeon HD 2000 이상, NVIDIA GeForce 7000 씨리즈 이상 (NVIDIA 8800 / AMD 4800 씨리즈를 권장) 256 Mb 이상의 비디오 메모리
  • Tessellation 기능은 DX11을 지원하는 그래픽카드가 필요

 

프로그램 기능에 나와있듯이 Heaven Benchmark는 DX11의 기능인 Tessellation Shader의 기능을 사용하는 벤치기능이 있는데 NVidia사의 페르미가 그렇게 욕을 먹고 있지만, 경쟁사보다 나은 유일한 것이 바로 이 Tessellation의 성능이 월등하다는 것이다.

 

개인적으로는 일반적으로 게임의 사양을 공개할 때 CPU, Memory, 그래픽카드 등등의 스펙을 적어놓는데 동일한 스펙이라도 실제 유저의 사용 환경에 따라서 성능은 천차만별이고 잘모르는 유저들도 많기 마련이다. 이럴경우 그냥 이러한 벤치마크 프로그램 몇점이상 이런 식으로 게임의 사양을 공개하면 더 좋지않을까? 라는 생각을 해본다.

 

 

2010년 5월 20일 목요일

여자 사람 #15

유미 스기모토

 

 

 

 

게임 플레이 동영상 녹화의 효과

최근 변경된 기획을 적용한 알파버전의 게임을 회사에서 열심히 플레이하고 있는데, 예전과 다르게 플레이를 모두 동영상으로 녹화를 하고 있다.

 

동영상으로 모아놓으니, 뭐 동영상 공개를할 때, 소스가 많아서 좋은 점도 있고 무엇보다, 게임에 대한 수정과 보완에 대한 회의를 할 때 동영상을 보면서 진행을 하니, 상당히 집중력도 생기고 머리속에서 흐릿한 기억을 가지고 의견을 얘기할 때보다 명확하고 실질적인 논의들을 할 수 있어서 좋았다.

 

 

미니 서평 #9

 

제목 : C++ 코딩의 정석

저자 : 허브 셔터, 안드레이 알랙산드레쿠

역자 : 최현호

출판 : 정보문화사

 

이렇게 연속으로 미니 서평을 포스팅하는 이유는 두 책이 굉장히 유사한 주제에 대한 책들이기 때문이다. 차이점이 있다면 이 책은 C++에 대한 이야기라는 것이다. 그래서 네임스페이스나 템플릿, STL와 같이 C++의 언어적 기능들을 어떻게 사용하는 것이 좋은 지에 대한 설명들도 들어있다.

 

미니 서평 #8

 

제목 : 켄트 벡의 구현 패턴

저자 : 켄트 벡

역자 : 전동환

출판 : 에이콘출판사

 

흔히 OOP로 프로그래밍을 하다보면, OOA&D(객체 지향 분석과 설계) 이외에 프로그래머들이 항상 고민하는 문제가 바로 Coding Style과 Convention에 대한 것이다. 이 책은 바로 그러한 고민에 대한 확장판이라고 할 수 있다.

 

2010년 5월 18일 화요일

Steam.

스팀이라는 새로운 유통 구조가 생기면서 PC 기반 아마추어 게임 개발자들도 기존 유통 구조의 도움없이도 자신의 게임을 판매할 수 있게되었다.

 

스팀을 살펴보면 국내에는 소개되지도 않고 최근에는 잘 즐기지도 않는 어드벤처류의 게임들을 만드는 아마추어 팀들이 꽤 있고, 높은 meta-score를 기록하고 있는 게임들도 많다.

 

그에 반해 XBox Live Arcade의 경우 지난 달 GDM의 기사를 보니 그렇게 돈을 벌 수 있는 플랫폼은 아닌 것 같다.

 

오늘 기사를 보니 토치라이트가 50만 카피 판매고를 기록했다고 한다. 물론 개발자들이 블리자드와 플래그쉽에서 일했던 프로들이지만, 오우거라는 오픈 소스 엔진을 사용해서 게임을 개발했고, 다른 유통 경로없이 스팀으로만 판매를 한 점과 무엇보다 작은 볼륨을 가진 게임을 출시한 것이 왠지 아마추어 팀과 유사하다는 느낌을 받았다.

 

처음 게임 개발의 입문을 패키지 게임 개발로 시작해서 아직도 패키지 게임 제작에 대한 향수를 가지고 있는 나로서는 아직도 유지되고 있는 해외의 PC 패키지 시장과 스팀과 같은 아마추어 개발자들도 패키지 게임을 개발할 수 있는 환경이 있다는 것이 상당히 부럽다.

 

 

 

 

여자 사람 #14

사사키 노조미

 

 

Edge Detection

 

이 글은 Edge Detection에 대한 개요이다.

 

일반적으로 Edge를 검출하는 방법은 크게 기하학적인 방법과 이미지 공간 방법으로 나눌 수 있다.

 

그런데 현재 가장 많이 사용하는 방법은 이미지 공간 방법이다. 왜냐하면 기하학적인 방법은 장면의 기하학적 복잡도에 따라서 Edge 검출 시간이 증가하기 때문이다. 그에 반해 이미지 공간 Edge 검출은 기하학적 복잡도와 상관없이 상수 시간의 처리 속도를 가진다.

 

이미지 공간 Edge 검출은 Sobel filter와 같이 불연속점을 검출하는 필터라면 어떤 필터라도 상관이 없다.

 

불연속성을 검출하기 위해서 사용될 수 있는 이미지 소스 중에 대표적인 것들은 깊이 버퍼, - 깊이 버퍼의 경우 Z-buffer의 값은 비선형성때문에 좋은 결과를 얻을 수 없으므로, 노멀라이즈를 하는 것이 좋다 - 노멀 버퍼, 색상 버퍼가 있다.

 

깊이 버퍼는 뷰 공간 깊이값을 사용하는데, 문제는 깊이 값이 8bit 정밀도를 가지므로, 근경의 Edge 검출은 정확하지만, 원경의 경우 Edge가 검출되지 않고 두 물체가 너무 가까이 있어도 Edge가 검출되지 않는다.

 

노멀 버퍼의 경우는 깊이 버퍼와 다르게 근경, 원경 모두 Edge 검출이 잘되고, 두 물체가 가까이 붙어있어도 Edge 검출이 잘되지만, 문제는 두 물체가 같은 노멀을 가지고 있다면 Edge가 검출되지 않는다. 예를 들자면 책상 위에 종이 한장이 놓여있는 것처럼 말이다.

 

마지막으로 색상 버퍼를 사용하는 방법이다. 각 물체마다 고유의 ID를 색상으로 표현하여, 색상 버퍼를 그리고 그 색상 버퍼의 불연속성을 이용하여 Edge를 검출하는 방법인데, 위의 두 가지 방법의 장점만 가지고 있다고 할 수 있지만, 같은 물체의 내부 Edge를 검출하지 못한다. 예를 들자면, 종이를 접어놓았을 때 안쪽으로 접힌 부분의 Edge를 검출하지 못한다. 왜냐하면 같은 색상 ID이기 때문에 불연속성이 검출되지 않기 때문이다.

 

그래서 정확한 Edge를 검출하기 위해서는 여러 방법을 혼용해서 사용해야만 한다.

 

 

2010년 5월 16일 일요일

여자 사람 #13

아마 전단지를 통해서 많이 봤을 아키 호시노. 30줄에 들어선 그라비아 모델.

 

 

 

2010년 5월 15일 토요일

double k 2집

 

 

Double K의 6년만의 2집 앨범. 황당하게도 보너스 트랙으로 들어있는 MIC를 잡는 매순간 이 랩이 진짜 돋음.

 

 

2010년 5월 13일 목요일

Youtube 버퍼링없이 보기

http://gyuyoul.textcube.com/74

 

이글을 참조해서 DNS를 구글 오픈 DNS로 바꾸면 Youtube를 버퍼링없이 볼 수 있습니다. 그런데 보조 DNS 주소를 제가 잘못알고 있었더군요.

 

위의 글처럼 따라하시다가 DNS 주소 입력할 때, 보조 DNS 주소가 8.8.6.6이 아니라 8.8.4.4입니다.

 

 

아 역시 게임전문기자가 기자긴 기자군요.

오늘 우리 사장께서 T로 시작하는 웹진에 개발 중인 게임 동영상을 메신저로 보냈더군요. 본래 이런 짓거리는 하지말아야하는데......

 

그런데 T로 시작하는 웹진의 관계자분들의 반응이 "박진감이 없다." "밋밋하다." 이런 부정적인 반응들이 많은데 뭐 그런 부분들은 다 이해가 가능하고 기분 나쁘지 않은데, 우리가 UE3를 사용했다고 하니, "정말 UE3를 사용한 것이냐? UDK라면 진짜 잘만든 건데."라는 반응이 있었다고 하더군요.

 

결국 이 얘기에 확 돋더군요. UDK나 UE3나 같은 코드드랍으로 만들어진 동일한 기능을 가진 엔진입니다. 그런데 공개용이라는 이유로 이렇게 기능에 차이가 있다는 잘못된 지식을 가지고 있는 것을 보니 역시 기자는 기자네요.

기억의 파편 #01

 

 

2002년도 LG-동아 게임쇼때 사진이다. 그때 사진을 찍어주신 분이 필카로 사진을 찍어주셨는데, 플레쉬가 터지지 않아서 사진이 어두운데다가 스캔을 낮은 DPI로 받았더니 왠지 오래된 사진의 느낌이 자연스럽게 연출되었다.

 

이 때 나의 목을 조르고 있는 여자분이 미스 버지니아 출신의 재미교포였는데, 상당히 쾌할하고 장난을 좋아했던 걸로 기억이 난다.

 

왠지 사진을 보고 있으면 목을 졸리면서 웃고 있는 나의 모습이 메조키스트가 아닌가? 라는 의문이 들기도 하고 말이다.

2010년 5월 11일 화요일

여자 사람 #12

유미 스기모토 네 번째인 듯.

 

이거 인수 경쟁 시작인가요?

넥슨이 최근 개발보다 M&A에 집중을 하는 모습을 보여주면서, 다른 N으로 시작하는 메이저들께서 어떻게 대응을 할 지 궁금했는데, 오늘 엔씨가 펀치 몬스터를 개발 중인 넥스트플레이의 지분을 65%로 확보했다는 기사가 났네요.

 

제조업에서 중소기업과 대기업의 관계처럼 되지 않을까? 라는 우려가 되는군요.

2010년 5월 8일 토요일

Andy Mckee의 Rylynn 연주 동영상

2001년 윈필드 페스티벌 전미 내셔널 핑거스타일 챔피언 3위에 입상하면서 부터 활동을 시작한 Andy Mckee의 2005년도 앨범 'Art of Motion' 의 12번 트랙 Rylynn입니다.

 

아래 성하군의 연주와 비교하면서 보시면 재미있을 것입니다.

 

정성하군의 Rylynn 연주 동영상

요즘 외환은행 CF때문에 많이 알려진 정성하군입니다. 이미 어린 천재 기타리슽로 스타킹에도 출연을 했었고 유투브 동영상 조회수때문에 기사도 나왔었죠.

 

핑거 스타일이라는 멜로디,리듬,퍼커션을 한 번에 연주하는 주법을 사용합니다. 들어보면 상딩히 매력이 있는 연주 주법인 것 같습니다.

 

유투브에 올라와있는 정성하군 연주 중에서 Andy Mckee의 Rylynn이라는 곡입니다.

 

셀프 넘버들의 합을 구하라.

어떤 자연수 n이 있을 때, d(n)을 n의 각 자릿수 숫자들과 n 자신을 더한 숫자라고 정의하자. 예를 들어 d(91) = 9 + 1 + 91 = 101 이다. 이 때, n을 d(n)의 제네레이터(generator)라고 한다. 위의 예에서 91은 101의 제네레이터이다. 어떤 숫자들은 하나 이상의 제네레이터를 가지고 있는데, 101의 제네레이터는 91 뿐 아니라 100도 있다. 그런데 반대로, 제네레이터가 없는 숫자들도 있으며, 이런 숫자를 인도의 수학자 Kaprekar가 셀프 넘버(self-number)라 이름 붙였다. 예를 들어 1,3,5,7,9,20,31 은 셀프 넘버 들이다.1 이상이고 5000 보다 작은 모든 셀프 넘버들의 합을 구하라.

 

 

풀이

 


 

2010년 5월 7일 금요일

HTC 디자이어 '고가 논란'

SKT에서 스마트폰 HTC 디자이어가 출시되는데, 가격이 해외 가격에 비해서 15% 정도 비싸다고 하네요.

 

이유는 HTC와 SKT가 알파라이징 했기 때문이죠. 여기서 알파는 알파라이징 함수의 변수입니다. 이 경우 변수의 인자가 가격이니 함수에 대입해보면, 가격라이징이죠. 한글로 쓰면 가격인상인거죠.

 

문제의 다지이어의 이미지

 

2010년 5월 5일 수요일

아시는 분들은 빵 터지실 듯......

 

 

데스윙 모델 유출

 

와우를 끓은지 1년이 넘었지만, 그래도 첨으로 해본 MMORPG이고 가장 오랫동안 즐겼던 게임이라서 관심이 가긴 하는군요.

 

3번째 확장팩의 마지막 보스격인 데스윙의 3D 모델이 유출되었습니다. 일러스트처럼 거대하진 않지만 그래도 표현을 잘한 것 같네요.

 

여자 사람 #11

아드리아나 리마, 톱모델이죠. 혼전순결 선언으로 유명한데 지금까지 지켜지고 있나 궁금하군요.

 

2010년 5월 4일 화요일

미니 서평 #7

 

제목 : 프리팩토링

저자 : 켄 푸

역자 : 서우석

출판 : 한빛미디어

 

극단적인 추상화, 극단적인 분활, 극단적인 가독성 이 세 원칙을 이용해서 리팩토링할 코드의 양을 줄일 수 있는 지침들을 알려준다. 솔직히 이 책의 지침들은 나의 생각과는 상반된다. 개인적으로는 문제는 쉽게 접근해서 간단하고 빠르게 구현하고 계속적으로 의존성을 줄이고 가독성을 증대시키는 방향으로 리팩토링을 하는 것이 좋다고 생각하기 때문이다. 초보자들의 실수는 이러한 책들때문에 너무 초반 설계에 많은 시간을 소요한다는 것이다. 실제로 우리가 해야할 것은 멋진 설계가 아니라 동작하는 프로그램 코드를 만들어 내는 것이다. 그리고 경험을 해보면 그 문제를 새로운 시각에서 바라볼 수 있게되어서 아마 더 좋은 방법들이 눈에 보이기 시작할 것이다. 그러면 그 때 기존 코드를 리팩토링하면 된다.

 

수학과 영어 공부를 한번에......

http://ocw.mit.edu 라는 사이트를 가면 OpenCourseWare라고 무료로 볼 수 있는 MIT 강의들이 있습니다.

 

등록되어 있는 강의들 모두가 동영상이 있는 것은 아니지만, Course 중에 Mathematics에서 'MIT 18.01 Single Variable Calculus, Fall 2007'라는 강의 동영상을 보니 그래도 미적분에 대한 지식과 칠판에 적어주는 수식때문인지 그래도 알아들을만 하더군요.

 

요즘처럼 바쁜 시절에 수학과 영어를 한 번에 공부할 수 있는 좋은 방법이 아닌가? 라고 생각을 해봅니다.

 

아래는 첫 강의의 Youtube 동영상입니다.

 

사막 여우

이상하게 유입 로그에서 확인을 해보면 사막 여우로 검색해서 이 블로그로 오시는 분들이 많으신 것 같아서 사진 한장을 더 올립니다.

 

헐 역시 일본이다.

애니메이션 케이온 2기의 오프닝, 엔딩 테마인 Go! Go! MANIAC과 Listen이 각각 오리콘 차트 1,2위를 했다. 오리콘 차트 역사상 43년만에 처음이라고 하는데, 놀랍다.