Ei kuvausta
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.

ParticlesLit.shader 18KB

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