Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /home/clients/50536745d503cc9bd290722a231d5f8f/web/includes/o3_common.php on line 79

Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home/clients/50536745d503cc9bd290722a231d5f8f/web/includes/o3_common.php on line 79
oZone3D.Net Tutorials - Vertex Displacement Mapping - Vertex Texture Fetching - Shader Model 3.0 - OpenGL / GLSL




GeeXLab
Current version: 0.45.1
>GeeXLab homepage

FurMark
Current version: 1.30.0
>FurMark homepage

GPU Caps Viewer
Current version: 1.55.0.0
>GPU Caps Viewer homepage

GPU Shark
Current version: 0.26.0.0
>GPU Shark homepage


Blogs
>JeGX's HackLab

Geeks3D's Articles
>GPU Memory Speed Demystified

>Multi-Threading Programming Resources

>GeForce and Radeon OpenCL Overview

>How to Get your Multi-core CPU Busy at 100%

>How To Make a VGA Dummy Plug

>Night Vision Post Processing Filter

PhysX FluidMark
Current version: 1.5.4
>FluidMark homepage

TessMark
Current version: 0.3.0
>TessMark homepage

ShaderToyMark
Current version: 0.3.0
>ShaderToyMark homepage
>ShaderToyMark Scores

Demoniak3D
Current Version: 1.23.0
>Demoniak3D
>Download
>Libraries and Plugins
>Demos
>Online Help - Reference Guide
>Codes Samples
 
Vertex Displacement Mapping using GLSL

By Jerome Guinot aka 'JeGX' - jegx [at] ozone3d (dot) net

Initial draft: March 26, 2006
Update: November 5, 2006
Update: November 22, 2006


[ Index ]

Introduction | Page 2 | Page 3 | Page 4 | Conclusion

�Next Page



2 - Principle of Displacement

The basic element for the deformation is the vector queried from the displacement map. This vector usually holds either a RGBA-color or a scalar color (gray level height map). We will use this vector and more precisely the sum of its components as a factor to change the vertex position. One of the common methods is to move the vertex position along its normal proportionately to the previous factor.



Fig. 3 - Displacement principle

The schema of the figure 3 can be summed up by the following relation:

P1 = P0 + (N * df * uf)

where P0 is the original position of the vertex, P1 the vertex position after displacement, N the vertex normal vector, df the normalized displacement factor (i.e [0.0; 1.0]) and uf an user scaling factor. df can be get with the following relation which converts a RGB value to a grey value:

df = 0.30*dv.x + 0.59*dv.y + 0.11*dv.z

where dv is the vector fetched from the displacement map for the current processed vertex.

Now that the theory is okay, let's go to the practice...





[ Index ]

Introduction | Page 2 | Page 3 | Page 4 | Conclusion

�Next Page





GeeXLab demos


GLSL - Mesh exploder


PhysX 3 cloth demo


Normal visualizer with GS


Compute Shaders test on Radeon


Raymarching in GLSL



Misc
>Texture DataPack #1
>Asus Silent Knight CPU Cooler
Page generated in 0.0029339790344238 seconds.