1

hey i am trying to rotate light direction in opengl es 2.0 but its not rotating pls help sorry for english

these is my fragment shader

   precision mediump float;         // Set the default precision to medium. We don't need as high of a 
// precision in the fragment shader.
uniform vec3 u_LightPos;        // The position of the light in eye space.
uniform vec4 u_Texture;    // The input texture.

varying vec3 v_Position;        // Interpolated position for this fragment.
varying vec3 v_Normal;          // Interpolated normal for this fragment.
varying vec2 v_TexCoordinate;   // Interpolated texture coordinate per fragment.

// The entry point for our fragment shader.
void main()                         
{                              
// Will be used for attenuation.

float distance = length(u_LightPos - v_Position);                  

// Get a lighting direction vector from the light to the vertex.
vec3 lightVector = normalize(u_LightPos - v_Position);                  

// Calculate the dot product of the light vector and vertex normal. If the normal and light vector are
// pointing in the same direction then it will get max illumination.
float diffuse = max(dot(v_Normal, lightVector), 0.0);                                                                                 

// Add attenuation. 
diffuse = diffuse * (1.0 / (1.0 + (0.25 * distance)));

// Add ambient lighting
diffuse = diffuse + 0.7;  

// Multiply the color by the diffusoie illumination level and texture value to get final output color.
gl_FragColor = u_Texture*diffuse;                                       
}               

these is vertix shader

uniform mat4 u_MVPMatrix;       // A constant representing the combined model/view/projection matrix.                  
uniform mat4 u_MVMatrix;        // A constant representing the combined model/view matrix.              

attribute vec4 a_Position;      // Per-vertex position information we will pass in.                             
attribute vec3 a_Normal;        // Per-vertex normal information we will pass in.      
attribute vec2 a_TexCoordinate; // Per-vertex texture coordinate information we will pass in.       

varying vec3 v_Position;        // This will be passed into the fragment shader.                            
varying vec3 v_Normal;          // This will be passed into the fragment shader.  
varying vec2 v_TexCoordinate;   // This will be passed into the fragment shader.            

// The entry point for our vertex shader.  
void main()                                                     
{                                                         
// Transform the vertex into eye space.     
v_Position = vec3(u_MVMatrix * a_Position);                 

// Pass through the texture coordinate.
v_TexCoordinate = a_TexCoordinate;                                      

// Transform the normal's orientation into eye space.
v_Normal = vec3(u_MVMatrix * vec4(a_Normal, 0.0));

// gl_Position is a special variable used to store the final position.
// Multiply the vertex by the matrix to get the final point in normalized screen coordinates.
gl_Position = u_MVPMatrix * a_Position;                               
}       

light is only working on Xy axis and only going up to down

i want reflact these 1,1,1 to 0,0,0

Tanishk Jat
  • 11
  • 1
  • 4

0 Answers0