- 资料
- 源视频
- 【技术美术百人计划】图形 3.2 混合模式及剔除_哔哩哔哩_bilibili
- ppt
- https://github.com/sunkai174634/PhotoShopBlendModeUnityShader
- 实例
- notargs.com
- 源视频
- 混合模式
- unity 官方文档
- ShaderLab:混合 - Unity 手册
- 是什么
- 从渲染流程解释
- 从效果上解释
- Blend 就是把两种颜色混在一起。具体就是把某一像素位置原来颜色和将要会上去的颜色,通过某种方式或者算法混在一起,从而实现新的效果。
- 从渲染流程解释
- 公式
- 最终颜色 = Shader计算后的颜色值 * 源因子(SrcFactor) + 累积颜色* 目标因子(DstFactor).
- 累计颜色可以理解为渲染当前物体后面的颜色即GBuffer中的像素(颜色缓冲区中的颜色)。
- factor因子
- 在脚本里会看到的就是 :Blend SrcFactor DstFactor。
- 在脚本里会看到的就是 :Blend SrcFactor DstFactor。
- Blendop操作符
- 最终颜色 = Shader计算后的颜色值 * 源因子(SrcFactor) + 累积颜色* 目标因子(DstFactor).
- 常见的模式
- shader
- unity 官方文档
- 剔除
- 是什么
-
- 剔除是一种优化方式,即不渲染背离观察者的面。
- 剔除是一种优化方式,即不渲染背离观察者的面。
-
- 方式
- 法线剔除
- 也被称为背面消隐,根据法线朝向判断哪个面被剔除掉。可以用来控制是否双面渲染。
- 语法
- 配置
- Cull Off/ Front / Back
- Back 不渲染背离观察者的多边形_(默认值)_,即剔除背面多边形。
- Front 不渲染面向观察者的多边形。用于从里到外翻转对象。
- Off 禁用剔除 - 绘制所有面。用于特殊效果。
- Cull Off/ Front / Back
- 枚举
- 配置
- 面裁剪
- clip函数会将参数小于0直接在片元着色器直接丢弃,常用于制作溶解,裁剪等效果。
- 注意
- clip函数在powerVR的机型上效率低
- clip函数最好使用alphatest队列
- 注意
- 语法:clip();默认会切掉0.5的部分。
- 可以通过预制件_int 控制clip(_int)的裁剪
- code
- code
- 底层逻辑
- 可以通过预制件_int 控制clip(_int)的裁剪
- clip函数会将参数小于0直接在片元着色器直接丢弃,常用于制作溶解,裁剪等效果。
- 法线剔除
- 是什么
- 补充
- 参考链接
- 双面渲染美翻了!零基础也能学会,源码直接带走…_3d渲染双面-CSDN博客
- 双面渲染
-
- 与剔除的底层逻辑相同,通过视线方向(viewdir)dot法线方向(normal)的值判断面相对观察者的朝向
- 实现方法
- 设置材质的 CullMode 为 None,如下图所示:
- 根据朝向判断采用正面还是背面的贴图和颜色
- 当为背面时,翻转法线,才能确保光照正确,如下图所示:
- 设置材质的 CullMode 为 None,如下图所示:
- 应用场景
- 人物衣服、裙子、飘带里外
- 单向透光玻璃
- 阔叶植被(如芭蕉树、椰子树等)
- 布料、纸张等特殊展示场合
-
- 参考链接