「UnityShader笔记」10.透明度测试

本文详细介绍了Unity中透明度测试的工作原理和实现方式,通过代码逐段分析,解释了Queue、RenderType和IgnoreProjector等关键属性的作用。同时,探讨了为何透明度测试不需要关闭深度写入,因为透明度测试仅剔除不透明度低于阈值的片元,而不会进行颜色混合。最后,提供了完整代码以供参考。
摘要由CSDN通过智能技术生成

Part1.概述

所谓透明度测试,就是根据一个不透明度的阈值,对需要进行透明度测试的物体进行筛选,通过筛选的片元将被正常渲染,否则会被直接剔除

透明度测试并没有真正实现半透明效果,它只是简单剔除了一些不透明度未到达阈值的片元

透明度测试是不需要关闭深度写入的

Part2.代码逐段分析

2.1属性快

    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Main Tex", 2D) = "white" {}
        _Cutoff("Alpha Cutoff", Range(0,1)) = 0.5
    }

在属性块,我们有额外的参数需要定义,即Cutoff参数,它定义了剔除透明片元的阈值,范围在0~1,凡是不透明度小于这个阈值的片元,在透明度测试中将被剔除

Tags{"Queue" = "AlphaTest" "IgnoreProjector" = "True" "RenderType" = "TransparentCutout"}

在写Pass之前,我们需要设定几个重要tags,它们与透明度测试相关

Queue

这个tag设定了渲染顺序队列,Unity中默认的渲染队列如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值