TA之路——Shader学习08(如何编写透明的shader)

本文探讨了在Unity中创建透明效果的两种方法:透明度测试和透明度混合。透明度测试可能导致极端的透明结果,边缘锯齿明显。因此,通常采用透明度混合来达到平滑的透明过渡效果。
摘要由CSDN通过智能技术生成

透明度测试得到的效果很极端,要么完全透明,要么完全不透明。得到的效果像是在一个不透明物体上挖了一个洞。而且得到结果的边缘往往参差不齐,会有锯齿。所以一般为了得到更加柔滑的透明效果,就需要使用透明度混合

透明度测试——双面渲染透明效果


Shader "Test/8-3"{
   
	Properties{
   
		_Color("Color",Color)=(1,1,1,1)
		_MainTex("MainTex",2D)="white"{
   }
		_Cutoff("Alpha Cutoff",Range(0,1))=0.5//调整透明度测试时使用的阈值

	}

	SubShader{
   
		//设置渲染队列,透明度测试渲染队列是AlphaTest
		Tags{
   "Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
		Pass{
   
			Tags{
   "LightMode"="ForwardBase"}
			Cull Off  //双面透明效果关键代码,关闭剔除功能
			CGPROGRAM
			#include "Lighting.cginc"
			#pragma vertex vert
			#pragma fragment frag

			fixed4 _Color;
			sampler2D _MainTex;
			float4 _MainTex_ST;
			fixed _Cutoff;

			struct a2v{
   
				float4 vertex:POSITION;
				float3 normal:NORMAL;
				float4 texcoord:TEXCOORD0;
			};

			struct v2f{
   
				float4 pos:SV_POSITION;
				float3 worldNormal:TEXCOORD0;
				float3 worldPos:TEXCOORD1;
				float2 uv:TEXCOORD2;
			};

			v2f vert(a2v v){
   
				v2f o;
				o.pos=UnityObjectToClipPos(v.vertex);
				o.worldNormal
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值