attribute vec3 vPosition; attribute vec2 vTexCoord; uniform mat4 ProjectionMatrix; uniform mat3 ModelRotateMatrix; uniform vec3 ModelTranslateVector; varying vec2 texCoord; varying vec3 vertexPos; void main() { vec4 realVertexPos = vec4(ModelRotateMatrix * vPosition.xyz + ModelTranslateVector, 1.0); gl_Position = ProjectionMatrix * realVertexPos; vertexPos = gl_Position.xyz; texCoord = vTexCoord.st; //vertexPos = vPosition.xyz; //vec3 cVec = (CamPos - vPosition.xyz); /* vec3 lVec = normalize(gl_LightSource[0].position.xyz); vec3 cVec = (CamPos - vPosition.xyz); vertexPos = vPosition.xyz; vec3 normal = normalize(gl_NormalMatrix * gl_Normal); // Используем производные для вычисления тангентного и бинормального вектора vec3 dp1 = dFdx(vPosition.xyz); vec3 dp2 = dFdy(vPosition.xyz); vec2 duv1 = dFdx(vTexCoord.st); vec2 duv2 = dFdy(vTexCoord.st); vec3 tangent = normalize(dp1 * duv2.y - dp2 * duv1.y); vec3 binormal = normalize(dp2 * duv1.x - dp1 * duv2.x); // Создаем матрицу тангенциального пространства mat3 tbnMatrix = mat3(tangent, binormal, normal); tbnMatrix = ModelRotateMatrix * tbnMatrix; lightVec = lVec * tbnMatrix; camVec = cVec * tbnMatrix;*/ }