Microsoft PowerPoint - lecture3-ch2.ppt [호환 모드]

Similar documents
Open GL

Microsoft PowerPoint - lecture4-ch2.ppt

서피스셰이더프로그램 셰이더개발을쉽게! Thursday, April 12, 12

Microsoft PowerPoint - lecture17-ch8.ppt [호환 모드]

04_오픈지엘API.key

untitled

Microsoft Word - cg07-midterm.doc

2005CG01.PDF

Microsoft PowerPoint - 13prac.pptx

Microsoft PowerPoint - lecture16-ch8.ppt [호환 모드]

PowerPoint 프레젠테이션

Microsoft PowerPoint - lecture15-ch6.ppt

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/7) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 답 안지 공간이 부족할 경우, 답안지 뒷면에 기술 하고, 해당

PowerPoint 프레젠테이션

<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D325FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B1E2BABBBFE4BCD22E >

WebGL 레슨 5 - 텍스쳐에 대하여

Microsoft Word - cg07-final.doc

Microsoft PowerPoint - NV40_Korea_KR_2.ppt

Ⅱ. Embedded GPU 모바일 프로세서의 발전방향은 저전력 고성능 컴퓨팅이다. 이 러한 목표를 달성하기 위해서 모바일 프로세서 기술은 멀티코 어 형태로 발전해 가고 있다. 예를 들어 NVIDIA의 최신 응용프 로세서인 Tegra3의 경우 쿼드코어 ARM Corte

(Microsoft PowerPoint - CNVZNGWAIYSE.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

Microsoft PowerPoint - lecture16-ch6

산선생의 집입니다. 환영해요

LIDAR와 영상 Data Fusion에 의한 건물 자동추출

Microsoft Word - cg12-midterm-answer

Microsoft PowerPoint - lecture3-ch2.ppt

Microsoft PowerPoint - lecture11-ch5.ppt [호환 모드]

Microsoft PowerPoint - ch07 - 포인터 pm0415

PowerPoint 프레젠테이션

4.1 힘의모멘트 스칼라공식 4.1 힘의모멘트 스칼라공식 모멘트크기 (resultant moment) 2

Microsoft PowerPoint - lecture2-opengl.ppt [호환 모드]

PowerPoint 프레젠테이션

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (2/8) 다음과같이설정되어있는데, cam.pos[0] = 0.0, cam.pos[1] = 0.0, cam.pos[2] = 500.0; 이때의 cam.naxis[] 벡터의세원소값을기술하라. Figure

단국대학교멀티미디어공학그래픽스프로그래밍중간고사 (2011 년봄학기 ) 2011 년 4 월 26 일학과학번이름 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

(Microsoft PowerPoint - JXEUOAACMYBW.ppt [\310\243\310\257 \270\360\265\345])

이장에서다룰내용 테두리를제어하는스타일시트 외부여백 (Margin) 과내부여백 (Padding) 관련속성 위치관련속성 2

Microsoft Word - cg09-midterm.doc

Microsoft PowerPoint - 05geometry.ppt

Microsoft PowerPoint - lecture11-ch4

C# Programming Guide - Types

KNK_C_05_Pointers_Arrays_structures_summary_v02

chap 5: Trees

Microsoft PowerPoint - lecture18-ch8

[ReadyToCameral]RUF¹öÆÛ(CSTA02-29).hwp

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (1/9) [CSE4170: 기초컴퓨터그래픽스 ] 기말고사 담당교수 : 임인성 답은연습지가아니라답안지에기술할것. 답안지공간이부족할경우, 답안지뒷면에기술하고, 해당답안지칸에그사실을명기할것. 연습지는수거하

슬라이드 1

Microsoft PowerPoint - Lec06.ppt [호환 모드]

PowerPoint 프레젠테이션

K_R9000PRO_101.pdf

UI TASK & KEY EVENT

(Microsoft PowerPoint - lecture16-ch8.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Microsoft PowerPoint - lecture2-opengl.ppt [호환 모드]

Microsoft PowerPoint - GameProgramming23-PixelShader.ppt

Microsoft PowerPoint - additional01.ppt [호환 모드]

Chap 6: Graphs

Chapter 4. LISTS

2_안드로이드UI

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

63-69±è´ë¿µ

Microsoft PowerPoint - 04-Model Class.pptx

12¾ÈÇö°æ 1-155T304®¶ó

Microsoft PowerPoint - GameDesign6-Graphics.ppt [호환 모드]

Microsoft PowerPoint D View Class.pptx

Microsoft Word - cg08-final-answer.doc

슬라이드 1

Microsoft PowerPoint cg01.ppt

(Microsoft PowerPoint - ADEFNJKEPXSQ.ppt [\310\243\310\257 \270\360\265\345])

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

Microsoft PowerPoint - chap02.ppt

Microsoft PowerPoint - gpgpu_proximity.ppt

Microsoft PowerPoint - Week04_Rendering Pipeline.pptx

2002년 2학기 자료구조

11장 포인터

01-OOPConcepts(2).PDF

Microsoft PowerPoint - lecture19-ch8.ppt

Microsoft PowerPoint - lecture11-ch4.ppt

Microsoft PowerPoint - lecture17-ch8.ppt

Microsoft PowerPoint - lecture11-ch5.ppt [호환 모드]

Week3

OR MS와 응용-03장

WebGL 레슨 1 - 삼각형과 사각형

OpenGL ES2.0 기초 강좌

컴퓨터그래픽스 기본요소

2011년 10월 초판 c 2011 Sony Corporation. All rights reserved. 서면 허가 없이 전체 또는 일부를 복제하는 것을 금합니다. 기능 및 규격은 통보 없이 변경될 수 있습니다. Sony와 Sony 로고는 Sony의 상표입니다. G L

Microsoft PowerPoint - 기계공학실험1-1MATLAB_개요2D.pptx

03-JAVA Syntax(2).PDF

Microsoft PowerPoint - lecture16-ch8.ppt [호환 모드]

디지털영상처리3

TRIBON 실무 DRAFT 편 조선전용 CAD에 대한 기초적인 사용 방법 기술 기술지원팀

01이국세_ok.hwp

PowerSHAPE 따라하기 Calculate 버튼을 클릭한다. Close 버튼을 눌러 미러 릴리프 페이지를 닫는다. D 화면을 보기 위하여 F 키를 누른다. - 모델이 다음과 같이 보이게 될 것이다. 열매 만들기 Shape Editor를 이용하여 열매를 만들어 보도록

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/8) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 있는 변환 행렬은 일반적으로 어떤 좌표계 에서 어떤 좌표계로의

02장.배열과 클래스

슬라이드 1

Łø·ŸÕ=¤ ¬ ÇX±xÒ¸ 06 - Èpº– 1

초판 1쇄 발행 2013년 10월 25일 지은이 박승제 펴낸이 장성두 펴낸곳 제이펍 출판신고 2009년 11월 10일 제 호 주소 경기도 파주시 문발동 파주출판도시 뮤즈빌딩 403호 전화 / 팩스

歯Lecture2.PDF

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

Transcription:

Coordinate Systems Graphics Programming 321190 2014 년봄학기 3/14/2014 박경신 2D Cartesian Coordinate Systems 3D Cartesian Coordinate Systems Cartesian Coordination Systems -x +y y-axis x-axis +x Two axes: x-axis and y-axis, two straight lines perpendicular to each other, both pass through origin and extends infinitely in two opposite directions 원점 (Origin) 은좌표계의중심에위치하고있고값은 (0, 0) 이다. y z z y x 왼손좌표계 (Left-handed coordinate system) 는 x+ 는오른쪽, y+ 는위쪽, z+ 는화면안쪽. 오른손좌표계 (Right- handed coordinate system) 는 x+ 는왼쪽, y+ 는위쪽, z+ 는화면안쪽. -y x

Screen Coordinate System 3D Coordinate Systems (0, 0) +y y-axis x-axis +x Screen coordinate system은원점 (Origin) 이화면의좌측상단에위치하고값은 (0, 0) 이다. x+ 오른쪽. y+ 아래쪽. 1 unit = 1pixel z y x OpenGL 은오른손좌표계 (Righthanded coordinate system) x+ 오른쪽. y+ 위쪽. z+ 화면밖으로나오는방향. OpenGL Camera OpenGL에서는카메라가물체의공간 (drawing coordinates) 의원점 (origin) 에위치하며 z- 방향으로향하고있다. 관측공간을지정하지않는다면, 디폴트로 2x2x22 2 입방체의 viewing volume을사용한다. (1, 1, 1) Orthographic Viewing 직교투영 (Orthographic parallel projection) Ortho(left, right, bottom, top, znear, zfar); 기본직교투영에서는점들은 z-축을향해 z=0 평면에투영 z=0 (-1, -1, -1)

Perspective Viewing 원근투영 (Perspective projection) Frustum(left, right, bottom, top, znear, zfar); Perspective(fovy, aspect, znear, zfar); - 상하좌우값을설정하는대신 y 방향의시선각도 (FOV) 와종횡비 ( 가까운쪽클리핑평면의너비를높이로나눈값 ) 를사용 Viewport Functions 뷰포트 (Viewport) 윈도우내부에설정한공간. 그리기가뷰포트내부로제한됨. glviewport(x, y, width, height) 윈도우를처음생성할때전체윈도우에해당하는픽셀영역을뷰포트로설정 ; 이보다작은영역을뷰포트로설정할때는 glviewport() 사용. 일반적으로윈도우전체를뷰포트로사용. GLUT Reshape function이있을경우, glviewport() 가반드시포함되어야함. Transformations and Viewing OpenGL에서 projection matrix (transformation) 를사용하여 projection을수행함 Transformation 함수는좌표계변환을위해사용하였음 그러나 OpenGL 3.0 이전 transformation 함수들은 deprecated ( 더이상사용하지않길권고함 ) 3 가지선택 Application code GLSL functions GLM (OpenGL Mathematics) vector, matrix Conventional OpenGL Rendering Pipeline OpenGL에서지원하는옵션과상태변수를검사해서적용여부를판단하므로저사양 HW에서는비효율적 Modified Phong Illumination Model만지원하는고정된조명계산 Gouraud Shading만지원하는고정된음영처리 정점색을계산한후정점색을보간하여픽셀색을결정 Mach Band가나타나거나픽셀값이잘못계산될수있음 Viewer

Extending OpenGL 그래픽하드웨어의발전에따라복잡한그래픽기법을적용하기위한기능의지원필요 OpenGL은새로운버전에추가된기능을확장기능으로지원 이전버전의 API를수정하지않음으로써이전버전과의호환성유지 함수나매크로상수이름에확장기능을식별할수있도록접미어를붙여명명 _ARB, _EXT, _NV, _ATI 등등 프로그래머블하드웨어를지원하기위한 API를확장기능으로제공 고정파이프라인을이용하는대신사용자가작성한코드대로음영처리를할수있는프로그래머블파이프라인의이용이가능 Programmable Pipeline Vertex Shader, Fragment Shader를작성하여다양한렌더링기법을적용가능 OpenGL Shader 기본 Shaders Vertex shader Fragment shader Vertex Shader Applications Moving vertices Morphing Wave motion Fractals Lighting More realistic models Cartoon shaders

Fragment Shader Applications Per-fragment lighting calculations Fragment Shader Applications Texture mapping per vertex lighting per fragment lighting Smooth shading Environment mapping Bump mapping Simple Vertex Shader Execution Model Input from application in vec4 vposition; void main(void) Must link to variable in application Vertex data Shader Program { GPU gl_position = vposition; Built-in variable Application Program Vertex Shader Primitive Assembly gldrawarrays Vertex

Simple Fragment Program void main(void) { gl_fragcolor = vec4(1.0, 0.0, 0.0, 1.0); Execution Model Shader Program Application Rasterizer Fragment Shader Frame Buffer Fragment Fragment Color GLSL Data Types C types: int, float, bool Vectors: 벡터 float vec2, vec3, vec4 또한 int (ivec) 와 boolean (bvec) Matrices: mat2, mat3, mat4 행렬 열 (columns) 우선으로구성 일반적인참조방식은 m[row][column] Texture Sampler: 텍스쳐접근이가능한샘플러타입 sampler1d, sampler2d, sampler3d, samplercube sampler1dshadow, sampler2dshadow C++ style constructors vec3 a = vec3(1.0, 2.0, 3.0) vec2 b = vec2(a) GLSL Pointers GLSL에는 pointer 개념이없음 C 언어의구조체 (struct) 을이용해서함수로복사해서사용가능 Matrices나 Vectors 는기본형 (basic types) 으로 GLSL 함수에파라메터입력이나반환형출력으로사용가능 mat3 3f func(mat3 a)

GLSL Qualifiers 변수평가자 (Variable Qualifiers) const 상수 attribute 전역변수이며, 정점마다바뀔수있고, OpenGL 프로그램에서 Vertex Shader로값을변경함. 이평가자는 Vertex Shader에서만사용됨. 쉐이더에서는읽기전용. Built-in vertex attribute: gl_position User-defined vertex attribute: in vec3 velocity uniform 전역변수이며, Primitive마다바뀔수있고, OpenGL 프로그램에서쉐이더로값을변경함. 이평가자는 Vertex Shader 와 Fragment Shader 모두에서사용가능. 쉐이더에서이변수는상수. varying Vertex Shader에서 Fragment Shader로전달되는변수. Vertex Shader 에서는쓰기가허용되지만, Fragment Shader에서는읽기전용. 최신버전에서는 Vertex Shader에서 out으로쓰고, Fragment Shader 에서 in 으로사용 User-defined varying variable: out vec4 color; Example: Vertex Shader const vec4 red = vec4(1.0, 0.0, 0.0, 1.0); out vec3 color_out; void main(void) { gl_position = vposition; color_out = red; Required Fragment Shader in vec3 color_out; void main(void) { gl_fragcolor = color_out; // in latest version use form // out vec4 fragcolor; // fragcolor = color_out; GLSL Operators and Functions 일반적인 C 함수 Trigonometric Arithmetic Normalize, reflect, length Overloading of vector and matrix types mat4 a; vec4 b, c, d; c = b*a; ;// a column vector stored as a 1d array d = a*b; // a row vector stored as a 1d array

GLSL Constructor 생성자 (Constructor) 변수의초기화는 C++ 생성자방식을이용 vec3 n = vec3(0.0, 1.0, 0.0); 생성자는초기화외에식에서도사용가능 greencolor = mycolor + vec3(0.0, 1.0, 0.0); 벡터에하나의스칼라값을지정하면벡터의모든요소에할당 ivec4 whitecolor = ivec4(255); 스칼라와벡터, 행렬을생성자내에서혼합해사용할수있고, 여분의요소가있는경우버려짐 vec4 v = vec4(x, vec2(y, z), w); 행렬은열우선으로구성되고, 단일스칼라값을지정하는경우대각행렬이됨 ( 대각이외의요소는 0으로채워짐 ) mat2 m = mat2(1.0, 0.0, 0.0, 1.0); mat2 m = mat2(1.0); 형변환은생성자를통해서만가능 float j = 4.7; int i = int(j); GLSL Swizzling and Selection [] 또는 (.) operator를사용하여벡터및행렬요소에접근 x, y, z, w r, g, b, a s, t, p, q vec3 a = vec3(0.0, 0.0, 1.0); a[2], a.b, a.z, a.p는모두다같음 mat3 m = mat3(1.0); float element21 = m[2][1]; // 0.0 mat3 m = mat3(1.0); vec3 column1 = m[0]; // (1, 0, 0) 요소선택자를이용하여재배치및복제가능 vec3 myzyx = szyx; s.zyx; 요소선택자를사용하여벡터일부요소만수정가능 vec4 a; a.yz = vec2(1.0, 2.0); GLSL Passing Values 함수의반환형으로배열을제외한모든타입이사용가능 함수의인자로는배열및구조체를포함한모든타입이사용가능 Call by value로만호출되므로다음한정자를사용하여함수내의인자값이변경될수있는여부를지정할수있음 in (default) const in out inout (deprecated) OpenGL Geometry 가상의공간을구성하는각물체를표현하는데있어가장기본이되는요소 실시간그래픽스에서는주로가장단순한형태의표현방법인 linear primitives i i 를사용 Point, vertex Line segments Polygon Polyhedron

OpenGL Geometry Primitives GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN OpenGL Attributes 각기하학적기본요소 (geometry primitive) 는속성을갖고있다. 속성은기본요소가화면상에나타날수있는방법을제어한다. Color Line thickness Line styles Polygon patterns 선의두께나스타일 다각형표시방법 OpenGL Attributes OpenGL Color Model RGB (Red Green Blue) or RGBA(Red Green Blue Alpha) RGB 색이따로분리돼서 framebuffer 에저장되어있음. Color Triangle const float vertexcolor[] = { 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 10f 1.0f, 0.0f, 00f 1.0f, 10f 0.0f, 00f 00f 0.0f, 1.0f, 10f 1.0f 10f ; const float vertexpositions[] = { -0.75f, -0.75f, 0.0f, 1.0f, 0.75f, -0.75f, 0.0f, 1.0f, 0.75f, 0.75f, 0.0f, 1.0f ; void SetData() t { glgenvertexarrays(1, &vao); // vao glbindvertexarray(vao); glgenbuffers(2, &vbo[0]); // vbo glbindbuffer(gl_array_buffer, vbo[0]); // vertex position glbufferdata(gl_array_buffer, 12*sizeof(GLfloat), vertexpositions, GL_STATIC_DRAW); glvertexattribpointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(0); glbindbuffer(gl_array_buffer, vbo[1]); // vertex color glbufferdata(gl_array_buffer, 12*sizeof(GLfloat), vertexcolor, GL_STATIC_DRAW); glvertexattribpointer(1, 4, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(1); glbindvertexarray(0);