Bez popisu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SpeedTree7.shader 8.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. Shader "Universal Render Pipeline/Nature/SpeedTree7"
  2. {
  3. Properties
  4. {
  5. _Color("Main Color", Color) = (1,1,1,1)
  6. _HueVariation("Hue Variation", Color) = (1.0,0.5,0.0,0.1)
  7. _MainTex("Base (RGB) Trans (A)", 2D) = "white" {}
  8. _DetailTex("Detail", 2D) = "black" {}
  9. _BumpMap("Normal Map", 2D) = "bump" {}
  10. _Cutoff("Alpha Cutoff", Range(0,1)) = 0.333
  11. [MaterialEnum(Off,0,Front,1,Back,2)] _Cull("Cull", Int) = 2
  12. [MaterialEnum(None,0,Fastest,1,Fast,2,Better,3,Best,4,Palm,5)] _WindQuality("Wind Quality", Range(0,5)) = 0
  13. }
  14. SubShader
  15. {
  16. Tags
  17. {
  18. "Queue" = "Geometry"
  19. "IgnoreProjector" = "True"
  20. "RenderType" = "Opaque"
  21. "DisableBatching" = "LODFading"
  22. "RenderPipeline" = "UniversalPipeline"
  23. "UniversalMaterialType" = "SimpleLit"
  24. }
  25. LOD 400
  26. Cull [_Cull]
  27. Pass
  28. {
  29. Name "ForwardLit"
  30. Tags { "LightMode" = "UniversalForward" }
  31. AlphaToMask On
  32. HLSLPROGRAM
  33. #pragma vertex SpeedTree7Vert
  34. #pragma fragment SpeedTree7Frag
  35. #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
  36. #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
  37. #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
  38. #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
  39. #pragma multi_compile _ LOD_FADE_CROSSFADE
  40. #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION
  41. #pragma multi_compile_vertex LOD_FADE_PERCENTAGE
  42. #pragma multi_compile_fragment _ DEBUG_DISPLAY
  43. #pragma multi_compile_fragment _ _LIGHT_COOKIES
  44. #pragma multi_compile _ _LIGHT_LAYERS
  45. #pragma multi_compile _ _FORWARD_PLUS
  46. #pragma multi_compile _ EVALUATE_SH_MIXED EVALUATE_SH_VERTEX
  47. #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
  48. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
  49. #pragma multi_compile_fog
  50. #pragma multi_compile_instancing
  51. #pragma instancing_options renderinglayer assumeuniformscaling maxcount:50
  52. #pragma shader_feature_local GEOM_TYPE_BRANCH GEOM_TYPE_BRANCH_DETAIL GEOM_TYPE_FROND GEOM_TYPE_LEAF GEOM_TYPE_MESH
  53. #pragma shader_feature_local EFFECT_BUMP
  54. #pragma shader_feature_local EFFECT_HUE_VARIATION
  55. #define ENABLE_WIND
  56. #define VERTEX_COLOR
  57. #include "SpeedTree7Input.hlsl"
  58. #include "SpeedTree7Passes.hlsl"
  59. ENDHLSL
  60. }
  61. Pass
  62. {
  63. Name "SceneSelectionPass"
  64. Tags{"LightMode" = "SceneSelectionPass"}
  65. HLSLPROGRAM
  66. #pragma vertex SpeedTree7VertDepth
  67. #pragma fragment SpeedTree7FragDepth
  68. #pragma multi_compile_instancing
  69. #pragma instancing_options assumeuniformscaling maxcount:50
  70. #pragma shader_feature_local GEOM_TYPE_BRANCH GEOM_TYPE_BRANCH_DETAIL GEOM_TYPE_FROND GEOM_TYPE_LEAF GEOM_TYPE_MESH
  71. #define ENABLE_WIND
  72. #define DEPTH_ONLY
  73. #define SCENESELECTIONPASS
  74. #include "SpeedTree7Input.hlsl"
  75. #include "SpeedTree7Passes.hlsl"
  76. ENDHLSL
  77. }
  78. Pass
  79. {
  80. Name "ShadowCaster"
  81. Tags{"LightMode" = "ShadowCaster"}
  82. ColorMask 0
  83. HLSLPROGRAM
  84. #pragma vertex SpeedTree7VertDepth
  85. #pragma fragment SpeedTree7FragDepth
  86. #pragma multi_compile _ LOD_FADE_CROSSFADE
  87. #pragma multi_compile_vertex LOD_FADE_PERCENTAGE
  88. #pragma multi_compile_instancing
  89. #pragma instancing_options assumeuniformscaling maxcount:50
  90. #pragma shader_feature_local GEOM_TYPE_BRANCH GEOM_TYPE_BRANCH_DETAIL GEOM_TYPE_FROND GEOM_TYPE_LEAF GEOM_TYPE_MESH
  91. #define ENABLE_WIND
  92. #define DEPTH_ONLY
  93. #define SHADOW_CASTER
  94. // -------------------------------------
  95. // Universal Pipeline keywords
  96. // This is used during shadow map generation to differentiate between directional and punctual light shadows, as they use different formulas to apply Normal Bias
  97. #pragma multi_compile_vertex _ _CASTING_PUNCTUAL_LIGHT_SHADOW
  98. #include "SpeedTree7Input.hlsl"
  99. #include "SpeedTree7Passes.hlsl"
  100. ENDHLSL
  101. }
  102. Pass
  103. {
  104. Name "GBuffer"
  105. Tags{"LightMode" = "UniversalGBuffer"}
  106. HLSLPROGRAM
  107. #pragma target 4.5
  108. // Deferred Rendering Path does not support the OpenGL-based graphics API:
  109. // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
  110. #pragma exclude_renderers gles3 glcore
  111. #pragma vertex SpeedTree7Vert
  112. #pragma fragment SpeedTree7Frag
  113. #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
  114. //#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
  115. //#pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
  116. #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
  117. #pragma multi_compile _ LOD_FADE_CROSSFADE
  118. #pragma multi_compile_vertex LOD_FADE_PERCENTAGE
  119. #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
  120. #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
  121. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
  122. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl"
  123. #pragma multi_compile_instancing
  124. #pragma instancing_options renderinglayer assumeuniformscaling maxcount:50
  125. #pragma shader_feature_local GEOM_TYPE_BRANCH GEOM_TYPE_BRANCH_DETAIL GEOM_TYPE_FROND GEOM_TYPE_LEAF GEOM_TYPE_MESH
  126. #pragma shader_feature_local EFFECT_BUMP
  127. #pragma shader_feature_local EFFECT_HUE_VARIATION
  128. #define ENABLE_WIND
  129. #define VERTEX_COLOR
  130. #define GBUFFER
  131. #include "SpeedTree7Input.hlsl"
  132. #include "SpeedTree7Passes.hlsl"
  133. ENDHLSL
  134. }
  135. Pass
  136. {
  137. Name "DepthOnly"
  138. Tags{"LightMode" = "DepthOnly"}
  139. ColorMask R
  140. HLSLPROGRAM
  141. #pragma vertex SpeedTree7VertDepth
  142. #pragma fragment SpeedTree7FragDepth
  143. #pragma multi_compile _ LOD_FADE_CROSSFADE
  144. #pragma multi_compile_vertex LOD_FADE_PERCENTAGE
  145. #pragma multi_compile_instancing
  146. #pragma instancing_options assumeuniformscaling maxcount:50
  147. #pragma shader_feature_local GEOM_TYPE_BRANCH GEOM_TYPE_BRANCH_DETAIL GEOM_TYPE_FROND GEOM_TYPE_LEAF GEOM_TYPE_MESH
  148. #define ENABLE_WIND
  149. #define DEPTH_ONLY
  150. #include "SpeedTree7Input.hlsl"
  151. #include "SpeedTree7Passes.hlsl"
  152. ENDHLSL
  153. }
  154. // This pass is used when drawing to a _CameraNormalsTexture texture
  155. Pass
  156. {
  157. Name "DepthNormals"
  158. Tags{"LightMode" = "DepthNormals"}
  159. HLSLPROGRAM
  160. #pragma vertex SpeedTree7VertDepthNormal
  161. #pragma fragment SpeedTree7FragDepthNormal
  162. #pragma multi_compile _ LOD_FADE_CROSSFADE
  163. #pragma multi_compile_vertex LOD_FADE_PERCENTAGE
  164. #pragma multi_compile_instancing
  165. #pragma instancing_options assumeuniformscaling maxcount:50
  166. #pragma shader_feature_local GEOM_TYPE_BRANCH GEOM_TYPE_BRANCH_DETAIL GEOM_TYPE_FROND GEOM_TYPE_LEAF GEOM_TYPE_MESH
  167. #pragma shader_feature_local EFFECT_BUMP
  168. #define ENABLE_WIND
  169. #include "SpeedTree7Input.hlsl"
  170. #include "SpeedTree7Passes.hlsl"
  171. ENDHLSL
  172. }
  173. }
  174. Dependency "BillboardShader" = "Universal Render Pipeline/Nature/SpeedTree7 Billboard"
  175. FallBack "Hidden/Universal Render Pipeline/FallbackError"
  176. CustomEditor "SpeedTreeMaterialInspector"
  177. }