Unity3D中简单地应用玻璃材质
2014-09-16 18:35
288 查看
最近在学习Unity3D。发现Unity3D中的玻璃效果要用到Shader才能实现。虽然简单学习了一下能看懂Shader的结构了,但要自己写一个实现自己想要的效果的Shader暂时还无能为力。这个要么需要十足的经验,要么具有相当的抽象思维。(可惜这两个我都没有…………)
随后在网上找了一个可以可以实现玻璃材质的shader。
源博客是在:http://www.cnblogs.com/yb_lin/archive/2011/04/21/2023475.html
首先新建一个shader,代码如下:
然后新建一个材质
之后在材质的地方选择
Glass也就是之前Shader中第一行显示的名字
然后在PS中创建一个半透明的纹理。
保存为psd或者png格式都可以。之后在Unity3D中选择Texture,选择刚才创建的图片。
然后就能实现一个基本的玻璃效果了:
更高级的玻璃效果诸如加入反射啊,折射啊,还需要以后慢慢来学习。不过一步一个脚印,总有学会的一天~
随后在网上找了一个可以可以实现玻璃材质的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,选择刚才创建的图片。
然后就能实现一个基本的玻璃效果了:
更高级的玻璃效果诸如加入反射啊,折射啊,还需要以后慢慢来学习。不过一步一个脚印,总有学会的一天~
相关文章推荐
- Unity3d资源反编译. AssetBundle格式简析+简单应用+爬坑
- 用Unity3D和VuforiaSDK简单做AR应用(入门)
- Unity3d 一个简单的玻璃效果实现!
- Unity3d-protobuf简单应用
- A星寻路算法在unity3d中的实现与简单应用
- 关于A*寻路在Unity3D里面的简单应用
- 简单的玻璃材质导航栏
- 暴风魔镜SDK在Unity3D 5.6中的简单应用
- SQLSERVER扩展存储过程XP_CMDSHELL的简单应用
- HTA的简单应用
- Tomcat4/5连接池的设置及简单应用示例
- Tomcat4/5连接池的设置及简单应用示例
- J2ME应用实例——一个简单的计算器实现(附源代码)
- process类的简单应用
- 一个简单的定时器应用: VarTimer (java)
- Tomcat4/5连接池的设置及简单应用示例
- java(j2ee)应用-简单自定义标签开发全过程----之一(Inber)——JAVA夜未眠
- 有行统计项和列统计项的行列转换,以及EXCEL导入SQL的简单应用
- EJB之无状态会话Bean简单应用-学习与实践(Inber原作)
- EJB中JNDI的逻辑名的使用及部署_{EJB之无状态会话Bean简单应用-学习与实践}续(inber原作)