// Вершинный шейдер: attribute vec3 vPosition; attribute vec3 vNormal; uniform mat4 ProjectionModelViewMatrix; uniform mat4 ModelViewMatrix; varying vec3 vWorldNormal; varying vec3 vViewNormal; varying vec3 vViewPosition; void main() { vWorldNormal = vPosition; // Локальная позиция вершины на сфере радиуса 1.0 vViewPosition = (ModelViewMatrix * vec4(vPosition, 1.0)).xyz; vViewNormal = normalize((ModelViewMatrix * vec4(vNormal, 0.0)).xyz); gl_Position = ProjectionModelViewMatrix * vec4(vPosition, 1.0); }