效果图
水面贴图ColorMap.jpg
水面法线图water_normal.jpg
有大神可以教学 cocos creator 如何使用shader加入法线贴图吗
让法线贴图xy移动 像是效果图
参考网页
http://www.cocoachina.com/bbs/read.php?tid-1693873-page-1.html
效果图
水面贴图ColorMap.jpg
水面法线图water_normal.jpg
有大神可以教学 cocos creator 如何使用shader加入法线贴图吗
让法线贴图xy移动 像是效果图
参考网页
http://www.cocoachina.com/bbs/read.php?tid-1693873-page-1.html
有大神可以教学吗?
// 作者:http://www.cocoachina.com/bbs/read.php?tid-1693873.html http://www.cocoachina.com/bbs/read.php?tid-1707286.html
//将法线贴图映射至普通的Sprite之上 简单的实现了一下水面的折射效果以及简单的normal UV动画
varying vec4 v_fragmentColor;
varying vec2 uv0;
uniform sampler2D texture;
uniform sampler2D u_normalMap;
uniform float u_time;
vec3 waveNormal(vec2 p) {
vec3 normal = texture2D(u_normalMap, p).xyz;
normal = -1.0 + normal * 2.0;
return normalize(normal);
}
// 高光计算
float specular(vec3 n, vec3 l, vec3 e) {
return pow(max(dot(reflect(e, n),l), 0.0), 2.0);
}
void main() {
vec2 v_texCoord = uv0;
float timeFactor = 0.1;
float offsetFactor = 0.5;
float refractionFactor = 0.7;
// simple UV animation
vec3 normal = waveNormal(v_texCoord + vec2(u_time * timeFactor, 0.0));
// simple calculate refraction UV offset
vec2 p = -1.0 + 2.0 * v_texCoord;
vec3 eyePos = vec3(0.0, 0.0, 10.0); //眼睛位置 位于中心点正上方
vec3 inVec = normalize(vec3(p, 0.0) - eyePos);
vec3 refractVec = refract(inVec, normal, refractionFactor); //根据入射向量,法线,折射系数计算折射向量
vec2 v_texCoordN = v_texCoord;
v_texCoordN += refractVec.xy * offsetFactor;
vec3 light = vec3(0.2, 0.1, 0.0);
vec3 normalN = waveNormal(v_texCoordN);
vec3 color = vec3(specular(normalN, light, eyePos));
gl_FragColor = texture2D(texture, v_texCoordN) * 0.9 + vec4(color, 1.0);
}
这还是使用Cocos2d-x吧
有大神可以提供Demo吗
这是creator上跑的,demo的话你自己在论坛搜适合2.0的,片段着色器的代码用我这个就行了。
有没有大神写能写一个2.2+的版本,shader研究很久都没搞懂,最终效果都做不成这样。现在有这样的需求
我的主题已实现
这都是18年的帖子了,这一铲 哈哈哈
不小心挖了一下哈哈哈哈