序列帧 粒子效果_笔记三十一 —— 使用粒子序列图实现体积云

本文介绍了如何使用MatCap技术结合粒子序列帧实现Unity中的体积云效果。通过MatCap光照采样和粒子系统的TextureSheetAnimation,实现了云层的动态变化。Shader分为边缘光和主体光照计算两个Pass,利用RenderTexture动态捕捉场景光照和相机角度变化,以达到自然的过渡效果。
摘要由CSDN通过智能技术生成

d729ef498ec609091d8b78a01497c5dd.png

最近看到一个效果还不错的体积云,了解了下其实现原理,将其实现思路做一个简单的整理和记录,并重写该Shader
原始效果图:

a054fb1fdba56afa24481cb0182f2f86.png


该效果来自名为CloudPuff的Unity资源包中示例场景截图
实现的主要思路为:

  • 使用MatCap对预先存储的光照进行采样
    MatCap是使用存储了视空间下不同法线方向的球形光照纹理,在计算光照时直接对纹理进行采样,运算效率高,但也有其局限,只能适用于单一材质的模型,并且无法对光源位置和相机位置的变化做出响应。MatCap Shader的基本思路是,使用某特定材质球的贴图,作为当前材质的视图空间环境贴图(view-space environment map),来实现具有均匀表面着色的反射材质物体的显示。考虑到物体的所有法线的投影的范围在x(-1,1),y(-1,1),构成了一个圆形,所以MatCap 贴图中存储光照信息的区域是一个圆形。
    关于MatCap的详细原理,可以参考这里和这里
  • 使用粒子的序列图播放实现云层的变化

328f8c47515c38696562dd1f2984e9cf.png


勾选粒子的 TextureSheetAnimation 的选项,Shader中传入云层的序列帧纹理并设置相关参数即可实现云层的序列帧动画

Shader部分
Shder主要分为两部分,一个是边缘光Pass,另一个是主体光照颜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值