Unity Shader Example 18 (Fresnel)
2016-09-18 17:41
459 查看
Shader "Fresnel/Test" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _Fresnel0 ("fresnel0", Float) = 0.1 _Color ("Rim Color", Color) = (1.0, 1.0, 1.0, 1.0) } SubShader { Pass { CGPROGRAM #include "UnityCG.cginc" #pragma vertex vert #pragma fragment frag uniform sampler2D _MainTex; uniform float4 _MainTex_ST; uniform float4 _Color; uniform float _Fresnel0; struct vIN { float4 vertex : POSITION; float3 normal : NORMAL; float2 texcoord : TEXCOORD0; }; struct vOUT { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; float3 viewDir : TEXCOORD1; }; vOUT vert(vIN v) { vOUT o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord; o.viewDir = WorldSpaceViewDir(v.vertex); return o; } float4 frag(vOUT i) : COLOR { float4 col = tex2D(_MainTex, i.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw); fixed3 normViewDir = normalize(i.viewDir); half nDotView = dot(fixed3(0, 1, 0), normViewDir); half fresnel = _Fresnel0 + (1.0 - _Fresnel0) * pow( (1.0 - nDotView ), 5.0); fresnel = max(0.0, fresnel - .1); return lerp(col,_Color, fresnel); } ENDCG } } FallBack "Diffuse" }
相关文章推荐
- Unity Shader Example 13 (边缘 Bloom )
- Unity Shader Example 1 : Texture
- Unity Shader Example 22 (Simulate Projector)
- Unity Shader Example 8 (光照贴图)
- Unity Fresnel Hero(Dota2) Shader
- 【unity shader】高级光照 -- fresnel方程和肥皂泡
- Unity Shader Example 19 (fog)
- Unity Shader Example 26 (Texture2DArray)
- Unity Shader Example 3 (GrabPass捕捉屏幕纹理 )
- Unity Shader Example 20 (Soft particle)
- Unity Shader Example 21 (Highlighting 边缘光)
- Unity Shader Example 24 (人物遮挡透明效果)
- Unity Shader Example 4 (扭曲)
- Unity Shader Example 5 (地形混合)
- Unity Shader Example 12 (Bloom 高光)
- Unity Shader Example 23 (透明物体描边)
- Unity Shader Example 6 (区域变色)
- Unity Shader Example 16 (水面反射)
- Unity Shader Example 2 (流光与模拟光照)
- Unity Shader Example 27 (Noise)