precision mediump float; //给出默认的浮点精度 varying vec2 vTextureCoord; //接收从顶点着色器过来的纹理坐标 varying float currY; //接收从顶点着色器过来的Y坐标 uniform sampler2D sTextureGrass; //纹理内容数据(草皮) uniform sampler2D sTextureRock; //纹理内容数据(岩石) uniform float landStartY; //过程纹理起始Y坐标 uniform float landYSpan; //过程纹理跨度 void main(){ vec4 gColor=texture2D(sTextureGrass, vTextureCoord); //从草皮纹理中采样出颜色 vec4 rColor=texture2D(sTextureRock, vTextureCoord); //从岩石纹理中采样出颜色 vec4 finalColor; //最终颜色 if(currYlandStartY+landYSpan){ finalColor=rColor; //当片元Y坐标大于过程纹理起始Y坐标加跨度时采用岩石纹理 }else{ float currYRatio=(currY-landStartY)/landYSpan; //计算岩石纹理所占的百分比 finalColor= currYRatio*rColor+(1.0- currYRatio)*gColor;//将岩石、草皮纹理颜色按比例混合 } gl_FragColor = finalColor; //给此片元最终颜色值 }