cocos2dx 使用shader实现树木随风抖动效果
Building.h
#define __Building_H__
#include "cocos2d.h"
USING_NS_CC;
{
public:
protected:
Sprite * m_bg;
//heartSetFunc
void getHeart();
//particle
ParticleSystemQuad* m_par;
//data
BuildingData m_baseData;
static int _tagnum;
};
#include "MyRandom.h"
VoidSpriteFunc Building::setZorderInMapFunc = nullptr;
static const GLchar* szGrassShaderX =
#ifdef GL_ES \n\
precision mediump float; \n\
#endif \n\
\n\
varying vec2 v_texCoord; \n\
//uniform sampler2D u_texture; \n\
uniform float u_time; \n\
uniform float u_hight; \n\
uniform float u_mid; \n\
uniform float u_midx; \n\
\n\
// 1 \n\
const float speed = 2.0; \n\
const float bendFactor = 0.2; \n\
void main() \n\
{ \n\
// 获得高度,texCoord从下到上为0到1 \n\
float height = -(v_texCoord.y-u_hight)*2; \n\
float weight = u_midx-abs(u_mid - v_texCoord.x); \n\
// 获得偏移量,一个幂函数,值愈大,导数越大,偏移量愈大 \n\
float offset = pow(height, 2.5)*weight; \n\
// 偏移量随时间变化,并乘以幅度,设置频率 \n\
offset *= (sin(u_time * speed) * bendFactor); \n\
// 使x坐标偏移,fract取区间值(0,1) \n\
gl_FragColor = texture2D(CC_Texture0, fract(vec2(v_texCoord.x+ offset , v_texCoord.y))); \n\
//gl_FragColor = texture2D(CC_Texture0, v_texCoord); \n\
}";
static const GLchar* szGrassShader =
#ifdef GL_ES \n\
precision mediump float; \n\
#endif \n\
\n\
varying vec2 v_texCoord; \n\
//uniform sampler2D u_texture; \n\
uniform float u_time; \n\
uniform float u_hight; \n\
uniform float u_mid; \n\
uniform float u_midx; \n\
\n\
// 1 \n\
const float speed = 2.0; \n\
const float bendFactor = 0.2; \n\
void main() \n\
{ \n\
// 获得高度,texCoord从下到上为0到1 \n\
float height = (v_texCoord.x-u_hight)*2; \n\
float weight = u_midx-abs(u_mid - v_texCoord.y); \n\
// 获得偏移量,一个幂函数,值愈大,导数越大,偏移量愈大 \n\
float offset = pow(height, 2.5)*weight; \n\
// 偏移量随时间变化,并乘以幅度,设置频率 \n\
offset *= (sin(u_time * speed) * bendFactor); \n\
// 使x坐标偏移,fract取区间值(0,1) \n\
gl_FragColor = texture2D(CC_Texture0, fract(vec2(v_texCoord.x , v_texCoord.y+ offset))); \n\
//gl_FragColor = texture2D(CC_Texture0, v_texCoord); \n\
}";
attribute vec4 a_position; \n\
attribute vec2 a_texCoord; \n\
attribute vec4 a_color; \n\
\n\
//varying vec4 v_fragmentColor; \n\
varying vec2 v_texCoord; \n\
\n\
void main() \n\
{ \n\
gl_Position = CC_PMatrix * a_position; \n\
//v_fragmentColor = a_color; \n\
v_texCoord = a_texCoord; \n\
}";
addChild(m_bg);
m_fTime = CCRANDOM_0_1();
float m_baseW;
float m_baseWx;
auto bgrect = m_bg->getTextureRect();
if (m_bg->isTextureRectRotated())
{
pShader->initWithByteArrays(szGrassShadervsh, szGrassShader);//顶点着色器,后一个参数则指定了像素着色器:
m_baseW = bgrect.getMidY() / txSize.height;
m_baseWx = bgrect.size.height / (2 * txSize.height);
}
else {
m_baseW = bgrect.getMidX() / txSize.width;
m_baseWx = bgrect.size.width / (2 * txSize.width);
}
auto m_hight = glGetUniformLocation(m_bg->getGLProgram()->getProgram(), "u_hight");
auto m_mid = glGetUniformLocation(m_bg->getGLProgram()->getProgram(), "u_mid");
auto m_midx = glGetUniformLocation(m_bg->getGLProgram()->getProgram(), "u_midx");
glUniform1f(m_mid, m_baseW);
glUniform1f(m_midx, m_baseWx);
// 开启帧更新
}
{
m_fTime += delta;
}
最后说一句,不要用cocos2dx自带的那个 什么随风抖动的效果,那个东西在小游戏中使用没毛病,如果你场景里面树木很多,用哪个的话就很傻了,能卡出翔,而且不支持GlobalZOrder
cocos2dx 使用shader实现树木随风抖动效果相关推荐
- Shader实现瓶内液体效果(原码)
继上一篇:Shader实现瓶内液体效果 https://blog.csdn.net/ww1351646544/article/details/98632525 私聊我同朋友还是不少,为了能和大家一起学 ...
- Unity 之 ShaderGraph 实现小旗随风飘扬效果入门级教程
Unity 之 ShaderGraph 实现小旗随风飘扬效果入门级教程 前言 一,效果展示 二,原理介绍 三,制作步骤 四,使用示例 五,完整图示 前言 若你的工程还没有进行基础配置,请查看我的博文U ...
- 猫猫学IOS(四十)UI之核心动画_抖动效果_CAKeyframeAnimation
猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 效果: 效果一: 效果二: ...
- animate.css动画抖动,Animate.css抖动效果每次都不工作
我正在制作一个Twitch Streamer应用程序,该应用程序使用Twitch API为一组预定义的拖放器提取一些数据.Animate.css抖动效果每次都不工作 我有三个按钮来选择所有/在线/离线 ...
- Flutter抖动动画、颤抖动画、Flutter文字抖动效果
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. github? 你可能需要 百度同步 CSDN 网易云课堂教程 掘金 知乎 Flutter系列文章 头条同步 1 添加 ...
- 【jQuery笔记Part3】02-jQuery抖动效果
jQuery抖动效果 雪碧图(精灵图) 什么是雪碧图? 使用雪碧图的目的 显示雪碧图的条件 静态页面 展示图片 抖动效果 jQuery笔记目录 雪碧图(精灵图) 什么是雪碧图? 雪碧图是根据CSS s ...
- html文字抖动效果,CSS实现TikTok文字抖动效果示例
前端同学在日常开发中精彩会因为一些动效和设计争的面红耳赤,设计希望用代码实现,前端要设计出gif图,最后谁也不让谁,设计走了,留下了前端独自加班...... CSS技术是前端必须掌握的一项技能,不仅要 ...
- Unity Shader 之 简单 护盾Shield 效果的实现
Unity Shader 之 简单 护盾Shield 效果的实现 目录 Unity Shader 之 简单 护盾Shield 效果的实现 一.简单介绍 二.实现原理
- html怎么把图片做成抖动效果,js实现鼠标触发图片抖动效果的方法
本文实例讲述了js实现鼠标触发图片抖动效果的方法.分享给大家供大家参考.具体实现方法如下: 鼠标触发图片抖动效果 .shakeimage{ position:relative } //configur ...
- html怎么把图片做成抖动效果,CSS图片抖动和JS点击特效
正文 CSS图片抖动效果代码,放在网站主要CSS文件中即可 如:style.css,之前emlog博客中常添加这个效果 img:hover { -webkit-animation:sucaijiayu ...
最新文章
- CSS中background-position的使用
- 函数如何实现“多个返回值”?
- 关于Oracle undostat中的2012和ORA-01555问题的自我解答
- 【转载】阿里云ECS服务器监控资源使用情况
- Shell程序设计 | 基本语法 :变量、I/O、算术运算、条件判断、流程控制、函数
- dump的文件 查看pg_【PG备份恢复】pg_dump命令测试
- android studio for android learning (十六) support-annotations简介
- 怎么实现ZBrush与数位板雕刻模型的结合运用
- 教你用迅雷下载百度网盘的文件
- AI资源对接需求汇总:第2期
- excel公式编辑器_V14.0发布:组件化编辑器+数据透视表
- Warning: Class ‘com.bupt.dts.DTSFortran‘ not found in module ‘AntlrTest‘
- 程序员职业发展路线图(完整版+珍藏版)
- 水印去除(基于nosie2noise优化 代码+模型)
- OCR技术3-大批量生成文字训练集
- Linux修改网卡配置
- 香农的“创意思维在编程的应用
- Java - 处理unsigned类型
- 猪队友出卖NV:11系显卡横空出世!
- 酷比魔方iwork12 linux,【酷比魔方iwork12怎么样】酷比魔方iwork12好不好_好吗-ZOL中关村在线...
热门文章
- MySQL备份的持续验证:还原备份
- eBay词汇表(中/英对照)
- java+springmvc+vues 基于ssm的旅游资源网站#毕业设计
- Python基础(3)-面向对象
- java实现金额组合
- 各大浏览器对HTTP网站会有哪些“不安全”警告
- android studio apk签名保护,Android Studio - 签名APK发布崩溃
- 微信小程序 封装request 方法
- 电子工业版了解计算机教案,电子工业出版社小学信息技术第一册全册教案
- 优化问题(A overview of gradient descent optimization algorithms)