Nessuna descrizione
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.

ParticlesSimpleLit.shader 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. // ------------------------------------------
  2. // Only directional light is supported for lit particles
  3. // No shadow
  4. // No distortion
  5. Shader "Universal Render Pipeline/Particles/Simple Lit"
  6. {
  7. Properties
  8. {
  9. [MainTexture] _BaseMap("Base Map", 2D) = "white" {}
  10. [MainColor] _BaseColor("Base Color", Color) = (1,1,1,1)
  11. _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5
  12. _SpecGlossMap("Specular", 2D) = "white" {}
  13. _SpecColor("Specular", Color) = (1.0, 1.0, 1.0)
  14. _Smoothness("Smoothness", Range(0.0, 1.0)) = 0.5
  15. _BumpScale("Scale", Float) = 1.0
  16. _BumpMap("Normal Map", 2D) = "bump" {}
  17. [HDR] _EmissionColor("Color", Color) = (0,0,0)
  18. _EmissionMap("Emission", 2D) = "white" {}
  19. _SmoothnessSource("Smoothness Source", Float) = 0.0
  20. _SpecularHighlights("Specular Highlights", Float) = 1.0
  21. [ToggleUI] _ReceiveShadows("Receive Shadows", Float) = 1.0
  22. // -------------------------------------
  23. // Particle specific
  24. _SoftParticlesNearFadeDistance("Soft Particles Near Fade", Float) = 0.0
  25. _SoftParticlesFarFadeDistance("Soft Particles Far Fade", Float) = 1.0
  26. _CameraNearFadeDistance("Camera Near Fade", Float) = 1.0
  27. _CameraFarFadeDistance("Camera Far Fade", Float) = 2.0
  28. _DistortionBlend("Distortion Blend", Range(0.0, 1.0)) = 0.5
  29. _DistortionStrength("Distortion Strength", Float) = 1.0
  30. // -------------------------------------
  31. // Hidden properties - Generic
  32. _Surface("__surface", Float) = 0.0
  33. _Blend("__mode", Float) = 0.0
  34. _Cull("__cull", Float) = 2.0
  35. [ToggleUI] _AlphaClip("__clip", Float) = 0.0
  36. [HideInInspector] _BlendOp("__blendop", Float) = 0.0
  37. [HideInInspector] _SrcBlend("__src", Float) = 1.0
  38. [HideInInspector] _DstBlend("__dst", Float) = 0.0
  39. [HideInInspector] _SrcBlendAlpha("__srcA", Float) = 1.0
  40. [HideInInspector] _DstBlendAlpha("__dstA", Float) = 0.0
  41. [HideInInspector] _ZWrite("__zw", Float) = 1.0
  42. [HideInInspector] _AlphaToMask("__alphaToMask", Float) = 0.0
  43. // Particle specific
  44. _ColorMode("_ColorMode", Float) = 0.0
  45. [HideInInspector] _BaseColorAddSubDiff("_ColorMode", Vector) = (0,0,0,0)
  46. [ToggleOff] _FlipbookBlending("__flipbookblending", Float) = 0.0
  47. [ToggleUI] _SoftParticlesEnabled("__softparticlesenabled", Float) = 0.0
  48. [ToggleUI] _CameraFadingEnabled("__camerafadingenabled", Float) = 0.0
  49. [ToggleUI] _DistortionEnabled("__distortionenabled", Float) = 0.0
  50. [HideInInspector] _SoftParticleFadeParams("__softparticlefadeparams", Vector) = (0,0,0,0)
  51. [HideInInspector] _CameraFadeParams("__camerafadeparams", Vector) = (0,0,0,0)
  52. [HideInInspector] _DistortionStrengthScaled("Distortion Strength Scaled", Float) = 0.1
  53. // Editmode props
  54. _QueueOffset("Queue offset", Float) = 0.0
  55. // ObsoleteProperties
  56. [HideInInspector] _FlipbookMode("flipbook", Float) = 0
  57. [HideInInspector] _Glossiness("gloss", Float) = 0
  58. [HideInInspector] _Mode("mode", Float) = 0
  59. [HideInInspector] _Color("color", Color) = (1,1,1,1)
  60. }
  61. HLSLINCLUDE
  62. //Particle shaders rely on "write" to CB syntax which is not supported by DXC
  63. #pragma never_use_dxc
  64. ENDHLSL
  65. SubShader
  66. {
  67. Tags
  68. {
  69. "RenderType" = "Opaque"
  70. "IgnoreProjector" = "True"
  71. "PreviewType" = "Plane"
  72. "PerformanceChecks" = "False"
  73. "RenderPipeline" = "UniversalPipeline"
  74. "UniversalMaterialType" = "SimpleLit"
  75. }
  76. // ------------------------------------------------------------------
  77. // Forward pass.
  78. Pass
  79. {
  80. // Lightmode matches the ShaderPassName set in UniversalRenderPipeline.cs. SRPDefaultUnlit and passes with
  81. // no LightMode tag are also rendered by Universal Render Pipeline
  82. Name "ForwardLit"
  83. Tags
  84. {
  85. "LightMode" = "UniversalForward"
  86. }
  87. // -------------------------------------
  88. // Render State Commands
  89. BlendOp[_BlendOp]
  90. Blend[_SrcBlend][_DstBlend], [_SrcBlendAlpha][_DstBlendAlpha]
  91. ZWrite[_ZWrite]
  92. Cull[_Cull]
  93. AlphaToMask[_AlphaToMask]
  94. HLSLPROGRAM
  95. #pragma target 2.0
  96. // -------------------------------------
  97. // Shader Stages
  98. #pragma vertex ParticlesLitVertex
  99. #pragma fragment ParticlesLitFragment
  100. // -------------------------------------
  101. // Material Keywords
  102. #pragma shader_feature_local _NORMALMAP
  103. #pragma shader_feature_local _RECEIVE_SHADOWS_OFF
  104. #pragma shader_feature_local_fragment _SURFACE_TYPE_TRANSPARENT
  105. #pragma shader_feature_local_fragment _EMISSION
  106. #pragma shader_feature_local_fragment _ _SPECGLOSSMAP _SPECULAR_COLOR
  107. #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA
  108. // -------------------------------------
  109. // Particle Keywords
  110. #pragma shader_feature_local _FLIPBOOKBLENDING_ON
  111. #pragma shader_feature_local _SOFTPARTICLES_ON
  112. #pragma shader_feature_local _FADING_ON
  113. #pragma shader_feature_local _DISTORTION_ON
  114. #pragma shader_feature_local_fragment _ALPHATEST_ON
  115. #pragma shader_feature_local_fragment _ _ALPHAPREMULTIPLY_ON _ALPHAMODULATE_ON
  116. #pragma shader_feature_local_fragment _ _COLOROVERLAY_ON _COLORCOLOR_ON _COLORADDSUBDIFF_ON
  117. // -------------------------------------
  118. // Universal Pipeline keywords
  119. #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
  120. #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
  121. #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS
  122. #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
  123. #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION
  124. #pragma multi_compile_fragment _ _LIGHT_COOKIES
  125. #pragma multi_compile _ _FORWARD_PLUS
  126. #pragma multi_compile _ EVALUATE_SH_MIXED EVALUATE_SH_VERTEX
  127. #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
  128. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
  129. // -------------------------------------
  130. // Unity defined keywords
  131. #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING
  132. #pragma multi_compile_fog
  133. #pragma multi_compile_instancing
  134. #pragma multi_compile_fragment _ DEBUG_DISPLAY
  135. #pragma instancing_options procedural:ParticleInstancingSetup
  136. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  137. // -------------------------------------
  138. // Defines
  139. #define BUMP_SCALE_NOT_SUPPORTED 1
  140. // -------------------------------------
  141. // Includes
  142. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLitInput.hlsl"
  143. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLitForwardPass.hlsl"
  144. ENDHLSL
  145. }
  146. // ------------------------------------------------------------------
  147. // GBuffer pass.
  148. Pass
  149. {
  150. // Lightmode matches the ShaderPassName set in UniversalRenderPipeline.cs. SRPDefaultUnlit and passes with
  151. // no LightMode tag are also rendered by Universal Render Pipeline
  152. Name "GBuffer"
  153. Tags
  154. {
  155. "LightMode" = "UniversalGBuffer"
  156. }
  157. // -------------------------------------
  158. // Render State Commands
  159. ZWrite[_ZWrite]
  160. Cull[_Cull]
  161. HLSLPROGRAM
  162. #pragma target 4.5
  163. // Deferred Rendering Path does not support the OpenGL-based graphics API:
  164. // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
  165. #pragma exclude_renderers gles3 glcore
  166. // -------------------------------------
  167. // Shader Stages
  168. #pragma vertex ParticlesLitGBufferVertex
  169. #pragma fragment ParticlesLitGBufferFragment
  170. // -------------------------------------
  171. // Material Keywords
  172. #pragma shader_feature_local _NORMALMAP
  173. #pragma shader_feature_local_fragment _EMISSION
  174. #pragma shader_feature_local_fragment _ _SPECGLOSSMAP _SPECULAR_COLOR
  175. #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA
  176. #pragma shader_feature_local _RECEIVE_SHADOWS_OFF
  177. // -------------------------------------
  178. // Particle Keywords
  179. //#pragma shader_feature _ _ALPHAPREMULTIPLY_ON _ALPHAMODULATE_ON
  180. #pragma shader_feature_local_fragment _ALPHATEST_ON
  181. #pragma shader_feature_local_fragment _ _COLOROVERLAY_ON _COLORCOLOR_ON _COLORADDSUBDIFF_ON
  182. #pragma shader_feature_local _FLIPBOOKBLENDING_ON
  183. //#pragma shader_feature _SOFTPARTICLES_ON
  184. //#pragma shader_feature _FADING_ON
  185. //#pragma shader_feature _DISTORTION_ON
  186. // -------------------------------------
  187. // Universal Pipeline keywords
  188. #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
  189. //#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
  190. //#pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS
  191. #pragma multi_compile_fragment _ _SHADOWS_SOFT _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
  192. #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
  193. #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
  194. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
  195. // -------------------------------------
  196. // Unity defined keywords
  197. #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING
  198. #pragma multi_compile_instancing
  199. #pragma instancing_options procedural:ParticleInstancingSetup
  200. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  201. //--------------------------------------
  202. // Defines
  203. #define BUMP_SCALE_NOT_SUPPORTED 1
  204. // -------------------------------------
  205. // Includes
  206. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLitInput.hlsl"
  207. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLitGBufferPass.hlsl"
  208. ENDHLSL
  209. }
  210. // ------------------------------------------------------------------
  211. // Depth Only pass.
  212. Pass
  213. {
  214. Name "DepthOnly"
  215. Tags
  216. {
  217. "LightMode" = "DepthOnly"
  218. }
  219. // -------------------------------------
  220. // Render State Commands
  221. ZWrite On
  222. ColorMask R
  223. Cull[_Cull]
  224. HLSLPROGRAM
  225. #pragma target 2.0
  226. // -------------------------------------
  227. // Shader Stages
  228. #pragma vertex DepthOnlyVertex
  229. #pragma fragment DepthOnlyFragment
  230. // -------------------------------------
  231. // Material Keywords
  232. #pragma shader_feature_local _ _ALPHATEST_ON
  233. #pragma shader_feature_local _ _FLIPBOOKBLENDING_ON
  234. #pragma shader_feature_local_fragment _ _COLOROVERLAY_ON _COLORCOLOR_ON _COLORADDSUBDIFF_ON
  235. // -------------------------------------
  236. // Unity defined keywords
  237. #pragma multi_compile_instancing
  238. #pragma instancing_options procedural:ParticleInstancingSetup
  239. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  240. // -------------------------------------
  241. // Includes
  242. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLitInput.hlsl"
  243. #include "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesDepthOnlyPass.hlsl"
  244. ENDHLSL
  245. }
  246. // This pass is used when drawing to a _CameraNormalsTexture texture
  247. Pass
  248. {
  249. Name "DepthNormals"
  250. Tags
  251. {
  252. "LightMode" = "DepthNormals"
  253. }
  254. // -------------------------------------
  255. // Render State Commands
  256. ZWrite On
  257. Cull[_Cull]
  258. HLSLPROGRAM
  259. #pragma target 2.0
  260. // -------------------------------------
  261. // Shader Stages
  262. #pragma vertex DepthNormalsVertex
  263. #pragma fragment DepthNormalsFragment
  264. // -------------------------------------
  265. // Material Keywords
  266. #pragma shader_feature_local _ _NORMALMAP
  267. #pragma shader_feature_local _ _FLIPBOOKBLENDING_ON
  268. #pragma shader_feature_local _ _ALPHATEST_ON
  269. #pragma shader_feature_local_fragment _ _COLOROVERLAY_ON _COLORCOLOR_ON _COLORADDSUBDIFF_ON
  270. // -------------------------------------
  271. // Unity defined keywords
  272. #pragma multi_compile_instancing
  273. #pragma instancing_options procedural:ParticleInstancingSetup
  274. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  275. // -------------------------------------
  276. // Includes
  277. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLitInput.hlsl"
  278. #include "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesDepthNormalsPass.hlsl"
  279. ENDHLSL
  280. }
  281. // ------------------------------------------------------------------
  282. // Scene view outline pass.
  283. Pass
  284. {
  285. Name "SceneSelectionPass"
  286. Tags
  287. {
  288. "LightMode" = "SceneSelectionPass"
  289. }
  290. // -------------------------------------
  291. // Render State Commands
  292. BlendOp Add
  293. Blend One Zero
  294. ZWrite On
  295. Cull Off
  296. HLSLPROGRAM
  297. #define PARTICLES_EDITOR_META_PASS
  298. #pragma target 2.0
  299. // -------------------------------------
  300. // Shader Stages
  301. #pragma vertex vertParticleEditor
  302. #pragma fragment fragParticleSceneHighlight
  303. // -------------------------------------
  304. // Particle Keywords
  305. #pragma shader_feature_local_fragment _ALPHATEST_ON
  306. #pragma shader_feature_local _FLIPBOOKBLENDING_ON
  307. // -------------------------------------
  308. // Unity defined keywords
  309. #pragma multi_compile_instancing
  310. #pragma instancing_options procedural:ParticleInstancingSetup
  311. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  312. // -------------------------------------
  313. // Includes
  314. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLitInput.hlsl"
  315. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesEditorPass.hlsl"
  316. ENDHLSL
  317. }
  318. // ------------------------------------------------------------------
  319. // Scene picking buffer pass.
  320. Pass
  321. {
  322. Name "ScenePickingPass"
  323. Tags
  324. {
  325. "LightMode" = "Picking"
  326. }
  327. // -------------------------------------
  328. // Render State Commands
  329. BlendOp Add
  330. Blend One Zero
  331. ZWrite On
  332. Cull Off
  333. HLSLPROGRAM
  334. #define PARTICLES_EDITOR_META_PASS
  335. #pragma target 2.0
  336. // -------------------------------------
  337. // Shader Stages
  338. #pragma vertex vertParticleEditor
  339. #pragma fragment fragParticleScenePicking
  340. // -------------------------------------
  341. // Particle Keywords
  342. #pragma shader_feature_local_fragment _ALPHATEST_ON
  343. #pragma shader_feature_local _FLIPBOOKBLENDING_ON
  344. // -------------------------------------
  345. // Unity defined keywords
  346. #pragma multi_compile_instancing
  347. #pragma instancing_options procedural:ParticleInstancingSetup
  348. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  349. // -------------------------------------
  350. // Includes
  351. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLitInput.hlsl"
  352. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesEditorPass.hlsl"
  353. ENDHLSL
  354. }
  355. Pass
  356. {
  357. Name "Universal2D"
  358. Tags
  359. {
  360. "LightMode" = "Universal2D"
  361. }
  362. // -------------------------------------
  363. // Render State Commands
  364. Blend[_SrcBlend][_DstBlend]
  365. ZWrite[_ZWrite]
  366. Cull[_Cull]
  367. HLSLPROGRAM
  368. #pragma target 2.0
  369. // -------------------------------------
  370. // Shader Stages
  371. #pragma vertex vert
  372. #pragma fragment frag
  373. // -------------------------------------
  374. // Material Keywords
  375. #pragma shader_feature_local_fragment _ALPHATEST_ON
  376. #pragma shader_feature_local_fragment _ALPHAPREMULTIPLY_ON
  377. // -------------------------------------
  378. // Includes
  379. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesSimpleLitInput.hlsl"
  380. #include "Packages/com.unity.render-pipelines.universal/Shaders/Utils/Universal2D.hlsl"
  381. ENDHLSL
  382. }
  383. }
  384. Fallback "Universal Render Pipeline/Particles/Unlit"
  385. CustomEditor "UnityEditor.Rendering.Universal.ShaderGUI.ParticlesSimpleLitShader"
  386. }