CG cosh, exp, sinh, smoothstep, tanh, perlin_easeCurve1/2 曲线
文章目录
- cosh
- 为何叫双曲线
- exp(x)曲线
- exp(-x) 曲线
- exp(x)+exp(-x) 两曲线叠加
- 调整x=0时,y=0
- 调整x=-2 or 2时,y=1
- exp(-x*x)
- sinh
- smoothstep
- tanh
- perlin noise ease curve 1
- perlin noise ease curve 2
- Summary
- excel 文件
- References
xxxh
中的h==>hyperbolic:双曲线的意思
cosh
// see: https://developer.download.nvidia.cn/cg/cosh.html
float cosh(float x)
{return 0.5 * (exp(x)+exp(-x));
}
0.5∗(exp(x)+exp(−x))0.5 * (exp(x)+exp(-x))0.5∗(exp(x)+exp(−x))
为何叫双曲线
因为exp(x)就是一个曲线,而cosh中有exp(x)与exp(-x),所以就是两个(双)曲线咯
exp(x)曲线
exp(x)exp(x)exp(x)
exp(-x) 曲线
exp(−x)exp(-x)exp(−x)
exp(x)+exp(-x) 两曲线叠加
exp(x)+exp(−x)exp(x)+exp(-x)exp(x)+exp(−x)
调整x=0时,y=0
exp(x)+exp(−x)−2exp(x)+exp(-x)-2exp(x)+exp(−x)−2
调整x=-2 or 2时,y=1
(exp(x)+exp(−x)−2)∗(1/exp(x)+exp(−x)−2)(exp(x)+exp(-x)-2)*(1/exp(x)+exp(-x)-2)(exp(x)+exp(−x)−2)∗(1/exp(x)+exp(−x)−2)
==>
∵curv=(exp(x)+exp(−x)−2)\because curv=(exp(x)+exp(-x)-2)∵curv=(exp(x)+exp(−x)−2)
∵invCurv=1/curv\because invCurv=1/curv∵invCurv=1/curv
∴1=curv∗invCurv\therefore 1=curv*invCurv∴1=curv∗invCurv
exp(-x*x)
2022/07/14 再补充一条曲线
因为在制作 SSS 时,看到别人的代码中有一曲线
half3 Transmittance(half transmittanceMask, half3 sssColor, half3 lightDir, half3 normal, half3 viewDir)
{half3 lll = normalize(lightDir + normal * 0.1f);half VdotL = saturate(dot(viewDir, -lll));half thickness = 1.0f - (VdotL * transmittanceMask);//return exp((thickness) * half3( -8, -40, -64 ) ); // refreturn exp(-(thickness * thickness)) * sssColor * (1.0 - thickness);
}
其中留意:exp(-(thickness * thickness))
单独查看:exp(-x*x
sinh
float sinh(float x)
{return 0.5 * (exp(x)-exp(-x));
}
smoothstep
smoothstep(min,max,x)
它的公式如下:
smoothstep(x)=−2⋅(x−minmax−min)3+3⋅(x−minmax−min)2smoothstep(x)=-2 \cdot (\frac{x-min}{max-min})^3+3 \cdot (\frac{x-min}{max-min})^2 smoothstep(x)=−2⋅(max−minx−min)3+3⋅(max−minx−min)2
代码是在公式的基础上优化了写法的,可读性会差非常的多!
float smoothstep(float a, float b, float x)
{float t = saturate((x - a)/(b - a));return t*t*(3.0 - (2.0*t));
}
tanh
float tanh(float x)
{float exp2x = exp(2*x);return (exp2x - 1) / (exp2x + 1);
}
tanh 的头部过渡速度比较快,中,尾部比较缓慢
一般比较多的动画也会用到类似的曲线
perlin noise ease curve 1
3(t2)−2(t3)3(t^2)−2(t^3)3(t2)−2(t3)可见perlin noise中初版的平滑插值,与smoothstep非常相似
3(t^2)−2(t^3)
perlin noise ease curve 2
6(t5)−15(t4)+10(t3)6(t^5)−15(t^4)+10(t^3)6(t5)−15(t4)+10(t3)
6(t^5)−15(t^4)+10(t^3)
curve 2比curve 1的头尾过渡比较缓慢,也就是说作数值过渡会比较饱满的头尾,中部过渡比较快一些
Summary
其实我们在很多平台的动画库(tween)都会有类似的插值过渡算法
excel 文件
cosh_sinh_smoothstep_tanh_perlinEaseCurve1&2.xlsx 提取码: dxnr
References
- Cg / Standard Library / cosh
- Cg / Standard Library / sinh
- Cg / Standard Library / smoothstep
- Cg / Standard Library / tanh
- cg中的关键字、语义词、函数库
CG cosh, exp, sinh, smoothstep, tanh, perlin_easeCurve1/2 曲线相关推荐
- oracle cosh 函数,oracle cosh exp floor in log等函数
21.返回一个数字反余弦值 SQL> select cosh(20) from dual; COSH(20) --- 242582598 22.EXP 返回一个数字e的n次方根 SQL> ...
- abap 常用系统变量
常用的系统变量如下: 1. SY-PAGNO当前页号 2. SY-DATUM当前时间 3. SY-LINSZ当前报表宽度 4. SY-LINCT当前报表长度 5. SPACE空字符 6. SY-SUB ...
- python基础代码库-Python基础数据处理库-NumPy
最近更新:2017-07-19 NumPy是Python做数据处理的底层库,是高性能科学计算和数据分析的基础,比如著名的Python机器学习库SKlearn就需要NumPy的支持.掌握NumPy的基础 ...
- 【Python】Numpy基础:数组和矢量运算
Numpy基础:数组和矢量运算 目录: 文章目录 一 Numpy及其重要性 二 ndarray:一种多维数组对象 1 创建ndarray 2 ndarray的数据类型 3 数组和标量之间的运算 4 基 ...
- ABAP语言常用的系统字段及函数
ABAP语言常用的系统字段及函数 常用的系统变量如下: 1.SY-PAGNO当前页号 2.SY-DATUM当前时间 3.SY-LINSZ当前报表宽度 4.SY-LINCT当前报表长度 5.SPACE空 ...
- C语言再学习 -- 常用头文件和函数(转)
参看:C/C++常用头文件及函数汇总 linux常用头文件如下: POSIX标准定义的头文件 <dirent.h> 目录项 <fcntl.h> 文 ...
- C/C++头文件一览表
C/C++常用头文件 以及简单应用介绍 C/C++头文件一览C#include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #in ...
- python numpy库作用_python Numpy库
一.导入库 import numpy as np 二.创建 1.numpy中只有一种数据类型:ndarray,表示n维数组 创建ndarray数组: -由列表或者元组类型创建数组 -有元组类型创建数组 ...
- 21天学MySQL_SQL21天自学通.pdf
SQL21天自学通 SQL 21 日自学通(V1.0) 翻译人 笨猪 目录 目录 1 译者的话 14 第一周概貌 16 从这里开始 16 第一天 SQL 简介 17 SQL 简史 17 数据库简史 1 ...
最新文章
- (传送门)ubuntu 安装截图工具 Shutter,并设置快捷键 Ctrl+Alt+A
- 大四Java复习笔记之Java基础
- 为什么Go没有三元运算符
- 6.openldap客户端安装
- 答题闯关php,成语答题闯关红包流量主小程序源码
- 《解剖PetShop》系列之一(转)
- 小米10pro使用说明书_30W有线无线快充,小米的这款立式无线充电宝表现不错
- 从零基础入门Tensorflow2.0 ----八、39.3. gpu3
- 190403 联众验证码 - python3接入
- Scrapy框架-阳光政务平台爬虫(二)
- 《Shopify从入门到精通》笔记(4~6章)
- VC 获取任务栏窗口的句柄
- 关于星巴克推广活动的实验测试
- Data Binding 用户指南(Android)
- unity触发时播放音效
- PFSO-T5,一种OLED材料
- Windows下pytorch-gpu安装以及CUDA详细安装过程 附带各个版本安装包
- PAT-A-1062 Talent and Virtue 【排序】
- 上海亚商投顾:三大指数均涨超1% 芯片板块集体大涨
- XPS可以转成Word吗?两种XPS转Word的方法
热门文章
- 电路基础_模拟电路_问答_2023
- linux切换用户时报错 bash: /home/book/.bashrc: 权限不够 bash-4.2$
- Linux下干净卸载mysql详解
- 计算机毕业设计(附源码)python学生社团管理
- java类加载机制、类加载器、自定义类加载器
- 华为海思 verilog 笔试准备
- Web课程设计高校物资管理系统
- zabbix连接mysql_zabbix的简单操作(监控客户端MySQL数据包库)
- 单位根检验、协整检验和格兰杰因果关系检验三者之间的关系
- 怪物猎人ol服务器维护,腾讯宣布怪物猎人OL停运 12月31日正式关服