InTerra_Standard-FirstPass.shader 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. Shader "InTerra/Built-in/Terrain (Standard 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. [HideInInspector] _Control2("_Control", 2D) = "bump" {}
  8. [HideInInspector][linear] _Control1("_Control1", 2D) = "black" {}
  9. _HT_distance("Distance", vector) = (3,10,0,25)
  10. _HT_distance_scale("Scale", Range(0,0.5)) = 0.25
  11. _HT_cover("Cover strenght", Range(0,1)) = 0.6
  12. _HeightTransition("Height blending Sharpness", Range(0,60)) = 50
  13. _Distance_HeightTransition("Distance Height blending Sharpness ", Range(0,60)) = 10
  14. _TriplanarSharpness("Triplanar Sharpness", Range(4,10)) = 9
  15. _ParallaxAffineStepsTerrain("", Float) = 3
  16. _MipMapFade("Parallax MipMap fade", vector) = (3,15,0,35)
  17. _MipMapLevel("Parallax MipMap level", Float) = 0
  18. _TerrainColorTintTexture("Color Tint Texture", 2D) = "white" {}
  19. _TerrainColorTintStrenght("Color Tint Strenght", Range(1, 0)) = 0
  20. _TerrainNormalTintTexture("Additional Normal Texture", 2D) = "bump" {}
  21. _TerrainNormalTintStrenght("Additional Normal Strenght", Range(0, 1)) = 0.0
  22. _TerrainNormalTintDistance("Additional Normal Distance", vector) = (3,10,0,25)
  23. [HideInInspector] _TerrainSizeXZPosY("", Vector) = (0,0,0)
  24. [HideInInspector] _NumLayersCount("", Float) = 0
  25. [HideInInspector] _TriplanarOneToAllSteep("", Float) = 0
  26. _WorldMapping("", Float) = 0
  27. _HeightmapBlending("", Float) = 1
  28. _Terrain_Parallax("", Float) = 0
  29. _Tracks("", Float) = 0
  30. _TwoLayersOnly("", Float) = 0
  31. _GlobalWetness("", Range(0,1)) = 0
  32. _TrackAO("", Range(0,1)) = 0.8
  33. _TrackEdgeNormals("Track Edge Normals", Float) = 2
  34. _TrackDetailTexture("Track Color Detail Texture", 2D) = "white" {}
  35. [Normal] _TrackDetailNormalTexture("Track Normal Detail Texture", 2D) = "bump" {}
  36. _TrackDetailNormalStrenght("Track Detail Normal Strenght", Float) = 1
  37. _TrackNormalStrenght("Track Normal Strenght", Float) = 1
  38. _TrackEdgeSharpness("Track Edge Normals", Range(0.001,4)) = 1
  39. _TrackHeightOffset("Track Heightmap Offset", Range(-1,1)) = 0
  40. _TrackMultiplyStrenght("Track Multiply strenght", Float) = 3
  41. _TrackHeightTransition("Track Normal Strenght", Range(0, 60)) = 20
  42. _ParallaxTrackAffineSteps("", Float) = 3
  43. _ParallaxTrackSteps("", Float) = 5
  44. _Gamma("", Float) = 0
  45. _MipMapMinLod("", Float) = 0
  46. }
  47. SubShader {
  48. Tags {
  49. "Queue" = "Geometry-100"
  50. "RenderType" = "Opaque"
  51. "TerrainCompatible" = "True"
  52. }
  53. CGPROGRAM
  54. #pragma surface surf Standard vertex:SplatmapVert finalcolor:SplatmapFinalColor finalgbuffer:SplatmapFinalGBuffer addshadow fullforwardshadows
  55. #pragma instancing_options assumeuniformscaling nomatrices nolightprobe nolightmap forwardadd
  56. #pragma multi_compile_fog // needed because finalcolor oppresses fog code generation.
  57. #define _ALPHATEST_ON //you can delete this line if you are not using Terrain Hole
  58. #pragma target 3.5
  59. #include "UnityPBSLighting.cginc"
  60. #pragma shader_feature_local __ _TERRAIN_TRIPLANAR_ONE _TERRAIN_TRIPLANAR
  61. #pragma shader_feature_local _TERRAIN_DISTANCEBLEND
  62. #define INTERRA_TERRAIN
  63. #define TERRAIN_INSTANCED_PERPIXEL_NORMAL
  64. #define TERRAIN_SURFACE_OUTPUT SurfaceOutputStandard
  65. #include "InTerra_DefinedGlobalKeywords.cginc"
  66. #include "InTerra_InputsAndFunctions.cginc"
  67. #include "InTerra_Mixing.cginc"
  68. //============================================================================
  69. //--------------------------------- SURFACE ---------------------------------
  70. //============================================================================
  71. void surf (Input IN, inout SurfaceOutputStandard o) {
  72. half weight;
  73. fixed4 mixedDiffuse;
  74. #ifdef _LAYERS_EIGHT
  75. weight = 1;
  76. #endif
  77. SplatmapMix(IN, weight, mixedDiffuse, o.Normal, o.Occlusion, o.Metallic);
  78. o.Albedo = mixedDiffuse.rgb;
  79. o.Alpha = weight;
  80. o.Smoothness = mixedDiffuse.a;
  81. }
  82. ENDCG
  83. UsePass "Hidden/Nature/Terrain/Utilities/PICKING"
  84. UsePass "Hidden/Nature/Terrain/Utilities/SELECTION"
  85. }
  86. Dependency "AddPassShader" = "Hidden/InTerra/InTerra-AddPass"
  87. Dependency "BaseMapShader" = "Hidden/InTerra/InTerra-Base"
  88. Dependency "BaseMapGenShader" = "Hidden/InTerra/InTerra-BaseGen"
  89. Fallback "Nature/Terrain/Diffuse"
  90. CustomEditor "InTerra.InTerra_TerrainShaderGUI"
  91. }