home *** CD-ROM | disk | FTP | other *** search
/ PC Open 18 / pcopen18_giallo.iso / Win95 / SDK / DOCS / README / D3DIM.TXT < prev    next >
Encoding:
Text File  |  1997-07-14  |  4.5 KB  |  130 lines

  1.  
  2. **********************
  3. ***                ***
  4. *** Direct3D Notes ***
  5. ***   DirectX5     ***
  6. ***  July 7 1997   ***
  7. ***                ***
  8. **********************
  9.  
  10.  
  11. Clarifications:
  12. ===============
  13.  
  14.     The MMX software rasterizers use a different value for maximum
  15. Z: 0x7FFF instead of 0xFFFF.  This needs to be taken into account when
  16. clearing via color-fill blits.  Alternatively, use viewport->Clear().
  17.  
  18.     Also, the MMX rasterizer now needs to be requested explicitly
  19. via enumeration off the Device interface.
  20.  
  21.     The ALPHAREF value should be specified as a 16.16 fixed point
  22. value in range 0 to 1.0 where 1.0 is 0x10000.
  23.  
  24.     8-bit hardware render targets are not supported in D3D.
  25.  
  26.     The Viewport is defined relative to the upper left of the render
  27. target DirectDraw surface.  When using TLVERTICES, they should be shifted
  28. to account for the position of a viewport smaller than this surface.
  29.  
  30. Texture blending modes:
  31.     Here is a summary/clarification of the modes:
  32.  
  33.     D3DTBLEND_MODULATE 
  34.         Cout =    Ctex*Cvert
  35.         Aout = ( Present(Atex) ? Atex : Avert )
  36.  
  37.     D3DTBLEND_MODULATEALPHA
  38.         Cout =  Ctex*Cvert
  39.         Aout =  Atex*Avert
  40.  
  41.         Therefore, for textures with no alpha channel, MODULATE and
  42.         MODULATEALPHA do the same thing:
  43.         Cout = Ctex*Cvert;
  44.         Aout = Avert
  45.  
  46.     D3DTBLEND_ADD
  47.         Cout = Ctex + Cvert
  48.         Aout = Avert
  49.  
  50.     D3DTBLEND_DECALMASK
  51.         Cout = lsb(Atex) ? Ctex : Cvert
  52.         Cout = Avert
  53.     When the least-significant bit of the texture's alpha component
  54.     is zero, the effect is as if texturing were disabled.
  55.  
  56.     D3DTBLEND_MODULATEMASK
  57.         Cout = lsb(Atex) ? Ctex * Cvert : CVert 
  58.         Aout = AVert 
  59.     When the least-significant bit of the texture's alpha component
  60.     is zero, the effect is as if texturing were disabled.
  61.  
  62.  
  63.     When using the RAMP software rasterizer, textures in background
  64. materials should have a ramp size of one.  Most of the samples show this.
  65.  
  66.     ZENABLE=TRUE is the default if there is a Z-buffer attached on
  67. CreateDevice.  Otherwise the default initial state is ZENABLE=FALSE.
  68.  
  69.     The coordinate system used to specify the clear rects for
  70. IDirect3DViewport{2}::Clear() calls is relative to the DDraw surface
  71. used as the render target, not the viewport. However, the clear rect
  72. is clipped to the viewport.
  73.  
  74.  
  75.     When using the DrawPrimitive API interspersed with updates to the
  76. content of the textures being used (via Lock, Blt, or GetDC), before calling
  77. EndScene(), a different texture from the intended can appear on some objects.
  78. If this occurs, a call to SetRenderState( D3DRENDERSTATE_FLUSHBATCH, 0 ),
  79. may help.  Use with caution since in some cases performance may be affected.
  80.  
  81.  
  82. Changes vs DX3:
  83. ===============
  84.  
  85.     All existing DX3 applications should run the same on DX5.  New
  86. applications that obtain the 3D device via DX5's CreateDevice entry point
  87. instead of QueryInterface will see the following new behavior.
  88.  
  89.     ALPHABLENDENABLE controls alpha blended transparency.
  90.     COLORKEYENABLE   controls chroma key effects.
  91.     Both of these states default to off (FALSE).
  92.     BLENDENABLE is a legacy setting that is obsolete in DX5. 
  93.  
  94. On Software:
  95.     Unlike DX3, mip mapping will now work in the software rasterizers 
  96.         (as reflected by the caps) except in conjunction with colorkeying.
  97.  
  98.  
  99.  
  100. Improvements:
  101. =============
  102.  
  103.     Hardware and the RAMP and RGB software rasterizers now support all 3
  104. backface culling options for D3DRENDERSTATE_CULLMODE: D3DCULL_NONE,
  105. D3DCULL_CCW, and D3DCULL_CW.  The MMX rasterizer only supports D3DCULL_CCW.
  106. However since the software rasterizers all share the same CAP structure,
  107. querying the culling caps for the MMX rasterizer will return incorrect
  108. information on this capability.
  109.  
  110.     Clipping of TLVERTEX data is now supported.  This is on by default
  111. with DrawPrim calls but can be disabled via the D3DDP_DONOTCLIP flag.  Extent
  112. checking is still performed unless it is disabled by D3DDP_DONOTUPDATEEXTENTS.
  113.  
  114.     Lights now respect range-based fall-off when defined via the D3DLIGHT2
  115. struct.  Check out the cool documentation on this.
  116.  
  117.     1- and 2-bit deep palettized textures are now enabled for hardware
  118. that supports them.
  119.  
  120.     Added MIPLODBIAS and ZBIAS RENDERSTATES for cards that support them.
  121.  
  122.     Caps in D3DDeviceDesc are provided that indicate the minimum and
  123. maximum width and height of textures that the accelerator supports.  These
  124. will return 0 for drivers that are not up-to-date yet.  Check for
  125. D3DDEVCAPS_DRAWPRIMTLVERTEX to see if driver is DX5-aware.
  126.  
  127.     D3DRENDERSTATE_SPECULARENABLE is now observed by SW and HW rasterizers.
  128.  
  129.     Added a true C++ constructor for D3DMATRIX when using D3D_OVERLOADS.
  130.