视差贴图(Parallax Diffuse)

作者:追风剑情 发布于:2018-12-13 20:59 分类:Shader

shader代码
DefaultResourcesExtra文件夹下
Alpha-Parallax.shader

  1. // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
  2.  
  3. Shader "Legacy Shaders/Transparent/Parallax Diffuse" {
  4. Properties {
  5. _Color ("Main Color", Color) = (1,1,1,1)
  6. _Parallax ("Height", Range (0.005, 0.08)) = 0.02
  7. _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
  8. _BumpMap ("Normalmap", 2D) = "bump" {}
  9. _ParallaxMap ("Heightmap (A)", 2D) = "black" {}
  10. }
  11.  
  12. SubShader {
  13. Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
  14. LOD 500
  15.  
  16. CGPROGRAM
  17. #pragma surface surf Lambert alpha:fade
  18.  
  19. sampler2D _MainTex;
  20. sampler2D _BumpMap;
  21. sampler2D _ParallaxMap;
  22. fixed4 _Color;
  23. float _Parallax;
  24.  
  25. struct Input {
  26. float2 uv_MainTex;
  27. float2 uv_BumpMap;
  28. float3 viewDir;
  29. };
  30.  
  31. void surf (Input IN, inout SurfaceOutput o) {
  32. //计算视差偏移
  33. half h = tex2D (_ParallaxMap, IN.uv_BumpMap).w;
  34. float2 offset = ParallaxOffset (h, _Parallax, IN.viewDir);
  35. IN.uv_MainTex += offset;
  36. IN.uv_BumpMap += offset;
  37.  
  38. fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
  39. o.Albedo = c.rgb;
  40. o.Alpha = c.a;
  41. o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
  42. }
  43. ENDCG
  44. }
  45.  
  46. FallBack "Legacy Shaders/Transparent/Bumped Diffuse"
  47. }

UnityCG.cginc

  1. // Calculates UV offset for parallax bump mapping
  2. inline float2 ParallaxOffset( half h, half height, half3 viewDir )
  3. {
  4. h = h * height - height/2.0;
  5. float3 v = normalize(viewDir);
  6. v.z += 0.42;
  7. return h * (v.xy / v.z);
  8. }


工程截图

11111.png

22222.png

效果截图

Scene窗口

3333.png

Game窗口

4444.png

调整法线贴图参数

6666.png

7777.png

素材图

555.png

Normalmap.png

Heightmap.png

标签: Shader

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号