学习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

相关推荐
心前阳光5 小时前
Unity之PhotonServer使用注意
unity·游戏引擎
玖玥拾7 小时前
Cocos学习笔记:关节机制与物理交互
游戏引擎·cocos2d
Mark White8 小时前
行为树(Behavior Tree):从 ROS 机器人到 Unity 游戏 AI 的统一决策范式
游戏·unity·机器人
小贺儿开发10 小时前
Unity UGUI 可视化热区编辑与交互系统
unity·编辑器·游戏引擎·交互·工具·适配·ugui
郝学胜-神的一滴12 小时前
中级OpenGL教程 007:解决背面光照异常高光问题
c++·unity·游戏引擎·three.js·opengl·unreal
RReality12 小时前
【Unity Shader URP】水面效果 实战教程
unity·游戏引擎·图形渲染
游乐码13 小时前
c#基础(七)延迟函数
开发语言·unity·c#·游戏引擎
LONGZETECH13 小时前
Unity 3D+C/S架构无人机数字孪生实训室:破解实训“三高”难题的底层技术实现
c语言·开发语言·3d·unity·架构·无人机
万岳科技系统开发1 天前
外卖系统小程序开发趋势:即时零售与同城配送的融合升级
unity·游戏引擎·零售
十贺1 天前
【Unity开发字典】分包、黏包基本概念和处理逻辑实现
unity·游戏引擎