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

Similar documents
untitled

105È£4fš

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

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

untitled

<30352D30312D3120BFB5B9AEB0E8BEE0C0C720C0CCC7D82E687770>

歯mp3사용설명서

-주의- 본 교재는 최 상위권을 위한 고난이도 모의고사로 임산부 및 노약자의 건강에 해로울 수 있습니다.


<BACFC7D1B3F3BEF7B5BFC7E22D3133B1C733C8A BFEB2E687770>


Microsoft PowerPoint - NV40_Korea_KR_2.ppt

Microsoft Word - Cg Shader Programming.doc

초보자를 위한 자바 2 21일 완성 - 최신개정판

Windows 시스템 프로그래밍 제3판

Java 3D Programming

02_3 지리산권 스마트폰 기반 3D 지도서비스_과업지시서.hwp

OpenGL 프로그래밍 가이드 제4판

<C1A C8B8C0CCBBE7C8B8C8B8C0C72E687770>

04-sa01-91.hwp

1411고1과학-물리_문항지.hwp

ShaderX2: DirectX 9 셰이더 프로그래밍

초보자를 위한 C++

Microsoft PowerPoint - GameProgramming23-PixelShader.ppt

32

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할

Microsoft PowerPoint - gpgpu_proximity.ppt

04_오픈지엘API.key

특건확대공청회자료[1].PDF

2 ㆍ 大 韓 政 治 學 會 報 ( 第 20輯 1 號 ) 도에서는 고려 말에 주자학을 받아들인 사대부들을 중심으로 보급되기 시작하였고, 이후 조선시대에 들어와서는 국가적인 정책을 통해 민간에까지 보급되면서 주자 성리학의 심 화에 커다란 역할을 담당하였다. 1) 조선시대

歯표지.PDF

고 있는 이유도 바로 여기에 있는 것이다. 일 본에서 지진이 발생하기 이전에도 2010년 1 월에는 아이티 대지진(규모 7.0)이 일어난 바 있고 이어서 같은 해 2월에는 칠레 대지진(규 모 8.8)이 일어나는 등, 상상을 초월하는 대 규모 지진이 세계 곳곳에서 연이어

<C3D6C0E7C3B528BAB8B5B5C0DAB7E1292D322E687770>


초보자를 위한 C++

untitled

Microsoft Word - 9 YEBIS2_완료

Microsoft PowerPoint - Practical performance_KR_3.ppt

歯IC-706.PDF

hwp

Microsoft PowerPoint Q AMD DT channel training Nov.ppt

9

OpenGL 프로그래밍 가이드 : OpenGL 1.2 공식 학습 가이드 제3판


초보자를 위한 C# 21일 완성

효성펌프편람

50 새국어생활 제8권 제 1호 ('98년 봄) 한다. a 풍샤의 판단 2.1. 자렵명샤가 의존척 기능을 하는 갱우 의존명사의 품사를 판단하는 문제의 어려움은 한글 과 금성 에 각각 등재된 의존명사의 수를 비교해 보아도 엿볼 수 있다". <한글 에는 740여 개, 금성

K&R2 Reference Manual 번역본

09특집4

歯PLSQL10.PDF


7. 영상정보처리 시스템 연구.hwp

=

K_R9000PRO_101.pdf

04_인덱스_ _먹1도

동화 장면 떠올리기 상상력 시각화 능력 동화 장면을 직업, 산업과 연결시키기 비판적 사고 문제해결력 2차시 동화에서 찾은 세계적인 아이디어 상상력 확산적 사고 협동 동화의 힘 흥미 몰입 3차시 아이디어 주변으로 확장하기 지도로 보는 동화 이야기 새로운 시각으로 세상 바

untitled

<B9CEC1D6C1A4C3A5BFACB1B8BFF82DBBE7B6F7B0FAC1A4C3A5BABDC8A328C6EDC1FD292E687770>


<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F436F6E736F6C D6520B0B3B9DFBFA120C0AFBFEBC7D120B9E6B9FD5FC0CCC1F

MLU-P0863.eps


Microsoft PowerPoint - eSlim SV [ ]

»ê¾÷¿¬±¸¿øÇ¥Áö

歯 조선일보.PDF

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -


[8051] 강의자료.PDF

초보자를 위한 ASP.NET 2.0

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

SB-600 ( ) Kr SB-600 1

untitled

<C0E5B7C1BBF328BEEEB8B0C0CCB5E9C0C729202D20C3D6C1BE2E687770>

Microsoft Word - MorningBrief_1224.doc

ºÎ·ÏB

歯FDA6000COP.PDF

EEAP - Proposal Template

Tekla Structures 설치

<C7D1B1B9B0E6C1A6BFACB1B8C7D0C8B828C0CCC1BEBFF85FC0CCBBF3B5B75FBDC5B1E2B9E9292E687770>

歯Lecture2.PDF

< B5BFBEC6BDC3BEC6BBE E687770>

어니스트펀드_HF-1호_투자설명서_151204(3차수정)

<3130BAB9BDC428BCF6C1A4292E687770>

안전을 위한 주의사항 제품을 올바르게 사용하여 위험이나 재산상의 피해를 미리 막기 위한 내용이므로 반드시 지켜 주시기 바랍니다. 2 경고 설치 관련 지시사항을 위반했을 때 심각한 상해가 발생하거나 사망에 이를 가능성이 있는 경우 설치하기 전에 반드시 본 기기의 전원을

보광31호(4)

Microsoft Word doc

죄형법정주의2 20문 및 해설.hwp

2012 White Paper on Korean Games 5부 게임 콘텐츠 및 기술 개발 동향 제1장 게임 콘텐츠 개발 동향과 전망 제1절 게임 기획 동향 1. 동향 분석 게임 기획은 게임 개발에 있어 절대적인 요소이다. <리그오브레전드>나 <블레이드앤소울>, <디아

< B3E2C1B6BBE7BAD0BCAEBAB8B0EDBCAD2DBFCFBCBABABB28BEF6C0CDC3B5292E687770>

공지사항

부서: 감사담당관 정책: 행정의 투명성 제고 단위: 민원발생사전예방 1)민원심의위원 수당 70,000원*9명*3회 1, 업무추진비 5,800 5, 시책추진업무추진비 5,800 5, )민원심의 업무추진 250,000원*4회 1,000

Yggdrash White Paper Kr_ver 0.18

<C7D1B1B9C4DCC5D9C3F7C1F8C8EFBFF82D C4DCC5D9C3F7BBEABEF7B9E9BCAD5FB3BBC1F E687770>

Microsoft PowerPoint - eSlim SV [080116]

(Transer Function) X(w) Y(w) H(w) Y(w) X(w) H ( w) φ H(w) H(w) X(w) Y(w). Vo ( w) H v ( w) V ( w) I o( w) H i ( w) I ( w) V ( w) H z ( w) I ( w) I ( w

DCR-HC15

femap brochure (Korean)

6. 가상현실 방송응용 연구.hwp

PowerPoint Presentation

Transcription:

1

1. De a n C a lve r Direct3D ShaderX: &. DirectX 9 (stream).. Dire c tx 9 1.1.... 3.0,

1. 49.. DirectX 8., ( ). DirectX 8 (D3DDEVCAPS2_STREAMOFFSET ), DirectX 9. DirectX 7, FVF.,, DirectX 9, D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET. DWORD (4 ). DirectX 9..,.,. N o t e DirectX 9 2.0..,. 2.0 (ATI ).

50 1 DirectX 8 (signed), (unsigned), (normalized),.. D3DCOLOR 4 32 8 [0,1] N a UBYTE4 4 32 8 [0,255] Y UBYTE4N 4 32 8 [0,1] Y UDEC3 3 32 10 [0,1024] Y b DEC3N 3 32 10 [-1,1] Y b SHORT2 2 32 16 [-32768,32767] N SHORT4 4 64 16 [-32768,3276z7] N USHORT2N 2 32 16 [0,1] Y USHORT4N 4 64 16 [0,1] Y SHORT2N 2 32 16 [-1,1] Y SHORT4N 4 64 16 [-6.55e4,6.55e4] Y FLOA16_2 2 32 16 [-6.55e4,6.55e4] Y c FLOAT16_4 4 64 16 [-3.45e38,3.48e38] Y c FLOAT1 1 32 32 [-3.48e38,3.48e38] N d FLOAT2 2 64 32 [-3.48e38,3.48e38] N d FLOAT3 3 96 32 [-3.48e38,3.48e38] N d FLOAT4 4 128 32 [-3.48e38,3.48e38] N d a) D3DCOLOR. ARGB RGBA. b) 2. c) float16 OpenEXR, nvidia PIXAR. D3DXFLOAT16 ( OpenEXR SDK ). d) float C IEEE754.

1. 51 32 (DEC3 ). D3DCAPS9.DeclType, D3DTCAPS_datatype, D3DDECLTYPE_datatype ( datatype ). DEC3N UDEC3, (,, ). ( ). A B C D 2 10 10 10 D2DDECLTYPE UDEC3 D2DDECLTYPE UBYTE4 X B X (D&0x0ff) Y C Y (C&0x03f) (D&0x300)>>8) Z D Z (B&0x00F) ((C&0x3c0)>>6) W 1 W (A<<6) ((B&0x3f0)>>4 [ 1-1 ] UDEC3 ( ).

52 1 NORMAL0 UDEC3 NORMAL1 UBYTE4. D3DVERTEXELEMENT9 decl[] = }; / /, ' ' UDEC3 0, / / 0, / / D3DDECLTYPE_UDEC3, / / D3DDECLMETHOD_DEFAULT, / /. D3DDECLUSAGE_NORMAL, / / ( ) 0 / / (n. ) }, / /, UBYTE4 0, / /,. 0, / /,. D3DDECLTYPE_UBYTE4, / / D3DDECLMETHOD_DEFAULT, / /. D3DDECLUSAGE_NORMAL, / / ( ) 1 / / (n. ) }, D3DDECL END( ), 2^6(64) (floor)., 0 3. (mova ). st r uct VS_I NPUT f l oat 4 normal : NORMAL0, f l oat 4 enc2bi t : NORMAL1 }; voi d mai n( VS_I NPUT i nput )

1. 53 } / /. f l oat 3 normal = i nput. normal ; / / 2. (0-3) f l oat t wo bi t s = f l oor (i nput.enc2bi t.w / 64.0) ; DEC3N 10, 10, 12. (Direct3D ShaderX., (eigen),. ). (dominant) (, )., 64 (SHORT4) 32., z. st r uct VS I NPUT f l oat 4 posi t i on : POSITION0, f l oat 4 enc2bi t : POSITION1 }; voi d mai n( VS_I NPUT i nput ) / / 10, 10, 10. f l oat 3 cpos = i nput. posi t i on; / / 2. (0-3) f l oat t wo_bi t s = f l oor (i nput.enc2bi t.w / 64.0) ; / / 0-1. cpos. z = (cpos. z + t wo_bi t s ) * 0.25;

54 1 } / /. f l oat 4 pos = mul ( f l oat 4 (cpos, 1), I nvcompressi ontransf orm ) ;. Tom Forsyth.,, (subdivision surfaces). (tessellation), CPU,. ( ( ), ).,., (barycentric),.. :.,. :.,... Mike Dogget Tom Forsyth [2]., Tom

1. 55 Forsyth [1]. 1D. Direct3D ShaderX... CPU,.,,,. (FLOAT1),. 8, UBYTE4.,. N o t e, DirectX 9 GPU. API, DirectX 9 ( ). Mike Doggett OpenGL (uber-buffer) renderto-vertex-array GPU. (p re - filte ring ).., ( ) ( ).

56 1,. UBYTE4,. ( / )...,.,,., (barycentric) (, (areal) ) (., ). ( ).., (k i j ).....

1. 57 / / HLSL f l oat 3 Vert expos [3 * NUMBASE TRIANGLE] ; voi d mai n(f l oat 3 vert exst ream : POSITION0) f l oat i = vert exst ream.x; f l oat j = vert exst ream.y f l oat k = 1.0 i j ; f l oat basei ndex = vert exst ream. z * 256; / /. f l oat 3 pos = i *Vert expos [ (basei ndex*3) + 0 ] + j *Vert expos [ (basei ndex*3) + 1 ] + k*vert expos [ (basei ndex*3) + 2 ] ; } N- N- ( PN [3]) (bicubic). N-,,..,.,. GPU, PC CPU. CPU ( N-, 39 18 ), CPU. f l oat 3 Vert expos [3 * NUM_BASE_TRIANGLE] ; f l oat 3 Vert exnormal s [3 * NUM_BASE_TRIANGLE] ; / / f l oat 3 b300, b030, b003, b210, b120, b021, b201, b102, b012, b111;

58 1 f l oat 3 n200, n020, n002 ; voi d generat econt rol Poi nt swi t hli nearnormal s (f l oat basei ndex) ; f l oat 3 v0 = Vert expos [ (basei ndex*3) + 0 ] ; f l oat 3 v1 = Vert expos [ (basei ndex*3) + 1 ] ; f l oat 3 v2 = Vert expos [ (basei ndex*3) + 2 ] ; f l oat 3 n0 = Vert exnormal [ (basei ndex*3) + 0 ] ; f l oat 3 n1 = Vert exnormal [ (basei ndex*3) + 1 ] ; f l oat 3 n2 = Vert exnormal [ (basei ndex*3) + 2 ] ; / /. / / CD/ ATI PN [3]. f l oat 3 edge = v1 - v0; / / E - (E.N)N f l oat 3 t angent 1 = edge ; f l oat t mpf = dot ( t angent 1, n0 ) ; t angent 1 -= n0 * t mpf ; b210 = v0 + (t angent 1 * rcp3) ; } voi d eval uat enpat chli nearnormal (f l oat i, f l oat j, out f l oat 3 pos, out f l oat 3 norm) f l oat k = 1 - i - j ; f l oat k2 = k * k; f l oat k3 = k2 * k; f l oat i 2 = i * I ; f l oat i 3 = i 2 * i ; f l oat j 2 = j * j ; f l oat j 3 = j 2 * j ; / / pos = (b300*k3) + (b030*u3) + (b003*v3) + (b210*3*k2*i ) + (b120*3*k*i 2) + (b201*3*k2*j ) + (b021*3*i 2*j ) + (b102*3*k*j 2) + (b012*3*i 2*j ) + (b111*6*k*i *j ) ; } / / norm = (w * n200) + (i * n020) + (j * n002) ; voi d mai n(f l oat 3 vert exst ream : POSITION0)

1. 59 f l oat i = vert exst ream.x; f l oat j = vert exst ream.y f l oat basei ndex = vert exst ream. z * 256; f l oat 3 pos, norm; } generat econt rol Poi nt swi t hli nearnormal s (basei ndex) ; eval uat enpat chli nearnormal (i, j, pos, norm) ; N-.,.,.. ( ),. ( ).,.,.. / / HLSL f l oat MAX_DISPLACEMENT_HEIGHT = 100; / /. f l oat 3 Vert expos [NUM_BASE_VERTICES] ; f l oat 3 Vert exnormal [NUM_BASE_VERTICES] ; f l oat 2 Vert exuv[numbase_vertices] ; st r uct VS_I N f l oat 2 barycent r i c ; f l oat 3 i ndi ces ; f l oat di spl acement ;

60 1 }; voi d mai n( VS_I N i nput ) f l oat i = i nput. barycent r i c.x; f l oat j = i nput. barycent r i c.y f l oat k = 1.0 i j ; f l oat i 0 = i nput. i ndi ces.x * 256; f l oat i 1 = i nput. i ndi ces.y * 256; f l oat i 2 = i nput. i ndi ces. z * 256; f l oat 3 pos = i *Vert expos [i 0] + j *Vert expos [i 1] + k*vert expos [i 2] ; f l oat 3 normal = i * Vert exnormal [i 0] + j * Vert exnormal [i 1] + k* Vert exnormal [i 2] ; f l oat 2 uv = i * Vert exuv[i 0] + j * Vert exuv[i 1] + k* Vert exuv[i 2] ; } normal = normal i ze ( normal ) ; pos = pos + i nput.di spl acement * normal * MAX DISPLACEMENT HEIGHT; [0, 1]. 256 ( 256 ).., 1 + 1 8 ( ), 3 + 1 8 ( )... (perturbed),..,.

1. 61,.,.., ( )., ( )..,.,.,. ( [2] ),. [1] Forsyth, Tom, Displacement Mapping, ShaderX 2 : Shader Programming Tips & Tricks with DirectX 9, Wolfgang Engel, Wordware Publishing, Inc., 2004, pp. 73-86. 1 7.. [2] Doggett, Mike Tom Forsyth, Displacement Mapping, GDC 2003. [3] Vlachos, A. J. Peters, C. Boyd, J. Mitchell, Curved PN Triangles, http://www.ati.com/developer/curvedpntriangles.pdf.