写在前面:写shader写累了就写写博客吧,每天都是充满bug的一天> <
使用版本:Unity3D 2019.4 (LTS) (LTS意思是长期支持,尽量选择LTS版本,兼容性比较好)
效果示意
Inspector
Glass
注:所有Texture均来自冯乐乐《UnityShader入门精要》项目配套源码1
代码示意
Glass.shader
1
Shader "Glass"
{
Properties
{
_BumpMap("Normal Map",2D) = "bump"{
}
_Distortion("Distortion",range(0,100)) = 10
//折射系数
_RefractAmount("Refract Amount",range(0,1)) = 1
[KeywordEnum(Cubemap, MatCap)] _Reflect("Reflect", Float) = 0
_Cubemap("Environment Map",cube) = "_Skybox"{
}
}
SubShader
{
Tags {
"RenderType" = "Opaque" "Queue" = "Transparent" "LightMode" = "Always"}
// GrabPass{"_RefractionTex"}
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _REFLECT_CUBEMAP _REFLECT_MATCAP
#include "UnityCG.cginc"
#include "Lighting.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float3 normal:NORMAL;
float4 tangent:TANGENT;
};
struct v2f
{
float2 uv : TEXCOORD0;