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

Similar documents
0503기말고사.dvi

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

Microsoft Word - cg07-midterm.doc

0503기말고사.dvi

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

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

PowerPoint 프레젠테이션

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

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

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

0503중간고사.dvi

Microsoft PowerPoint - lecture16-ch6

Microsoft PowerPoint - lecture15-ch6.ppt

0503중간고사.dvi

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

(Microsoft PowerPoint - \301\24608\260\255 - \261\244\277\370\260\372 \300\347\301\372)

Microsoft PowerPoint - 13prac.pptx

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

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

Microsoft Word - cg12-midterm-answer

Microsoft PowerPoint - lecture11-ch4

Microsoft PowerPoint - lecture11-ch4.ppt

PowerPoint 프레젠테이션

Microsoft Word - cg08-final-answer.doc

Line (A) å j a k= i k #define max(a, b) (((a) >= (b))? (a) : (b)) long MaxSubseqSum0(int A[], unsigned Left, unsigned Right) { int Center, i; long Max

슬라이드 제목 없음

Microsoft Word - cg09-midterm.doc

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft Word - cg09-final-answer.doc

04_오픈지엘API.key

확장강의계획서 (2019 년도 1 학기 ) 과목명기초컴퓨터그래픽스과목번호 CSE4170 구분 ( 학점 ) 3 수강대상 수업시간화, 목 12:00~13:15 강의실 2. 선수학습내용 조건을만족하는학부생 성명 : 임인성 홈페이지 : grmanet.sogang.ac.kr/~

UI TASK & KEY EVENT

Microsoft PowerPoint - NV40_Korea_KR_2.ppt

K&R2 Reference Manual 번역본

Microsoft Word - cg07-final.doc

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Open GL

2005CG01.PDF

설계란 무엇인가?

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - 06-Body Data Class.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - lecture4-ch2.ppt

금오공대 컴퓨터공학전공 강의자료

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

Microsoft PowerPoint - lecture18-ch8

Microsoft PowerPoint - chap06-2pointer.ppt

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

; 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

Chap 6: Graphs

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap05-제어문.pptx

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Chap 6: Graphs

歯Lecture2.PDF

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Open GL

untitled

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Microsoft PowerPoint - LA_ch6_1 [호환 모드]

11장 포인터

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

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

chap 5: Trees

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - lecture17-ch8.ppt

Microsoft PowerPoint - [2009] 02.pptx

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Microsoft Word - cg11-midterm-answer.doc

슬라이드 1

Microsoft PowerPoint - ch02-1.ppt

Microsoft Word - java19-1-midterm-answer.doc

2002년 2학기 자료구조

슬라이드 1

Microsoft PowerPoint D View Class.pptx

슬라이드 1

PowerPoint 프레젠테이션

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Microsoft PowerPoint - chap12-고급기능.pptx

chap x: G입력

Microsoft PowerPoint - 제11장 포인터

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

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

컴파일러

슬라이드 1

슬라이드 1

PowerPoint 프레젠테이션

OCW_C언어 기초

슬라이드 1

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

PowerPoint 프레젠테이션

서강대학교공과대학컴퓨터공학과 CSE3081 알고리즘설계와분석 (2 반 ) 기말고사 (2015 년 12 월 17 일 ) 알고리즘설계와분석 (CSE3081(2 반 )) 기말고사 (2015년 12월17일 ( 목 ) 오전 9시 30분 ) 담당교수 : 서강대학교컴퓨터공학과임인성

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

중간고사

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

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - lecture19-ch8.ppt

Chapter 4. LISTS

ShaderX2: DirectX 9 셰이더 프로그래밍 팁 & 트릭

Transcription:

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (1/8) [CSE4170: 기초컴퓨터그래픽스 ] 기말고사 ( 담당교수 : 임인성 ) 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. OpenGL 시스템의각좌표계에대한약어는다음과같으며, 답을기술할때필요할경우적절히약어를사용하라. WdC: Window Coordinates EC: Eye Coordinates NDC: Normalized Device Coordinates OC: Object Coordinates MC: Modeling Coordinates CC: Clip Coordinates WC: World Coordinates 1. 지금아래처럼카메라변수 cam 을정의한후, typedef struct cam { float pos[3], uaxis[3], vaxis[3], naxis[3]; GLfloat mat[16]; GLdouble fovy, aspect, near c, far c; Cam; Cam cam; 디스플레이컬백함수에서다음과같이물체를그리려한다 ( 여기서 sfactor 는 float 타입의전역변수임 ). void display (void) { glclear(gl COLOR BUFFER BIT); glmatrixmode(gl MODELVIEW); glloadidentity(); // Line (a) glmultmatrixf(cam.mat); gltranslatef(-cam.pos[0], -cam.pos[1], -cam.pos[2]); // Line (b) glpushmatrix(); glscalef(sfactor, sfactor, sfactor); // Line (c) draw teapot(); glpopmatrix(); glpushmatrix(); glrotatef(angle, 0.0, 1.0, 0.0); gltranslatef(0.0, 0.0, 5.0); glscalef(6.5, 6.5, 6.5); // Line (d) draw cow( );. glpopmatrix(); glflush(); (a) 보편적인관점에서 Line (a) 와 Line (b) 지점은각각눈좌표계 (Eye Coordinate), 모델링좌표계, 세상좌표계중어느좌표계에서의의미를가질까? (b) 다음과같은함수를사용하여세상좌표계의좌표축을그려주려한다. void draw axes(void) { gllinewidth(2.0); glbegin(gl LINES); glcolor3f(1.0, 0.0, 0.0); // x 축 glvertex3f(0.0, 0.0, 0.0);

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (2/8) 다음과같이설정되어있는데, cam.pos[0] = 0.0, cam.pos[1] = 0.0, cam.pos[2] = 500.0; 이때의 cam.naxis[] 벡터의세원소값을기술하라. Figure 1: 광원의기하성질설정 glvertex3f(150.0, 0.0, 0.0);. glend(); gllinewidth(1.0); 이함수를 Line (a), Line (b), Line (c) 중어느시점에서호출을해야할까? (c) 그림 1 에서가장큰원으로보이는광원효과는카메라에고정된스폿광원을사용하여생성한것이다. 이광원에대한기하성질들은 Line (a), Line (b), Line (d) 중어느시점에서설정하는것이가장자연스러운가? (d) 그림 1 에서가장작은 ( 빨간색 ) 원으로보이는광원효과는큰소의눈에고정된스폿광원을사용하여생성한것이다. 이광원에대한기하성질들은 Line (a), Line (b), Line (d) 중어느시점에서설정하는것이가장자연스러운가? (e) 그림 1 에서벽면아래쪽에반원처럼보이는광원효과는세상좌표계의가로등에고정된스폿광원을사용하여생성한것이다. 이광원에대한기하성질들은 Line (a), Line (b), Line (d) 중어느시점에서설정하는것이가장자연스러운가? (f) 문맥상 set rotate mat(cam.mat); 문장은 cam.mat[] 배열에어떤값들을어떻게넣어주는역할을할지정확히기술하라. (g) 그림 2 는이프로그램의초기렌더링결과를보여주고있다. ( 여기서세상좌표계의 x 축과 y 축이각각오른쪽과위쪽방향으로그려져있고, z 축은화면앞으로튀어나오고있음 ) 초기에카메라의위치는 Figure 2: 물주전자그리기 (h) 다음은스페셜컬백함수의일부이다.. case GLUT KEY DOWN: { float c, s, tx, ty; c = cos(3.141592*45.0/180.0); s = sin(3.141592*45.0/180.0); tx = c*cam.naxis[2] - s*cam.naxis[0]; ty = s*cam.naxis[2] + c*cam.naxis[0]; cam.naxis[2] = tx, cam.naxis[0] = ty; tx = c*cam.uaxis[2] - s*cam.uaxis[0]; ty = s*cam.uaxis[2] + c*cam.uaxis[0]; cam.uaxis[2] = tx, cam.uaxis[0] = ty; cam.pos[0] = 500.0*cam.naxis[0]; cam.pos[1] = 500.0*cam.naxis[1]; cam.pos[2] = 500.0*cam.naxis[2]; set rotate mat(cam.mat); glutpostredisplay(); break;. 아래화살표키를누를때마다화면에서물주전자가어떤식으로움직일지를적절한수치를사용하여정확히기술하라.

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (3/8) Polygonal model OpenGL ES Rendering Pipeline (1)??? (2) P A (3) V V C (4) P D (5) V T (6) P C Fixed-function pipeline part Shader part Program Object Setup VS Object FS Object Attribute 0 Attribute 1 Attribute 2 Attribute 3 Attribute 7 Mapping Shader setup (1) Vertex Shader attribute vec3 vpos; attribute vec3 vnorm; attribute vec2 vtc0; attribute vec2 vtc1; Mapping & setup uniform mat4 uprojection; uniform mat4 umodelview; uniform float uscalefactor; uniform vec3 ulightposition; (8) Fragment Shader Uniforms Textures Setup (7) Rasterization Frame buffer (9) ROP (8)??? Figure 3: OpenGL ES 2.0 렌더링파이프라인 2. 그림 3 에도시한 OpenGL ES 2.0 렌더링파이프라인을보면서아래질문에답하라. (a) 은면제거를위한깊이버퍼링 (depth buffering) 계산과가장관련이깊은단계의번호는? (b) OC, MC, WC, EC, CC, NDC, WdC 등의 OpenGL 좌표계중 (2) 번시점은어떤좌표계에해당할까? (c) 삼선형보간 (trilinear interpolation) 과가장관련이깊은단계의번호는? (d) 꼭지점의나열방향을통하여뒤면 (backface) 이보이는삼각형을제거할수있는데, 실제로이러한계산이일어나는단계의번호는? (e) 3 차원필름의내용이인화지에인화가되는과정과가장관련이많은단계의번호는? (f) 정상적인렌더링과정에서모델링변환과뷰잉변환이일어나는단계의번호는? (g) 이렌더링파이프라인에서 NDC 는몇번단계와몇번단계사이에존재하는가? (h) 다면체모델에대한쉐이딩방법중의하나인퐁쉐이딩방법을구현하려할때, 가장자연스럽게퐁의조명모델공식이적용될수있는단계의번호는? (i) 정상적인렌더링과정에서투영변환이일어나는단계의번호는? (j) OpenGL ES 2.0 시스템의 gl Position 변수과가장관련이많은단계의번호는? (k) 삼각형의꼭지점에설정된여러속성들이픽셀들에대한속성으로바뀌는단계의번호는? (l) 원근투영을사용할경우실제로원근감이생성되는과정과가장관련이깊은단계의번호는?

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (4/8) c = e cm + a cm a cs + n 1 (att i )(spot i )[a cm a cli + (n VP pli )d cm d cli + (f i )(n ĥi) srm s cm s cli ] i=0 (a) 기본조명공식 att i = { 1 k 0i + k 1i VP pli + k 2i VP pli, 2 P pli s w 0, 1.0, otherwise (b) 빛의감쇠효과의계산 ( P pli V ŝ dli ) s rli, c rli 180.0 & P pli V ŝ dli cos c rli, spot i = 0.0, c rli 180.0 & P pli V ŝ dli < cos c rli, 1.0, c rli = 180.0 (c) 스폿광원효과의계산 Figure 4: OpenGL 시스템의조명공식 3. 그림 4 에는 OpenGL 시스템에서사용하는기본조명공식이주어져있다. (a) 이공식에서 은주어진두벡터에대하여어떠한값을계산해주는연산자인지정확히기술하라. (b) 만약무한관찰자 (infinite viewer) 기능을사용할경우이공식의 ĥi 변수가어떻게정의가될지이공식의변수나상수식등을사용하여정확히기술하라 ( ˆ 기호의의미를잘생각해볼것 ). (c) 만약무한관찰자기능을사용할경우추가적으로어떤조건하에서이조명공식에기반을둔쉐이딩계산을어떻게최적화할수있을까? (d) 그림 4(a) 의식에서무한관찰자기능을사용하지않을경우카메라의위치가바뀌었을때직접적으로영향을받는변수 ( 또는식 ) 를모두나열하라. (e) 그림 4(a) 의식에서점광원을사용할경우광원의위치가바뀌었을때직접적으로영향을받을수있는변수 ( 또는식 ) 들을모두나열하라. (f) 그림 4(a) 의식에서렌더링하고자하는물체의위치와방향이모두바뀌었을때직접적으로영향을받을수있는변수 ( 또는식 ) 들을모두나열하라. (g) 위그림은하이라이트효과의조절모습을도시하고있는데, 그림 4(a) 의식에서어떤변수를통하여조절할수있을까? (h) 그림 4(a) 의식에서램버트의코사인법칙 (Lambert s cosine law) 을표현해주는부분을정확히기술하라. (i) 기본적으로퐁의조명모델은광원으로부터직접입사하여물체표면에서반사되는빛의색깔을어떻게계산할지를기술하고있다. 이경우다른물체에반사된후간접적으로들어오는빛을무시함으로써발생하는문제를조금이라도줄이기위하여간접반사를고려하고있다. 그림 4(a) 의식에서간접적으로들어오는빛과직접적인연관성이있는변수 ( 또는식 ) 들을모두기술하라. (j) 그림 4(a) 의식에서 OpenGL API 함수인 gllightf[v](*, *, *) 함수로설정할수있는변수 ( 또는식 ) 들을모두기술하라.

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (5/8) (k) 그림 4(b) 의식에서 VP pli 는어떤기하정보에해당하는지정확히기술하라. (l) 그림 4(b) 의식에서조건식 P pli s w 0 이만족되는상황은어떤경우인지정확히기술하라. (m) 그림 4(c) 의식에서두벡터 P pli V 와 ŝ dli 가의미하는방향을정확히기술하라. (n) 그림 4(c) 의식에서조건식 P pli V ŝ dli cos c rli 이만족되는상황은어떤경우인지정확히기술하라. (o) 다면체모델의쉐이딩기법인고우러드쉐이딩방법을적용한다고할때, 보편적으로이조명공식은그림 3 의어느부분에서적용이될지, 가장관련이깊은단계의번호를기술하라. 4. 그림 5 는 Pixar 의 RenderMan Shanding Language 로작성한쉐이더와이를통한렌더링결과를도시하고있다. (a) 문맥상이쉐이더프로그램에서물체의뼈대의굵기를조절해주는변수는어떤것일까? (b) 문맥상이쉐이더프로그램에서가로 - 세로방향의뼈대의개수를조절해주는변수는어떤것일까? (c) OpenGL ES 2.0 Shading Language 에서제공하는 built-in name 들중 (Ci, Oi) 와가장밀접한연관이있는변수의이름은무엇일까? 5. 본시험문제지의마지막두쪽에는 OpenGL ES 2.0 Shading Language 를사용하여퐁쉐이딩방법을구현한버텍스쉐이더와프래그먼트쉐이더의예가주어져있는데, 여기서는쉐이딩계산에필요한기하정보들을 EC 로변환하여퐁의조명모델공식을적용하고있다. (a) 이버텍스쉐이더의계산결과로산출되는결과정보를저장해주는변수들을모두기술하라. (b) 이두쉐이더의변수들중일반적인렌더링과정에서항상반드시계산을해주어야하는변수가있다. 그변수이름을기술하고 ( 한개이상이면모두 ), 정상적인상황에서그변수는어떤정보를표현해주어야할까? (c) 문맥상실제로퐁의조명모델공식이적용되는물체지점의좌표를저장하고있는프래그먼트쉐이더의변수이름을기술하라. (d) 6 번문장의 uniform 변수 mvp matrix 의기하변환행렬은 OpenGL 용어를사용할경우어느좌표계에서어느좌표계로의변환에해당하는행렬을저장하고있어야할까? (e) 만약 7 번문장의 uniform 변수 modelview matrix 의기하변환행렬이항상강체변환에해당한다면 8 번문장의 uniform 변수를제거할수있다. 이때버텍스쉐이더의몇번문장의어느부분을어떻게수정을해야할까? (f) 10 번문장의 varying 변수 v position 의저장하고있는정보가 32 번문장의 varying 변수 v position 으로전달이되어야한다. OpenGL 렌더링파이프라인에서어떤 중요한 계산과정의수행시어떠한방식으로전달이되는지설명하라. (g) 프래그먼트쉐이더의 71 번문장의조건문에서이조건이성립한다는것은무엇을뜻할까? (h) 이쉐이더프로그램에서문맥상그림 4(a) 의조명공식의 a cs 변수에해당하는쉐이더변수이름을기술하라. (i) 문맥상그림 4(a) 의조명공식에서 100 번문장수행시 att factor 변수가저장하고있는값과가장밀접한관련이있는변수 ( 또는식 ) 를정확히기술하라. (j) 만약평행광원을사용할경우 att factor 변수는이프로그램에서어떤값을갖게될까? (k) 문맥상그림 4(a) 의조명공식에서 103 번문장의 max(c zero, dot(n eye, L)) 값에해당하는변수 ( 또는식 ) 를정확히기술하라. (l) EC 에서카메라의기준점인눈에해당하는점의좌표는? (m) 106번문장에서사용되고있는 -normalize(v position).xyz 벡터는어떤방향을가리키고있는지정확히기술하라.

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (6/8) surface screen(float Ka = 1, Kd = 0.75, Ks = 0.4, AAA = 0.1; color BBB = 1; float CCC = 0.25, DDD = 20;) { point Nf; if (mod(s*ddd, 1) < CCC mod(t*ddd, 1) < CCC) { Oi = 1; Nf = faceforward(normalize(n),i); Ci = Os*(Cs*(Ka*ambient() + Kd*diffuse(Nf)) + BBB*Ks*specular(Nf,-normalize(I), AAA)); else { Oi = 0; Ci = 0; (a) Screen 쉐이더 Figure 5: RenderMan 쉐이더예 (b) 렌더링결과 (n) 문맥상 84 번문장의 "here" 부분에들어갈내용을위의쉐이딩언어문법에맞게정확히기술하라. (o) 문맥상 74 번부터 78 번문장까지는그림 4(b) 의식을구현하고있다. 문맥상 75 번문장의 "there" 부분에들어갈내용을위의쉐이딩언어문법에맞게정확히기술하라. (p) ( 제거해도큰문제는없지만 ) 120 번문장에서 normalize(v normal) 함수호출을통하여 v normal 벡터의길이를 1 로만들어주는이유는? (q) 문맥상그림 4(a) 의조명공식에서 120 번문장이수행된후의 N eye 변수값에해당하는변수 ( 또는식 ) 를정확히기술하라. < 한학기동안수고많았습니다!>

1 // Begin of Vertex Shader 2 attribute vec4 a_position; 3 attribute vec3 a_normal; 4 attribute vec2 a_texture; 5 6 uniform mat4 mvp_matrix; 7 uniform mat4 modelview_matrix; 8 uniform mat4 invtrans_modelview_matrix; 9 10 varying vec4 v_position; 11 varying vec2 v_texture; 12 varying vec3 v_normal; 13 14 const float c_zero = 0.0; 15 const float c_one = 1.0; 16 17 void main() { 18 v_position = modelview_matrix * a_position; 19 v_normal = normalize(invtrans_modelview_matrix 20 * vec4(a_normal, c_zero)).xyz; 21 v_texture = a_texture; 22 23 gl_position = mvp_matrix * a_position; 24 25 // End of Vertex Shader 26 27 /////////////////////////////////////////////////////////////// 28 29 // Begin of Fragment Shader 30 precision mediump float; 31 32 varying vec4 v_position; 33 varying vec2 v_texture; 34 varying vec3 v_normal; 35 36 uniform vec4 material_ambient; 37 uniform vec4 material_diffuse; 38 uniform vec4 material_specular; 39 uniform float material_specular_exponent; 40 uniform vec4 light_position; 41 uniform vec4 light_ambient; 42 uniform vec4 light_diffuse; 43 uniform vec4 light_specular; 44 uniform vec3 spot_direction; 45 uniform float spot_exponent; 46 uniform float spot_cutoff_angle; 47 uniform vec4 global_ambient; 48 uniform vec3 distance_attenuation_factors; 49 uniform int distance_attenuation_flag; 50 uniform sampler2d u_texture; 51 uniform int tex_flag; 52 53 const float c_zero = 0.0; 54 const float c_one = 1.0; 55 56 vec3 N_eye; 57 58 vec4 lighting_equation() { 59 vec4 computed_color = vec4(c_zero, c_zero, c_zero, c_zero); 60 vec3 H; 61 float ndotl; 62 float ndoth; 63 float att_factor; 64 float spot_factor; 65 vec3 att_dist; 66 vec3 L; 67 68 att_factor = c_one; 69 computed_color += material_ambient * global_ambient; 70 71 if (light_position.w!= c_zero) {

72 L = light_position.xyz - v_position.xyz; 73 if (distance_attenuation_flag == 1) { 74 att_dist.x = c_one; 75 att_dist.z = "there"; 76 att_dist.y = sqrt(att_dist.z); 77 att_factor = c_one/dot(att_dist, 78 distance_attenuation_factors); 79 80 L = normalize(l); 81 82 if (spot_cutoff_angle < 180.0) { 83 vec3 spot_dir = normalize(spot_direction); 84 spot_factor = "here"; 85 if (spot_factor >= cos(radians(spot_cutoff_angle))) { 86 spot_factor = pow(spot_factor, spot_exponent); 87 88 else { 89 spot_factor = c_zero; 90 91 92 att_factor *= spot_factor; 93 // if (spot_cutoff_angle < 180.0) 94 // if (light_position.w!= c_zero) 95 else { 96 L = light_position.xyz; 97 L = normalize(l); 98 99 100 if (att_factor > c_zero) { 101 computed_color += light_ambient * material_ambient; 102 103 ndotl = max(c_zero, dot(n_eye, L)); 104 computed_color += (ndotl*light_diffuse*material_diffuse); 105 106 H = normalize(l - normalize(v_position).xyz); 107 ndoth = max(c_zero, dot(n_eye, H)); 108 if (ndoth > c_zero) { 109 computed_color += (pow(ndoth, material_specular_exponent) 110 * material_specular * light_specular); 111 112 computed_color *= att_factor; 113 114 return computed_color; 115 116 117 void main() { 118 vec4 color; 119 120 N_eye = normalize(v_normal); 121 122 color = lighting_equation(); 123 124 if (tex_flag == 1) { 125 vec4 decalcolor = texture2d(u_texture, v_texture.xy); 126 gl_fragcolor = color * decalcolor; 127 128 else 129 gl_fragcolor = color; 130 131 132 // End of Fragment Shader