Advertisement
VladSmirN

Untitled

Feb 24th, 2023
870
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1.     const GLchar vsh[] =
  2.         "#version 330\n"
  3.         ""
  4.         "layout(location = 0) in vec2 a_position;"
  5.         ""
  6.         "uniform mat4 u_mv;"
  7.         "uniform mat4 u_mvp;"
  8.         ""
  9.         "out vec3 v_p;"
  10.         "out vec3 v_normal;"
  11.         ""
  12.         "void main()"
  13.         "{"
  14.         "    vec4 pos = vec4(a_position[0], 3*log(a_position[0])+sin(a_position[1]), a_position[1], 1.0);"
  15.         "    gl_Position = u_mvp*pos;"
  16.         "    v_p = (u_mv*pos).xyz;"
  17.         "    v_normal = normalize(transpose(inverse(mat3(u_mv)))*vec3(3/a_position[0] , 1.0,  cos(a_position[1]) ));" //нормаль
  18.         "}"
  19.         ;
  20.  
  21.     const GLchar fsh[] =
  22.         "#version 330\n"
  23.         ""
  24.         "in vec3 v_p;"
  25.         "in vec3 v_normal;"
  26.         ""
  27.         "layout(location = 0) out vec4 o_color;"
  28.         ""
  29.         "void main()"
  30.         "{"
  31.         "   vec3 u_l = vec3(5.0, 10.0, 0.0);" //Положение источника света
  32.         "   vec3 n = normalize(v_normal);" //нормировка нормали
  33.         "   vec3 l = normalize(v_p-u_l);"
  34.         "   vec3 e = normalize(-v_p);"
  35.         "   float d = max(dot(l, n), 0.1);" //диффузное освещение
  36.         "   vec3 r = normalize(reflect(l, e));" //вектор отражения
  37.          
  38.         "   float s = pow(max(dot(r, n), 0.0), 5.0);" //компонент зеркального блика
  39.         "   o_color = vec4(d*vec3(1.0, 0.0, 0.0)+ vec3(s), 1.0);" //цвет поверхности
  40.         "}"
  41.         ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement