学习100个Unity Shader (15) ---透明+双面渲染

文章目录

效果

shader

c 复制代码
Shader "Example/AlphaBlendBothSided"
{
  Properties
  {
    _Color ("Main Tint", Color) = (1, 1, 1, 1)
    _MainTex ("Texture", 2D) = "white" {}
    _AlphaScale ("Alpha Scale", Range(0, 1)) = 1
  }
  SubShader
  {
    Tags {"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"}
    // Pass的先后顺序有影响
    //渲染后面
    Pass
    {
      Tags{"LightMode" = "ForwardBase"}
      Cull Front
	  同透明图混合
    }
    //渲染前面
    Pass
    {
      Tags{"LightMode" = "ForwardBase"}
      Cull Back
      同透明图混合
    }
  }
  Fallback "Transparent/VertexLit"
}

理解

使用透明度混合关闭了深度写入,所以需要两个Pass,一个只渲染背面先执行,另一个后渲染之渲染前面。
Cull <state> 设置 GPU 应该基于多边形相对于摄像机的方向剔除哪些多边形。

参数 功能
state Back 剔除背对摄像机的多边形。这称为背面剔除。这是默认值。
Front 剔除面向摄像机的多边形。这称为正面剔除。使用它可翻转几何体。
Off 不根据面朝的方向剔除多边形。可用于实现特殊效果,如透明对象或双面墙。

Cull 可以写在SubShader下,也可以写在Pass下,作用域不同

参考

《Unity Shader 入门精要》冯乐乐
ShaderLab 命令:Cull

相关推荐
玖玥拾3 小时前
Cocos学习笔记:滚动视图、关卡系统与本地存储
游戏引擎·cocos2d
元气少女小圆丶10 小时前
SenseGlove Nova 2+Unity开发笔记2
笔记·unity·游戏引擎
Oiiouui13 小时前
Godot(4.x): 游戏管理器: Godot 内注入数据处理与总接口实现
游戏·游戏引擎·godot
想不明白的过度思考者15 小时前
Unity学习笔记——虚拟摇杆实现笔记(事件触发器的使用、UGUI 坐标转换)
笔记·学习·unity
魔士于安15 小时前
unity volumefog带各种demo第一人称 wsad 穿墙控制
游戏·unity·游戏引擎·贴图·模型
魔士于安18 小时前
红色文化馆技术文档
前端·unity·游戏引擎·贴图·模型
LONGZETECH18 小时前
Unity 3D工业级教育软件实战:200+无人机装调任务的碰撞检测与交互落地
3d·unity·架构·游戏引擎·无人机·交互·cocos2d
淡海水18 小时前
08-认知篇-对比-injectfix深度解析
unity·c#·热更新·clr·hybrid·injectfix
迪普阳光开朗很健康18 小时前
BepInEx 插件开发文档中文翻译 - 项目分享
unity·bepinex
元气少女小圆丶1 天前
SenseGlove Nova 2+Unity开发笔记1
笔记·学习·unity