본문 바로가기

게임수학

(7)
셰이더 ShaderLab유니티의 셰이더는 shaderLab이라는 유니티의 독자적인 형식으로 외곽을 기술해 주로 OpenGL ES의 내부 상태를 설정한다. 그리고 그 안쪽에 GPU에 전달하는 셰이더 본문으로서 각종 셰이딩 언어로 기술한 버택스 셰이더와 프로그래먼트 셰이더를 집어넣는다. 다음은 가장 기본적인 셰이더 구문이다.Shader "Simple colored lighting"{ Properties { _Color ("Main Color", Color) = (1,.5,.5,1) } SubShader { Pass { Material { Diffuse [_Color] } ..
게임 앱 환경 씬 그래프게임엔진은 다양한 해석 가운데 하나의 그래픽스 관련 처리를 도맡아 하는 것이라 보는 사고방식이다. 몰입감을 자아내는 엔터테인먼트 측면에서 게임의 강점은 십중팔구 시각적 자극이며, 프로젝트에서 개발 비용이 가장 많이 할애되는 부분이 되기 쉽다. 원래 그래픽스 처리를 혼자서 도맡으려면, 어떤 장면에 어떤 물체가 있고 서로 어떤 관계성이 있는지 등, 렌더링 대상에 관한 일련의 정보 데이터베이스도 받아와야 한다. 그래서 일반적으로 게임엔진에는 에셋 관리를 위한 시스템이 있다. 에셋은 게임을 만드는 소재 일반을 가리키면 이미지, 3D 모델의 지오메트리 정보, 음악, 텍스트 등 온갖 데이터를 포함한다.유니티에는 에셋 데이터베이스가 있으며, 파일시스템상에서 프로젝트 폴더 아래에 존재하는 정적 파일에 대해서는..
곡선 보간과 극사두 개의 서로 다른 물체가 있을 때, 그 중간을 어떻게 만들어 갈 것인지에 관한 문제로, 시점에 가까우면 시점의 속성을 더 강하게 반영하고 반대로 종점에 가까우면 종점의 속성을 강하게 반영한다. 시점의 속성과 종점 속성을 더해 2로 나누면 중간점으로서 평균을 얻을 수 있지만, 보간은 두 개의 다른 물체의 혼합 비율을 평균처럼 1:1 비율로 잡는 대신 서서히 변화시켜 간다. 다시 말해, 선형보간이라면 다음 식에서 t를 서서히 변화시킴으로서 y{0}과 y{1} 중 어느 쪽 속성을 강하게 반영할 것인지에 관한 혼합 비율을 제어한다.곡선을 생성할 때 기본이 되는 것은 입력으로서의 제어점을 처음에 몇 개 두고, 사람이 중간에 인위적으로 조작하지 않아도 컴퓨터가 적당히 계산해 보간하고 제어점을 통과하는 ..
행렬 정의행렬은 행과 열이 있는 격자 모양 배열 안에 스칼라를 나열한 것이다.  행렬 안에 나열된 스칼라를 요소라 부른다. 프로그래밍 언어에서는 배열 인덱스의 첫번째 숫자를 0을 사용하는 0 베이스 인덱스가 많이 쓰이지만, 행렬 요소 지정에는 1행째를 1부터 시작하는 인덱스를 관례적으로 사용한다.행렬의 종류행과 열의 수가 같은 행렬을 정사각형렬이라고 한다. 게임 개발에서 사용되는 행렬은 대부분 정사각행렬로, 특정 행이나 열이 항상 변화하지 않는 등 최적화의 여지가 있는 경우에만 해당 행/열을 무시한다.행렬 요소 m{ij|에 관해 i = j인 요소를 대각요소라고 한다. 또한 정사각행렬이고 대각 요소 이외의 요소가 모두 0인 행렬을 대각행렬이라고 한다. 대각행렬 중 대각요소가 모두 1인 행렬을 단위행렬이라고 한다..
벡터 수벡터2차원이나 3차원에서의 점의 위치를 수치의 조합으로 나타낼 경우, 이 조합의 순서에서는 의미가 있다.x, y, z의 순서를 (x, y, z) 안에서 바꿔 버리면 전혀 다른 좌표가 된다. 이 수치의 조합은 각 요소에 순서가 정해진 배열이지 단순한 수치의 집합(set)이 아니다. 이처럼 순서가 있는 수치로 조합된 벡터를 수벡터라고 부른다.배열로 벡터를 표현한 경우, 하나하나의 요소를 벡터의 성분이라고 한다. 성분을 옆으로 나열한 형식인 행벡터 또는 성분을 세로로 나열하는 열벡터 표기 방식을 사용한다. 이 둘은 벡터로서 동일하다.기하벡터성분의 배열로 벡터 표현을 하지 않고, 크기, 방향을 가진 양으로서 벡터를 정의 할 수 있다.벡터의 화살표를 시작되는 점을 시점, 화살표 끝 점을 종점으로 표시한다. 해당..
좌표계 2D 좌표계좌표계는 물체의 위치를 특정한 하나의 점으로, 유일하게 가리키기 위한 체계이다. 원점에서직각으로 교차하는 x축과 y축으로 이루어진 좌표계를 직교좌표계라고 한다.(데카르트 좌표계라고 부르기도 한다.)x축과 y축에 의해 네 개로 분할된 평면을 사분면이라고 하고, 오른쪽 위에서부터 반시계 방향으로 1사분면, 2사분면, 3사분면, 3사분면으로 구분한다. 직교좌표계를 사용하면 2차원 평면상의 위치를 유일하게 지정할 수 있으므로 2D 게임의 모든 장면에서 쓰인다.축이 직각으로 교차하지 않는 사교좌표계라는 것도 존재한다.3D 좌표계x축, y축 두 개의 직각으로 교차하는 축을 사용하면 2D 평면상의 위치를 지정할 수 있는데, 여기서 축을 하나 늘려, x축, y축에 z축을 추가해서 세 개의 직각으로 교차하는 ..
삼각함수 삼각형 가장 단순한 도형인 삼각형은 세 개의 정점(Vertex) 이루어지고, 정점으로 세 개의 변(edge)가 정해진다. 삼각형의 세 변 중 두 개의 변이 이루는 각을 내각(interior angle)이라고 한다. 이 세 개의 내각의 합은 항상 180도이다. (여담: 비유클리드 기하학 학문에서는 180도가 아니라고 말하지만, 일반적인 게임을 만들 때 이 개념이 필요없다.) 삼각형은 평면 위에서 존재하지만, 정점인 4개인 사각형을 종이접기하듯이 삼각형을 만들면 이는 3차원 공간에서 밖에 표현할 수 없음. 직각삼각형 직각삼각형의 개념은 세 개의 정점 부분의 내각 중 하나가 직각(90도)을 이루는 경우 직각삼각형이라고 한다. 직각 맞은편의 비스듬한 변을 빗변이라고 한다. 또한, 바닥에 있는 것을 밑변, 남은 ..