space-game001/shaders/planet_stone.vertex
2026-01-02 21:16:44 +03:00

34 lines
918 B
Plaintext

attribute vec3 vPosition;
attribute vec2 vTexCoord;
attribute vec3 vNormal;
attribute vec3 vTangent;
attribute vec3 vBinormal;
attribute vec3 vColor;
varying vec2 TexCoord;
varying vec3 Color;
varying vec3 vViewDirTangent;
varying vec3 worldPosition;
uniform mat4 ProjectionModelViewMatrix;
uniform mat4 ModelViewMatrix;
uniform vec3 uViewPos;
void main() {
gl_Position = ProjectionModelViewMatrix * vec4(vPosition, 1.0);
TexCoord = vTexCoord;
vec3 viewDirWorld = normalize(uViewPos - vPosition);
// Строим матрицу перехода из атрибутов
// Так как базис ортонормирован, TBN^-1 == TBN_transpose
vViewDirTangent = vec3(
dot(viewDirWorld, vTangent),
dot(viewDirWorld, vBinormal),
dot(viewDirWorld, vNormal)
);
vec4 viewPosition = ModelViewMatrix * vec4(vPosition.xyz, 1.0);
worldPosition = vPosition;
}