Unity3D中简单地应用玻璃材质

最近在学习Unity3D。发现Unity3D中的玻璃效果要用到Shader才能实现。虽然简单学习了一下能看懂Shader的结构了,但要自己写一个实现自己想要的效果的Shader暂时还无能为力。这个要么需要十足的经验,要么具有相当的抽象思维。(可惜这两个我都没有…………)

随后在网上找了一个可以可以实现玻璃材质的shader。

源博客是在:http://www.cnblogs.com/yb_lin/archive/2011/04/21/2023475.html

首先新建一个shader,代码如下:

Shader "Glass"
{ 
	Properties
	{
		_MainTex ("Main Texture", 2D) = "white" {}
	}
	Subshader 
	{
		Tags { "Queue" = "Transparent" }
		Pass 
		{
			Cull Off 
			ColorMask RGB
			Blend SrcAlpha OneMinusSrcAlpha 
			CGPROGRAM
			#pragma vertex vert 
			#pragma fragment frag
			#include "UnityCG.cginc" 


			uniform sampler2D _MainTex;
			uniform float _ReflectValue;
			struct vertInput
			{
				float4 vertex : POSITION;
				float3 normal : NORMAL;
				float2 texcoord : TEXCOORD0;
			};
			struct vertOutput 
			{
				float4 pos : POSITION; 
				float2 texcoord : TEXCOORD0;
				float3 reflectVec : TEXCOORD1;
			};  
			vertOutput vert(vertInput i)
			{
				vertOutput o;
<span style="white-space:pre">				</span>//Set position.
				o.pos = mul (UNITY_MATRIX_MVP, i.vertex);  
<span style="white-space:pre">				</span>//Set texcoord.
				o.texcoord = i.texcoord;
<span style="white-space:pre">				</span>//Calculate normal and position in camera space.
				float3 normWorld = normalize( mul((float3x3)UNITY_MATRIX_IT_MV, i.normal));
				float3 posWorld = mul(UNITY_MATRIX_MV, i.vertex).xyz;
<span style="white-space:pre">				</span>//Set vector used in cubeMap reflection.
				o.reflectVec = reflect(posWorld, normWorld);
				return o;
			}
			half4 frag( vertOutput i ) : COLOR
			{
<span style="white-space:pre">				</span>//Get colors of MainTexture and AlphaTexture.
				half4 colorTex = tex2D(_MainTex, i.texcoord);
				return colorTex;
			}
			ENDCG
		}
	}
	SubShader {
		Tags { "Queue" = "Transparent" }
		Pass {
			Cull Off 
			ColorMask RGB
			Blend SrcAlpha OneMinusSrcAlpha 
			SetTexture [_MainTex] { combine texture }
		}
	}
}

然后新建一个材质



之后在材质的地方选择




Glass也就是之前Shader中第一行显示的名字

然后在PS中创建一个半透明的纹理。



保存为psd或者png格式都可以。之后在Unity3D中选择Texture,选择刚才创建的图片。



然后就能实现一个基本的玻璃效果了:



更高级的玻璃效果诸如加入反射啊,折射啊,还需要以后慢慢来学习。不过一步一个脚印,总有学会的一天~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值