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
 
L'Art du Texturing avec l'OpenGL Shading Language

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

Version initiale: 15 Avril 2006


[ Index ]

Introduction | Page 2 | Page 3 | Page 4 | Page 5 | Page 6 | Page 7 | Page 8 | Conclusion

�Next Page



6 - Texture Warping

Le texture warping se classe dans les nombreux effets que l'on peut appliquer à une texture afin de produire un résultat vraiment sympathique. Le principe du warping consiste à perturber les coordonnées de texture pour créer une déformation de l'image finale.

L'image suivante nous montre un exemple de texture warping:


Texture Warping
Fig. 19 - La démo DEMO_Texture_Warping.xml

Il y a plusieurs méthodes pour déformer les coordonnées de texture. Nous utiliserons celle basée sur une normal map. Cette normal map a été créée à partir d'une texture contenant un bruit de Perlin en utilisant le plugin de nVidia pour Photoshop:


Texture Warping - Perlin Noise
Fig. 20 - La texture de bruit

Cette technique consistant à utiliser un shader GLSL pour déformer les coordonnées de texture est puissante car on agit ainsi au niveau de chaque texel. Cela signifie qu'il n'est pas nécessaire d'avoir un mesh dense pour réaliser cet effet.

Le shader suivant, provenant de la démo DEMO_Texture_Warping.xml, montre le warping de texture:

[Vertex_Shader]

void main()
{	
	gl_TexCoord[0] = gl_MultiTexCoord0;
	gl_Position = ftransform();		
}

[Pixel_Shader]

uniform sampler2D colorMap;
uniform sampler2D noiseMap;
uniform float timer;

void main (void)
{
	vec3 noiseVec;
	vec2 displacement;
	float scaledTimer;

	displacement = gl_TexCoord[0].st;

	scaledTimer = timer*0.1;

	displacement.x += scaledTimer;
	displacement.y -= scaledTimer;

	noiseVec = normalize(texture2D(noiseMap, displacement.xy).xyz);
	noiseVec = (noiseVec * 2.0 - 1.0) * 0.035;
	
	gl_FragColor = texture2D(colorMap, gl_TexCoord[0].st + noiseVec.xy);
}

La variable uniform timer contient le temps écoulé en secondes. Grâce au temps écoulé, on crée un jeu de coordonnées de texture displacement qui nous permet de récupérer une valeur noiseVec dans la texture de bruit. Ce vecteur noiseVec est ensuite ajouté aux coordonnées de texture de base gl_TexCoord[0].st + noiseVec.xy afin de puiser dans l'image de base la valeur perturbée.





[ Index ]

Introduction | Page 2 | Page 3 | Page 4 | Page 5 | Page 6 | Page 7 | Page 8 | 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.0033180713653564 seconds.