⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 《3D游戏编程》随书光盘 12章: 设计阴影的多种技巧, 有详细源代码
💻 TXT
字号:
//-----------------------------------------------------------------------------
// Name: ShadowVolume Direct3D Sample
// 
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------


Description
===========
   The ShadowVolume sample uses stencil buffers to implement real-time shadows.
   In the sample, a complex object is rendered and used as a shadow-caster, to
   cast real-time shadows on itself and on the terrain below.

   Stencil buffers are a depth buffer technique that can be updated as
   geometry is rendered, and used again as a mask for drawing more geometry.
   Common effects include mirrors, shadows (an advanced technique), dissolves,
   etc..

   Note that not all cards support all features for all the various stencil
   buffer techniques (some hardware has no, or limited, stencil buffer
   support). For more information on stencil buffers, refer to the DirectX SDK
   documentation. 


Path
====
   Source:     DXSDK\Samples\C++\Direct3D\StencilBuffer\ShadowVolume
   Executable: DXSDK\Samples\C++\Direct3D\Bin


User's Guide
============
   The following keys are implemented. The dropdown menus can be used for the
   same controls.
      <Enter>     Starts and stops the scene
      <Space>     Advances the scene by a small increment
      <F1>        Shows help or available commands.
      <F2>        Prompts user to select a new rendering device or display mode
      <Alt+Enter> Toggles between fullscreen and windowed modes
      <Esc>       Exits the app.


Programming Notes
=================
   Real-time shadows is a fairly advanced technique. Each frame, or as the
   geometry or lights in the scene are moves, an object called a shadow volume
   is computed. A shadow volume is an actual 3D object which is the siholuette
   of the shadowcasting object, as pretruded away from the light source.

   In this sample, the 3D object which casts shadows is a bi-plane. Each frame,
   the sihlouette of the plane is computed (using an edge detection algorithm,
   in which sihlouette edges are found because the normals of adjacent polygons
   will have opposing normals with respect to the light vector). The resulting
   edge list (the sihlouette) is pretuded into a 3D object away from the light
   source. This 3D object is known as the shadow volume, as everypoint inside
   the volume is inside a shadow.

   Next, the shadow volume is rendering into the stencil buffer twice. First,
   only forward-facing polygons are rendering, and the stencil buffer values 
   are incremented each time. Then the back-facing polygons of the shadow
   volume are drawm, decrementing values in the stencil buffer. Normally, all
   incremented and decremented values would cancel each other out. However,
   because the scene was already rendered with normal geometry (the plane and
   the terrain, in this case), some pixels will fail the zbuffer test as the 
   shadowvolume is rendered. Any values left in the stencil buffer correspond
   to pixels that are in the shadow.

   Finally, these remaining stencil buffer contents are used as a mask, as a
   large all-encompassing black quad is alpha-blended into the scene. With the
   stencil buffer as a mask, only pixels in shadow are darkened

   This sample makes use of common DirectX code (consisting of helper functions,
   etc.) that is shared with other samples on the DirectX SDK. All common
   headers and source code can be found in the following directory:
      DXSDK\Samples\C++\Common

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -