전체 글 53

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문 Chapter 09 라이팅

라이팅(lighting 또는 illumination)빛과 물체 간 상호작용을 처리하는 기술9.1 퐁 모델광원(light source)점 광원(point light source)간단한 광원3차원 공간의 한 점으로부터 전방위로 빛이 발산되는 것점 광원으로부터 멀리 떨어진 물체일수록 빛을 덜 받게 되는데, 이는 빛이 물체까지 이동하는 동안 점차 희석되기 때문방향성 광원(directional light source)물체 표면의 여러 점에 입사하는 빛의 방향이 서로 평행한 것. ex) 태양물체 표면의 각 점들로부터 광원까지의 거리를 무시하고, 광원의 색상과 단일한 입사 방향만 고려하면 된다.BRDF(bidirectional reflectance distribution function, 양방향 반사율 분포 함수)물..

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문 Chapter 08 이미지 텍스처링

래스터라이저가 출력하는 프랙그먼트별 애트리뷰트는 대체로 노멀과 텍스처 좌표를 포함한다.프래그먼트 쉐이더는 이 데이터를 이용해 프래그먼트의 색상을 계산한다. 프래그먼트 쉐이더에서 하는 중요한 일 라이팅(lighting)텍스처링(texturing) 텍스처링(texturing) 다양한 텍스처링 기법 중에서 가장 간단한 것은 오브젝트 표면에 이미지를 묘사하는 이미지 텍스처링이다. 8.1 텍스처 좌표 텍스처일반적으로 배열 구조를 가짐이미지 텍스처(image texutre)배열이 색상을 가지고 있는 것텍스처링 기법 중 가장 간단한 기법은 이미지 텍스처링텍셀(texel, texture element)로 구성각 텍셀의 위치는 그 중심의 2차원 좌표로 표현할 수 있다. ex) 위 그림에서 왼쪽 아래 모퉁이 텍셀의 좌표는..

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문 Chapter 07 래스터라이저

프리미티브(primitive)GPU 파이프라인이 처리할 기하학적인 개체그래픽스 응용에 따라 삼각형, 선(line), 점(point)도 독자적인 프리미티브가 될 수 있는데, 이들은 각각 정점 3개, 2개, 1개를 사용하여 정의된다.책에서는 삼각형 프리미티브만 다루므로 삼각형 프리미티브로 생성된다고 가정하자.래스터라이저는 클립 공간의 정점들을 프리미티브로 다시 조립(assemble)한다. 이 프리미티브는 스크린에 그려질 형태로 변환된 후 프래그먼트로 분해되는 래스터화(rasterization)가 진행된다. 프래그먼트(fragment)컬러 버퍼의 픽셀을 갱신하는 데 필요한 데이터를 총칭하는 것정점들에 저장된 노멀과 텍스처 좌표 등은 프리미티브를 따라 보간(interpolate)되어 각 프래그먼트에 할당된다. ..

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문 Chapter 06 OpenGL ES와 쉐이더

정점 쉐이더는 정점 배열에 저장된 입력 정점들에 대해서 연산하고 또, 다양한 연산을 수행한다.이 중에서 가장 중요한 것은 정점에 일련의 변환을 적용하는 것이다.GPU 파이프라인에 입력되는 정점 배열은 정점 위치와 노멀 등의 데이터를 저장하는데, 정점 쉐이더는 한 번에 한 정점을 처리한다.GPU는 수많은 코어(core)로 구성된 병렬 처리 구조를 가지고 있는데, 이들 코어는 다수의 정점을 동시에 처리하는 데 적합하다. 6.1 OpenGL ES와 쉐이딩 언어OpenGL ES는 OpenGL의 부분집합이다. 정점 쉐이더와 프래그먼트 쉐이더라는 두 가지 프로그램을 필요로 한다.OpenGL ES 3.1에는 범용적 GPU 연산을 위해 컴퓨트 쉐이더(compute shader)가 추가되었고, OpenGL ES 3.2에..

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문 Chapter 05 정점 처리

GPU는 폴리곤 메시를 입력받아서, 각각의 3차원 폴리곤을 스크린에 그려질 2차원 형태로 바꾸고, 이 2차원 폴리곤 내부를 차지하는 픽셀(pixel)들의 색상을 결정한다. 컬러 버퍼(color buffer)스크린에 나타날 픽셀 전체를 저장하는 메모리 공간주기적으로 스크린에 복사된다.GPU 렌더링 파이프라인(GPU Rendering Pipline)GPU에서 렌더링은 파이프라인 구조로 수행된다.파이프라인은 한 단계의 결과물이 다음 단계의 입력으로 상용되는 일련의 데이터 처리 단계를 말하는 것이다. programmable 단계쉐이더(shader)는 프록그램과 동의어이다. 즉, GPU 렌더링을 위해서 정점 쉐이더(vertex shader)와 프래그먼트 쉐이더(fragment shader)라는 두 가지 프로그램을..

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문 Chapter 04 좌표계와 변환

게임과 같은 3차원 가상 공간은 많은 물체들로 구성되어 있다.각 물체의 위치는 이동(translation)에 의해, 방향은 회전(rotation)에 의해, 크기는 축소확대(scaling)에 의해 결정된다.이동, 회전, 축소확대를 총칭해서 변환(transform)이라고 한다.4.1 2차원 변환의 행렬 표현4.1.1 축소 변환2차원 축소확대는 2 x 2 행렬로 표현된다.$s_x$dhk $s_y$는 각각 x축과 y축 방향의 축소확대 인자(scaling factor)그 값이 1보다 작으면 축소, 1보다 크면 확대를 의미2차원 벡터(x, y)는 행렬-벡터 곱셈을 통해 축소확대된다. 4.1.2 회전2차원 벡터 p는 원점을 기준으로 θ만큼 회전하여 p' 가 된다. 벡터 p의 길이가 r이라면 p의 좌표는 다음과 같다...

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문 Chapter 03 모델링

3.1 폴리곤 메시(Polygon Mesh)실시간 그래픽스 영역에서는 폴리곤 메시를 압도적으로 많이 사용한다.위 사진은 구를 표현하는 기법 두 개를 나타낸다. 좌측은 음함수이고 우측은 폴리곤 메시이다.음함수(implicit function) 음함수로 표현된 물체를 스크린에 랜더링하는 것은 쉽지 않음폴리곤 메시(polygon mesh)GPU에서의 처리가 최적화되어 있기 때문에 실시간 응용에서 선호된다.정점(vertex) 및 폴리곤과 같은 요소들을 명시적으로 정의하여 표현메시의 정점들은 부드러운 곡면을 샘플(sample)해서 얻어진 것이므로, 폴리곤 메시는 정확한 표현법이 아닌 근사적인 표현법이다. 삼각형은 가장 간단한 폴리곤이고, 폴리곤 메시 중 가장 널리 쓰이는 것은 삼각형으로만 구성된 메시인 삼각형 메..

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문 Chapter 02 수학 기초

2.1 행렬과 벡터(Matrices and Vectors)행렬(matrix)행(row)과 열(column)로 구성, m개의 행과 n개의 열을 가진 행렬은 다음과 같이 표현 행렬의 크기는 m x n 으로 표기, m과 n이 같다면 정사각행렬(square matrix)이라 한다.행렬 각 원소의 아래첨자는 그 원소의 위치를 말한다. 행렬 곱셈A의 크기가 l x m 이고, B의 크기가 m x n 이라면, AB의 크기는 l x n 이 된다. 백터행벡터2차원 벡터는 (x, y), 3차원 벡터는 (x, y, z)로 표기 열백터 행렬-벡터 곱셈 전치행렬(transpose)$M^T$로 표기위의 행렬 M의 전치행렬은 다음과 같다.\begin{pmatrix} a & c & e \\ b & d & f \end{pmatrix}이..

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문 Chapter 01 서론

컴퓨터 그래픽스컴퓨터를 이용하여 영상(image)을 생성하는 작업프레임(frame)컴퓨터가 생성하는 영상움직이는 장면을 묘사하기 위해서는 조금씩 변화하는 연속적인 프레임을 스크린 상에 빠르게 보여주면 된다.연속적인 프레임들은 실시간(real-time)에 만들어질 수 있는데, 실시간 그래픽스의 대표적인 예는 게임실시간 그래픽스의 성능은 1초당 몇 프레임을 만들어낼 수 있느냐인 frames per seoncd(fps)로 측정된다. ex) 게임이 1초당 60개의 프레임을 생성할 경우 60 fps영화의 경우는 비실시간 그래픽스, 실시간 그래픽스와 비실시간 그래픽스에 사용되는 기법은 상당히 다르다. 1.1 컴퓨터 그래픽스 제작 단계5개의 단계로 구성첫 세 단계인 모델링(modeling), 리깅(rigging), ..

OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문

OpenGL ES모바일 기기를 위한 그래픽스 표준스마트폰의 화면 전체는 OpenGL ES를 사용해 생성된다.OpenGL ES는 OpenGL의 부분 집합이므로, 이 책은 OpenGL 교과서로 쓰기에 문제 없다. 참고자료medialab-ku/openGLESbook: Introduction to Computer Graphics with OpenGL ES (github.com) GitHub - medialab-ku/openGLESbook: Introduction to Computer Graphics with OpenGL ESIntroduction to Computer Graphics with OpenGL ES. Contribute to medialab-ku/openGLESbook development by cr..