cocos creator 关于shader法线贴图?

效果图

水面贴图ColorMap.jpg

水面法线图water_normal.jpg

有大神可以教学 cocos creator 如何使用shader加入法线贴图吗
让法线贴图xy移动 像是效果图
参考网页
http://www.cocoachina.com/bbs/read.php?tid-1693873-page-1.html

有大神可以教学吗?

1赞

// 作者: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);  
            }
1赞

这还是使用Cocos2d-x吧
有大神可以提供Demo吗

这是creator上跑的,demo的话你自己在论坛搜适合2.0的,片段着色器的代码用我这个就行了。

有没有大神写能写一个2.2+的版本,shader研究很久都没搞懂,最终效果都做不成这样。现在有这样的需求

我的主题已实现

这都是18年的帖子了,这一铲 哈哈哈

不小心挖了一下哈哈哈哈