DX9 Displacement mapping

Started by
9 comments, last by mikfig 14 years, 10 months ago
I have read all the documentation on tessellation and displacement mapping in the DX Docs, but I still don't fully understand how you would implement it. I am assuming that Pre-sampled/normal displacement mapping is part of the fixed-function pipeline, specifically the tessellator. So if I'm correct on that, then how/what can you customize with the tessellation process? I'm also under the impression that you have to set UV coordinates for the displacement map in the vertex buffer somewhere. Also do you supply tessellation factors in the vertex buffer too? Basically though, I want to tessellate meshes while supporting early SM2.0 cards. One more question is, do pre-sampled displacement mapping do adaptive tessellation? So can someone better explain how this better, Thanks, Mikfig
"WARNING: Excessive exposure to politicians and other bureaucrats has been linked to aggressive behavior." - Henk Hopla
Advertisement
Take a look at Frank Luna's "Intro. Direct3D 9.0c: A Shader Approach" book. There's a nice explanation about Displacement Mapping. You can find the demo code on book's website as well.
There's no "hard", and "the impossible" takes just a little time.
Yes I have read this portion of his book, but it only explains using the displacement map as a height map. But does DX9c not support using the displacement map to tessellate meshes? I am referring to this part of the DX docs:
DX Graphics -> Direct3D9 -> Programming Guide -> Advanced Topics -> Vertex Pipeline -> Displacement Mapping
"WARNING: Excessive exposure to politicians and other bureaucrats has been linked to aggressive behavior." - Henk Hopla
No DX9 does not tesselate meshes for you.

The way to do displacement mapping is by using a vertex texture fetch...you must have a mesh already tesselated the desired vertex density.

To be honest vertex textures are more useful for things like terrains and special effects.
It should be noted that VTF is only supported by SM3.0 cards and higher.
So just to get this completely straight, there is NO WAY AT ALL to tessellate meshes on the GPU using DX9.
"WARNING: Excessive exposure to politicians and other bureaucrats has been linked to aggressive behavior." - Henk Hopla
no there is no way to tesselate meshes on the GPU in DX9.
K, thx for responding to all my questions. Now I just have to find a good discrete LOD algorithm for general meshes. Time to read more into that LOD book.
"WARNING: Excessive exposure to politicians and other bureaucrats has been linked to aggressive behavior." - Henk Hopla
I just found this page in the DirectX docs that specifically mentions tessellation in DirectX 9, and I quote,
"The tessellator unit has been enhanced. You can now use it to:

* Perform adaptive tessellation of all higher-order primitives."

So now I just have to figure out how to use the tessellator unit.
"WARNING: Excessive exposure to politicians and other bureaucrats has been linked to aggressive behavior." - Henk Hopla
Quote:Original post by mikfig
I just found this page in the DirectX docs that specifically mentions tessellation in DirectX 9, and I quote,
"The tessellator unit has been enhanced. You can now use it to:

* Perform adaptive tessellation of all higher-order primitives."

So now I just have to figure out how to use the tessellator unit.


i think it is restricted to caps thought, which means not all cards have this features as default.

New hardware caps:

D3DDEVCAPS2_ADAPTIVETESSRTPATCH // Can adaptively tessellate RT-patches
D3DDEVCAPS2_ADAPTIVETESSNPATCH // Can adaptively tessellate N-patches

This topic is closed to new replies.

Advertisement