31 lines
988 B
Plaintext
31 lines
988 B
Plaintext
// Вершинный шейдер (Vertex Shader)
|
||
|
||
attribute vec3 vPosition;
|
||
attribute vec2 vTexCoord;
|
||
|
||
varying vec2 TexCoord;
|
||
varying float viewZ;
|
||
varying vec3 pos;
|
||
varying vec3 worldPosition;
|
||
|
||
|
||
uniform mat4 ProjectionModelViewMatrix;
|
||
uniform mat4 ModelViewMatrix;
|
||
|
||
void main()
|
||
{
|
||
// Преобразование позиции в пространство вида (View Space)
|
||
vec4 viewPosition = ModelViewMatrix * vec4(vPosition.xyz, 1.0);
|
||
|
||
// Сохраняем отрицательную Z-координату. В OpenGL Z-координата (глубина)
|
||
// в пространстве вида обычно отрицательна, но для расчета тумана
|
||
// удобнее использовать положительное значение.
|
||
viewZ = -viewPosition.z;
|
||
|
||
pos = vPosition.xyz;
|
||
|
||
gl_Position = ProjectionModelViewMatrix * vec4(vPosition.xyz, 1.0);
|
||
|
||
TexCoord = vTexCoord;
|
||
worldPosition = vPosition;
|
||
} |