Mobile 3D Graphics (6장 퍼포먼스와 확장성) 교과목명 : 컴퓨터 그래픽스 특론 학 번 :

Slides:



Advertisements
Similar presentations
Texture Mapping 년 봄학기 5/23/2014 박경신. OpenGL Texturing  OpenGL 에서 텍스쳐 맵핑 (texture mapping) 을 위한 3 단계 텍스쳐 활성화 glEnable(GL_TEXTURE_2D) 텍스쳐 맵핑방법.
Advertisements

5 학년 6 반 김진석.  애니메이션은 라틴어의 아니마 에서 온 것이다. 아니마 는 생명 영혼 정신을 가르키는 것리다.  애니메이션의 원리는 그림을 움직이는 환등기로 만드는데, 환등기는 인간이 가지고 있는 눈의 잔상 을 이용해 만들어 졌다.  최초의 애니메이션 작품은.
/11 CUDA 를 이용한 병렬 프로그래밍 DirectX 3D 를 이용한 3D 프로그래밍
디자인과 컴퓨터그래픽 컴퓨터 산업디자인. 디자인 도구로서의 컴퓨터그래픽스 1. 컴퓨터 그래픽스의 기능 컴퓨터그래픽스는 하드웨어와 소프트웨어로 이루어져 있다. 이 두 가지 가 서로 연결되어 하나의 시스템으로 디자인 결과물을 만든다. 2. 컴퓨터그래픽스 하드웨어 장치 >
(4) 우리 나라의 이상과 목표 2. 국가의 중요성과 국가 발전 중학교 2학년 도덕
SW사업자신고 안내
Vision System Lab, Sang-Hun Han
정지성 Chung-buk National University, Korea
163535/A25002 컴퓨터 그래픽스 Chap 6. Shading Copyright ⓒ 2001 N Baek.
OpenGL 시작하기.
누벨바그 이후 현대 영화의 전개 뉴 이탈리안 시네마, 뉴 아메리칸 시네마, 뉴 저먼 시네마
블렌딩 안티앨리어싱, 안개효과 그리고 폴리곤 오프셋
1. 근접경호의 개념 경호대상의 신변을 보호하기 위하여 지근거리에서 실시하는 호위활동을 말하며 경호행위의 마지막 보루이다.
Chapter 5. 라이팅(Lighting)
1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용 4장 – 기하학적 객체와 변환
Practice - texture mapping
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
사업계획서.
제9장. 모바일 3D 그래픽스 기술.
OpenGL Programming (II) 3D Graphics Fundamentals
S3c6410을 이용한 리눅스 비디오 드라이버 포팅 가이드 – - Linux Video Driver Porting Guide Using s3c6410 – 박영만
학습목표 2장. 컴퓨터 하드웨어 그래픽 출력장치의 일반적인 작동원리를 이해한다.
Sang Il Park Sejong University
그래픽스 시스템과 모델.
Red Color Detection Course ChanYoung Kim
8장. 가시성 판단 학습목표 후면제거의 정의와 처리방법을 이해한다. 절단작업의 정의와 처리방법을 이해한다.
openGL Project 결과보고서 야구 시구 시뮬레이션
Gamma(감마) 발표일 : 발표자 : 임정환.
18년 11월 1일 디스플레이.
4. OpenGL 상태들과 기본 도형들.
1장 그래픽스 시스템과 모델-이미지 형성, 모델, 구조
Hanyang University Jungsik Park
Matrix 및 Rendering 파이프라인
2018년 착수 포스코 연구과제 연구비 편성 기준 ■ 2018년 국내 대학 / 연구기관 요율 기준 : 전년과 동일
2장 수학적 기초 2.1 서 론 2.2 복소변수의 개념 2.3 미분방정식 2.4 라플라스변환
23강 API - II - 약방의 감초 Random 클래스 - Scanner 및 Sysout - Wrapper 클래스의 이해
재고관리의 개요 재고의 의의 재고(inventory)란 기업이 미래에 사용할 목적으로 가지고 있는 원자재, 재공품, 완제품 등을 의미 재고는 특성상 재고유지를 위해 많은 비용이 발생하기 때문에 기업 경영자는 재고감소를 위한 많은 노력을 하게 됨 재고의 종류 안전재고(safety.
버퍼 (Buffer).
핸드폰 시뮬레이션 김 형 도 송 미 경.
2018 봄학기 Pusan National University School of CSE
교육과정과 주요업무.
Draw the basic Geometry Objects
1 [1] 매체 자료의 표현 방식 02 괴물.
Chapter 4 컬러( COLOR ).
DirectX 9을 이용한 게임 개발 기본 코스 강의 내용 : blending.
모두가 행복한 교육, 미래를 여는 창의인재 2015 개정교육과정 서울숭인초등학교 교사 이소정.
myfood.com 상명대 맛집 홈페이지 구축 제안서
사회복지법인(시설) 종사자 교육 1부: 사회복지법인의 설립 및 관리 2부: 인사 및 노무관리.
자바 5.0 프로그래밍.
149개의 실습예제로 배우는 Flash 8.
버스 내부광고 제안서 홍일애드 mobile :
OpenGL Introduction 컴퓨터 그래픽스 김 창 헌.
2015년도 스마트공장 지원사업에 대한 사업비 타당성 평가
Part III 애니메이션 Chapter 9 곡선.
OpenGL Project.
OpenGL project – Easy Flight Simulator
LOGOTYPE 춤추는 풍선 팀장 : 이준호 팀원 : 장원진.
Stream의 이해 : System Bufferring
1. 기술 및 제품 설명 > 제품 개요 발표자료 작성 방법 <발표자료 작성 방법>
대우건설 원시-소사 역사내 수변전실 고체에어로졸 자동소화장치 설치사진 보고
세부 상세 페이지 & 기획전 인스타그램 비슷한 레이아웃으로 이하 폼리스 TL600 상세페이지 100,000원 [56%]
발표자 : 조윤혜 발표일 : 담당 교수 : 성미영 교수님
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
1학년 신입생 학부모교실 안내사항 2019년 3월 6일 1학년부장 김희선.
정보검색 시스템 평가 및 테스트 컬렉션 개발 조영환, 박혁로, 이준호 정보과학회지
정보 애니메이션의 제작 YoungjinMedia.
OpenGL (3D Racing) PROJECT 2011 Dongseo Univ..
Lee Byung Gook, Professor
연구장비 공동활용 지원사업 신청서작성 매뉴얼(참여기업)
Deployment Diagram (배치 다이어그램)
Presentation transcript:

Mobile 3D Graphics (6장 퍼포먼스와 확장성) 교과목명 : 컴퓨터 그래픽스 특론 학 번 : 2011167001 교과목명 : 컴퓨터 그래픽스 특론 학 번 : 2011167001 성 명 : 김 명 식 2011.04.18

목 차 확장성 퍼포먼스 최적화 상태 변경과 쿼리 모델 데이터 변환파이프라인 광원 텍스쳐

1. 확장성 투명도 (블렌딩:Blending) - 특수효과를 이용한 확장성 투명도 (블렌딩:Blending) 물체의 색이나 빛의 색에 값을 설정할 때 사용되는 함수에서 인자를 4개 요구하는 경우, R,G,B,A 4개의 값을 설정한다. 이때 마지막 값은 Alpha에 해당되는 값이고 이 값을 이용하여 투명도를 설정할 수 있다. 색상을 설정하면 현재 컬러 버퍼 값이 새롭게 지정한 색으로 변경되고 다음에 그려지는 물체는 가장 최근에 설정된 색상 값으로 그려지게 된다. 따라서 그전에 다른 또는 동일한 색으로 그려진 객체가 새롭게 그려지는 객체 밑으로 들어가게 되면, 즉 겹치게 되면 겹치는 부분에 대해서는 새롭게 그려진 색상만이 표현되게 된다. 색 성분 중의 Alpha값 : 새로운 색상이 현재의 색상 값과 어느 정도 혼합할 것인지를 지정하는 것이다.

Alpha 값 1에서 0사이의 값 단순히 색상을 설정할 때 Alpha값만을 설정한다고 투명효과가 나타나는 것은 아니며, 색상을 설정할 때 주어진 Alpha값이 실제로 그림에 적용하기 위해서는 다음과 같은 절차가 필요하다. glEnable glcBlend '투명효과 활성화 C에서는 GL_BLEND glBlendFunc 원본-색상요소, 대상-색상요소 ‘색의 혼합율을 설정 glDisable glcBlend ‘투명효과 비활성화 C에서는 GL_BLEND

glBlendFunc 색의 혼합율을 다양하게 결정하는 함수 원본과 대상 색상을 어떻게 혼합할 것인지를 상수값을 이용하여 지정하는데, 지정한 상수에 의해서 소스(그리려는 색)와 대상(이전에 그려진 색) 색상에 적용할 혼합율이 계산되어진다. C에서는 원본이나 대상색상요소에 주는 상수가 동일한데 VisualBasic에서는 소스색상요소에 주는 상수에는 sf가 앞에 붙고 대상색상요소에 설정하는 상수는 df가 붙는다. void glBlendFunc(GLenum sfactor,GLenum dfactor); //C Sub glBlendFunc(sfactor As glBlendingSrcFactorConstants, dfactor As glBlendingDestFactorConstants) 'VB

glBlendFunc()의 인자

glBlendFunc() 사용 예 glBlendFunc sfOne, dfZero glcolor4f 0.3, 0.5, 0.2, 0.5 ‘대상 색상값에 dfZero를 적용한다. glcolor4f 0.7, 1, 0.5, 0.3 ‘소스 색상값에 sfOne을 적용한다. sfOne으로 설정하면 사용될 혼합율은 (1,1,1,1)이되고 이값이 소스 색상과 각각 곱해진다. dfZero로 설정하면 혼합율은 (0,0,0,0)가되고 이 값이 대상 색상과 각각 곱해지고 계산된 이전 값과 더해져서 색상이 정해진게 된다. 즉, 이경우에는 Alpha값을 설정했다고해도 투명도가 없다. 두 번째 그려지는 색(소스)은 그대로 칠해진다. (0.7, 1, 0.5, 0.3 )(1,1,1,1) + (0.3, 0.5, 0.2, 0.5)(0,0,0,0) = (0.7, 1, 0.5, 0.3 )

안티엘리어싱 (Antialiasing) 투명효과는 안티앨리어싱을 구현하기 위해서도 필요하다. 왼쪽 그림에서 보는 것처럼 객체를 그리기 위해 포함된 픽셀들만을 해당하는 색으로 칠하게 되면 계단현상이 보이게 된다. 객체를 그릴 때 인접한 픽셀들을 검은색과 흰색을 혼합한 색으로 칠하게 되칠한 픽셀과 이어져있는 주변 픽셀들과의 색상이 서로 차이가 많이 나는 경우에는 더욱더 계단 현상이 뚜렷하게 보인다. 객체에 포함되는 픽셀과 주변의 픽셀들과의 색상차이를 줄이면 계단 현상을 완화시킬 수 있게 되는데 바로 여기에 투명 효과가 적용되는 것이다. 즉, 흰색 바탕에 검은색인 면 부드럽게 표현될 것이다.

안티엘리어싱 (Antialiasing) 함수 OpenGL에서 안티앨리어싱을 구현하려면 먼저, 안티앨리어싱을 적용하려고 하는 객체에 따라서 다음과 같이 안티앨리어싱 기능을 활성화시켜야 한다. glEnable glcLineSmooth '선분을 위한 안티앨리어싱 기능(GL_LINE_SMOOTH) glEnable glcPointSmooth '점을 위한 안티앨리어싱 기능(GL_POINT_SMOOTH) glEnable glcPolygonSmooth '다각형을 위한 안티앨리어싱 기능(GL_POLYGON_SMOOTH) 투명효과를 설정하지 않으면 안티앨리어싱 기능은 구현되지 않는다. 다음과 같이 투명효과를 설정한다. glEnable glcBlend '투명효과 활성화 glBlendFunc sfSrcAlpha, dfOneMinusSrcAlpha '혼합율 계산 방식 설정

안개 효과(Fog) 안개가 있는 현상을 컴퓨터 그래픽에서 구현하려면 관측점에서 멀리 있는 물체를 작고 희미하게 보이도록 표현해야 한다. OpenGL에서도 멀리 있는 물체를 흐리게 하는 안개 효과를 지원하는데, 안개 효과를 적용하는 시점은 좌표변환, 광원 설정, 텍스쳐 매핑 등의 그리기 과정에서 제일 마지막에 수행한다.

glFogifv함수 안개 효과를 내는 함수는 다음과 같다. void glFogifv(GLenum pname, TYPE param); //C Sub glFogifv(pname As glFogParameterConstants, param As GLint) 'VB

glFogifv함수의 인자

glFogifv함수의 인자의 사용 특정 지점의 안개효과의 정도는 fogmode로 지정한 값과 fogdensity에서 설정한 밀도값, 그리고 관측점에서부터의 z거리에 따라서 다음과 같이 결정되는데 그 값은 0에서 1까지의 범위이다. 거리가 멀어질수록 안개값은 높아진다. 즉 안개가 짙어지게된다. fogmode가 GL_EXP인 경우 fogmode가 GL_EXP2인 경우 fogmode가 GL_LINEAR인 경우 다른 함수와 마찬가지로 glFog 함수를 적용하기 위해서는 glFog기능을 glEnable 함수에 의해 활성화 시켜놓아야한다. glEnable glcFog 'C에서는 (GL_FOG)

미립자 시스템 (Particle System) 비, 불, 연기, 폭발등의 자연 현상들을 시뮬레이션 하기에 좋음. Particle System에서는 분자들의 다발에 대해 그 행동과 특성을 하나하나 부여해 비디오나 영화에서 폭발등의 특수효과에 사용한다.영화 Twister는 Tornado를 시뮬레이션 하기 위해 미립자 시스템을 사용하였다.

* 텍스처를 입히지 않은 오브젝트를 만듦 → 그림자효과를 표현 * 그림자 오브젝트는 헬리콥터 오브젝트의 그림자 효과 * 텍스처를 입히지 않은 오브젝트를 만듦 → 그림자효과를 표현 * 그림자 오브젝트는 헬리콥터 오브젝트의 translate와 rotate 속성값이 동일

2. 퍼포먼스의 최적화 파이프라인(pipeline) OpenGL Command Buffer Rasterizer Frame Transform Light API 두 개 이상의 분리된 상태 또는 단계가 이어지는 처리 과정. 애플리케이션이 OpenGL API 함수 호출을 만들면 명령이 명령 버퍼 내에 위치하게 되고, 버퍼 내에 채워진 명령, 버텍스 테이터, 텍스쳐 데이터 등이 프로그램이나 드라이버에 의해 쏟아져 나올 때 파이프라인의 다음 단계로 전달. 변환과 조명 적용 : 물체의 모양을 나타내는 점들이 물체의 위치와 방향에 따라 다시 계산되고, 각 버텍스에 입혀질 색상의 진하기가 적용되는 단계. 래스터라이즈(rasterization) : 화면에 보여질 화상을 만드는 단계. 프레임 버퍼 : 그래픽 출력 장치의 메모리.

픽셀 파이프라인(Pixel Pipeline) 2. 퍼포먼스의 최적화 픽셀 파이프라인(Pixel Pipeline) - 어플리케이션 퍼포먼스가 픽셀 파이프라인에 의해서 문제 발생 여부 => 렌더링 해상도 변경으로 알 수 있음. 해상도 변경은 뷰 포인트 변경에 의해 쉽게 이루어짐. => 만약 화면 해상도 변경 시 문제가 발생 된다면, 병목 현상이 발생하는 부분은 픽셀 파이프라인 임.

- 애플리케이션 처리, 버퍼 스와핑, 지오메트리 처리 or 프레그먼트 처리에 병목현상 찾기 모든 그리기 호출 제거 더 빨라짐 효과 없음 그래픽에 의해 제한됨 애플리케이션 프로세싱에 의해 제한됨 클리어하고 하나의 작은 삼각형만을 그리고 스와핑하기 더 빨라짐 효과 없음 렌더링에 의해 제한됨 버퍼 스와프에 의해 제한 됨 뷰포트를 8 * 8 픽셀로 설정 해상도 프레임 비율을 줌임 더 빨라짐 효과 없음 픽셀 프로세싱에 의해 제한됨 지오메트리 프로세싱에 의해 제한됨 - 애플리케이션 처리, 버퍼 스와핑, 지오메트리 처리 or 프레그먼트 처리에 병목현상 찾기

정점 파이프라인(Vertex Pipeline) 2. 퍼포먼스의 최적화 정점 파이프라인(Vertex Pipeline) 정점 파이프라인에서 병목현상이 발생하는 부분은 두 가지 테스트를 통해서 알 수 있음. 1) 모든 다른 삼각형의 정점 배열을 그대로 유지하여 렌더링 함. 2) 변환과 광원 파이프라인의 복잡도를 줄이는 것 만약 1) 2) 의해서 개선 된다면 애플리케이션은 정점처리에 제한을 받고 있음.

- 제한된 지오메트리 렌더링에서 퍼포먼스에 대한 병목 현상 찾기 지오메트리 프로세싱에 의해 제한됨 삼각형 수 줄이기 더 빨라짐 효과 없음 T&L에 의해 제한됨 삼각형 설정에 의해 제한됨 광원 비활성화 더 적은 삼각형 사용 더 빨라짐 효과 없음 광원되어 프라임에 의해 제한됨 정점 파이프라인에 의해 제한됨 더 적고 단순한 광원 사용 더 적은 삼각형과 8/16비트 정점 사용 - 제한된 지오메트리 렌더링에서 퍼포먼스에 대한 병목 현상 찾기

2. 퍼포먼스의 최적화 어플리케이션 코드 OpenGL ES에서 glDrawElements와 같은 모든 렌더링 호출을 주석처리 해서 병목현상 테스트 수행. 각 함수나 코드라인에서 수행 시간을 측정하는 프로파일러(profiler)를 사용. 부동소수점 연산 => 정수 연산으로 변경하여 사용하는 것이 퍼포먼스를 향상 시킬 수 있다.

OpenGL ES 애플리케이션의 프로파일링 2. 퍼포먼스의 최적화 OpenGL ES 애플리케이션의 프로파일링 - Graphic Remedy에서 만든 gDEBugger ES OpenGL ES 디버거 이고, 버그와 퍼포먼스 최적화하기 위해서 필요한 정보를 제공. OpenGL ES의 내부를 들여다 볼 수 있게 함으로써 개별적인 API 명령들이 그래픽 파이프라인의 구현에 영향을 미치는를 보여 줌. OpenGL ES 명령에 중지점을 추가 가능하며 에러에서 강제 멈춤을 시행.

2. 퍼포먼스의 최적화 퍼포먼스 체크 리스트

3. 상태 변경과 쿼리 애플리케이션에서는 상태변경은 피할 수 없지만 가능한 동적 상태 쿼리에 대한 클리어는 피해야 함. 동적 쿼리는 오직 그래픽 드라이버 상태의 최신 복사본을 유지하는 것이 어려울 때만 이용 되어야 함. 예) 동적 상태 쿼리가 필요 하다면 단 한번만 파이프라인을 탈 수 있도록 프레임 단위로 모두 한 번 실행 해야 함. 상태변경의 최적화 상태변경을 모아서 한번에 실행, 이를 위해서는 쉐이더와 관련된 상태 변경을 그룹화하는 것과 쉐이더를 공유하는 모든 오브젝트를 함께 렌더링 되도록 조직화 함. 소프트웨어 렌더러를 느려지게 하는 요인 테스처 매핑/ 블랜딩사용/ 안개 ) => 최종 렌더링 이미지에 영향을 주지 않는 모든 연산은 애플리케이션에서 비 활성화 하기

4. 모델 데이터 복잡한 3D 장면은 데이터를 저장하기 위하여 많은 메모리를 사용 함. (메모리 소비를 줄이기 위해 Integer형 대신에 byte, short형과 같이 작은 데이터 포멧을 사용해야 함.) 부동소수점은 항상 정수 포멧을 사용해야 함. ( 정수 포맷이 변환과 광원 파이프라인에서 더 빠르게 처리 됨)

4. 모델 데이터 삼각형의 인덱스 배열은 리스트, 스트립스, 팬스 등과 같이 표현 됨. 스트립과 팬스는 리스트보다 삼각형 하나당 적은 인덱스 수를 가지는 장점.

5. 변환 파이프라인 부동소수점을 사용시 대부분의 디바이스가 부동소수점 유닛을 지원하지 않으므로 이로 인해 병목현상이 발생. ( 고정 소수점으로 오든 오브젝트의 정점 데이터를 구조화 하는 것이 저장 공간을 절약하고 변환 파이프 라인을 단순하게 만듬.) 오브젝트 계층 오브젝트는 자신의 재질과 속성을 갖는다. 이는 불필요한 행렬연산이 발생 가능성이 있다. ( 보다 나은 방법으로 모델링 툴에서 데이터 추출시 작은 조각을 만들고 이 조각은 동일한 변환 행렬과 쉐이더를 공유하는 같은 계층구조에서 오브젝 트를 찾아 그룹화 함.……………….. )

5. 변환 파이프라인 렌더링 순서 / 컬링 전략 객체를 계층적으로 정리 빠른 렌더링을 위한 5단계 프로그램 오브젝트는 일반적으로 앞에서 뒤의 순서로 렌더링 되어야 함. ( 은면 (hidden surface) 제거를 위해 사용되는 z버퍼 알고리즘을 이용하여 감춰진 프레그먼트를 빠르게 제거가 가능하기 때문.) 객체를 계층적으로 정리 삼각형은 공간적으로 일관성을 가진 “객체”끼리 모아 정리 보수적인 바운딩 볼륨(구면, 상자 등)을 각 개체에 대해 계산 빠른 렌더링을 위한 5단계 프로그램 1. 배경 및 매우 먼 곳에 위치한 객체를 렌더링한다. 하늘 입방체, 임포스터 등(스카이 박스를 사용하여 배경을 지운다) 2. 최종 이미지에 포함되지 않는 객체는 빨리 제거한다.(컬링) 3. 세부 묘사의 정도를 계산하여 적용한다. 하위 픽셀 크기의 객체는 솎아낸다.(contribution 컬링) 4. 중복된 광원 및 안개 효과를 최적화한다. 5. 남아 있는 객체들을 최적의 순서로 정렬한다.

6. 광원 정적 광원: 미리 계산된 정점기반의 조명은 비용이 낮으며 좋은 선택임. ( 광원은 모델링의 일부분으로 오직 한번만 계산되며 정점 조명은 메시와 함께 내보내짐. 동적 광원 생략 시는 정점 법선 벡터를 내보낼 필요가 없으므로 메시의 메모리 소비를 줄임. ) OpenGL ES는 재질의 분산이나 주변요소를 메시의 각 정점에 대해 별도 지정할 수 있는 색상 재질 추적(Color material tracking) 개념을 지원 함. ( 동적 정점 기반의 광원에 미리 계산된 조명을 혼합 허용하는 것임. )

7. 텍스처 밉맵 향상된 캐시 일관성 및 영상 품질 자동 밉맵 생성을 지원하는 ES 1.1 텍스처 필터링을 위한 다양한 전략 사용 SW: 최근접 필터링 사용, HW: 고품질 필터링 사용 다중 텍스처링 텍스처 기반의 광원 표현에 사용 다중 렌더링 작업에 비해 언제나 빠른 작업 속도 보장 ES 1.1: 최소 두 개 이상의 텍스처링 도구 지원 ES 1.1: TexEnvCombine 지원 SW: 원근 보정이 언제나 필요하지는 않음 텍스처 수정은 좋지 않은 생각 압축 텍스처를 사용하여 텍스처를 “적절한 크기”로 유지 여러개의 텍스처를 하나로 통합 텍스처 스테이트 변화를 최소화 (글꼴, 애니메이션, 광원 맵 등...)