1 Shader "Tessellation/Bumped Specular (displacement)" {
2 Properties {
3     _Color (
"Main Color", Color) = (1,1,1,1)
4     _SpecColor (
"Specular Color", Color) = (0.5, 0.5, 0.5, 1)
5     _Shininess (
"Shininess", Range (0.03, 1)) = 0.078125
6     _Parallax (
"Height", Range (0.0, 1.0)) = 0.5
7     _MainTex (
"Base (RGB) Gloss (A)", 2D) = "white" {}
8     _BumpMap (
"Normalmap", 2D) = "bump" {}
9     _ParallaxMap (
"Heightmap (A)", 2D) = "black" {}
10
11     _EdgeLength (
"Edge length", Range(3,50)) = 10
12 }
13 SubShader {
14     Tags {
"RenderType"="Opaque" }
15     LOD
800
16     
17 CGPROGRAM
18 #pragma surface surf BlinnPhong addshadow vertex:disp tessellate:tessEdge
19 #include
"Tessellation.cginc"
20
21 struct
appdata {
22     float4 vertex : POSITION;
23     float4 tangent : TANGENT;
24     float3 normal : NORMAL;
25     float2 texcoord : TEXCOORD0;
26     float2 texcoord1 : TEXCOORD1;
27     float2 texcoord2 : TEXCOORD2;
28 };

29
30 float
_EdgeLength;
31 float
_Parallax;
32
33 float4 tessEdge (appdata v0, appdata v1, appdata v2)
34 {
35     
return UnityEdgeLengthBasedTessCull (v0.vertex, v1.vertex, v2.vertex, _EdgeLength, _Parallax * 1.5f);
36 }
37
38 sampler2D _ParallaxMap;

39
40 void
disp (inout appdata v)
41 {
42     
float d = tex2Dlod(_ParallaxMap, float4(v.texcoord.xy,0,0)).a * _Parallax;
43     v.vertex.xyz += v.normal * d;
44 }
45
46 sampler2D _MainTex;
47 sampler2D _BumpMap;
48 fixed4 _Color;
49 half _Shininess;

50
51 struct
Input {
52     float2 uv_MainTex;
53     float2 uv_BumpMap;
54 };

55
56 void
surf (Input IN, inout SurfaceOutput o) {
57     fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
58     o.Albedo = tex.rgb * _Color.rgb;
59     o.Gloss = tex.a;
60     o.Alpha = tex.a * _Color.a;
61     o.Specular = _Shininess;
62     o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
63 }
64 ENDCG
65 }
66
67 FallBack
"Bumped Specular"
68 }


Gõ tìm kiếm nhanh...