Clootie graphics pages

Home | Articles | Projects | Delphi | C++Builder | Free Pascal | TMT pascal | Links | About
 

Delphi resources - DirectX 9.0 SDK (Summer 2003)

  


This page contains DirectX 9.0 Software Development Kit Update (Summer 2003).

Note: Latest DirectX SDK (June 2005 Update - at writing time) located under this link

Move to desired DirectX SDK part:
Info field below contains Name / Date / Size with links to file and description field contains some notes about sample and screenshot from run-time.

DirectX headers and libraries

Info Description
Clootie_DirectX90.exe
(WinRAR SFX archive)

29-Jun-2005
633Kb
Delphi headers adaptation followed by Borland and JEDI standarts for all (up to 9.0) versions of DirectDraw, Direct3D, DirectInput, DirectSound, DirectMusic; DirectPlay8 (updated to DirectX9); D3DX 9.0 headers with support library; dxerr9 (DirectX 9.x error reporting) headers with support library. In this file you'll find JEDI compliant version and preprocessed versions of headers for Delphi 4/5, Delphi 6/7 and Delphi 9. Also this archive contains simple example of Direct3D8 program.
This package DOES NOT include any helper libraries like D3DX (D3DX9Sab.DLL) or DXErr - error reporting (DXErr9ab.DLL).

Download it.
Clootie_DirectX90_Small.zip

29-Jun-2005
652Kb
Subset of previous translation. Includes only PAS files compatible with JEDI standarts from Clootie_DirectX90.exe.

Download it.
Clootie_DX90_dlls.zip

25-Dec-2003
1,069Kb
DLLs needed for both Delphi and C++ Builder, to use D3DX 9.0 functionality and/or DXErr (DirectX error reporting) in your projects or compile Microsoft demos: D3DX9Sab.dll, DXErr9ab.DLL.

Download it.
Also here you can find DirectX libraries required for compiling Direct3D 9.0 applications with C++ Builder.

Direct3D examples from DirectX SDK

Info Description
Direct3D90Samples_Sum2003.exe
(WinRAR SFX archive)


29-Jun-2005
3,428Kb
Archive contains all Direct3D samples from SDK (including D3DFramework) in single self-extracting archive. All samples are precompiled, but may require additional media files (links to media files can be found below, but I recommend to download and install full DirectX SDK from Microsoft).

Notes: All examples can be compiled either in Delphi or C++ Builder. Please read "How to compile ObjectPascal DirectX examples" page containing instructions how to compile examples in either Delphi or C++Builder with additional details.

Common.zip

29-Jun-2005
108Kb




Free Pascal compatible
Subset of previous archive. Contains only translated Direct3D Sample Framework - this framework is required by some examples located on other pages of this site.
Includes: DXUT, DXUTcore, DXUTEnum, DXUTgui, DXUTmesh, DXUTmisc, DXUTSettingsDlg files.
Also DDUtil unit (DirectDraw utilities) is included - initially converted by Dominique Louis.

Download it.

Direct3D examples description
Tutorials image

6 "step by step" DirectX tutorials. Great tutorials to start learning Direct3D. From initializing D3D device renderer to loading meshes.
These tutorial do not need any additional files to compile and run. Only headers and D3DX helper dll for some of tutorials.

Common subdirectory contains Translated Sample DirectX Framework - used by all Direct3D/DirectSound examples listed below. Includes: D3DApp, D3DEnumeration, D3DFile, D3DFont, D3DRes, D3DSettings, D3DUtil, DSUtil, DXUtil files.
Also DDUtil unit (DirectDraw utilities) is included - initially converted by Dominique Louis.
BasicHLSL image The BasicHLSL sampleshows a simple example of the High-Level Shader Language (HLSL) using an effect interface smoke, explosions, and more. This sample simply loads a mesh, creates an effect from a file, and then uses the effect to render the mesh. The effect that is used is a simple vertex shader that animates the vertices based on time.

Billboard image The Billboard sample illustrates the billboarding technique. Rather than rendering complex 3D models (such as a high-polygon tree model), billboarding renders a 2D image of the model and rotates it to always face the eyepoint.
This technique is commonly used to render trees, clouds, smoke, explosions, and more.

Blobs image The Blobs sample mimics a metaball effect in screen space using a pixel shader. True metaball techniques deform surfaces according to pushing or pulling modifiers, and are commonly used to model liquid effects like the merging of water droplets; however, metaball effects can be computationally expensive, and this sample shows how to fake a 3D metaball effect in 2D image space using a pixel shader.
More extensive documentation can be found in Readme.html in sample archive.
Bumpmapping folder contains 4 demos (and lacks 3 others). These demos demostrate various techniques of applying bump-mapping on objects: EMBP, emboss, Dot3.
BumpEarth image
The BumpEarth sample demonstrates the bump mapping capabilities of Direct3D. Bumpmapping is a texture blending technique used to render the appearance of rough, bumpy surfaces. This sample renders a rotating, bumpmapped planet Earth.

BumpLens image The BumpLens sample demonstrates a lens effect that can be acheived using bumpmapping. Bumpmapping is a texture blending technique used to render the appearance of rough, bumpy surfaces, but can also be used for other effects as shown here.

BumpSelfshadow image
This BumpSelfshadow sample includes all source and content for the self shadowing bump map algorithm presented at the 2001 GDC lecture by Dan Baker and Chas Boyd. Presentatin itself can be found here.
This app will run without pixel shaders, as long as the hardware has rendertargets and DOT3. However, it runs much more efficently with pixel shaders and with better visual results.

BumpUnderwater image The BumpUnderwater sample demonstrates an underwater effect that can be acheived using bumpmapping. Bumpmapping is a texture blending technique used to render the appearance of rough, bumpy surfaces, but can also be used for other effects as shown here.
ClipMirror image The ClipMirror sample demonstrates the use of custom-defined clip planes. A 3D scene is rendered normally, and then again in a 2nd pass as if reflected in a planar mirror. Clip planes are used to clip the reflected scene to the edges of the mirror.
ClipVolume image The ClipVolume sample demonstrates a technique for using shaders to "subtract" a sphere from an arbitrary model when rendering. This technique could be useful in visualization applications to see inside complex objects. The sample also shows how to perform two-sided lighting and pixel level clipping via texkill.
CompiledEffect image The CompiledEffect sample shows how an ID3DXEffect object can be compiled when the project is built and loaded directly as a binary file at run time. This sample can be treaded like BasicHLSL modified to use precompiled EffectFile.
The Cull sample illustrates how to cull objects whose object bounding box (OBB) does not intersect the viewing frustum. By not passing these objects to Microsoft® Direct3D®, you save the time that would be spent by Direct3D transforming and lighting these objects, which will never be visible. The time saved could be significant if there are many such objects or if the objects contain many vertices.

Cull image More elaborate and efficient culling can be done by creating hierarchies of objects, with bounding boxes around groups of objects, so that not every object's OBB has to be compared to the view frustum.

It is more efficient to do this OBB/frustum intersection calculation in your own code than to use Direct3D to transform the OBB and check the resulting clip flags.

You can adapt the culling routines in this sample meet the needs of programs that you write.
DepthOfField image The DepthOfField sample shows a technique for creating a depth-of-field effect with Direct3D, in which objects are only in focus at a given distance from the camera, and are out of focus at other distances.
Sample uses FX effect-file to drive rendering for different hardware / techniques. Techniques include PixelShader 1.1, PixelShader 1.4 and PixelShader 2.0 variations with HLSL (High Level Shading Language) and assembler implementations.
DolphinVS image The DolphinVS sample shows an underwater scene of a dolphin swimming, with caustic effects on the dolphin and seafloor. The dolphin is animated using a technique called "tweening". The underwater effect simply uses fog, and the water caustics use an animated set of textures. These effects are achieved using vertex shaders

CubeMap image
The CubeMap sample demonstrates an environment mapping technique called cube mapping. Environment mapping is a technique in which the environment surrounding a 3-D object, such as the lights, is put into a texture map, so that the object can have complex lighting effects without expensive lighting calculations.

FishEye image


The FishEye sample shows a fish-eye lens effect that can be achieved using cube maps.


SphereMap image

The SphereMap sample demonstrates an environment mapping technique called sphere mapping. Environment mapping is a technique in which the environment surrounding a 3-D object, such as the lights, are put into a texture map, so that the object can have complex lighting effects without expensive lighting calculations.
NOTE: This sample is no longer included in original MS DirectX SDK.
Fur sample image The Fur sample shows how to do real-time fur rendering. This sample implementation is tied to cube but contains all the code and media files to render any other fur meshes. Sample do not require hi-end hardware and should be run even on TNT-class video cards - only with vertex shader code processed by CPU.
HDRCubeMap sample image The HDRCubeMap sample demonstrates cubic environment-mapping with floating-point textures and high dynamic range lighting. In DirectX 9.0, floating-point formats have become available for textures. These formats can store color values higher than 1.0, which can make lighting effects more realistic on the environment-mapped mesh when the material absorbs part of the light.
Note that not all cards support all features for the environment-mapping and high dynamic range lighting techniques.
HLSLWithoutEffects sample image This HLSLWithoutEffects sample shows an example of how to use Microsoft Direct3D's High-Level Shader Language (HLSL), without the use of the Direct3D Extension (D3DX) effect interfaces. Not using the ID3DXEffect interface is a more difficult method of using HLSL. See the BasicHLSL sample for a simpler method of using HLSL.
Lighting image The Lighting samples shows how to use D3D lights when rendering. It shows the difference between the various types of lights (ambient, point, directional, spot), how to configure these lights, and how to enable and disable them.

NOTE: This sample is no longer included in original MS DirectX SDK.
LightingVS image The LightingVS sample is an extension of the Lighting sample that adds vertex shader implementations of lighting. It lets you add multiple lights and compare the output and performance between the vertex shader lights and the fixed-function pipeline lights.
EnhancedMesh image

The EnhancedMesh sample shows how to use D3DX to load and enhance a mesh. The mesh is enhanced by increasing the vertex count using N-Patch tesselation algorithm.



OptimizedMesh image


The OptimizedMesh sample illustrates how to load and optimize a file-based mesh using the Microsoft® Direct3DX mesh utility functions.



ProgressiveMesh image

The ProgressiveMesh sample illustrates how to load and optimize a file-based mesh using the D3DX mesh utility functions. A progressive mesh is one in which the vertex information is stored internally in a special tree which can be accessed to render the mesh with any given number of vertices. This procedure is fast, so progressive meshes are ideal for level-of-detail scenarios, where objects in the distance are render with fewer polygons.

SkinnedMesh image

The Skinned Mesh sample demonstrates loading and parsing hierarhy of X-file frames using D3DX and using different hardware & software ways to do skinning. Sample uses D3DX9 library mesh and animation extentions a lot. To note a few of them: ID3DXSkinInfo, ID3DXAllocateHierarchy implementation, ID3DXAnimationController and corresponding D3DX functions.
MultiAnimation image This MultiAnimation sample demonstrates mesh animation with multiple animation sets using HLSL skinning and D3DX's animation controller. The animation controller blends animation sets together to ensure a smooth transition when moving from one animation to another.

Pick image The Pick sample shows how to implement picking; that is, finding which triangle in a mesh is intersected by a ray. In this case, the ray comes from mouse coordinates.
To do this inverse transform is calculated and triangle is searched in displayed mesh.

PixelMotionBlur image The PixelMotionBlur sample shows how to do a post process motion blur effect using floating point textures, shaders and multiple render targets. The first pass renders the scene's color to the first render target and writes the velocity of each pixel to the second render target. It then does a post process pass using a pixel shader to blur the pixel based on the pixel's velocity.
PointSprites image The PointSprites sample shows how to use the new Direct3D point sprites feature. A point sprite is simply a forward-facing, textured quad that is referenced only by (x,y,z) position coordinates. Point sprites are most often used for particle systems and related effects.
Note that not all cards support all features for point sprites. For more information on point sprites, refer to the DirectX SDK documentation.
RTPatch image The RTPatch sample shows how to use patches in Direct3D - display meshes with API "added" smothness.
Note: RTPatches were originally integrated in DirectX 8 for NVIDIA GeForce3 support. But starting from some driver version they are unsupported (IIRC starting from Detonator 20.XX series).
SHIrradianceEnvMap image The SHIrradianceEnvMap sample shows how to use spherical harmonics to handle any number of lights in a single pass with a simple shader.
SHPRTPixel image The SHPRTPixel sample is similar to the SHPRTVertex sample, this sample demonstrates how use D3DXSHPRTSimulationTex(), a per texel precomputed radiance transfer (PRT) simulator that uses low-order spherical harmonics (SH) and records the results to a file. The sample then demonstrates how compress the results with principal component analysis (PCA) and views the compressed results with arbitrary lighting in real time with a ps_2_0 pixel shader.
SHPRTVertex image The SHPRTVertex sample is similar to the SHPRTPixel sample, this sample demonstrates how use D3DXSHPRTSimulation(), a vertex based precomputed radiance transfer (PRT) simulator that uses low-order spherical harmonics (SH) and records the results to a file. The sample then demonstrates how compress the results with clustered principal component analysis (CPCA) and view the compressed results with arbitrary lighting in real time with a vs_1_1 vertex shader.
Demos from StencilBuffer folder of DirectX SDK. These demos demostrate various usage scenarious of stencil buffer.
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..
ShadowVolume image

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.

StencilDepth image

The StencilDepth sample uses stencil buffers to display the depth complexity of a scene. The depth complextity of a scene is defined as the average number of times each pixel is rendered to.

StencilMirror image


The StencilMirror sample uses stencil buffers to implement a mirror effect. In the sample, a watery terrain scene is rendered with the water reflecting a helicopter that flies above.
Text3D image The Text3D sample uses ID3DXFont to display 2D text in a 3D scene. This is most useful for display stats, in game menus, etc... Note: new revision of ID3DXFont support UNICODE character rendering, so sample demostrates rendering of Japanese text (you should have installed Asian languages support to see them).
The sample also shows how to use D3DXCreateText() to create a D3DX mesh containing a 3D model of a text string. Note that D3DXCreateText may not work with certain types of fonts, such as bitmap fonts and some symbol fonts.
VertexBlend image The VertexBlend sample demonstrates a technique called vertex blending (also known as surface skinning). It displays a file-based object which is made to bend is various spots.
Initially this is Microsoft logo. Blending can be done with either Fixed finction pipeline or with VertexShader.
Surface skinning is an impressive technique used for effects like smooth joints and bulging muscles in character animations.
Note that not all cards support all features for vertex blending. For more information on vertex blending, refer to the DirectX SDK documentation.

NOTE: This sample is no longer included in original MS DirectX SDK.
VertexShader image The VertexShader sample shows some of the effects that can be achieved using vertex shaders. Vertex shaders use a set of instructions, executed by the 3D device on a per-vertex basis, that can affect the properties of the vertex (positions, normal, color, tex coords, etc.) in interesting ways.

Note that not all cards may support all the various features vertex shaders. For more information on vertex shaders, refer to the DirectX SDK documentation.

NOTE: This sample is no longer included in original MS DirectX SDK.
VolumeFog image The Volume Fog sample shows the per-pixel density volumetric rendering technique. The fog volume is modeled as a polygonal mesh, and the density of the fog at every pixel is computed by subtracting the front side of the fog volume from the back side. The fog is mixed with the scene by accumulating an in/out test at every pixel -- that is, back-facing fog polygons will add, while front-facing ones will subtract. If the value is non zero, then the scene intersects the fog and the scene's depth value is used. In order to get better results, this demo uses 12 bits of precision by encoding high and low bits in different color channels.

More info on this sample can be read in supplied readme.txt file. Also VolumeFog technique is discussed in this PowerPoint presentation showed by Daniel Baker at GDC 2002.
PS. For people who still have not downloaded DirectX SDK - download X-files needed for this sample.
VolumeTexture image The VolumeTexture sample illustrates how to use the new volume textures in Direct3D. Normally, a texture is thought of as a 2D image, which have a width and a height and whose "texels" are addressed with two coordinate, tu and tv. Volume textures are the 3D counterparts, with a width, height, and depth, are are addressed with three coordinates, tu, tv, and tw.

Volume textures can be used for interesting effects like patchy fog, explosions, etc..

Note that not all cards support all features for volume textures. For more information on volume textures, refer to the DirectX SDK documentation.
Water image The Water sample illustrates using D3DX techniques stored in shader files.
The sample shows a square pound inside a building, with rippling water effects including water caustics.

DirectSound examples from DirectX SDK

NOTE: All DirectSound samples require Sample DirectX Framework to compile! (separate download - Common.zip)

Info Description
SoundFX.zip

11-Sep-2003
81Kb
SoundFX image The SoundFx sample shows how to use standard effects with DirectSound and how to manipulate FX parameters. It is similar to the AudioFX sample but does not use an audiopath (sorry, but there is no AudioFX Delphi sample... yet).

Download it (archive contains source and EXE files).

DirectDraw examples from DirectX SDK

Info Description
All_DirectDraw.zip

12-Dec-2002
225Kb
These are DirectX 8.1 SDK DirectDraw examples. Note: MS is already not including any DirectDraw examples with DirectX 9 SDK!

Translated Sample DirectDraw samples - this archive contains most of DirectDraw samples from DirectX 8.x SDK, originally produced as part of DirectXExamples effort: AnimatePalette, DDEnum, DirectSurfaceWrite, FullScreenDialog, FullScreenMode, GammaControl, OverlayAnimate, RefreshRate, SpriteAnimate, SwitchScreenMode, WindowedMode. Also DDUtil.pas helper unit can be found in archive too.
NOTE: these samples are not supported and/or maintained by me.

Download them locally.
Download them from Yahoo Groups.

DirectX SDK Media files

Currently only DirectX 8.1 SDK media is available for download.
Info Description
These media files are provided for people who have not yet downloaded and installed DirectX SDK. [Shame on you!!!] Ok, I understand what downloading about 200Mb can be paintfull, so you have this download item.

    Files on left panel contain (from top to bottom):
  • Mesh (.x) files, Vertex Shaders and PixelShaders source files;
  • Common textures;
  • "MS Lobby" environment map textures used in: BumpUnderwater, CubeMap, FishEye, SphereMap, Water samples;
  • REG files - to allow you add information to Windows registry about where is SDK media files are located (see readme.txt included for installation).

Original DirectX 9.0 SDK (Dec-2002) headers, libraries and samples (for backward compatibility)

Info Description
Clootie_DirectX90_2002.exe
(WinRAR SFX archive)

07-Sep-2003
632Kb
Delphi headers adaptation followed by Borland and JEDI standarts for all (up to 9.0) versions of DirectDraw, Direct3D, DirectInput, DirectSound, DirectMusic; DirectPlay8 (updated to DirectX9); D3DX 9.0 headers with support library; dxerr9 (DirectX 9.x error reporting) headers with support library. In this file you'll find JEDI compliant version and preprocessed versions of headers for Delphi 4/5 and Delphi 6/7. Also this archive contains simple example of Direct3D8 program.
This package DOES NOT include any helper libraries like D3DX (D3DX9ab.DLL) or DXErr - error reporting (DXErr9ab.DLL).

Download it.
Subset of previous translation. Includes only PAS files compatible with JEDI standarts from Clootie_DirectX90.exe.

Download it.
Clootie_DX90_2002_dlls.zip

27-Apr-2003
850Kb
DLLs needed for both Delphi and C++ Builder, to use D3DX 9.0 functionality and/or DXErr (DirectX error reporting) in your projects or compile Microsoft demos: D3DX9ab.dll, DXErr9ab.DLL.

Download it.
Partioned version of D3DX9 library - contains separate parts of D3DX9 library in separate DLL's. These DLLs can be used for both Delphi and C++ Builder, to use D3DX 9.0 functionality in your projects.
This is optinal download - don't download it if you don't know what to do with it!

Download it.
Direct3D90Samples_Dec2002.exe
(WinRAR SFX archive)


26-Oct-2003
360 Kb
Archive contains Direct3D samples (including D3DFramework) from original SDK, released in December 2002.
Single self-extracting archive cantain all samples including: Billboard, ClipMirror, ClipVolume, Cull, DepthOfField, DolphinVS, EnvMapping (CubeMap, FishEye, SphereMap), Fur, Lighting, LightingVS, Meshes (EnhancedMesh, OptimizedMesh, ProgressiveMesh, SkinnedMesh), Pick, PointSprites, RTPatch, StencilBuffer (ShadowVolume, StencilDepth, StencilMirror), Text3D, Tutorials, VCLTex, VertexBlend, VertexShader, VolumeFog, VolumeTexture, Water.

Notes: All examples can be compiled either in Delphi or C++ Builder. Please read "How to compile ObjectPascal DirectX examples" page containing instructions how to compile examples in either Delphi or C++Builder with additional details.


Please inform me of any grammar or general errors, contained on these pages, Alexey Barkovoy
Last updated: 29-Jun-2005