j'ai un probleme de performance quand j'essaye de fetch le contenu d'une texture dans un vertex shader.
sur une 6600 GT (mon matériel), je passe de 1kfps (capé à 1k par la résolution de SDL_getticks()) à 5fps.
le shader ne fait que 3 soustractions
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 uniform sampler2D hMap; void main(void) { vec4 dv; vec4 v = vec4(gl_Vertex); float df; dv = texture2D(hMap, gl_MultiTexCoord0.st); //a de fault de heightmap potable //je recupere la composante rouge de ma texture. df = dv.r; v.x -= df; v.y -= df; v.z -= df; gl_Position = gl_ModelViewProjectionMatrix * v; gl_TexCoord[0].xy = gl_MultiTexCoord0.xy; }
cela marche nickel sur une 8800 (sur 1000fps, pas un seul en moins ... en affichant 5120 vertex).
mon GPU est shader 3.0 dixit le site de nvidia
et qui dis shader 3.0 dis possibilité de fetch au moins 4 unités de texture dans le vertex shader.Envoyé par nvidia.fr
je rajoute que je suis sous linux et que ma config marche sans soucis sur des jeux plutôt récent comme quake4.
---
pour la petite histoire (y'as toujours des curieux ):
j'essaye de coller du relief sur une geodesic sphere avec une heightmap en utilisant les shaders.
je met mon heightmap dans mon unité de texture 1, et je module le rayon centre de la sphere - vertex par la valeur stocké dans la texture.
ça semble marcher correctement (me faudrais une heightmap correcte pour être sur) et donner des résultats digne d'intérêt sur du matériel récent
Partager