主要用于花草树木

用3D的Plane来实现透明的例子:

给Plane先赋予一个带alpha通道的透明图片,但是此图片此时是看不出来是透明的,如下:

现在我们要做的就是显示透明的效果:现在就用到了alphatest了,

表面着色器实现代码:

Shader "Custom/Plane" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_alphaValue("alphavalue",range(,))=0.3
}
SubShader {
Tags { "Queue"="Transparent" "RenderType"="Transparent" }
LOD
alphatest greater [_alphaValue] CGPROGRAM
#pragma surface surf Lambert sampler2D _MainTex; struct Input {
float2 uv_MainTex;
}; void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}

顶点片段着色器实现代码:

Shader "Custom/testalphatest" {
Properties {
_Color("Base COlor",Color)=(,,,)
_MainTex ("Base (RGB)", 2D) = "white" {}
_alphaValue("alphavalue",range(,))=0.5
}
SubShader {
Tags { "queue"="transparent" "RenderType"="Transparent" }
LOD Pass
{
alphatest greater [_alphaValue]
Name "simple"
Cull off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4 _Color;
sampler2D _MainTex; struct v2f
{
float4 pos:POSITION;
float4 uv:TEXCOORD0;
}; v2f vert(appdata_base v)
{
v2f o;
o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
o.uv=v.texcoord;
return o;
} half4 frag(v2f i):color
{
float2 uv=i.uv.xy;
half4 c=tex2D(_MainTex,uv)*_Color;
return c;
} ENDCG
}
}
}

还有一个步骤就是:在Unity的PC平台下的Play settings下,把Use Direct3D 11*给关闭了就可以了!有可能是dx11不支持alphatest的缘故吧!

最终效果:

对象为cube时的效果:

调整为less时,显示的效果

4、shader透明测试(AlphaTest)的更多相关文章

  1. Unity——基于ShaderLab实现光照系统

    这篇主要总结Unity中ShaderLab的着色器代码实现总结,需要有一定图形学基础和ShaderLab基础: 一.着色器 1.顶点片元着色器 分顶点着色器和片元着色器,对应渲染管线的顶点变换和片元着 ...

  2. 学习游戏渲染(Shader)的用处

     本文在讨论的主题并不限于具体引擎或具体语言,为了说明方便可能会提到Unity的一些内容. 最近渐渐发现很多从事游戏开发的新人,对于学会写Shader似乎总是有几分神往,但一般入了门或者学了一段时间后 ...

  3. Unity3d Shader开发(三)Pass(Alpha testing )

    透明度测试是阻止像素被写到屏幕的最后机会. 在最终渲染出的颜色被计算出来之后,可选择通过将颜色的透明度值和一个固定值比较.如果比较的结果失败,像素将不会被写到显示输出中. Syntax 语法 Alph ...

  4. Unity3D学习笔记(三十五):Shader着色器(2)- 顶点片元着色器

    Alpha测试 AlphaTest Great:大于 AlphaTest Less:小于 AlphaTest Equal:等于 AlphaTest GEqual:大于等于 AlphaTest LEqu ...

  5. Unity Shader入门精要学习笔记 - 第17章 Unity的表面着色器探秘

    转自 冯乐乐的<Unity Shader 入门精要> 2010年的Unity 3 中,Surface Shader 出现了. 表面着色器的一个例子. 我们先做如下准备工作. 1)新建一个场 ...

  6. [osg][原创]osg多屏幕显示,会出现透明需要设置的问题

    同事由于新加了一个屏幕,本来用 osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer(); viewer->s ...

  7. Vertex and FragmentShader顶点与片段着色器

    一.顶点与片段着色器简介 Vertex and FragmentShader:最强大的Shader类型,也是本系列的重点,下文中简称V&FShader,属于可编程渲染管线.使用的是CG/HLS ...

  8. Unity——ShaderLab基础

    1.格式 Shader "Custom/MyShader" //命名+右键创建shader路径 { //属性必须在代码里声明才能使用 Properties{ //属性,会出现在in ...

  9. zz Must read

    http://www.opengpu.org/forum.php?mod=viewthread&tid=965&extra=page%3D1 游戏引擎剖析(Game Engine An ...

随机推荐

  1. NodeJS学习日记--环境配置及项目初始化

    在node.js官网下载nodejs安装包 安装完成后打开控制台,输入 npm -version 如果正确显示npm版本则安装成功. 创建项目之前先要安装以下全局扩展模块 npm install -g ...

  2. 【题解】洛谷P1313 [NOIP2011TG]计算系数(组合+二次项展开)

    洛谷P1313:https://www.luogu.org/problemnew/show/P1313 思路 本题就是考查二次项展开 根据定理有:(ax+by)k=∑ki=0Cik*aibk-ixiy ...

  3. wordpress建设的企业网站

    wordpress企业站 http://ahlajd.demo.phpfangzhan.com 后台焦点图实现:

  4. 金s办公软件web前端笔试题

    1. var arr = []; arr['a'] = 1; console.log(arr.length); // A arr['4'] = 2; console.log(arr.length); ...

  5. linux上部署redis实现与Python上的redis交互(有坑)

    1.概念 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 2.linux安装redis 2.1yum源安装redis(不推荐) #前提得配置好阿里 ...

  6. JavaScript基础-----数组(Array)

    1.JavaScript 中创建数组的方法: (1).使用Array构造函数: var arr = new Array(); //创建一个空数组 var arr = new Array(5); //传 ...

  7. display:flex 布局之 骰子

    代码部分 html <body> <div class="box"> <div class="a a1"> <span ...

  8. 【PTA 天梯赛训练】六度空间(广搜)

    “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论.这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够 ...

  9. IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/app

    web.xml初始化spring容器出错 org.springframework.beans.factory.BeanDefinitionStoreException: IOException par ...

  10. pywinauto 使用

    Pywinauto是基于Python开发的,用于自动化测试的脚本模块,主要操作于Windows标准图形界面.它可以允许你很容易的发送鼠标.键盘动作给Windows的对话框和控件.  其中,最主要功能为 ...