2022-09-19 18:05:01 +08:00

22 lines
800 B
Bash

uniform mat4 uMVPMatrix; //总变换矩阵
attribute vec3 aPosition; //顶点位置
attribute vec2 aTexCoor; //顶点纹理坐标
varying vec2 vTextureCoord; //用于传递给片元着色器的变量
uniform float angleSpan;//扭曲总角度跨度
uniform float yStart;//Y坐标起始点
uniform float ySpan;//Y坐标跨度
void main()
{
//计算当前顶点角度跨度
float tempAS= angleSpan*(aPosition.y-yStart)/ySpan;
vec3 tPosition=aPosition;
//若不是最下面一排顶点计算XZ位置
if(aPosition.y>yStart)
{
tPosition.x=(cos(tempAS)*aPosition.x-sin(tempAS)*aPosition.z);
tPosition.z=(sin(tempAS)*aPosition.x+cos(tempAS)*aPosition.z);
}
gl_Position = uMVPMatrix * vec4(tPosition,1); //根据总变换矩阵计算此次绘制此顶点位置
vTextureCoord = aTexCoor;//将接收的纹理坐标传递给片元着色器
}