From al, 2 Months ago, written in Text.
Embed
  1.  
  2. // Shared variable passed to the fragment shader
  3. varying vec3 color;
  4. uniform vec3 eyePosition;
  5. uniform vec3 lightPosition;
  6.  
  7.  
  8. #define MAX_EYE_DEPTH 0.05
  9.  
  10. void main() {
  11.   // simple way to color the pupil where there is a concavity in the sphere
  12.   // position is in local space, assuming radius 1
  13.   float d = min(1.0 - length(position), MAX_EYE_DEPTH);
  14.   color = mix(vec3(1.0), vec3(0.0), d * 1.0 / MAX_EYE_DEPTH);
  15.  
  16.   //vec4 column0 = vec3(0.2, 0.0, 0.0, 0.0);
  17.   //vec4 column1 = vec3(0.0, 0.5, 0.0, 0.0);
  18.   //vec4 column2 = vec3(0.0, 0.0, 2.5, 0.0);
  19.   //vec4 column3 = vec3(0.0, 0.0, 0.0, 1.0);
  20.   //mat4 n = mat3(column0, column1, column2, column3);
  21.  
  22.   vec3 moveVector;
  23.  
  24.   if(length(eyePosition) == 1.0){
  25.          moveVector= vec3(0.1425, 2.44, -0.64);
  26.   } else {
  27.          moveVector= vec3(-0.1357,2.44, -0.645);
  28. }
  29.  
  30.                 mat4 moveMat = mat4(
  31.         vec4(1.0, 0.0, 0.0, 0.0),
  32.         vec4(0.0, 1.0, 0.0, 0.0),
  33.         vec4(0.0, 0.0, 1.0, 0.0),
  34.         vec4(moveVector.x, moveVector.y, moveVector.z, 1.0)
  35.     );
  36.  
  37.  
  38.    mat4 scale = mat4(
  39.         vec4(0.6, 0.0, 0.0, 0.0),
  40.         vec4(0.0, 0.6, 0.0, 0.0),
  41.         vec4(0.0, 0.0, 0.6, 0.0),
  42.         vec4(0.0, 0.0, 0.0, 1.0)
  43.     );
  44.  
  45.        mat4 trans = mat4(
  46.         vec4(1.0, 0.0, 0.0, 5.0),
  47.         vec4(0.0, 1.0, 0.0, 2.5),
  48.         vec4(0.0, 0.0, 1.0, 2.5),
  49.         vec4(0.0, 0.0, 0.0, 1.0)
  50.     );
  51.   //  vec3 up = vec3(0.0, 1.0, 0.0);
  52.   //  vec3 lightDir = vec3(0.0, 0.0, 0.0) - lightPosition;
  53.   //  float x = acos(dot(normalize(up), normalize(lightDir)));
  54.  
  55.      
  56.         float angle1 = 6.28;
  57.     mat4 rotat2 = mat4(
  58.          1.0, 0.0, 0.0, 0.0,
  59.          0.0, cos(angle1), sin(angle1), 0.0,
  60.          0.0, -sin(angle1), cos(angle1), 0.0,
  61.          0.0, 0.0, 0.0, 1.0
  62.     );
  63.  
  64.    
  65.  
  66.    // mat4 rotation = mat4(xaxis, 0.0,
  67.    //                                   chanangle, 0.0,
  68.    //                                   z, 0.0,
  69.    //                                   0.0 ,0.0 ,0.0 ,1.0 );
  70.        
  71.  
  72.         float angle2 = -1.57;
  73.     mat4 rotatz = mat4(
  74.          cos(angle2), sin(angle2), 0.0, 0.0,
  75.          -sin(angle2), cos(angle2), 0.0, 0.0,
  76.                         0.0, 0.0, 1.0, 0.0,
  77.                         0.0, 0.0, 0.0, 1.0
  78.     );
  79.  
  80.     vec3 z = normalize(eyePosition - lightPosition);
  81.     vec3 y = vec3(0.0, 1.0, 0.0);
  82.     vec3 xx = cross(y, z);
  83.         // float angle3 = acos(dot(y, z));
  84.  
  85.          mat4 rotatx = mat4(1.0, 0.0, 0.0, 0.0,
  86.                      0.0, cos(1.57), -sin(1.57), 0.0,
  87.                      0.0, sin(1.57), cos(1.57), 0.0,
  88.                      0.0, 0.0, 0.0, 1.0);
  89.    
  90.        
  91.     // mat4 rotat = mat4(
  92.     //    cos(angle3), 0.0, -sin(angle3), 0.0,
  93.      //  0.0, 1.0, 0.0, 0.0,
  94.     //   sin(angle3), 0.0, cos(angle3), 0.0,
  95.     //    0.0, 0.0, 0.0, 1.0
  96.     //);
  97.  
  98.                 mat4 rotat = mat4(xx[0], xx[1], xx[2], 0.0,
  99.                                                   y[0], y[1], y[2], 0.0,
  100.                                                   z[0], z[1], z[2], 0.0,
  101.                                                   0.0, 0.0, 0.0, 1.0
  102.                 );
  103.  
  104.   // Multiply each vertex by the model-view matrix and the projection matrix to get final vertex position
  105.   gl_Position = projectionMatrix * viewMatrix * moveMat * rotat * rotatx * scale * (vec4(position, 1.0));
  106. }
  107.