暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

SimpleLit.shader 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  1. // Shader targeted for low end devices. Single Pass Forward Rendering.
  2. Shader "Universal Render Pipeline/Simple Lit"
  3. {
  4. // Keep properties of StandardSpecular shader for upgrade reasons.
  5. Properties
  6. {
  7. [MainTexture] _BaseMap("Base Map (RGB) Smoothness / Alpha (A)", 2D) = "white" {}
  8. [MainColor] _BaseColor("Base Color", Color) = (1, 1, 1, 1)
  9. _Cutoff("Alpha Clipping", Range(0.0, 1.0)) = 0.5
  10. _Smoothness("Smoothness", Range(0.0, 1.0)) = 0.5
  11. _SpecColor("Specular Color", Color) = (0.5, 0.5, 0.5, 0.5)
  12. _SpecGlossMap("Specular Map", 2D) = "white" {}
  13. _SmoothnessSource("Smoothness Source", Float) = 0.0
  14. _SpecularHighlights("Specular Highlights", Float) = 1.0
  15. [HideInInspector] _BumpScale("Scale", Float) = 1.0
  16. [NoScaleOffset] _BumpMap("Normal Map", 2D) = "bump" {}
  17. [HDR] _EmissionColor("Emission Color", Color) = (0,0,0)
  18. [NoScaleOffset]_EmissionMap("Emission Map", 2D) = "white" {}
  19. // Blending state
  20. _Surface("__surface", Float) = 0.0
  21. _Blend("__blend", Float) = 0.0
  22. _Cull("__cull", Float) = 2.0
  23. [ToggleUI] _AlphaClip("__clip", Float) = 0.0
  24. [HideInInspector] _SrcBlend("__src", Float) = 1.0
  25. [HideInInspector] _DstBlend("__dst", Float) = 0.0
  26. [HideInInspector] _SrcBlendAlpha("__srcA", Float) = 1.0
  27. [HideInInspector] _DstBlendAlpha("__dstA", Float) = 0.0
  28. [HideInInspector] _ZWrite("__zw", Float) = 1.0
  29. [HideInInspector] _BlendModePreserveSpecular("_BlendModePreserveSpecular", Float) = 1.0
  30. [HideInInspector] _AlphaToMask("__alphaToMask", Float) = 0.0
  31. [HideInInspector] _AddPrecomputedVelocity("_AddPrecomputedVelocity", Float) = 0.0
  32. [ToggleUI] _ReceiveShadows("Receive Shadows", Float) = 1.0
  33. // Editmode props
  34. _QueueOffset("Queue offset", Float) = 0.0
  35. // ObsoleteProperties
  36. [HideInInspector] _MainTex("BaseMap", 2D) = "white" {}
  37. [HideInInspector] _Color("Base Color", Color) = (1, 1, 1, 1)
  38. [HideInInspector] _Shininess("Smoothness", Float) = 0.0
  39. [HideInInspector] _GlossinessSource("GlossinessSource", Float) = 0.0
  40. [HideInInspector] _SpecSource("SpecularHighlights", Float) = 0.0
  41. [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {}
  42. [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {}
  43. [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {}
  44. }
  45. SubShader
  46. {
  47. Tags
  48. {
  49. "RenderType" = "Opaque"
  50. "RenderPipeline" = "UniversalPipeline"
  51. "UniversalMaterialType" = "SimpleLit"
  52. "IgnoreProjector" = "True"
  53. }
  54. LOD 300
  55. Pass
  56. {
  57. Name "ForwardLit"
  58. Tags
  59. {
  60. "LightMode" = "UniversalForward"
  61. }
  62. // -------------------------------------
  63. // Render State Commands
  64. // Use same blending / depth states as Standard shader
  65. Blend[_SrcBlend][_DstBlend], [_SrcBlendAlpha][_DstBlendAlpha]
  66. ZWrite[_ZWrite]
  67. Cull[_Cull]
  68. AlphaToMask[_AlphaToMask]
  69. HLSLPROGRAM
  70. #pragma target 2.0
  71. // -------------------------------------
  72. // Shader Stages
  73. #pragma vertex LitPassVertexSimple
  74. #pragma fragment LitPassFragmentSimple
  75. // -------------------------------------
  76. // Material Keywords
  77. #pragma shader_feature_local _NORMALMAP
  78. #pragma shader_feature_local_fragment _EMISSION
  79. #pragma shader_feature_local _RECEIVE_SHADOWS_OFF
  80. #pragma shader_feature_local_fragment _SURFACE_TYPE_TRANSPARENT
  81. #pragma shader_feature_local_fragment _ALPHATEST_ON
  82. #pragma shader_feature_local_fragment _ _ALPHAPREMULTIPLY_ON _ALPHAMODULATE_ON
  83. #pragma shader_feature_local_fragment _ _SPECGLOSSMAP _SPECULAR_COLOR
  84. #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA
  85. // -------------------------------------
  86. // Universal Pipeline keywords
  87. #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
  88. #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
  89. #pragma multi_compile _ EVALUATE_SH_MIXED EVALUATE_SH_VERTEX
  90. #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING
  91. #pragma multi_compile _ SHADOWS_SHADOWMASK
  92. #pragma multi_compile _ _LIGHT_LAYERS
  93. #pragma multi_compile _ _FORWARD_PLUS
  94. #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS
  95. #pragma multi_compile_fragment _ _SHADOWS_SOFT
  96. #pragma multi_compile_fragment _ _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
  97. #pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION
  98. #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
  99. #pragma multi_compile_fragment _ _LIGHT_COOKIES
  100. #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl"
  101. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
  102. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl"
  103. // -------------------------------------
  104. // Unity defined keywords
  105. #pragma multi_compile _ DIRLIGHTMAP_COMBINED
  106. #pragma multi_compile _ LIGHTMAP_ON
  107. #pragma multi_compile _ DYNAMICLIGHTMAP_ON
  108. #pragma multi_compile _ USE_LEGACY_LIGHTMAPS
  109. #pragma multi_compile_fog
  110. #pragma multi_compile_fragment _ DEBUG_DISPLAY
  111. #pragma multi_compile _ LOD_FADE_CROSSFADE
  112. //--------------------------------------
  113. // GPU Instancing
  114. #pragma multi_compile_instancing
  115. #pragma instancing_options renderinglayer
  116. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  117. //--------------------------------------
  118. // Defines
  119. #define BUMP_SCALE_NOT_SUPPORTED 1
  120. // -------------------------------------
  121. // Includes
  122. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl"
  123. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitForwardPass.hlsl"
  124. ENDHLSL
  125. }
  126. Pass
  127. {
  128. Name "ShadowCaster"
  129. Tags
  130. {
  131. "LightMode" = "ShadowCaster"
  132. }
  133. // -------------------------------------
  134. // Render State Commands
  135. ZWrite On
  136. ZTest LEqual
  137. ColorMask 0
  138. Cull[_Cull]
  139. HLSLPROGRAM
  140. #pragma target 2.0
  141. // -------------------------------------
  142. // Shader Stages
  143. #pragma vertex ShadowPassVertex
  144. #pragma fragment ShadowPassFragment
  145. // -------------------------------------
  146. // Material Keywords
  147. #pragma shader_feature_local _ALPHATEST_ON
  148. #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA
  149. // -------------------------------------
  150. // Unity defined keywords
  151. #pragma multi_compile _ LOD_FADE_CROSSFADE
  152. //--------------------------------------
  153. // GPU Instancing
  154. #pragma multi_compile_instancing
  155. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  156. // This is used during shadow map generation to differentiate between directional and punctual light shadows, as they use different formulas to apply Normal Bias
  157. #pragma multi_compile_vertex _ _CASTING_PUNCTUAL_LIGHT_SHADOW
  158. // -------------------------------------
  159. // Includes
  160. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl"
  161. #include "Packages/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl"
  162. ENDHLSL
  163. }
  164. Pass
  165. {
  166. Name "GBuffer"
  167. Tags
  168. {
  169. "LightMode" = "UniversalGBuffer"
  170. }
  171. // -------------------------------------
  172. // Render State Commands
  173. ZWrite[_ZWrite]
  174. ZTest LEqual
  175. Cull[_Cull]
  176. HLSLPROGRAM
  177. #pragma target 4.5
  178. // Deferred Rendering Path does not support the OpenGL-based graphics API:
  179. // Desktop OpenGL, OpenGL ES 3.0, WebGL 2.0.
  180. #pragma exclude_renderers gles3 glcore
  181. // -------------------------------------
  182. // Shader Stages
  183. #pragma vertex LitPassVertexSimple
  184. #pragma fragment LitPassFragmentSimple
  185. // -------------------------------------
  186. // Material Keywords
  187. #pragma shader_feature_local_fragment _ALPHATEST_ON
  188. //#pragma shader_feature _ALPHAPREMULTIPLY_ON
  189. #pragma shader_feature_local_fragment _ _SPECGLOSSMAP _SPECULAR_COLOR
  190. #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA
  191. #pragma shader_feature_local _NORMALMAP
  192. #pragma shader_feature_local_fragment _EMISSION
  193. #pragma shader_feature_local _RECEIVE_SHADOWS_OFF
  194. // -------------------------------------
  195. // Universal Pipeline keywords
  196. #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
  197. //#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
  198. //#pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
  199. #pragma multi_compile_fragment _ _SHADOWS_SOFT
  200. #pragma multi_compile_fragment _ _SHADOWS_SOFT_LOW _SHADOWS_SOFT_MEDIUM _SHADOWS_SOFT_HIGH
  201. #pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3
  202. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl"
  203. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl"
  204. // -------------------------------------
  205. // Unity defined keywords
  206. #pragma multi_compile _ DIRLIGHTMAP_COMBINED
  207. #pragma multi_compile _ LIGHTMAP_ON
  208. #pragma multi_compile _ DYNAMICLIGHTMAP_ON
  209. #pragma multi_compile _ USE_LEGACY_LIGHTMAPS
  210. #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING
  211. #pragma multi_compile _ SHADOWS_SHADOWMASK
  212. #pragma multi_compile_fragment _ _GBUFFER_NORMALS_OCT
  213. #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED
  214. #pragma multi_compile _ LOD_FADE_CROSSFADE
  215. //--------------------------------------
  216. // GPU Instancing
  217. #pragma multi_compile_instancing
  218. #pragma instancing_options renderinglayer
  219. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  220. //--------------------------------------
  221. // Defines
  222. #define BUMP_SCALE_NOT_SUPPORTED 1
  223. // -------------------------------------
  224. // Includes
  225. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl"
  226. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitGBufferPass.hlsl"
  227. ENDHLSL
  228. }
  229. Pass
  230. {
  231. Name "DepthOnly"
  232. Tags
  233. {
  234. "LightMode" = "DepthOnly"
  235. }
  236. // -------------------------------------
  237. // Render State Commands
  238. ZWrite On
  239. ColorMask R
  240. Cull[_Cull]
  241. HLSLPROGRAM
  242. #pragma target 2.0
  243. // -------------------------------------
  244. // Shader Stages
  245. #pragma vertex DepthOnlyVertex
  246. #pragma fragment DepthOnlyFragment
  247. // -------------------------------------
  248. // Material Keywords
  249. #pragma shader_feature_local _ALPHATEST_ON
  250. #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA
  251. // -------------------------------------
  252. // Unity defined keywords
  253. #pragma multi_compile _ LOD_FADE_CROSSFADE
  254. //--------------------------------------
  255. // GPU Instancing
  256. #pragma multi_compile_instancing
  257. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  258. // -------------------------------------
  259. // Includes
  260. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl"
  261. #include "Packages/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl"
  262. ENDHLSL
  263. }
  264. // This pass is used when drawing to a _CameraNormalsTexture texture
  265. Pass
  266. {
  267. Name "DepthNormals"
  268. Tags
  269. {
  270. "LightMode" = "DepthNormals"
  271. }
  272. // -------------------------------------
  273. // Render State Commands
  274. ZWrite On
  275. Cull[_Cull]
  276. HLSLPROGRAM
  277. #pragma target 2.0
  278. // -------------------------------------
  279. // Shader Stages
  280. #pragma vertex DepthNormalsVertex
  281. #pragma fragment DepthNormalsFragment
  282. // -------------------------------------
  283. // Material Keywords
  284. #pragma shader_feature_local _NORMALMAP
  285. #pragma shader_feature_local _ALPHATEST_ON
  286. #pragma shader_feature_local_fragment _GLOSSINESS_FROM_BASE_ALPHA
  287. // -------------------------------------
  288. // Unity defined keywords
  289. #pragma multi_compile _ LOD_FADE_CROSSFADE
  290. // Universal Pipeline keywords
  291. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl"
  292. //--------------------------------------
  293. // GPU Instancing
  294. #pragma multi_compile_instancing
  295. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl"
  296. // -------------------------------------
  297. // Includes
  298. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl"
  299. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitDepthNormalsPass.hlsl"
  300. ENDHLSL
  301. }
  302. // This pass it not used during regular rendering, only for lightmap baking.
  303. Pass
  304. {
  305. Name "Meta"
  306. Tags
  307. {
  308. "LightMode" = "Meta"
  309. }
  310. // -------------------------------------
  311. // Render State Commands
  312. Cull Off
  313. HLSLPROGRAM
  314. #pragma target 2.0
  315. // -------------------------------------
  316. // Shader Stages
  317. #pragma vertex UniversalVertexMeta
  318. #pragma fragment UniversalFragmentMetaSimple
  319. // -------------------------------------
  320. // Material Keywords
  321. #pragma shader_feature_local_fragment _EMISSION
  322. #pragma shader_feature_local_fragment _SPECGLOSSMAP
  323. #pragma shader_feature EDITOR_VISUALIZATION
  324. // -------------------------------------
  325. // Includes
  326. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl"
  327. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitMetaPass.hlsl"
  328. ENDHLSL
  329. }
  330. Pass
  331. {
  332. Name "Universal2D"
  333. Tags
  334. {
  335. "LightMode" = "Universal2D"
  336. "RenderType" = "Transparent"
  337. "Queue" = "Transparent"
  338. }
  339. HLSLPROGRAM
  340. #pragma target 2.0
  341. // -------------------------------------
  342. // Shader Stages
  343. #pragma vertex vert
  344. #pragma fragment frag
  345. // -------------------------------------
  346. // Material Keywords
  347. #pragma shader_feature_local_fragment _ALPHATEST_ON
  348. #pragma shader_feature_local_fragment _ALPHAPREMULTIPLY_ON
  349. // -------------------------------------
  350. // Includes
  351. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl"
  352. #include "Packages/com.unity.render-pipelines.universal/Shaders/Utils/Universal2D.hlsl"
  353. ENDHLSL
  354. }
  355. Pass
  356. {
  357. Name "MotionVectors"
  358. Tags { "LightMode" = "MotionVectors" }
  359. ColorMask RG
  360. HLSLPROGRAM
  361. #pragma shader_feature_local _ALPHATEST_ON
  362. #pragma multi_compile _ LOD_FADE_CROSSFADE
  363. #pragma shader_feature_local_vertex _ADD_PRECOMPUTED_VELOCITY
  364. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl"
  365. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ObjectMotionVectors.hlsl"
  366. ENDHLSL
  367. }
  368. Pass
  369. {
  370. Name "XRMotionVectors"
  371. Tags { "LightMode" = "XRMotionVectors" }
  372. ColorMask RGBA
  373. // Stencil write for obj motion pixels
  374. Stencil
  375. {
  376. WriteMask 1
  377. Ref 1
  378. Comp Always
  379. Pass Replace
  380. }
  381. HLSLPROGRAM
  382. #pragma shader_feature_local _ALPHATEST_ON
  383. #pragma multi_compile _ LOD_FADE_CROSSFADE
  384. #pragma shader_feature_local_vertex _ADD_PRECOMPUTED_VELOCITY
  385. #define APLICATION_SPACE_WARP_MOTION 1
  386. #include "Packages/com.unity.render-pipelines.universal/Shaders/SimpleLitInput.hlsl"
  387. #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ObjectMotionVectors.hlsl"
  388. ENDHLSL
  389. }
  390. }
  391. Fallback "Hidden/Universal Render Pipeline/FallbackError"
  392. CustomEditor "UnityEditor.Rendering.Universal.ShaderGUI.SimpleLitShader"
  393. }