UnityShader

Shder效果制作

数学基础

方块矩阵:行列相等。
矩阵转置:行列元素对换。
(AB)^T = B^TA^T
(AB)^-1 = B^-1A^-1
逆矩阵:MM^-1 = M^-1M = I(可以恢复变换)
M^T^-1 = M^-1^T
正交矩阵:MM^T = M^TM = I 或者 M^T=M^-1
线性变换:矢量加和标量乘运算。
旋转和缩放属于线性变换,平移不是。
旋转定义的顺序是:zxy;
复合变换的约定:先缩放 再旋转 最后平移。
法线变换:非统一缩放需要求解原矩阵的逆转置矩阵。

残影

原理:拷贝mesh然后指定一个shader渐变改变alpha值,这个shader一定要开启混合和关闭深度测试。

边缘高光

原理:1-取相机和点的方向和法线方向点积乘以漫反射。

镜面效果

原理:用当前摄像机渲染一张x取反纹理(RT) 然后输出。

渲染纹理 和 GrabPass

渲染纹理:将一张RT放到摄像机上抓取屏幕。
GrabPass:在shader中通过命令渲染屏幕。
但是渲染纹理效率更加高效,RT分辨率和相机大小可控。GrabPass抓取和屏幕大小一样的图像。

屏幕后处理

依赖unity提供的OnRenderImage(Texture src , Texture dest)
Graphics.Blit(src, dest, material)使用一个shader拷贝src到dest中
src将要处理的屏幕图像,dest处理之后的屏幕图像。

边缘检测

使用卷积计算(需要找到一个合适的卷积核)梯度,梯度越大,越有可能是边缘,然后使用梯度lerp边缘和原图。

高斯模糊

使用卷积(卷积和为1)计算周围像素颜色值然后相加。

Bloom效果

采样图片较亮的部分然后高斯模糊和原图相加。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值