Unity ShaderGraph教程——进阶shader(水面、积雪,数字线框)

1.水面(一)

公式:场景深度 节点深度 — 屏幕空间位置的W向量 = 半透明物体与不透明物体的相交边缘

原理:场景深度 节点深度包含透明像素,屏幕空间w向量不包含透明像素。

注意:需要在UniversalRP-xxxQuality inspector面板将Depth texture选项打开,才能读取深度值。

(1)片元着色器部分:

(2)顶点着色器部分

 效果:

2.水面(二) 

实现效果:水面光滑程度、水下物体以及阴影扭曲效果

(1)光滑程度

简单的通过一个float参数控制光滑程度

 (2)扭曲效果

        将屏幕上颜色和水面颜色混合,使场景中已经被渲染的不透明物体屏幕坐标产生一定的扭曲,跟当前颜色合成后模拟折射效果。

注意:需要用到scence color节点需要在UniversalRP-xxxQuality inspector面板将不透明texture的对勾打开

scence color和原基础颜色lerp,混合后已经具有透明度数值,所以原透明度不需要再单独输出。

3.积雪

        向量A和向量B点乘,Dot(A,B)= |A|·|B|·CosQ,计算下雪方向A和承载雪的平面B的点乘,根据差值判断是否可以积雪。

normal vector这个节点是当前这个顶点的法线方向转换到世界空间里面的向量

4.数字线框

5.shader实现帧动画

 行(row)获取:row = index(元素索引)/ n

 列(col)获取 :col = index - (row -1) * m

U的偏移: uOffset = col * 1/m

V的偏移: vOffset = 1-(row+1)/n

将计算出的动态帧率index替换掉定值frameindex,实现动态播放帧动画。

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值