Bonjour,
Je vous joint le shader vertex et fragment mais en version BGFX .
Vertex:
Fragment :
Code : 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
21
22
23
24
25
26
27
28
29
30
31 $input a_position, a_texcoord0 //$output v_texcoord0 $output v_position $output v_normal #include "common.sh" //SAMPLER2D(s_texColor, 0); uniform mat4 matview; uniform vec4 eBias; //out vec2 OutTexCoord0; //out vec4 vertexColor; // Remplace l'ancien gl_BackColor void main() { // v_texcoord0 = a_texcoord0; gl_Position = mul(matview, vec4(a_position, 1.0) ); v_position=a_position; v_normal = vec3(0,0,1); // normale arbitraire gl_Position=gl_Position+eBias; }
Les shaders sont t'ils bon ?
Code : 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
21
22
23
24
25
26
27
28
29
30 // fs_spot_lightonly.sc $input v_normal, v_position #include "common.sh" // uniforms uniform vec4 u_lightPos; // xyz = position du spot, w = cos(cutoffAngle) uniform vec4 u_lightDir; // xyz = direction du spot normalisée uniform vec4 u_lightColor; // rgb = couleur du spot void main() { vec3 N = normalize(v_normal); // vecteur du fragment vers la lumière vec3 fragToLight = normalize(u_lightPos.xyz - v_position); // cos de langle entre direction du spot et fragment float cosTheta = dot(normalize(u_lightDir.xyz), fragToLight); // si on veut autoriser demi-angle > 90° (jusqu'à 180°) float cutoff = clamp(u_lightPos.w, -1.0, 1.0); // cos(demi-angle) peut être négatif float spot = smoothstep(cutoff, 1.0, cosTheta); // Lambert float ndotl = max(dot(N, fragToLight), 0.0); vec3 contrib = u_lightColor.rgb * ndotl * spot; gl_FragColor = vec4(contrib, 1.0); }
Pour information : La valeur eBias est à 0,bref.
Ces shaders qui servent à intégrer la lumière dans la scéne 3d.
La lumiére fonctionne que sur certain angle , c'est à dire quand la lumière est sur un angle de 0 à 120° , cela fonctionne mais partir de 120° la lumiére s'estompe et plus rien à 180°.
Comment faire pour que cela fonctionne sur toutes les angles ????
Merci
Partager