refactoring
This commit is contained in:
1 parent
9fc0adf210
commit
d1cab1f3b3
2082 files changed
+13644
-161518
No files matched your search
@@ -0,0 +1,31 @@
|
||||
// Vertex Shader (Bake Stage)
|
||||
attribute vec3 vPosition;
|
||||
attribute vec2 vTexCoord;
|
||||
|
||||
varying vec2 TexCoord;
|
||||
varying float vHeight;
|
||||
|
||||
// Данные о плоскости треугольника планеты
|
||||
uniform vec3 uPlanePoint; // Любая вершина треугольника (например, tri.data[0])
|
||||
uniform vec3 uPlaneNormal; // Нормаль треугольника планеты (ось Z из GetRotationForTriangle)
|
||||
uniform float uMaxHeight; // Максимальный размер камня (BASE_SCALE)
|
||||
|
||||
uniform mat4 ProjectionModelViewMatrix;
|
||||
|
||||
void main()
|
||||
{
|
||||
// 1. Вычисляем вектор от плоскости до текущей вершины камня
|
||||
vec3 vecToVertex = vPosition - uPlanePoint;
|
||||
|
||||
// 2. Проецируем этот вектор на нормаль плоскости (скалярное произведение)
|
||||
// Это и есть кратчайшее расстояние от точки до плоскости
|
||||
float distance = dot(vecToVertex, uPlaneNormal);
|
||||
|
||||
// 3. Нормализуем высоту для записи в текстуру (0.0 - уровень земли, 1.0 - пик)
|
||||
// Clamp гарантирует, что значения не выйдут за пределы, если камень "утоплен"
|
||||
vHeight = clamp(distance / uMaxHeight, 0.0, 1.0);
|
||||
|
||||
TexCoord = vTexCoord;
|
||||
|
||||
gl_Position = ProjectionModelViewMatrix * vec4(vPosition, 1.0);
|
||||
}
|
||||
Reference in new issue
Block a user