InTerra_Diffuse-FirstPass.shader 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. Shader "InTerra/Built-in/Diffuse/Terrain (Diffuse With Features)"
  2. {
  3. Properties{
  4. [HideInInspector] _MainTex("BaseMap (RGB)", 2D) = "white" {}
  5. [HideInInspector] _Color("Main Color", Color) = (1,1,1,1)
  6. [HideInInspector] _TerrainHolesTexture("Holes Map (RGB)", 2D) = "white" {}
  7. _HT_distance("Distance", vector) = (3,10,0,25)
  8. _HT_distance_scale("Scale", Range(0,0.5)) = 0.25
  9. _HT_cover("Cover strenght", Range(0,1)) = 0.6
  10. _HeightTransition("Height blending Sharpness", Range(0,60)) = 50
  11. _Distance_HeightTransition("Distance Height blending Sharpness ", Range(0,60)) = 10
  12. _TriplanarSharpness("Triplanar Sharpness", Range(4,10)) = 9
  13. _TerrainColorTintTexture("Color Tint Texture", 2D) = "white" {}
  14. _TerrainColorTintStrenght("Color Tint Strenght", Range(1, 0)) = 0
  15. _TerrainNormalTintTexture("Additional Normal Texture", 2D) = "bump" {}
  16. _TerrainNormalTintStrenght("Additional Normal Strenght", Range(0, 1)) = 0.0
  17. _TerrainNormalTintDistance("Additional Normal Distance", vector) = (3,10,0,25)
  18. _MipMapFade("", vector) = (3,15,0,35)
  19. _MipMapLevel("", Float) = 0
  20. [HideInInspector] _TerrainSizeXZPosY("", Vector) = (0,0,0)
  21. [HideInInspector] _NumLayersCount("", Float) = 0
  22. [HideInInspector] _TriplanarOneToAllSteep("", Float) = 0
  23. _WorldMapping("", Float) = 0
  24. _TwoLayersOnly("", Float) = 0
  25. _HeightmapBlending("", Float) = 1
  26. _Terrain_Parallax("", Float) = 0
  27. _Tracks("", Float) = 0
  28. _GlobalSmoothness("", Range(0,1)) = 0
  29. _TrackAO("", Range(0,1)) = 0.8
  30. _TrackTessallation("", Range(0,1)) = 0
  31. _TrackEdgeNormals("Track Edge Normals", Float) = 2
  32. _TrackDetailTexture("Track Color Detail Texture", 2D) = "white" {}
  33. [Normal] _TrackDetailNormalTexture("Track Normal Detail Texture", 2D) = "bump" {}
  34. _TrackDetailNormalStrenght("Track Detail Normal Strenght", Float) = 1
  35. _TrackNormalStrenght("Track Normal Strenght", Float) = 1
  36. _TrackEdgeSharpness("Track Edge Normals", Range(0.001,4)) = 1
  37. _TrackHeightOffset("Track Heightmap Offset", Range(-1,1)) = 0
  38. _TrackMultiplyStrenght("Track Multiply strenght", Float) = 3
  39. _TrackHeightTransition("Track Normal Strenght", Range(0, 60)) = 20
  40. _ParallaxTrackAffineSteps("", Float) = 3
  41. _ParallaxTrackSteps("", Float) = 5
  42. _Gamma("", Float) = 0
  43. }
  44. SubShader{
  45. Tags {
  46. "Queue" = "Geometry-100"
  47. "RenderType" = "Opaque"
  48. "TerrainCompatible" = "True"
  49. }
  50. CGPROGRAM
  51. #pragma surface surf Lambert vertex:SplatmapVert finalcolor:SplatmapFinalColor finalgbuffer:SplatmapFinalGBuffer finalprepass:SplatmapFinalPrepass addshadow fullforwardshadows
  52. #pragma instancing_options assumeuniformscaling nomatrices nolightprobe nolightmap forwardadd
  53. #pragma multi_compile_fog // needed because finalcolor oppresses fog code generation.
  54. #define _ALPHATEST_ON
  55. #pragma target 3.0
  56. #include "UnityPBSLighting.cginc"
  57. #pragma shader_feature_local __ _TERRAIN_TRIPLANAR_ONE _TERRAIN_TRIPLANAR
  58. #pragma shader_feature_local _TERRAIN_DISTANCEBLEND
  59. #define DIFFUSE
  60. #define INTERRA_TERRAIN
  61. #define TERRAIN_INSTANCED_PERPIXEL_NORMAL
  62. #include "InTerra_DefinedGlobalKeywords.cginc"
  63. #include "InTerra_InputsAndFunctions.cginc"
  64. #include "InTerra_Mixing.cginc"
  65. //============================================================================
  66. //--------------------------------- SURFACE ---------------------------------
  67. //============================================================================
  68. void surf(Input IN, inout SurfaceOutput o) {
  69. half weight;
  70. fixed4 mixedDiffuse;
  71. #ifdef _LAYERS_EIGHT
  72. weight = 1;
  73. #endif
  74. SplatmapMix(IN, weight, mixedDiffuse, o.Normal);
  75. o.Albedo = mixedDiffuse.rgb;
  76. o.Alpha = weight;
  77. }
  78. ENDCG
  79. UsePass "Hidden/Nature/Terrain/Utilities/PICKING"
  80. UsePass "Hidden/Nature/Terrain/Utilities/SELECTION"
  81. }
  82. Dependency "AddPassShader" = "Hidden/InTerra/InTerra-Diffuse-AddPass"
  83. Dependency "BaseMapShader" = "Hidden/InTerra/InTerra-Diffuse-Base"
  84. Dependency "BaseMapGenShader" = "Hidden/InTerra/InTerra-Diffuse-BaseGen"
  85. Dependency "Details0" = "Hidden/TerrainEngine/Details/Vertexlit"
  86. Dependency "Details1" = "Hidden/TerrainEngine/Details/WavingDoublePass"
  87. Dependency "Details2" = "Hidden/TerrainEngine/Details/BillboardWavingDoublePass"
  88. Dependency "Tree0" = "Hidden/TerrainEngine/BillboardTree"
  89. Fallback "Diffuse"
  90. CustomEditor "InTerra.InTerra_TerrainShaderGUI"
  91. }