GLSL Hacker
Current version: 0.8.2
»GLSL Hacker homepage
»GLSL Hacker Overview

Current version: 1.15.1
»FurMark homepage
»FurMark 1.9.x Submissions

GPU Caps Viewer
Current version: 1.23.0
»GPU Caps Viewer homepage
»GPU DB Submissions

GPU Shark
Current version: 0.9.4
»GPU Shark homepage

»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.2
»FluidMark homepage
»FluidMark 1.4.x Submissions

Current version: 0.4.0
»GeeXLab homepage
»GeeXLab Overview

Current version: 0.3.0
»TessMark homepage

Current version: 0.3.0
»ShaderToyMark homepage
»ShaderToyMark Scores

Current Version: 1.23.0
»Libraries and Plugins
»Online Help - Reference Guide
»Codes Samples

3D Graphics Search Engine:

The Geeks Of 3D

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

GLSL Hacker demos

GLSL - Mesh exploder

PhysX 3 cloth demo

Normal visualizer with GS

Compute Shaders test on Radeon

Raymarching in GLSL

Geeks3D latest news

Geeks3D forum news

»Texture DataPack #1
»Asus Silent Knight CPU Cooler
Page generated in 0.011291027069092 seconds.