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

相关推荐
_ZHOURUI_H_12 小时前
Unity TCP底层极限拆解:粘包、半包、CRC、序列号、双缓冲到底怎么一起工作的?
网络·网络协议·tcp/ip·游戏·unity·游戏引擎·游戏开发
KindSuper_liu15 小时前
Unity 游戏网络基础:从 TCP、UDP 到 HTTP、TLS 与 Best HTTP
网络·游戏·unity
qq_1702647516 小时前
unity里GameObject和Texture的内存归属
java·unity·游戏引擎
weixin_4046793118 小时前
godot + vscode ai开发
ide·vscode·编辑器·游戏引擎·godot
还是大剑师兰特1 天前
Unity3D(Unity)完整详细介绍
unity·游戏引擎
ellis19702 天前
u3d插件xLua[七]例6 Coroutine
unity
还是大剑师兰特2 天前
Unity 从零搭建简易3D场景(新手分步教程)
3d·unity·游戏引擎
神码编程2 天前
【Unity】TankBattle联机坦克大战(三)创建关卡(生成地块)
unity·游戏引擎·帧同步·坦克大战
淡海水2 天前
C#与常用数据结构源码剖析-全篇导览
开发语言·数据结构·unity·面试·职场和发展·c#
SNAKEpc121382 天前
OpenGL(十三)- Mip贴图
c语言·c++·图形渲染·贴图