Bonjour,

Je travaille sur une extension de la balise HTML 5 canvas, cette extension, grâce à la technologie WebGL (basé sur OpenGL ES 2.0), me permet de contrôler, à partir du DOM, la zone de rendu du canvas par un PixelShader écrit en GLSL.

Je valide le principe de mon extension, en écrivant divers jeux de test, je ne rencontre aucun problème jusqu’à ce que je tente de porter l’exemple de texture HDR de la librairie SpiderGL.
J’obtiens ceci une sorte de LDR
Pourtant j’utilise la même image et presque le même FragmentShader. "presque" car, a la différence de l’exemple de SpiderGL, j’utilise un seul vertex buffer ne contenant que la position 2D :
Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
var QuadVertexBuffer = new Float32Array(
[ //  x     y
	-1.0, -1.0, //sommet bas gauche
	-1.0,  1.0, //sommet haut gauche
	 1.0, -1.0, //sommet bas droit
	 1.0,  1.0  //sommet haut droit 
]);
Alors que SpiderGL utilise 2 Vertex Buffer : un pour la position 2D et un autre pour les coordonnées de texture :
Code JavaSript : 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
18
19
20
var quadPositions = new Float32Array
([
	-1.0, -1.0,
	 1.0, -1.0,
	-1.0,  1.0,
	 1.0,  1.0
]);
 
var quadTexcoords = new Float32Array
([
	0.0, 0.0,
	1.0, 0.0,
	0.0, 1.0,
	1.0, 1.0
]);
 
var quad = new SglMeshGL(gl);
quad.addVertexAttribute("position", 2, quadPositions);
quad.addVertexAttribute("texcoord", 2, quadTexcoords);
quad.addArrayPrimitives("tristrip", gl.TRIANGLE_STRIP, 0, 4);
Ce qui m’oblige dans mon Shader à effectuer ce changement de repère :
Code GLSL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
vec2 p = (position + 1.0)/2.0;
vec4 color = texture2D(image, p);
Toutefois, Je ne pense pas que le problème provient de ce changement de repère, et j’espère qu’il s’agit que d’un renderstate obscure mal initialisé et, ainsi, ne remettant pas en cause l’architecture de ma librairie.

Je farfouille, actuellement, dans le code de SpiderGL pour trouver une différence d’initialisation du context GL , sans aucun résultat. Bref je sèche un peu ...

C’est pourquoi je sollicite votre aide ! merci.