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

相关推荐
mxwin12 小时前
unity shader中 ddx ddy是什么
unity·游戏引擎·shader
郝学胜-神的一滴15 小时前
[简化版 GAMES 101] 计算机图形学 08:三角形光栅化上
c++·unity·游戏引擎·godot·图形渲染·opengl·unreal
nnsix15 小时前
Unity ILRuntime 笔记
unity·游戏引擎
nnsix17 小时前
Unity API 兼容的 .NET Standard 2.1 和 .NET Framework 区别
unity·游戏引擎·.net
mxwin17 小时前
Unity Shader 制作半透明物体 使用多Pass提前写入深度的方式 避免穿模
unity·游戏引擎
nnsix19 小时前
Unity HybridCLR 笔记
笔记·unity·游戏引擎
nnsix20 小时前
Unity Addressables 笔记
unity·游戏引擎
RReality20 小时前
【Unity Shader URP】视差贴图 实战教程
ui·平面·unity·游戏引擎·图形渲染·贴图
hele_two1 天前
VS Code + CMake 调用 SDL2 & SDL2_image 完整编译教程(Windows 平台)
c++·windows·vscode·图形渲染
hele_two1 天前
SDL2高效画实心圆的算法(一)
c++·算法·图形渲染