DirectX 9을 이용한 게임 개발 기본 코스 강의 내용 : blending.

Slides:



Advertisements
Similar presentations
산업용 PDA AT-870. Copyright © 2008 barall All right reserved Reference Ⅰ CUSTOMERPROJECT LG 텔레콤BARCODE & GPS 를 이용한 자산 및 시설물 관리 KT LOGISGPS & CDMA 를 이용한.
Advertisements

법의 이념과 철학의 이해 법의 이념은 무엇일까 ? 정의 : 각자에게 각자의 몫을 주는 것 - 평등의 의미가 내포되어 있음 법적 안정성 : 법의 규정이 명확하고 잦은 변경 이 없어야 함 개인의 자유와 권리를 공공복지와 조화롭게 추구 – 사회질서와 안전유지 + 사회정의.
어떻게 성경을 읽느냐 ?.  39+27=66 ( 삼구 이십칠 )  역사서 (17 권 )  시가서 (5 권 ): 욥기시편잠언전도서아가  선지서 (17 권 )
10장. 시기별 학급경영 11조 염지수 이 슬 권용민 신해식.
일본 근세사. (1) 에도막부의 개창 ( ㄱ ) 세키가하라의 전투 (1600) - 히데요시의 사후 다섯 명의 다이로 ( 大老 ) 가운데 최대 영지 (250 만석 ) 를 보유하고 있던 도쿠가와 이에야스가 급부상. 이에 이에야스와 반목해 온 이시다 미쓰나리 ( 石田三成 ),
아니마 / 아니무스 송문주 조아라. 아니마 아니마란 ? 남성의 마음속에 있는 여성적 심리 경향이 인격화 한 것. 막연한 느낌이나 기분, 예견적인 육감, 비합리적인 것에 대 한 감수성, 개인적인 사랑의 능력, 자연에 대한 감정, 그리.
대구가톨릭대학교 체육교육과 06 학번 영안중학교 체육교사 신웅섭 반갑습니다. 반야월초등학교 축구부 대륜중학교 축구부 대륜고등학교 대구가톨릭대학교 차석 입학 대구가톨릭대학교 수석 졸업 2014 년 경북중등임용 체육 차석 합격 영안중학교 체육교사 근무 소개.
일장 - 1 일 24 시간 중의 명기 ( 낮 ) 의 길이 ( 밤은 암기, 낮은 명기 ) 광주기성 - 하루 중 낮의 길이의 장단에 따라 식물의 꽃눈 형성이 달라지는 현상 일장이 식물의 개화현상을 조절하는 중요한 요인 단일식물 - 단일조건에서 개화가 촉진되는 식물 장일식물.
2 학년 6 반 1 조 고은수 구성현 권오제 김강서.  해당 언어에 본디부터 있던 말이나 그것에 기초하여 새로 만들어진 말  어떤 고장 고유의 독특한 말  Ex) 아버지, 어머니, 하늘, 땅.
1/39 8 장 그래픽과 이미지의 개념 8.1. 색의 기본 용어 8.2. 색 모델 8.3. 픽셀과 해상도 8.4. 그래픽 방식 8.5. 그래픽과 이미지의 구분 8.6. 이미지 압축 8.7. 투명 GIF 8.8. 편집 소프트웨어 8.9. 그래픽 파일의 형식.
한국산업기술대학교 온라인 기술교육 교재 개발 차세대 모바일 디지털 컨텐츠 15. WML 개발 - I 이번 시간에는... 지난 시간에는 WAP 의 WTA 프로토콜의 기능과 구성, 서비스 예에 대해서 학습하고, WAP 보안을 위한 WTLS 와 WAP 애플리케이션 레이어 보안,
2014년도 교원 및 기간제교사 성과상여금 전달교육 개 회 국기에 대한 경례 - 인사말
이탈리아 피자스파게티올리브등.
선진 고양교육 “유아교육 행정 업무 연수” 유치원 회계실무 및 유아학비 연수 경기도고양교육청.
종합쇼핑몰 다수공급자 계약제도 조 달 청.
청년창업자금지원안내 2012년 중소기업진흥공단.
묵자 겸애, 비명, 비공, 상현, 상동, 천지, 명귀, 삼표 법.
Gamma와 Linear-Color-Space
Ch7. 블렌딩 “현재 래스터라이즈 과정에 있는 픽셀과 같은 위치에 있는 이전의 픽셀을 서로 섞는(조합)하는 테크닉!”
3.1 그래픽스/영상 데이터 형 3.2 널리 사용되는 파일 형태
내 아이를 위한 구강관리.
제16장 원무통계 • 분석 ☞ 통계란 특정의 사실을 일정한 기준에 의하여 숫자로 표시한 것을 말한다.통계로서 활용할 수 있는 조건으로는 ① 동질성을 지녀야 하고 ② 기준이 명확하고 ③ 계속성이 지속되어야 하며 ④ 숫자로 표시하여야 한다 경영실적의.
3장 이미지와 그래픽 3.1 이미지와 그래픽의 기본 개념 3.2 입출력장치 3.3 이미지의 처리와 압축
2D 게임프로그래밍 프로젝트 2차 발표 유제원.
서울지방세무사회 부가세 교육 사진클릭-자료 다운 세무사 김재우.
요한계시록 진행과정 장 차 될 일 천년왕국(20:4-6)/흰보좌(20:11-15) 20
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
치매의 예방 김 은민 윤금 노인요양원 치매의.
제13장 기본적인 지형 렌더링 학기 컴퓨터게임(DirectX).
예수님 탄생 목자.박사들 경배 (마2:1-12, 눅 2:1-7).
S3c6410을 이용한 리눅스 비디오 드라이버 포팅 가이드 – - Linux Video Driver Porting Guide Using s3c6410 – 박영만
문 성 원 3D Game Programming QuadTree Culling 문 성 원 KoreaIT 전문학교 게임학과.
동방정교회 예배 탐방 보고서 탐방 일시 : 참 석 : 박 창. 김 성 복. 유 영 미. 용 명 희. 김 형 균.
8장. 가시성 판단 학습목표 후면제거의 정의와 처리방법을 이해한다. 절단작업의 정의와 처리방법을 이해한다.
제8장 스텐실.
제 14 장 파티클 시스템.
Gamma(감마) 발표일 : 발표자 : 임정환.
대관전시 홍보물 제작 메뉴얼.
Mobile 3D Graphics (6장 퍼포먼스와 확장성) 교과목명 : 컴퓨터 그래픽스 특론 학 번 :
마산에 대하여 만든이 : 2204 김신우, 2202 권성헌.
GPU Gems 3 Chapter 13. Volumetric Light Scattering as a Post-Process
버퍼 (Buffer).
MA1356T ▶ 제품개요 *. 사용 스마트 카드 : ISO A Type And Mifair 호환 .
과목명 : 모바일 통신실무 학과명 : 마케팅 미디어과 지도교사 : 진선미
제 3 장 연산자 (Operators).
연구를 위한 준비 참고문헌 카드 만들기.
탐구하는 수학연습문제 수학 8나 대한 114쪽 Ⅲ. 도형의 닮음
GS건설 하자보수 안내 GS건설에서 공용부 하자보수공사를 아래와 같이 실시합니다. 관리소의 공고
제12주제 갈보리언덕에서 누가복음 23:33-49.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
보라 처녀가 잉태하여 아들을 낳을 것이요 그 이름은 임마누엘이라 하리라 (이사야7:14)
1. 학습목표 : 레이어 기능 익히기 layer blending mode : 위에 있는 레이어에서 바로 밑에 있는 레이어와 블랜드하는 기능(두 레이어에서 발생) opacity : 레이어의 투명도 조정 Adobe Photoshop CS3.
The Party-State (1) 영 어 학 부 강물결 영 어 학 부 박우인
발표: G2 박진수 사도요한 준비: G2 박진수 사도요한 T3 김택준 미카엘
박성진 컴퓨터 프로그래밍 기초 [04] 연산자 박성진
6장 마케팅 조사 박소현, 김중호, 박기찬.
耽羅國 建國神話 허남춘(제주대 국문학과 교수)
한밭대학교 창업경영대학원 회계정보학과 장 광 식
음양오행과 물리학 조 원 : 김용훈, 양범길, 박수진, 윤진희, 이경남, 박미옥, 박지선 (11조)
이야기 치료에 대하여 <8조 학문적 글쓰기 발표> 주희록 최은지
Basic Function 김윤성 박로빈 이지호 천영재
교육행정 및 경영 제13장 교육재정 (화) 안 봉 직.
Introduction to Computer System 컴퓨터의 이해 3: 데이터 표현
11장 다형성과 추상 클래스, 인터페이스 Section 1 객체의 형 변환 Section 2 연산자 Section 3 다형성
교육 내용 OMRON SYSMAC Gateway(SGW) 설치 INDEX 제어 프로그램 설치
토론의 기술 3 쟁점분석과 입론.
J.A.R.V.I.S. KINECT HOME PROJECT 전영재 이민권
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
중국문학개론 한부와 겅건안문학 중어중국학과 ㅇ이진원 한부와 건안문학.
Presentation transcript:

DirectX 9을 이용한 게임 개발 기본 코스 강의 내용 : blending

목 차 블랜딩 구현

실습 InitGeometryTexture() 함수 텍스처 이름을 tree1.bmp로 변경, 실행 DDS 파일 열어보기 DirectX Texture Tool 프로그램 실행 BMP와 DDS의 차이점 확인

블렌딩(Blending) 그려진 물체의 픽셀의 색에 그릴 물체의 픽셀의 색을 섞는(블렌딩) 기술 섞는 비율을 조절하면 반투명한 효과를 낼 수 있다. ex) 투명효과(알파블렌딩) 나무 상자를 배경으로 반투명한 주전자

투명도 투명도를 나타내기 위해, 색상에 투명도 채널을 추가하여 (r, g, b, a)로 쓰고, a를 알파라고 부르며, 픽셀의 불투명도를 나타낸다. 알파 채널에 8bit가 할당되었다면, 유효범위는 [0, 255]가 된다. 0(검정)  0% 불투명  투명 128(회색)  50% 불투명 255(흰색)  100% 불투명 알파 채널이 float형이면 유효범위는 [0, 1] material.diffuse.a

알파 블랜딩 예제 ? 위와 같은 인수일 때, 최종 픽셀의 색은? D3DXCOLOR(r,g,b,a) SourceColor = D3DXCOLOR( 0.0f, 1.0f, 0.0f, 0.6f ); DestColor = D3DXCOLOR( 1.0f, 0.0f, 0.0f, 1.0f); OutputColor = ? 참고: 배경의 alpha는 항상 1(완전 불투명) ?

알파 채널이 포함된 텍스처 포토샵이나 DirectX Texture Tool을 통해서 제작할 수 있다. 32bit ARGB + = 32bit ARGB A8R8G8B8 24bit RGB 8bit Gray

알파 채널이 포함된 텍스처 (cont’) DirectX Texture Tool 이용하여 알파채널이 포함된 텍스처 만들기 1. 알파채널이 포함되지 않은 텍스처를 오픈 한다. 2. 포멧 변경 Format > Change Surface Format X8R8G8B8  A8R8G8B8

알파 채널이 포함된 텍스처 (cont’) 3. 알파 맵(8bit 그레이스케일)을 알파맵으로 오픈 4. 저장 File>Open Onto Alpha Channel Of This Texture 투명한 부분은 이 툴의 배경색이 보인다. (하늘색) 4. 저장 DirectX의 텍스처 포맷 dds로 저장

실습 Texture tool을 이용하여 tree1.bmp를 tree1.dds로 변경 Format 변경 (a8r8g8b8) 회색조 alpha영상을 그림판으로 생성하여 적용 Alpha 의 원리 확인

Alpha Blending 공식 – back to front C(color), A(alpha) C결과 = C물체 A물체 + C배경 (1-A물체) Color = Color1 x weight1 + Color2 x weight2 두 색상을 적절한 비율로 섞는 블랜딩(blending) 공식을 이용하여 다양하게 기능 확장 가능하다.

블렌딩 공식 Source Pixel : 앞으로 그릴 픽셀의 색 (r, g, b) Source Blend Factor : Source Pixel의 농도. [0, 1]범위 Dest Pixel : 이미 그려진 픽셀의 색 (r, g, b) Destination Blend Factor : Dest Pixel의 농도. [0, 1]범위 모든 성분 4D 벡터 ( r, g, b, a )

블렌딩 활성화 알파 블랜딩 관련 설정을 수행한다. 반투명한 물체를 그린다. Device->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE ); 알파 블랜딩 관련 설정을 수행한다. 반투명한 물체를 그린다. 알파 블렌딩 관련 작업이 끝나면 블렌딩을 비활성화 해준다. Device->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );

블렌딩 연산자 Device->SetRenderState( D3DRS_BLENDOP, value ); value D3DBLENDOP_ADD (기본값) Source + Destination D3DBLENDOP_SUBTRACT Source - Destination D3DBLENDOP_REVSUBTRACT Destination - Source D3DBLENDOP_MIN MIN(Source, Destination) D3DBLENDOP_MAX MAX(Source, Destination) D3DBLENDOP_FORCE_DWORD

블렌드 인수(Factor) Device->SetRenderState( D3DRS_SRCBLEND, Source Blend Factor ); Device->SetRenderState( D3DRS_DESTBLEND, Destination Blend Factor );

블렌드 인수(Factor) (cont’) Device->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); // alpha Device->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); // 1-alpha

블렌드 인수(Factor) Factors : ( r, g, b, a ) 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) (Source Blend 기본값) D3DBLEND_INVSRCALPHA : (1-as, 1-as, 1-as, 1-as) (Destination Blend 기본값) D3DBLEND_DESTALPHA : (ad, ad, ad, ad) D3DBLEND_INVDESTALPHA : (1-ad, 1-ad, 1-ad, 1-ad) D3DBLEND_DESTCOLOR : (rd, gd, bd, ad) D3DBLEND_INVDESTCCOLOR : (1-rd, 1-gd, 1-bd, 1-ad) D3DBLEND_SRCALPHASAT : (f, f, f, 1); f=min(as, 1-ad)

이용되는 알파 값의 소스 1. Texture의 알파 채널을 이용한 방법 2. Material 구조체의 Diffuse.a값을 이용한 방법 3. Texture + Material 동시 이용한 방법 m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTEXTUREOP ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTEXTUREOP ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); D3DTEXTUREOP = { D3DTOP_DISABLE, D3DTOP_SELECTARG1, D3DTOP_SELECTARG2, D3DTOP_MODULATE, D3DTOP_MODULATE2X, D3DTOP_MODULATE4X, D3DTOP_ADD, D3DTOP_ADDSIGNED, D3DTOP_ADDSIGNED2X, D3DTOP_SUBTRACT, D3DTOP_ADDSMOOTH ... };

실습 Render()함수에서 다음 부분 주석 해지 (4문장) g_pd3dDevice->SetTexture(0,0); 노란색 사각형은 어디서 나온 정보인가 반투명 정보는 어디서 나온 정보인가 InitGeometryTexture에서 color값 찾기 Alpha값을 변경하여 실행

실습 - 생각해보기 Render 함수의 주석을 다시 설정 Wood texture의 경우, 왜 alpha blend 설정이 없는가? DX Graphics documents에서 “D3DTSS_ALPHAOP”을 검색 D3DTEXTURESTAGESTATE TYPE DX 기본 설정 Texture-stage state is a texture alpha blending operation identified by one member of the D3DTEXTUREOP enumerated type. The default value for the first texture stage (stage 0) is D3DTOP_SELECTARG1, and for all other stages the default is D3DTOP_DISABLE.

알파블랜딩 예제 - Material 이용 1. 블렌드 인수 D3DRS_SRCBLEND와 D3DRS_DESTBLEND를 지정한다. 2. 알파 성분을 이용한다면 원본을 지정한다. 재질이나 택스처의 알파채널 3. 알파 블렌딩 렌더 상태를 활성화 한다.

알파블랜딩 예제 - Material 이용 // 배경 박스 렌더링 (텍스처를 갖고 있는 물체) m_pd3dDevice->SetTexture( 0, m_pTex ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE ); m_pd3dDevice->SetStreamSource( 0, m_pVB, 0, sizeof(CUSTOMVERTEX) ); m_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );

알파블랜딩 예제 - Material 이용 // 주전자 렌더링 (재질만 있는 물체) D3DMATERIAL9 mtrl; D3DUtil_InitMaterial( mtrl, 0.0f, 1.0f, 0.0f, 0.5f ); m_pd3dDevice->SetMaterial( &mtrl ); m_pd3dDevice->SetTexture( 0, 0 ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG2 );

알파블랜딩 예제 - Material 이용 m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, true ); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE ); m_pd3dDevice- >SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); m_pd3dDevice- >SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); m_pD3DXMesh->DrawSubset(0); m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, false );

알파 블랜딩과 깊이 순서 블랜딩은 순서가 바뀌면 결과 색상이 달라짐 일단, 블랜딩 되고 나면 색을 원상태로 분리할 수 없음 혼합된 결과가 (1, 0.5, 0.7, 1) 이다. 어떤 두 색이 혼합된 것인가? 블랜딩은 순서가 바뀌면 결과 색상이 달라짐 (1, 0, 0, 0.5) over (0, 0, 1, 0.5) over (1,1,1,1) = ? (0, 0, 1, 0.5) over (1, 0, 0, 0.5) over (1,1,1,1) = ? 반투명한 물체는 눈에서 먼 거리 순서로 렌더링과 블랜딩을 수행해야 한다. 중간에 색상을 끼워 넣을 수 없다. 불투명한 물체를 그릴 때는 눈과의 거리 순서에 관계없이 그려도 좋다. DX가 물체와 눈과의 거리를 계산하여 가까운 물체만 선택하여 보여줌

불투명 물체 먼저 그린 후 반투명 물체를 그린다. 반투명 물체들은 카메라로부터 멀리 있는 물체부터 그려준다. 프로그래머가, 물체들을 거리 순으로 직접 정렬하여 순차적으로 Draw해야 한다.

실습 – 화염 애니메이션 다음과 같이 변경 후 실행 BOOL g_bWoodTexture = FALSE; InitGeometryTexture() 확인 Fire.bmp 를 탐색기로 열어 확인 Alpha 채널이 없음 어떻게 블랜딩을 구현했는가 어떻게 애니메이션을 구현했는가

화염 애니메이션 Render 함수 ChangeSpriteUV() 함수 Blend option이 “ONE”임 (0, 0, 0, 0) over (1, 0, 1, 1) = (1, 0, 1, 1) // 노란색 (0, 0, 0, 0) + (1, 0, 1, 1) = (1, 0, 1, 1) // 노란색 값이 매우 작으면 알파 블랜딩와 덧셈이 유사 ChangeSpriteUV() 함수 각 프레임마다 좌표 검사 SPRITE g_Fire = {15, 0, 0, 1}; 로 변경하고 실행 큰 텍스처의 일부를 연속적으로 표시함 텍스처 애니메이션 기법