GLSL шейдеры | Ломтики круга

Я пытаюсь сделать вид полярных часов в Quartz Composer с GLSL-шейдерами. Проблема в том, что я понятия не имею об этом языке программирования. Однако я искал и нашел этот код как хорошее начало:

Вершинный шейдер:

#version 120    
void main()
{
  gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;       
  gl_TexCoord[0] = gl_MultiTexCoord0;
}

Фрагмент шейдера:

#version 120
uniform sampler2D tex0;
uniform float border; // 0.01
uniform float circle_radius; // 0.5
uniform vec4 circle_color; // vec4(1.0, 1.0, 1.0, 1.0)
uniform vec2 circle_center; // vec2(0.5, 0.5)
void main (void)
{
  vec2 uv = gl_TexCoord[0].xy;

  vec4 bkg_color = texture2D(tex0,uv * vec2(1.0, -1.0));

  // Offset uv with the center of the circle.
  uv -= circle_center;

  float dist =  sqrt(dot(uv, uv));
  if ( (dist > (circle_radius+border)) || (dist < (circle_radius-border)) )
    gl_FragColor = bkg_color;
  else 
    gl_FragColor = circle_color;    
}

Теперь я хотел бы знать, где сказать этому коду, что он будет нарисован градусами в зависимости от переменной на входе.

Заранее спасибо

0 ответов

Другие вопросы по тегам