『directx 12를 이용한 3d 게임 프로그래밍 입문』 - 맛보기

253

Upload: wegra-bokyeon-lee

Post on 22-Jan-2018

991 views

Category:

Software


102 download

TRANSCRIPT

  • DirectX 12 3D

    1 2017 05 25

    D. / /

    () / 7 83 () IT

    02 325 5544 / 02 336 7124 1999 6 24 10 1779 / ISBN 978-89-6848-779-8 93000

    / /

    , , / , , / ,

    ()

    . . .

    www.hanbit.co.kr / [email protected]

    INTRODUCTION TO 3D GAME PROGRAMMING WITH DIRECTX 12

    Translation Copyright 2017 by Hanbit Media, Inc.

    Original Copyright 2016 by MERCURY LEARNING AND INFORMATION LLC. All rights reserved.

    () .

    .

    .

    ( [email protected] ) . () .

  • iv

    D. Frank D. Luna

    15 3 . DirectX

    , 3 3 ,

    . (University of California, Irvine )

    .

    1996 , Knuth

    (The Art of Computer Programming )

    50 . DirectX 11

    3D Game Programming Gems , Game Engine

    Gems , 3D & 1, 2 .

    ,

    DocBook (http://docbook.kr/)

    .

    occams Razor (http://occamsrazr.net/) Game Programming

    Gems GpgStudy (http://www.

    gpgstudy.com/) .

  • v

    ?

    .

    . ,

    . C++,

    , , .

    , , .

    DirectX API

    . .

    C++, DirectX, OpenGL .

    C++ DirectX/OpenGL

    . . C++

    API .

    DirectX 9 , .

    DirectX 12 API , , 3D

    , 3D

    . DirectX 12 .

    . &

    .

    .

    .

    .

    , ()

  • vi

    DirectX 12 3D D. DirectX

    Introduction to 3D Game Programming with DirectX 12 (Mercury

    Learning, 2016 ) . Introduction to 3D Game

    Programming with DirectX 9.0 (Wordware, 2003 ) 2004 DirectX 9 3D

    GAME ( , ) ,

    . DirectX 10 11 12 ,

    . DirectX 11 (DirectX 11 3D

    , , 2014 ), DirectX 12 .

    ,

    DirectX

    . OpenGL DirectX

    ,

    .

    ( )

    . DirectX 12

    , DirectX 12 .

    ! ,

    . DirectX 12 API 3

    ,

    .

    .

    , , ,

    . DirectX . DirectX

  • vii

    Microsoft , DirectX

    . ,

    (ID3D10Device, ID3D11Device, ID3D12Device ).

    . , DirectX 12 DirectX 11

    , .

    , DirectX 12

    . .

    ( )

    , .

    ,

    .

    , , GpgStudy

    (http://www.gpgstudy.com/) GPG . GPG

    .

    .

    , .

    , .

    . , ,

    .

    _

  • viii

    Direct3D 12 3

    Windows (Windows , , Xbox One )

    . Direct3D (low-level ) ,

    Direct3D API (application programming interface, )

    . Direct3D

    . Direct3D

    . , (interactive, ) 3

    . ,

    . , PC 3

    GPU (graphics processing unit, )

    . GPU (general

    purpose GPU computing, GPGPU computing ) , Direct3D 12

    GPU API . Direct3D

    C++ , SharpDX (http://sharpdx.org/ ) .NET

    wrapper 3D API (managed )

    .

    Direct3D 12 ,

    . Direct3D ,

    . (part ) . 1

    . 2 Direct3D , 3

    , , , , , , ,

    Direct3D . 3 Direct3D

    ,

    , , , , , , ,

  • ix

    .

    .

    .

    . .

    .

    .

    ,

    .

    .

    .

    .

    1. Direct3D 3 C++ .

    2. DirectX API ( OpenGL ) Direct3D 12 3

    .

    3. Direct3D Direct3D .

    , Direct3D 12 , 3D

    . .

    .

    1. : , , (

    ) .

  • x

    2. Visual Studio : , ,

    .

    3. C++ : , , ,

    (linked list ), , .

    4. Win32 API Windows . Win32

    A .

    Direct3D 12 .

    1. Windows 10

    2. Visual Studio 2015

    3. Direct3D 12 . GTX 760 .

    DirectX SDK SDK

    Direct3D API

    . , DirectX SDK

    . DirectX MSDN . URL .

    https://msdn.microsoft.com/en-us/library/windows/desktop/dn899121%

    28v=vs.85%29.aspx

    [ 1 ] .

    DirectX DirectX API .

    . ,

    , . , DirectX

  • xi

    .

    MSDN . DirectX

    , ID3D12Device::CreateCommittedResource

    , .

    . [ 2]

    .

    : DirectX .

    1 MSDN DirectX Direct3D 12 Programming Guide.

  • xii

    2 .

    , Direct3D 12 .

    https://github.com/Microsoft/DirectX-Graphics-Samples

    . , NVIDIA AMD, Intel

    Direct3D 12 .

    Direct3D 12 ,

    Direct3D

  • xiii

    .

    ,

    .

    . , Direct3D API

    Direct3D

    . , (data-driven )

    . 3

    Direct3D

    . Direct3D API .

    (www.d3dcoder.net www.merclearning.com )

    .

    ( ) .* DirectX

    , . ,

    . (

    .) ,

    , .

    .

    * , GitHub (https://github.com/d3dcoder/d3d12book) . GitHub( Git) Clone or download Download

    ZIP . (http://www.hanbit.co.kr/src/2779) .

  • xiv

    Visual Studio 2015

    (.vcxproj ) (.sln )

    . Visual Studio 2015 (VS15 )

    () . , 6

    (Box) .

    .

    C:\d3d12book .

    , . , Common

    . .

    .

    C:\d3d12book\MyDemos .

    ( ) .

    : , .

    (include )

    . , Common Visual Studio .

  • xv

    Win32

    Visual Studio 2015 > > (

    3 ).

    ( 4 ).

    Visual C++ > Win32 , Win32 . ,

    ( MyD3D12Project )

    ( C:\d3d12book\MyDemos ) . ,

    . .

    . ,

    [ 5] . Windows

    . .*

    , Win32 . DirectX

    .

    3 .

    * Visual Studio SDL(Security Development Lifecycle) , .

  • xvi

    4 .

    5 .

  • xvii

    DirectX

    .

    , Common/d3dApp.h #pragma .

    // d3d12 .

    #pragma comment(lib, "d3dcompiler.lib")

    #pragma comment(lib, "D3D12.lib")

    #pragma comment(lib, "dxgi.lib")

    ()

    .

    .

    .

    . Box (d3d12book\Chapter 6 Drawing in

    Direct3D\Box ) BoxApp.cpp Shaders .

    .

    1. >

    , BoxApp.cpp .

    2. >

    , Common .h/.cpp .

    [ 6] .

  • xviii

    7 Box .

    3. . >

    , 10 .

    Windows 10 10.x .

    .*

    * 10 ( 8.1 ) Windows SDK . , Windows 10 Windows SDK MSDN . ,

    .

    ( 10 ) .

    6 Box Commons .

  • xix

    4. ,

    . > , ,

    . [ 7] .

    : Common .

    ,

    .

  • xx

    CONTENTS

    ........................................................................................................... iv

    .............................................................................................................................. v

    ...................................................................................................................... vi

    .............................................................................................................................. viii

    PART I

    CHAPTER 1 3

    1.1 .......................................................................................................................... 3

    1.1.1 ................................................................................................... 5

    1.1.2 .................................................................. 7

    1.1.3 ......................................................................................... 7

    1.2 .......................................................................................................... 9

    1.3 ........................................................................................................................ 11

    1.3.1 ........................................................................................................... 13

    1.4 ........................................................................................................................ 15

    1.4.1 2 .............................................................................................. 17

    1.4.2 ....................................................................................... 17

    1.5 ........................................................................................................................... 18

    1.6 DirectXMath ................................................................................. 20

    1.6.1 .................................................................................................... 21

    1.6.2 ............................................................................................ 23

    1.6.3 ................................................................................................. 24

    1.6.4 ....................................................................................................... 26

    1.6.5 ........................................................................................ 27

  • xxi

    1.6.6 ............................................................................................ 27

    1.6.7 ....................................................................................................... 28

    1.6.8 .................................................................................................... 30

    1.6.9 .............................................................................................. 34

    1.7 ........................................................................................................................ 36

    1.8 .................................................................................................................. 38

    CHAPTER 2 43

    2.1 ........................................................................................................................ 43

    2.2 ................................................................................................................. 46

    2.2.1 ............................................................................................................... 46

    2.2.2 .......................................................................................... 47

    2.2.3 ........................................................................................................ 48

    2.3 .................................................................................................................. 48

    2.4 .................................................................................................................. 49

    2.5 ..................................................................................................................... 50

    2.5.1 ........................................................................................................... 51

    2.5.2 ................................................................................................. 51

    2.6 .................................................................................................................. 53

    2.7 ..................................................................................................................... 54

    2.8 DirectXMath ................................................................................................. 56

    2.8.1 .................................................................................................... 56

    2.8.2 ....................................................................................................... 59

    2.8.3 DirectXMath ...................................................................... 60

    2.9 ........................................................................................................................ 62

    2.10 ................................................................................................................ 64

  • xxii

    CONTENTS

    CHAPTER 3 67

    3.1 .................................................................................................................. 68

    3.1.1 ............................................................................................................... 68

    3.1.2 ....................................................................................................... 69

    3.1.3 ............................................................................................................... 70

    3.1.4 ............................................................................................................... 72

    3.2 .................................................................................................................. 75

    3.2.1 ........................................................................................................ 75

    3.2.2 ............................................................................. 76

    3.2.3 ............................................................................................................... 76

    3.2.4 ................................................................... 79

    3.2.5 .......................................................................... 79

    3.3 ........................................................................................................... 81

    3.4 .......................................................................................................... 82

    3.4.1 ............................................................................................................... 84

    3.4.2 .................................................................................................................. 85

    3.4.3 ....................................................................................................... 86

    3.4.4 ................................................................................ 86

    3.4.5 ................................................................................... 87

    3.5 ........................................................................................ 89

    3.6 DirectXMath ................................................................. 90

    3.7 ........................................................................................................................ 91

    3.8 .................................................................................................................. 92

  • xxiii

    PART II Direct3D

    CHAPTER 4 Direct3D 103

    4.1 ............................................................................................................... 104

    4.1.1 Direct3D 12 ...................................................................................... 104

    4.1.2 COM ......................................................................................................... 105

    4.1.3 .................................................................................................. 106

    4.1.4 ................................................................................. 108

    4.1.5 .................................................................................................. 109

    4.1.6 ............................................................................................... 112

    4.1.7 ......................................................................................... 115

    4.1.8 Direct3D .................................................................................. 116

    4.1.9 ..................................................................................................... 118

    4.1.10 DXGI(DirectX Graphics Infrastructure) ....................................................... 119

    4.1.11 ............................................................................................ 124

    4.1.12 ....................................................................................................... 126

    4.2 CPU GPU .......................................................................................... 127

    4.2.1 ................................................................................. 127

    4.2.2 CPU/GPU ........................................................................................ 132

    4.2.3 .............................................................................................. 135

    4.2.4 ................................................................ 137

    4.3 Direct3D .................................................................................................. 137

    4.3.1 ..................................................................................................... 138

    4.3.2 ....................................................................... 140

    4.3.3 4X MSAA ....................................................................... 141

    4.3.4 .......................................................................... 141

  • xxiv

    CONTENTS

    4.3.5 ................................................................................. 142

    4.3.6 .............................................................................................. 145

    4.3.7 (RTV) .................................................................................. 146

    4.3.8 ............................................................................ 148

    4.3.9 .................................................................................................. 153

    4.3.10 ...................................................................................... 155

    4.4 ............................................................................................ 156

    4.4.1 .................................................................................................. 157

    4.4.2 GameTimer ...................................................................................... 158

    4.4.3 ....................................................................................... 159

    4.4.4 ..................................................................................................... 162

    4.5 .................................................................................. 166

    4.5.1 D3DApp ........................................................................................... 166

    4.5.2 .................................................................. 170

    4.5.3 ...................................................................................... 171

    4.5.4 ............................................................................................... 173

    4.5.5 ............................................................................................... 175

    4.5.6 Direct3D (Init Direct3D) .............................................................. 178

    4.6 Direct3D .............................................................................. 183

    4.7 ...................................................................................................................... 185

    CHAPTER 5 189

    5.1 3 .......................................................................................................... 190

    5.2 ............................................................................................................ 193

    5.3 ........................................................................................... 194

    5.3.1 ..................................................................................................... 195

  • xxv

    5.3.2 128 ............................................................................................... 196

    5.3.3 32 ................................................................................................. 197

    5.4 ......................................................................................... 199

    5.5 ..................................................................................................... 201

    5.5.1 ............................................................................................................. 201

    5.5.2 ......................................................................................... 202

    5.5.3 ............................................................................................................. 206

    5.6 ..................................................................................................... 209

    5.6.1 .................................................................................... 209

    5.6.2 ..................................................................................................... 214

    5.6.3 .................................................................................... 217

    5.7 ................................................................................................... 226

    5.8 ..................................................................................................... 227

    5.9 ...................................................................................................................... 228

    5.10 ....................................................................................................... 230

    5.10.1 ................................................................................................ 230

    5.10.2 ................................................................................................... 230

    5.10.3 ......................................................................................... 232

    5.11 ................................................................................................... 234

    5.12 ................................................................................................... 234

    5.13 .................................................................................................................... 235

    5.14 .............................................................................................................. 236

    CHAPTER 6 Direct3D 241

    6.1 ..................................................................................................... 241

    6.2 ............................................................................................................... 246

  • xxvi

    6.3 ..................................................................................................... 253

    6.4 ..................................................................................................... 257

    6.4.1 ...................................................................... 261

    6.5 ..................................................................................................... 264

    6.6 ............................................................................................................... 268

    6.6.1 ........................................................................................... 268

    6.6.2 ........................................................................................... 270

    6.6.3 ................................................................................. 271

    6.6.4 ........................................................................................... 275

    6.6.5 .............................................................................. 276

    6.7 ...................................................................................................... 281

    6.7.1 ............................................................................................ 283

    6.7.2 ........................................................................................ 285

    6.7.3 Visual Studio ................................................ 288

    6.8 ...................................................................................................... 289

    6.9 ............................................................................................... 290

    6.10 ............................................................................................. 295

    6.11 ............................................................................................................. 297

    6.12 .................................................................................................................... 309

    6.13 .............................................................................................................. 311

    CHAPTER 7 Direct3D 2 317

    7.1 ............................................................................................................ 318

    7.2 ............................................................................................................... 322

    7.3 ..................................................................................................... 323

    CONTENTS

  • xxvii

    7.4 ......................................................................................................... 327

    7.4.1 ........................................................................................ 329

    7.4.2 .............................................................................................. 334

    7.4.3 ........................................................................................ 334

    7.5 ............................................................................................................... 338

    7.5.1 .................................................................................... 338

    7.5.2 ..................................................................................................... 342

    7.5.3 ....................................................................... 345

    7.5.4 .................................................................................................. 348

    7.6 ................................................................................................. 351

    7.6.1 ............................................................................................... 351

    7.6.2 ............................................................................................... 354

    7.6.3 .................................................................................................. 357

    7.6.4 ..................................................................................................... 357

    7.6.5 ............................................................................ 359

    7.6.6 .................................................................................... 361

    7.7 ..................................................................................................... 362

    7.7.1 .............................................................................................. 363

    7.7.2 .............................................................................................. 365

    7.7.3 .............................................................................................. 366

    7.7.4 CBV .................................................................................................... 369

    7.7.5 .............................................................................................. 371

    7.8 ...................................................................................................................... 374

    7.9 ................................................................................................................ 375

  • xxviii

    CHAPTER 8 377

    8.1 ............................................................................................... 378

    8.2 ............................................................................................................... 380

    8.2.1 ........................................................................................... 382

    8.2.2 ........................................................................................... 384

    8.3 ..................................................................................................... 386

    8.4 ............................................................................................... 387

    8.5 ............................................................................................................... 388

    8.6 ............................................................................................................... 390

    8.7 ............................................................................................................... 391

    8.7.1 .................................................................................................. 392

    8.7.2 .................................................................................................. 394

    8.8 ........................................................................................................ 397

    8.9 ............................................................................................................ 399

    8.10 ................................................................................................................. 404

    8.11 .................................................................................................................... 405

    8.11.1 ................................................................................................... 406

    8.12 ................................................................................................................. 407

    8.13 ............................................................................................................. 408

    8.13.1 ................................................................................................... 408

    8.13.2 ......................................................................................... 410

    8.13.3 ............................................................................................. 412

    8.13.4 ................................................................................................ 413

    8.13.5 ............................................................................................. 413

    8.13.6 ............................................................................................ 414

    8.13.7 HLSL ............................................................................................. 416

    CONTENTS

  • xxix

    8.14 ...................................................................................................... 419

    8.14.1 ................................................................................................... 420

    8.14.2 ................................................................................................... 421

    8.14.3 ............................................................................................ 423

    8.14.4 ............................................................................................ 424

    8.15 .................................................................................................................... 425

    8.16 .............................................................................................................. 426

    CHAPTER 9 429

    9.1 ............................................................................................... 430

    9.2 ............................................................................................................ 433

    9.3 ..................................................................................................... 436

    9.3.1 DDS ................................................................................................. 436

    9.3.2 DDS .......................................................................................... 438

    9.4 .............................................................................................. 439

    9.4.1 DDS ....................................................................................... 439

    9.4.2 SRV ........................................................................................................ 440

    9.4.3 SRV .......................................................................................... 440

    9.4.4 ............................................................................ 443

    9.5 ...................................................................................................................... 446

    9.5.1 ............................................................................................................. 446

    9.5.2 ............................................................................................................. 448

    9.5.3 ............................................................................................... 449

    9.6 .............................................................................................. 450

    9.7 ...................................................................................................... 453

    9.7.1 ............................................................................................ 454

  • xxx

    9.7.2 ............................................................................................ 457

    9.8 ..................................................................................... 460

    9.9 ........................................................................................................ 461

    9.9.1 ........................................................................................ 461

    9.9.2 .................................................................................................. 462

    9.9.3 .................................................................................................. 463

    9.9.4 HLSL ................................................................................................ 464

    9.10 .......................................................................................................... 467

    9.11 .................................................................................. 468

    9.11.1 .................................................................................. 469

    9.11.2 ............................................................................................. 471

    9.11.3 ....................................................................................... 471

    9.12 .................................................................................................................... 472

    9.13 .............................................................................................................. 473

    CHAPTER 10 477

    10.1 ............................................................................................................. 478

    10.2 ............................................................................................................. 479

    10.3 ............................................................................................................. 481

    10.4 ............................................................................................................. 482

    10.5 .................................................................................................................... 486

    10.5.1 ............................................................................................ 486

    10.5.2 .................................................................................. 487

    10.5.3 ................................................................................................... 487

    10.5.4 ....................................................................................................... 488

    10.5.5 ......................................................................................... 489

    CONTENTS

  • xxxi

    10.6 ............................................................................................................. 490

    10.7 ....................................................................................................... 491

    10.8 .................................................................................................................... 494

    10.9 .................................................................................................................... 501

    10.10 ............................................................................................................ 502

    CHAPTER 11 503

    11.1 ............................................................. 504

    11.2 .......................................................................................................... 506

    11.3 ........................................................................................ 507

    11.3.1 ................................................................................................ 508

    11.3.2 ............................................................................................. 508

    11.3.3 ................................................................... 511

    11.4 ....................................................................................................... 511

    11.4.1 ......................................................................................... 512

    11.4.2 ............................................................... 515

    11.4.3 ................................................................................................ 516

    11.4.4 .................................................................................. 518

    11.5 ................................................................................................ 519

    11.5.1 ............................................................................................. 520

    11.5.2 ................................................................................................ 522

    11.5.3 ......................................................................................... 523

    11.5.4 .............................................................. 524

    11.5.5 .................................................................................. 525

    11.6 .................................................................................................................... 527

    11.7 .............................................................................................................. 527

  • xxxii

    CHAPTER 12 535

    12.1 .......................................................................................... 536

    12.2 ................................................................................................... 543

    12.2.1 ........................................................................................................... 543

    12.2.2 ................................................................................................ 545

    12.2.3 HLSL ................................................................................................. 546

    12.2.4 SV_PrimitiveID .......................................................................................... 551

    12.3 .......................................................................................................... 553

    12.3.1 ........................................................................................................... 553

    12.3.2 ............................................................................... 553

    12.3.3 ...................................................................................... 555

    12.3.4 .......................................................................................... 556

    12.4 - .................................................................................................. 557

    12.5 .................................................................................................................... 558

    12.6 .............................................................................................................. 560

    CHAPTER 13 565

    13.1 ............................................................................................. 568

    13.2 ......................................................................................... 570

    13.2.1 ......................................................................................... 571

    13.3 ..................................................................................... 572

    13.3.1 ................................................................................................ 572

    13.3.2 (UAV) ........................................................... 572

    13.3.3 ........................................................................... 576

    13.3.4 ......................................................................................... 579

    CONTENTS

  • xxxiii

    13.3.5 .................................................... 582

    13.4 ............................................................................................ 586

    13.5 ............................................................................................ 588

    13.6 ............................................................................................. 589

    13.7 .......................................................................................................... 591

    13.7.1 ............................................................................................. 592

    13.7.2 ............................................................................... 595

    13.7.3 ...................................................................................... 598

    13.7.4 ................................................................................... 605

    13.8 .......................................................................................................... 611

    13.9 .................................................................................................................... 612

    13.10 ............................................................................................................ 614

    CHAPTER 14 621

    14.1 ................................................................................. 623

    14.1.1 ............................................................................. 624

    14.2 .......................................................................................................... 624

    14.2.1 ......................................................................................... 624

    14.2.2 ...................................................................................... 627

    14.3 .................................................................................................... 630

    14.3.1 ......................................................................... 630

    14.3.2 ......................................................................... 631

    14.4 .......................................................................................................... 631

    14.5 ....................................................................................... 633

    14.6 ......................................................................................... 638

    14.6.1 ................................................................................................ 638

  • xxxiv

    14.6.2 ......................................................................................... 641

    14.6.3 ........................................................................... 642

    14.6.4 ................................................................................... 645

    14.7 .................................................................................................................... 647

    14.8 .............................................................................................................. 649

    PART III

    CHAPTER 15 1 655

    15.1 ...................................................................................................... 656

    15.2 Camera .......................................................................... 657

    15.3 ................................................................................................... 660

    15.3.1 XMVECTOR ................................................................ 660

    15.3.2 SetLens .......................................................................................... 660

    15.3.3 ......................................................................................... 661

    15.3.4 ................................................................................................ 662

    15.3.5 ............................................................................................ 663

    15.4 ................................................................................................... 665

    15.5 .......................................................................................................... 667

    15.6 .................................................................................................................... 675

    15.7 .............................................................................................................. 675

    CONTENTS

  • xxxv

    CHAPTER 16 677

    16.1 ................................................................................................. 677

    16.1.1 ................................................................ 678

    16.1.2 .......................................................................................... 679

    16.1.3 ...................................................................................... 685

    16.2 ................................................................................................. 688

    16.2.1 DirectXMath ................................................................... 688

    16.2.2 .................................................................................................... 688

    16.2.3 ....................................................................................................... 693

    16.2.4 ....................................................................................................... 694

    16.3 .......................................................................................................... 701

    16.4 .................................................................................................................... 705

    16.5 .............................................................................................................. 706

    CHAPTER 17 3 709

    17.1 ................................................................................... 711

    17.2 ........................................................................ 715

    17.3 ........................................................................................ 716

    17.3.1 AABB ........................................................................... 718

    17.3.2 ................................................................................. 719

    17.3.3 ........................................................................... 720

    17.4 ................................................................................................ 723

    17.5 .................................................................................................................... 724

    17.6 .............................................................................................................. 725

  • xxxvi

    CHAPTER 18 727

    18.1 .......................................................................................................... 727

    18.2 ............................................................................................................. 729

    18.2.1 ............................................................................... 732

    18.3 ............................................................................................. 733

    18.4 ............................................................................................ 738

    18.5 ...................................................................................................... 742

    18.5.1 ........................................................................... 743

    18.5.2 ..................................................................................... 744

    18.5.3 ..................................................................................... 745

    18.5.4 ................................................................................................ 747

    18.5.5 ............................................................................................ 748

    18.5.6 .................................................................. 749

    18.5.7 .................................................................................. 750

    18.5.8 ............................................................................ 752

    18.6 ..................................................................... 756

    18.7 .................................................................................................................... 759

    18.8 .............................................................................................................. 760

    CHAPTER 19 763

    19.1 .................................................................................................................... 764

    19.2 ................................................................................................................ 765

    19.3 ......................................................................................... 767

    19.4 .......................................................................................................... 769

    19.5 ............................................................................... 770

    CONTENTS

  • xxxvii

    19.6 ............................................................................................ 772

    19.7 .................................................................................................................... 777

    19.8 .............................................................................................................. 777

    CHAPTER 20 781

    20.1 ................................................................................................ 781

    20.2 .............................................................................................................. 785

    20.3 ................................................................................................... 787

    20.3.1 ................................................................................................... 789

    20.3.2 ...................................................................................... 790

    20.3.3 .................................................................................................... 791

    20.4 .......................................................................................................... 792

    20.4.1 ............................................................................................. 792

    20.4.2 .......................................................................................... 794

    20.4.3 (PCF) ................................................................................. 798

    20.4.4 ............................................................................................ 802

    20.4.5 ................................................................................................ 808

    20.4.6 ............................................................................................ 810

    20.4.7 ...................................................................................... 811

    20.5 PCF ........................................................................................................... 812

    20.5.1 ddx ddy ................................................................................... 812

    20.5.2 PCF ................................................................................ 813

    20.5.3 PCF ..................................................................... 816

    20.6 .................................................................................................................... 818

    20.7 .............................................................................................................. 819

  • xxxviii

    CHAPTER 21 821

    21.1 ............................................................................... 822

    21.2 (SSAO) ................................................................................. 827

    21.2.1 ............................................................................... 827

    21.2.2 ......................................................................................... 829

    21.2.3 ................................................................................................ 840

    21.2.4 .................................................................................. 844

    21.3 .................................................................................................................... 846

    21.4 .............................................................................................................. 847

    CHAPTER 22 849

    22.1 .......................................................................................................... 850

    22.1.1 ........................................................................................................... 850

    22.1.2 ............................................................................................. 851

    22.1.3 ...................................................................................... 852

    22.2 ....................................................................................................... 853

    22.2.1 ......................................................................................... 853

    22.2.2 ................................................................................................ 855

    22.2.3 ...................................................................................... 855

    22.2.4 ........................................................................................................... 856

    22.2.5 ................................................................................................ 856

    22.2.6 .............................................................................................................. 858

    22.2.7 ....................................................................................................... 858

    22.3 ................................................................................................ 860

    22.3.1 ................................................................................................ 860

    CONTENTS

  • xxxix

    22.3.2 .................................................................. 862

    22.3.3 .................................................................. 864

    22.3.4 ........................................................................................................... 866

    22.4 .......................................................................................................... 866

    22.5 DirectXMath ................................................................ 872

    22.6 ................................................................................................... 873

    22.7 .................................................................................................................... 879

    22.8 .............................................................................................................. 880

    CHAPTER 23 883

    23.1 ....................................................................................... 884

    23.1.1 ................................................................................................ 885

    23.2 .......................................................................................................... 888

    23.2.1 ........................................................................................................... 888

    23.2.2 ...................................................................................... 889

    23.2.3 ................................................................................................ 890

    23.2.4 ....................................................................................... 890

    23.2.5 ............................................................................................ 893

    23.3 ............................................................................................................. 895

    23.4 ................................................................................ 899

    23.4.1 ........................................................................................................... 899

    23.4.2 ................................................................................................... 900

    23.4.3 ............................................................................................. 901

    23.4.4 ..................................................................................... 902

    23.4.5 .................................................................................. 902

    23.4.6 ............................................................................................. 903

  • xl

    23.4.7 .......................................................................................... 903

    23.4.8 M3DLoader .................................................................................... 906

    23.5 .......................................................................................... 908

    23.6 .................................................................................................................... 911

    23.7 .............................................................................................................. 913

    APPENDIX A Windows 915

    A.1 ...................................................................................................................... 916

    A.1.1 ............................................................................................................ 916

    A.1.2 , , , .......................................................... 917

    A.1.3 (GUI) ....................................................................... 919

    A.1.4 ...................................................................................................... 920

    A.2 Windows ............................................................................ 920

    A.3 Windows ........................................................................... 925

    A.3.1 , , ....................................................................... 925

    A.3.2 WinMain .............................................................................................. 926

    A.3.3 WNDCLASS ............................................................ 926

    A.3.4 ........................................................................................... 929

    A.3.5 .................................................................................................. 932

    A.3.6 .................................................................................................. 933

    A.3.7 MessageBox ....................................................................................... 935

    A.4 ................................................................................................. 936

    A.5 ...................................................................................................................... 937

    A.6 ................................................................................................................ 938

    CONTENTS

  • xli

    APPENDIX B HLSL 939

    B.1 ............................................................................................................... 939

    B.1.1 .................................................................................................. 939

    B.1.2 ..................................................................................................... 939

    B.1.3 ..................................................................................................... 941

    B.1.4 ............................................................................................................ 943

    B.1.5 ......................................................................................................... 943

    B.1.6 typedef ............................................................................................ 944

    B.1.7 ........................................................................................... 944

    B.1.8 ......................................................................................................... 945

    B.2 ...................................................................................................... 946

    B.2.1 ......................................................................................................... 946

    B.2.2 ......................................................................................................... 946

    B.3 ...................................................................................................... 948

    B.4 ...................................................................................................................... 949

    B.4.1 ........................................................................................... 949

    B.4.2 ..................................................................................................... 951

    B.4.3 ................................................................................ 954

    APPENDIX C 959

    C.1 , , ...................................................................................................... 959

    C.2 ............................................................................................................ 960

    C.3 .................................................................................................................. 961

    C.4 ..................................................................................................................... 962

    C.4.1 DirectXMath ............................................................. 963

  • xlii

    C.4.2 ................................................................................... 964

    C.4.3 .................................................................................................. 965

    C.4.4 ............................................................................................... 966

    C.4.5 .................................................................................................. 966

    C.4.6 .................................................................. 967

    C.4.7 ..................................................................................... 967

    C.4.8 .................................................................................................. 968

    C.4.9 ..................................................................................................... 968

    C.4.10 .................................................................................................... 968

    C.5 ............................................................................................................... 970

    APPENDIX D 973

    APPENDIX E 975

    ....................................................................................................................... 981

    CONTENTS

  • 11.6 DirectXMath

    Part

    I .

    Roger Bacon, Opus Majus part 4 Distinctia Prima cap 1, 1267.

    .

    . . ,

    .

    .

    1 .

    , , . ,

    DirectXMath .

    1 ,

    . .

    E [Verth04] [Lengyel02]

    .

  • 1 : .

    , , , , . 1

    .

    2 : . 2

    .

    3 : 3 , ,

    . 3 3 . , 3

    .

    Part I

  • 3

    ,

    .

    . 3 [Verth04 ]

    .

    .

    1. .

    2. .

    3. DirectXMath .

    1.1

    (vector, ) (quantity ) .

    (magnitude ) (direction )

    (vector-valued quantity ) . (force;

    , (strength ) ), (displacement;

    CHAPTER 1

  • 4 1

    1.1 (a) 2 . (b) 10 .

    ), ( ) . ,

    (velocity )* . , 3

    , ,

    .

    , .

    , (directed line segment ) (

    1.1 ). .

    . (

    ) .

    , (equal ). [ 1.1 (a ) ] u v

    . ,

    (translation, )

    ( ). u v (v

    ) .

    . , [ 1.1 (b ) ] u v A B

    . u = v.

    * velocity (speed) , . velocity, ,

    (speed). , ( , ) .

  • 51.1

    . .

    () 10() .

    1.1.1 , .

    .

    , . ,

    3

    ( 1.2 ). ( ) , [

    1.3 ] v = (x, y, z ) . 3

    (float double ) .

    : 2 2 .

    . , v = (x, y ), .

    [ 1.4 ] . v . (

    (frame of reference ), (space ), (coordinate system )

    .) , [ 1.4 ]

    v A B .

    1.2 v .

    .

    1.3 .

  • 6 1

    A * v B v

    . , v

    .

    . 100 212.

    (

    ).

    . ,

    . . ,

    . 3

    ,

    . ,

    .

    : (point ) (x, y, z ) . . 3 .

    1.5 .

    * ~ ~ . ~ ~ . A v , A v , v A .

    1.4 v .

  • 71.1

    1.5 . z ( ) . , z .

    1.1.2 Direct3D (left-handed coordinate system ) .

    x 90 y

    , z . [ 1.5 ]

    .

    , x

    y z .

    1.1.3 , , , .

    u = (ux, uy, uz ) v = (vx, vy, vz ).

    1. ( ) ,

    . , ux = vx, uy = vy, uz = vz u = v.

    2. . , u + v = (ux + vx, uy + vy, uz + vz ).

    .

    3. (scalar*, ) , . k

    , ku = (kux, kuy, kuz ). .

    * .

  • 8 1

    4. . , u - v = u +

    (-1v ) = u + (-v ) = (ux - vx, uy - vy, uz - vz ).

    1.1

    u = (1, 2, 3 ), v = (1, 2, 3 ), w = (3, 0, -2 ), k = 2 .

    1. u + w = (1, 2, 3 ) + (3, 0, -2 ) = (4, 2, 1 ),

    2. u = v,

    3. u - v = u + (-v ) = (1, 2, 3 ) + (-1, -2, -3 ) = (0, 0, 0 ) = 0,

    4. kw = 2 (3, 0, -2 ) = (6, 0, -4 ).

    3 (zero-vector ) .

    0 , 0 .

    1.2

    , 2 . 3

    . 2 .

    1. v = (2, 1 ) . v -12 v ? -12 v =

    (-1, -12 ) . v -12 v ( 1.6 (a ) ),

    -12 v v 1/2 . ,

    (negation, )

    , () () .

    1.6 (a) . (b) . (c) .

    (b)(a) (c)

  • 91.2

    1.7 . .

    2. u = (2, 12 ) v = (1, 2 ) . u + v = (3, 52 ). [ 1.6 (b ) ]

    . u v

    , v u ( )

    . (u v u

    . u + v u v ( )

    .) , (net

    force, ) .

    () ( ) .

    () ( ) .

    [ 1.7 ] .

    3. u = (2, 12 ) v = (1, 2 ) . v - u = (-1, 32 ). [ 1.6 (c ) ]

    . , v - u u

    v . u v , v - u u

    v .

    . , u v

    v - u u v .

    1.2

    . ()

    . u u. u = (x, y, z ) ,

    . [ 1.8 ] , 3

  • 10 1

    .

    xz , x z a

    . a = x2 + z2. a y

    u . ,

    .

    y2 + a2 = y2 +( x2 + z2 )2 = x2 + y2 + z2u = ( 1.1)

    . 1 ( ) .

    1 (unit vector ) ,

    (normalization ) . .

    .

    = = , ,uu

    xu

    yu

    zu ( 1.2)

    , .

    = xu

    2

    + yu

    2

    + zu

    2

    =u 2

    uu = 1

    x2 + y2 + z2 =

    .

    1.3

    v = (-1, 3, 4 ) . v = (-1 )2 + 32 + 42 = 26,

    426v = = , ,

    126-

    326

    vv

    1.8 3 .

  • 111.3

    . v .

    v = 126 + +

    926

    1626= = 1 = 1

    126

    2

    +- 3262

    + 4262

    1.3

    (dot product ) (inner product )

    . (scalar product ) . u = (ux,

    uy, uz ) v = (vx, vy, vz ) . .

    uv = uxvx + uyvy + uzvz ( 1.3)

    .

    ,

    ( 10 ) .

    uv = ||u|| ||v|| cos ( 1.4)

    u v , 0 ( 1.9 ).

    1.4 .

    , u v uv (, uv =

    cos ).

    1.4 . .

    1. uv = 0 u v(, ).

    2. uv 0 90 (,

    ).

    1.9 u v . u v . . , 0 .

  • 12 1

    3. uv 0 90 (,

    ).

    : (orthogonal ) (perpendicular ) .

    1.4

    u = (1, 2, 3 ) v = (-4, 0, -1 ) , u v .

    .

    uv = (1, 2, 3)(-4, 0, -1) = -4 - 3 = -7

    u= 12 + 22 + 32 = 14

    v= (-4)2 + 02 + (-1)2 = 17

    1.4 .

    cos = = -7 14 17uv

    u v

    = cos-1 117-7 14 17

    1.5

    [ 1.10 ] , v n p v n

    .

    , p = kn k . ,

    n = 1 p = kn = |k|n = |k|. (k p n

    .) k = vcos .

    p = kn = (vcos )n. n , .

    p = (v cos) n = (v 1cos) n = (v ncos) n = (vn)n

    , k = v n. n vn

    . p n v (orthographic projection; )

    , .

  • 131.3

    1.10 n v .

    p = projn (v)

    v p v n .

    , w = perpn (v ) = v - p v n

    ( perpn (v ) , perp perpendicular[] ).

    v = p + w . , v p w .

    n , n .

    n n||n|| .

    p = projn (v) = vn

    n = n(vn)n 2

    nn

    1.3.1 {v0, , vn-1} (,

    ), (orthonormal )

    .

    . (orthogonalization )

    . 3

    . 2

    3 (, 2 3 ) .

  • 14 1

    1.11 2 . 1.12 3 .

    2 . {v0, v1} {w0,

    w1} [ 1.11 ] . w0 = v0 , v1 w0

    . , w0 v1 .

    w1 = v1 - projw0 (v1)

    {w0, w1} . w0 w1

    .

    3 2 . .

    [ 1.12 ] {v0, v1, v2} {w0, w1, w2}

    . w0 = v0 , v1 w0 . ,

    w0 v1 .

    w1 = v1 - projw0 (v1)

    , v2 w0 w1 . , w0

    w1 v2 .

    w2 = v2 - projw0 (v2) - proj w1 (v2)

    {w0, w1, w2} . w0 w1, w2

    .

    , n {v0, , vn-1} {w0, , wn-1}

  • 151.4

    - (Gram-Schmidt Orthogonalization )

    . - .

    : w0 = v0 .

    1 i n-1 wi = vi - j=0

    proj wj (vi ) .

    : wi = wi

    wi .

    . vi ,

    (w0, w1, , wi-1 )

    , .

    , .

    1.4

    (cross product ) (outer product ) .

    . , 3

    (2 ). 3 u v

    u v w . , w u v

    ( 1.13 ). u = (ux, uy, uz ), v = (vx, vy, vz )

    .

    w = u v = (uyvz - uzvy, uzvx - uxvz, uxvy - uyvx) ( 1.5)

    : . ,

    u ( 0 ) v w = u v .

    1.6

    u = (2, 1, 3 ), v = (2, 0, 0 ) , w = u v z = v u w u

    v . 1.5

  • 16 1

    w = u v

    = (2, 1, 3) (2, 0, 0)

    = (10 - 30, 32 - 20, 20 - 12)

    = (0, 6, -2)

    z = v u

    = (2, 0, 0) (2, 1, 3)

    = (03 - 01, 02 - 23, 21 - 02)

    = (0, - 6, 2)

    . u v v u . ,

    . u v = -v u .

    .

    v ( 90 )

    ( 1.13 ).

    w u , v . 1.3 ,

    u v = 0 u v (, ). ,

    wu = (0, 6, -2)(2, 1, 3) = 02 + 61 + (-2)3 = 0

    w u ,

    wv = (0, 6, -2)(2, 0, 0) = 02 + 60 + (-2)0 = 0

    w v .

    1.13 3 u v u v w . u v ( 90 ) w = u v . (left-hand-thumb rule) .

  • 171.4

    1.14 u 2 u v .

    1.4.1 2 3 .

    , 2 . 2 u =

    (ux, uy ) v ,

    . [ 1.14 ] 2 (pseudo 2D cross product )

    . , v = (-uy, ux ). .

    uv = (ux, uy)(-uy, ux ) = -uxuy + uyux = 0

    , u v. u-v = uxuy + uy (-ux ) = 0 . , u -v

    .

    1.4.2 - 1.3.1 .

    3

    {v0, v1, v2} . ,

    [ 1.15 ] .

    1. w0 = v0

    v0 .

    2. w2 = w0v1

    w0v1 .

  • 18 1

    1.15 3 .

    3. w1 = w2 w0 . 14 , w2 w0 w2 = w0

    = 1 w2 w0 = 1.

    .

    {w0, w1, w2} .

    : w0 = , v0 w0 . w1 w2 v1, v2 . , . (orientation )

    {v0, v1, v2} , v2 (direction ) .

    , v2 v0 v1 .

    v0v0

    1.5

    (position ) . 3

    ( 3 3 )

    . [ 1.16 ] ,

  • 191.5

    3 .

    . .

    ,

    .

    ( ) ,

    () .

    (sum ) .

    . q - p, p q

    . , p v p v ()

    q . [ 1.17 ] .

    ,

    . .

    1.16 .

    1.17 (a) q - p p q . (b) p v p v q .

  • 20 1

    : .

    (affine combination; ) , .

    1.6 DirectXMath

    Windows 8 Direct3D 3

    DirectXMath*. Windows SDK SSE2 (Streaming SIMD

    Extensions 2 ) . SIMD 128 SIMD (single

    instruction multiple data ) 32 float int

    ( ) . .

    .

    u + v = (ux + vx, uy + vy, uz + vz)

    , . SIMD

    4(4) SIMD

    . 3 SIMD . 0

    . , 2 .

    DirectXMath .

    . ([DirectXMath ] )

    . SIMD DirectXMath

    Oliveira Designing Fast

    Cross-Platform SIMD Vector Libraries ([Oliveira2010 ] ) .

    DirectXMath DirectXMath.h

    (#include ). ,

    DirectXPackedVector.h (#include

    ). DirectXMath.h DirectX ,

    * DirectX Math , MSDN GitHub (https://github.com/Microsoft/DirectXMath) DirectXMath .

  • 211.6 DirectXMath

    DirectXPackedVector.h DirectX::PackedVector .

    , x86 SSE2 ( > >

    C/C++ > > ). x64 SSE2

    . x64 CPU SSE2 (http://en.wikipedia.org/wiki/

    SSE2 ).

    1.6.1 DirectXMath SIMD XMVECTOR.

    128 32 , SIMD

    . x64 , SSE2 x86

    .

    typedef __m128 XMVECTOR;

    __m128 SIMD . SIMD

    . 2, 3

    SIMD . 0

    .

    XMVECTOR 16 (alignment )* ,

    . XMFLOAT2 (2

    ) XMFLOAT3 (3), XMFLOAT4 (4) .

    .

    struct XMFLOAT2

    {

    float x;

    float y;

    XMFLOAT2() {}

    XMFLOAT2(float _x, float _y) : x(_x), y(_y) {}

    explicit XMFLOAT2(_In_reads_(2) const float *pArray) :

    * , sorting .

  • 22 1

    x(pArray[0]), y(pArray[1]) {}

    XMFLOAT2& operator= (const XMFLOAT2& Float2)

    { x = Float2.x; y = Float2.y; return *this; }

    };

    struct XMFLOAT3

    {

    float x;

    float y;

    float z;

    XMFLOAT3() {}

    XMFLOAT3(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {}

    explicit XMFLOAT3(_In_reads_(3) const float *pArray) :

    x(pArray[0]), y(pArray[1]), z(pArray[2]) {}

    XMFLOAT3& operator= (const XMFLOAT3& Float3)

    { x = Float3.x; y = Float3.y; z = Float3.z; return *this; }

    };

    struct XMFLOAT4

    {

    float x;

    float y;

    float z;

    float w;

    XMFLOAT4() {}

    XMFLOAT4(float _x, float _y, float _z, float _w) :

    x(_x), y(_y), z(_z), w(_w) {}

    explicit XMFLOAT4(_In_reads_(4) const float *pArray) :

    x(pArray[0]), y(pArray[1]), z(pArray[2]), w(pArray[3]) {}

    XMFLOAT4& operator= (const XMFLOAT4& Float4)

    { x = Float4.x; y = Float4.y; z = Float4.z; w = Float4.w; return *this; }

    };

    SIMD . SIMD

    XMVECTOR . DirectXMath

    (load ) . , DirectXMath XMVECTOR

    XMFLOATn (store ) .

  • 231.6 DirectXMath

    .

    1. XMVECTOR .

    2. XMFLOAT2 XMFLOAT3, XMFLOAT4 .

    3. XMFLOATn XMVECTOR .

    4. XMVECTOR .

    5. XMVECTOR XMFLOATn .

    1.6.2 XMFLOATn XMVECTOR .

    // XMFLOAT2 XMVECTOR

    XMVECTOR XM_CALLCONV XMLoadFloat2(const XMFLOAT2 *pSource);

    // XMFLOAT3 XMVECTOR

    XMVECTOR XM_CALLCONV XMLoadFloat3(const XMFLOAT3 *pSource);

    // XMFLOAT4 XMVECTOR

    XMVECTOR XM_CALLCONV XMLoadFloat4(const XMFLOAT4 *pSource);

    XMVECTOR XMFLOATn .

    // XMVECTOR XMFLOAT2

    void XM_CALLCONV XMStoreFloat2(XMFLOAT2 *pDestination, FXMVECTOR V);

    // XMVECTOR XMFLOAT3

    void XM_CALLCONV XMStoreFloat3(XMFLOAT3 *pDestination, FXMVECTOR V);

    // XMVECTOR XMFLOAT4

    void XM_CALLCONV XMStoreFloat4(XMFLOAT4 *pDestination, FXMVECTOR V);

    XMVECTOR .

    , .

    float XM_CALLCONV XMVectorGetX(FXMVECTOR V);

    float XM_CALLCONV XMVectorGetY(FXMVECTOR V);

    float XM_CALLCONV XMVectorGetZ(FXMVECTOR V);

    float XM_CALLCONV XMVectorGetW(FXMVECTOR V);

  • 24 1

    XMVECTOR XM_CALLCONV XMVectorSetX(FXMVECTOR V, float x);

    XMVECTOR XM_CALLCONV XMVectorSetY(FXMVECTOR V, float y);

    XMVECTOR XM_CALLCONV XMVectorSetZ(FXMVECTOR V, float z);

    XMVECTOR XM_CALLCONV XMVectorSetW(FXMVECTOR V, float w);

    1.6.3 XMVECTOR , XMVECTOR

    SSE/SSE2 .

    (32 Windows, 64 Windows, Windows RT )

    . / XMVECTOR

    FXMVECTOR, GXMVECTOR, HXMVECTOR, CXMVECTOR .

    , SSE/SSE2 ,

    XM_CALLCONV

    .

    XMVECTOR .

    1. XMVECTOR FXMVECTOR .

    2. XMVECTOR GXMVECTOR .

    3. XMVECTOR HXMVECTOR .

    4. XMVECTOR CXMVECTOR .

    , 32 Windows __fastcall

    __vectorcall .

    // 32-bit Windows __fastcall XMVECTOR

    // , .

    typedef const XMVECTOR FXMVECTOR;

    typedef const XMVECTOR& GXMVECTOR;

    typedef const XMVECTOR& HXMVECTOR;

    typedef const XMVECTOR& CXMVECTOR;

    // 32-bit Windows __vectorcall XMVECTOR

    // , .

    typedef const XMVECTOR FXMVECTOR;

    typedef const XMVECTOR GXMVECTOR;

  • 251.6 DirectXMath

    typedef const XMVECTOR HXMVECTOR;

    typedef const XMVECTOR& CXMVECTOR;

    DirectXMath

    ([DirectXMath ] ) Calling Convention Library Internals

    .

    . [DirectXMath ]

    XMVECTOR XMVECTOR

    FXMVECTOR, CXMVECTOR . , XM_

    CALLCONV .

    DirectXMath .

    inline XMMATRIX XM_CALLCONV XMMatrixTransformation(

    FXMVECTOR ScalingOrigin,

    FXMVECTOR ScalingOrientationQuaternion, .

    FXMVECTOR Scaling,

    GXMVECTOR RotationOrigin,

    HXMVECTOR RotationQuaternion,

    HXMVECTOR Translation);

    XMVECTOR .

    , FXMVECTOR, GXMVECTOR,

    , HXMVECTOR .

    XMVECTOR XMVECTOR .

    . XMVECTOR XMVECTOR

    . ,

    XMVECTOR FXMVECTOR ( ) XMVECTOR

    GXMVECTOR.

    inline XMMATRIX XM_CALLCONV XMMatrixTransformation2D(

    FXMVECTOR ScalingOrigin,

    float ScalingOrientation,

    FXMVECTOR Scaling,

    FXMVECTOR RotationOrigin,

    float Rotation,

    GXMVECTOR Translation);

  • 26 1

    XMVECTOR .

    XMVECTOR (XMVECTOR& XMVECTOR* ) SSE/SSE2

    , XMVECTOR .

    1.6.4 (const ) XMVECTOR XMVECTORF32 .

    DirectX SDK CascadedShadowMaps11 .

    static const XMVECTORF32 g_vHalfVector = { 0.5f, 0.5f, 0.5f, 0.5f };

    static const XMVECTORF32 g_vZero = { 0.0f, 0.0f, 0.0f, 0.0f };

    XMVECTORF32 vRightTop = {

    vViewFrust.RightSlope,

    vViewFrust.TopSlope,

    1.0f,1.0f

    };

    XMVECTORF32 vLeftBottom = {

    vViewFrust.LeftSlope,

    vViewFrust.BottomSlope,

    1.0f,1.0f

    };

    , XMVECTORF32 .

    XMVECTORF32 16 , XMVECTOR

    . .

    //

    __declspec(align(16)) struct XMVECTORF32

    {

    union

    {

    float f[4];

    XMVECTOR v;

    };

    inline operator XMVECTOR() const { return v; }

    inline operator const float*() const { return f; }

  • 271.6 DirectXMath

    #if !defined(_XM_NO_INTRINSICS_) && defined(_XM_SSE_INTRINSICS_)

    inline operator __m128i() const { return _mm_castps_si128(v); }

    inline operator __m128d() const { return _mm_castps_pd(v); }

    #endif

    };

    XMVECTOR XMVECTORU32 .

    static const XMVECTORU32 vGrabY = {

    0x00000000,0xFFFFFFFF,0x00000000,0x00000000

    };

    1.6.5 XMVECTOR , , (overloading )

    .

    XMVECTOR XM_CALLCONV operator+ (FXMVECTOR V);

    XMVECTOR XM_CALLCONV operator- (FXMVECTOR V);

    XMVECTOR& XM_CALLCONV operator+= (XMVECTOR& V1, FXMVECTOR V2);

    XMVECTOR& XM_CALLCONV operator-= (XMVECTOR& V1, FXMVECTOR V2);

    XMVECTOR& XM_CALLCONV operator*= (XMVECTOR& V1, FXMVECTOR V2);

    XMVECTOR& XM_CALLCONV operator/= (XMVECTOR& V1, FXMVECTOR V2);

    XMVECTOR& operator*= (XMVECTOR& V, float S);

    XMVECTOR& operator/= (XMVECTOR& V, float S);

    XMVECTOR XM_CALLCONV operator+ (FXMVECTOR V1, FXMVECTOR V2);

    XMVECTOR XM_CALLCONV operator- (FXMVECTOR V1, FXMVECTOR V2);

    XMVECTOR XM_CALLCONV operator* (FXMVECTOR V1, FXMVECTOR V2);

    XMVECTOR XM_CALLCONV operator/ (FXMVECTOR V1, FXMVECTOR V2);

    XMVECTOR XM_CALLCONV operator* (FXMVECTOR V, float S);

    XMVECTOR XM_CALLCONV operator* (float S, FXMVECTOR V);

    XMVECTOR XM_CALLCONV operator/ (FXMVECTOR V, float S);

    1.6.6 DirectXMath ()

    .

  • 28 1

    const float XM_PI = 3.141592654f;

    const float XM_2PI = 6.283185307f;

    const float XM_1DIVPI = 0.318309886f;

    const float XM_1DIV2PI = 0.159154943f;

    const float XM_PIDIV2 = 1.570796327f;

    const float XM_PIDIV4 = 0.785398163f;

    , DirectXMath radian (degree )

    .

    inline float XMConvertToRadians(float fDegrees)

    { return fDegrees * (XM_PI / 180.0f); }

    inline float XMConvertToDegrees(float fRadians)

    { return fRadians * (180.0f / XM_PI); }

    , / .

    template inline T XMMin(T a, T b) { return (a < b) ? a : b; }

    template inline T XMMax(T a, T b) { return (a > b) ? a : b; }

    1.6.7 DirectXMath XMVECTOR

    .

    // 0 (0) .XMVECTOR XM_CALLCONV XMVectorZero();

    // (1, 1, 1, 1) .

    XMVECTOR XM_CALLCONV XMVectorSplatOne();

    // (x, y, z, w) .XMVECTOR XM_CALLCONV XMVectorSet(float x, float y, float z, float w);

    // (s, s, s, s) .XMVECTOR XM_CALLCONV XMVectorReplicate(float Value);

    // (vx, vx, vx, vx) .XMVECTOR XM_CALLCONV XMVectorSplatX(FXMVECTOR V);

    // (vy, vy, vy, vy) .

  • 291.6 DirectXMath

    XMVECTOR XM_CALLCONV XMVectorSplatY(FXMVECTOR V);

    // (vz, vz, vz, vz) .XMVECTOR XM_CALLCONV XMVectorSplatZ(FXMVECTOR V);

    .

    #include // XMVerifyCPUSupport

    #include

    #include

    #include

    using namespace std;