卡通冰材质的简单实现

参考示例:

崩坏三冰律Boss中的冰块效果


塞尔达荒野之息中的冰材质

实现效果


实现思路

材质-1:

查看动图可以发现材质是半透材质然后由两层闪烁的亮部(一层较亮,一层较暗)、一层固有色、高光外加一个外勾边组成。

外勾边的实现就不赘述了,两层高光的实现想法如下我的想法是计算lambert模型后step出两层的范围,Blinn-Phong模型计算的高光范围。

 half secondBulingArea = step(0.8,Lambert);

half firstBulingArea = step(0.6,Lambert) - secondBulingArea;

half spec = pow(max(0, dot(normalize(lightDir + viewDir), normalDir)), 8);

half baseArea = 1 - firstBulingArea - secondBulingArea;
  • 但是动图中的视角是在旋转的,可是面向我们的一面都是有在闪烁的,我的想法是:会不会光源方向也是一同旋转的,我就拿一个空物体挂在相机上,调整好合适位置后计算和冰块材质的向量作为光源方向传给shader。
    闪烁部分拿三层颜色做lerp,Time做周期闪烁,加上随机即可。*

材质-2:

首先是半透材质,有uv流动,扭曲和折射效果外加一层边缘光。

折射部分:


这个折射实现是对抓取屏幕的_GrabTexture的uv使用Normal的xy相乘得到偏移并叠加到屏幕坐标的xy上。

float2 offset = tanNormal.xy*_Distortion*_RefractionTex_TexelSize.xy;
i.scrPos.xy += offset;

扭曲和uv滚动部分:

我使用了三张噪声图,(可以把三张图存在一张图的三个通道里)一张图横向滚动另一张纵向滚动,第三张计算扭曲:拿该噪声图的xy叠加到流动噪声图的uv上,(类似热扭曲的计算),再将横向流动乘上纵向流动,并使用该值作为透明度A值。

即可得到如下图所示效果

固有色部分:

MainColor * BaseTexture即可。

边缘光部分:

使用的是Fresnel值做step乘上RimColor(边缘光颜色)

float3 rimLight = pow( 1 - dot(Normal,ViewDir),_FresnelPower)* _RimColor;

最后将固有色部分乘上扭曲和uv滚动部分再加上边缘光部分即可。

卡通冰材质的简单实现相关推荐

  1. Urp渲染管线下的卡通冰效果实现

    一.卡通冰的效果 先看最终实现的卡通冰材质效果吧,如下所示: 也可以调出类似玻璃的效果: 如果对一个球应用卡通冰材质,然后打开各种选项,可以得到如下效果: 凹凸不平的地方是因为应用了法线贴图. 二.脚 ...

  2. Materials - 编写高性能冰材质

    虚幻引擎4中冰材质的编写方法,包括了材质的性能优化,项目经验总结,UE4中的Material相关: 文档附带视频: [UE4]- 高性能冰材质 

  3. 菜鸡的ShaderForge3-利用UV贴图制作卡通风格材质

    说到卡通渲染,这两年的游戏想起的必然是崩崩崩了:       妈妈她撩我!      这种赛璐珞的卡通渲染实在是养眼. 难的做不了,咱来做个简单的.其实两张UV贴图就能做出一个简单的卡通风格的材质了. ...

  4. UnityShader实例05:Toon(卡通)材质

    卡通材质 卡通着色也叫Non-photorealisticrendering非真实渲染,通常一些3D游戏用来做一些卡通风格的游戏,一般来说特点主要有两点,一是描边,二是风格化着色,表现为明暗渐变过渡为 ...

  5. UE4 皮革材质从简单到复杂

    最基础的贴图直接连接的那种就不展示了: 4K皮革贴图素材需要的私信我: 材质里面调整一个设置 材质预览

  6. UE4 车漆材质从简单到复杂

    1.车漆材质基础版 先看效果,然后准备素材: 先做好2个设置:

  7. Opencv学习笔记 图像特效 简单铅笔/卡通/马赛克/毛玻璃/Lomography/简单磨皮等效果

    一.铅笔画滤镜 铅笔画滤镜主要是提取出图片中梯度比较高的部分,也就是边缘检测 二.卡通画特效 卡通画特效主要由三部分组成 1.提取图像中轮廓 => edges 2.使用bilateral 滤波在 ...

  8. keyshot保存为ksp_keyshot渲染教程:keyshot教你如何简单的渲染冰与水

    摘要:keyshot是一个互动性的光线追踪与全域光渲染程序,keyshot的渲染的教程有哪些呢?下面是小编整理的关于keyshot渲染教程之keyshot教你如何简单的渲染冰与水. keyshot是一 ...

  9. Threejs简单介绍(含案例演示)

    什么是Three.js 你将它理解成three + js就可以了 three表示3D的意思 js表示javascript的意思 three.js就是使用javascript 来写3D程序的意思 先去下 ...

最新文章

  1. vscode+MinGW+cmake设置轻量ide
  2. 我们来谈谈那些智能家居里的语音对话设备
  3. mmap 和 shm 区别
  4. rmi of spring
  5. ORA-00031: session marked for kill 标记要终止的会话
  6. 2014-7-29-阿里电面-第一轮
  7. 将已有项目转为se项目_如何将 Java 项目转换成 Maven 项目
  8. java selenium firefox启动报错大调查
  9. Eclipse搭建springboot项目(六)全局异常
  10. java.sql.SQLException: null,message server: Host ora-rac2 is blocked because of many
  11. 手把手搭建WAMP+PHP+SVN开发环境
  12. php+mysql数据库语法错误_求教:PHP+MYSQL制作用户登录系统问题,总是提示数据库查询语句语法不对。$sql=mysql_query(。。。)这行...
  13. 如何显示电脑已连接的WiFi的密码
  14. Linux led_class子系统
  15. 嵌入式 LAB 3:自行车码表
  16. AX9000利用docker实现迅雷远程下载2
  17. 电脑重装系统,如何下载正版win10的iso
  18. lua中的整除与取整数
  19. 微信小程序 初学——【音乐播放器】
  20. 第1章 整数 |《初等数论及其应用》

热门文章

  1. 大学计算机学情分析,大学生教案学情分析.doc
  2. 使用JQuery完成定时弹出广告/图片
  3. CentOS7 网络配置超详细ip、网关设置
  4. 误码性能测试基础知识
  5. SCU 4438:Censor
  6. Categorial Depth Distribution Network for Monocular 3D Object Detection翻译
  7. 锆基纳米复合储氢材料La2Mg17+200%M(M=Cu, Ni)+1%CeO复合贮氢材料|碳纳米纤维的储氢
  8. 期刊投稿状态_投稿后的文章有哪几种状态?
  9. 2.18 前端页面布局方式的演变
  10. 1478_英飞凌AURIX TC275 iLLD中的看门狗禁用接口分析