自己写Shader—【shader的几种制作思路】

制作二维效果时:

  • 可以对UI组件(Image)上挂载新的shader材质来实现效果。注意:需要写shader时对UI做一些特殊支持【否则一些UI的特性会覆盖掉,例如mask遮挡无效等。】 可以提取unity默认UI/Default的shader内容来修改。
  • 可以通过屏幕后效的方式来实现效果。

方式:

  1. 相机挂载脚本,实现OnRenderImage(RenderTexture source, RenderTexture destination)函数。在函数里对shader赋值和对纹理的计算等。
  2. 直接通过shader的GrabPass抓取当前屏幕,直接在shader中处理实现效果。
    注意:
    通过后效的方式实现的效果一般都是大范围例如全屏的效果。
  • 可以通过shader输出一个渲染纹理,将此渲染纹理来赋给RawImage达到效果。

方式:
可以将shader的第一个pass作为画布,即return fixed4(1,1,1,1);
通过在c#脚本里不断调用Graphics.Blit()方法,将通过此shader计算后的结果赋值给新的渲染纹理中,使用此纹理即可。

注意:在对二维效果制作shader时,基本上全是渲染到了一个面片的模型上,即只有四个顶点的平面,这就决定了,在vertex着色器中,可操作空间小(因为只有四个顶点,没办法去插值等),绝大多数是在片元着色器中做一些插值计算的。注意片元的差值计算问题,不要用=符号尽量使用<>来判断边界

  • 使用三维来模拟二维效果,即通过改变模型的顶点着色器,实现效果,将镜头打到合适的视角来实现二维效果。

制作3d效果:

3d没什么好说的了,shader学习基本上都是3d的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值