Ch7. 블렌딩 “현재 래스터라이즈 과정에 있는 픽셀과 같은 위치에 있는 이전의 픽셀을 서로 섞는(조합)하는 테크닉!”

Slides:



Advertisements
Similar presentations
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
Advertisements

문자코드 1 박 2 일 (4 조 ) 이경도 이준집 이수연 엄태규. 문자코드란 ? 문자나 기호를 컴퓨터로 다루기 위하여, 문자나 기호 하나하나에 할당 시키는 고유의 숫자를 말하는 것이다.
재료수치해석 HW # 박재혁.
Chapter04 캔버스(2) HTML5 Programming.
CHAP 22. 블루투스.
제 7 장 함수 사용을 통해 엑셀 정복하기.
CHAP 19. 구글맵.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Excel 일차 강사 : 박영민.
윤 홍 란 다이알로그(대화상자) 윤 홍 란
컴퓨터 프로그래밍 기초 [Final] 기말고사
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
JK 및 T 플립플롭 JK Flip-Flop JK 플립플롭은 디지털 시스템에서 가장 많이 사용되고 있는 플립플롭으로
제 14 장 파티클 시스템.
제 18 장 픽셀 셰이더의 소개.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
제4장 컬 러(COLOR) 컬러 표현 Direct3D는 RGB 세 성분을 이용해 컬러 표현
6장. printf와 scanf 함수에 대한 고찰
Chapter 07. 기본 함수 익히기.
초음파를 이용한 거리 측정과 음성구현 1 조 한 형 래 김 요 섭 안 정 민.
컴퓨터 프로그래밍 : 실습3 2장 데이터와 식.
11장. 1차원 배열.
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
일차방정식의 풀이 일차방정식의 풀이 순서 ① 괄호가 있으면 괄호를 먼저 푼다.
CHAP 12. 리소스와 보안.
제4장 제어 시스템의 성능.
Ⅲ. 이 차 방 정 식 1. 이차방정식과 그 풀이 2. 근 의 공 식.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
Method & library.
JA A V W. 03.
Chapter03 캔버스(1) HTML5 Programming.
MVC 모델을 이용한 웹 애플리케이션 작성 웹 애플리케이션 개발 순서를 알아본다 웹 애플리케이션의 실행 순서를 이해한다.
CHAP 5. 레이아웃.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
ITQ 정보기술자격 국가공인 Excel 2007 Ⅱ 함수- 11회차 강사 : 박영민.
4 장 신호(Signals) 4.1 아날로그와 디지털(Analog and Digital)
DirectX 9을 이용한 게임 개발 기본 코스 강의 내용 : blending.
Clipping 이진학.
08장 쿠키와 세션.
Fitting / Matrix / Excel
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
객체기반 SW설계 팀활동지 4.
Teaming pms.
( Windows Service Application Debugging )
이차방정식과 이차함수의 관계 이차함수의 그래프와 축의 위치 관계 이차방정식 의 그래프와 축이 만나는 점의 좌표는 이차방정식
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
작도 작도 작도: 눈금 없는 자와 컴퍼스만을 사용하여 도형을 그리는 것
제 5장 제어 시스템의 성능 피드백 제어 시스템 과도 성능 (Transient Performance)
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
3. 모듈 (5장. 모듈).
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
AdcRead API 함수 분석 마이크로프로세서.
상관계수.
통계학 R을 이용한 분석 제 2 장 자료의 정리.
게임수학 제 8 장 고급 렌더링.
I. 수와 식 1. 유리수와 순환소수.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
BoardGame 보드게임 따라가기.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

Ch7. 블렌딩 “현재 래스터라이즈 과정에 있는 픽셀과 같은 위치에 있는 이전의 픽셀을 서로 섞는(조합)하는 테크닉!” DirectX 9 Ch7. 블렌딩 “현재 래스터라이즈 과정에 있는 픽셀과 같은 위치에 있는 이전의 픽셀을 서로 섞는(조합)하는 테크닉!”

목표 블렌드의 동작 원리와 이용 방법을 이해한다. Direct3D가 지원하는 다양한 블렌드 모드에 대해 배운다. 기본형의 투명도를 제어하는 데 알파 성분을 이용하는 방법을 배운다.

7.1 블렌딩 방정식 현재 계산되고 있는 픽셀(원본 픽셀)을 앞서 쓰여진 픽셀 값(목적지 픽셀)과 결합하는 방식을 블렌딩. *블렌딩의 효과는 유리같은 투명효과에 제한되지 않는다. 현재 그리고 있는 pixel은 back buffer에 먼저 그려져 있는 pixel과 blending되므로, bleding을 이용하기 위해서는 다음의 규칙이 반드시 지켜져야 한다. 1. 블렌드를 이용하지 않는 물체를 먼저 그린다. 2. 블렌드를 이용할 물체들을 카메라와의 거리에 따라 정렬한다. 뷰 스페이스내에 있다면 z 성분을 이용 정렬 3. 블렌딩을 이용하는 물체들을 뒤에서 앞 순서로 그려나간다.

7.1 블렌딩 방정식 두 개의 픽셀 값을 섞는 데는 다음의 식이 이용된다. outputPixel = sourcePixel ⓧ SourceBlendFactor + DestPixelⓧ DestBlendFactor 각각의 변수는 4D 컬러 벡터 (r, g, b, a)이며 ⓧ 기호는 성분 단위 곱을 나타낸다. Pixeloutput - 결과 픽셀 Pixelsource - back buffer에 있는 pixel과 blend할 현재 pixel BlendFactorsource - blend할 원본 pixel의 퍼센트를 지정하는 (0, 1) 범위 내의 값 Pixeldestination - back buffer 내의 pixel BlendFactordestination - blend할 목적지 pixel의 퍼센트를 지정하는 (0, 1) 범위 내의 값 블렌딩은 디폴트로 비활성화 되어있으며, D3DRS_ALPHABLENDENABLE 렌더 상태를 true로 지정하여 활성화 할 수 있다. Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);

7.2 블렌드 인수 원본 블렌드 인수와 목적지 블렌드 인수를 지정하기 위해서는 각각 D3DRS_SRCBLEND와 D3DRS_DESTBLEND 렌더 상태를 이용하면 된다. Device->SetRenderState(D3DRS_SRCBLEND, Source); Device->SetRenderState(D3DRS_DESTBLEND, Destination); Source와 Destination의 값으로는 다음의 블렌드 인수 중 하나를 넣으면 된다. D3DBLEND_ZERO = (0, 0, 0, 0) D3DBLEND_ONE = (1, 1, 1, 1) D3DBLEND_SRCCOLOR = (rs, gs, bs, as) D3DBLEND_INVSRCCOLOR = (1 - rs, 1 - gs, 1 - bs, 1 - as) D3DBLEND_SRCALPHA = (as, as, as, as), 원본의 디폴트 값 D3DBLEND_INVSRCALPHA = (1 - as, 1 - as, 1 - as, 1 - as), 목적지의 디폴트 값 D3DBLEND_DESTALPHA = (ad, ad, ad, ad) D3DBLEND_INVDESTALPHA = (1 - ad, 1 - ad, 1 - ad, 1 - ad) D3DBLEND_DESTCOLOR = (rd, gd, bd, ad) D3DBLEND_INVDESTCOLOR = (1 - rd, 1 - gd, 1 - bd, 1 - ad) D3DBLEND_SRCALPHASAT = (f, f, f, 1) (f: = min(as, 1 - ad) D3DBLEND_BOTHINVSRCALPHA = 원본을 (1 - rs, 1 - gs, 1 - bs, 1 - as)로, 목적지를 (rs, gs, bs, as)로 지정한다. D3DRS_SRCBLEND에만 이용할 수 있다. 디폴트 값은 각각 D3DBLEND_SRCALPHA와 D3DBLEND_INVSRCALPHA이다.

7.3 투명 알파 성분을 주로 사용하는 곳이 바로 블렌딩이다. 알파 성분은 주로 픽셀의 투명도 단계를 지정하는데 이용된다. 각 픽셀의 알파 성분에 8비트씩을 할당했다고 가정하면, 알파 성분은 [0, 255]의 범위를 가지며 이는 실제로 [0%, 100%] 불투명도에 해당된다. 즉, 알파 값이 0이면 완전히 투명하며, 알파 값이 128이면 50% 투명하고, 255이면 완전히 불투명하게 표현된다. 알파 성분으로 알파의 투명도를 지정하기 위해서는 디폴트 인수인 D3DBLEND_SRCALPHA(for source)와 D3DBLEND_INVSRCALPHA(for destination)로 지정해야 한다.

7.3.1 알파 채널 셰이딩에서 계산된 알파 성분을 이용하는 방법 이외에도 텍스처의 알파 채널에서 알파 정보를 얻는 방법이 있다. 알파 채널은 알파 성분을 보관하기 위해 각 텍셀에 할당된 비트들이다. -기본형에 텍스처를 매핑할 때는 알파 채널의 알파 성분 또한 매핑되며, 이는 곧 텍스처를 입힌 기본형 픽셀의 알파 성분이 된다.

7.3.2 알파 채널 원본 지정하기 디폴트로, 현재 텍스처가 알파 채널을 가지고 있는 경우에는 알파 채널에서 알파를 얻음 만약 알파 채널이 없다면 버텍스 컬러에서 알파를 얻는다. 렌더 상태를 이용하면 어떤 원본을(난반사 컬러나 알파 채널) 이용할 것인지를 지정할 수 있다. // shading 과정에서 diffuse 컬러로 alpha를 계산한다. g_device->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE ); g_device->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 ); // alpha 채널에서 alpha를 얻는다. g_device->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );

7.4 DirectX 텍스처 툴로 알파 채널 만들기 P. 184참조^-^♡ 7.5 예제 애플리케이션: 투명