初次提交
This commit is contained in:
21
第11章 常用3D开发技巧案例/Sample11_4/assets/frag.sh
Normal file
21
第11章 常用3D开发技巧案例/Sample11_4/assets/frag.sh
Normal file
@@ -0,0 +1,21 @@
|
||||
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(currY<landStartY){
|
||||
finalColor=gColor; //当片元Y坐标小于过程纹理起始Y坐标时采用草皮纹理
|
||||
}else if(currY>landStartY+landYSpan){
|
||||
finalColor=rColor; //当片元Y坐标大于过程纹理起始Y坐标加跨度时采用岩石纹理
|
||||
}else{
|
||||
float currYRatio=(currY-landStartY)/landYSpan; //计算岩石纹理所占的百分比
|
||||
finalColor= currYRatio*rColor+(1.0- currYRatio)*gColor;//将岩石、草皮纹理颜色按比例混合
|
||||
}
|
||||
gl_FragColor = finalColor; //给此片元最终颜色值
|
||||
}
|
||||
11
第11章 常用3D开发技巧案例/Sample11_4/assets/vertex.sh
Normal file
11
第11章 常用3D开发技巧案例/Sample11_4/assets/vertex.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
uniform mat4 uMVPMatrix; //总变换矩阵
|
||||
attribute vec3 aPosition; //顶点位置
|
||||
attribute vec2 aTexCoor; //顶点纹理坐标
|
||||
varying vec2 vTextureCoord; //用于传递给片元着色器的纹理坐标
|
||||
varying float currY; //用于传递给片元着色器的Y坐标
|
||||
void main(){
|
||||
gl_Position = uMVPMatrix * vec4(aPosition,1); //根据总变换矩阵计算此次绘制此顶点的位置
|
||||
vTextureCoord = aTexCoor; //将接收的纹理坐标传递给片元着色器
|
||||
currY=aPosition.y; //将顶点的Y坐标传递给片元着色器
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user