StylizedInput.hlsl 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. #ifndef FLAT_KIT_STYLIZED_INPUT_INCLUDED
  2. #define FLAT_KIT_STYLIZED_INPUT_INCLUDED
  3. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  4. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl"
  5. // NOTE: Do not ifdef the properties here as SRP batcher can not handle different layouts.
  6. #ifndef FLATKIT_TERRAIN
  7. #if _FORWARD_PLUS && UNITY_VERSION < 600000
  8. CBUFFER_START(UnityPerMaterialNoBatching)
  9. #else
  10. CBUFFER_START(UnityPerMaterial)
  11. #endif
  12. #endif
  13. // See `SimpleLitInput.hlsl` and `LitInput.hlsl` for reference
  14. float4 _BaseMap_ST;
  15. float4 _DetailMap_ST;
  16. #ifndef FLATKIT_TERRAIN
  17. half4 _BaseColor;
  18. half _Cutoff;
  19. half _Surface;
  20. #endif
  21. half4 _EmissionColor;
  22. half4 _UnityShadowColor;
  23. // --- _CELPRIMARYMODE_SINGLE
  24. half4 _ColorDim;
  25. // --- _CELPRIMARYMODE_SINGLE
  26. // --- DR_SPECULAR_ON
  27. half4 _FlatSpecularColor;
  28. float _FlatSpecularSize;
  29. float _FlatSpecularEdgeSmoothness;
  30. // --- DR_SPECULAR_ON
  31. // --- DR_RIM_ON
  32. half4 _FlatRimColor;
  33. float _FlatRimSize;
  34. float _FlatRimEdgeSmoothness;
  35. float _FlatRimLightAlign;
  36. // --- DR_RIM_ON
  37. // --- _CELPRIMARYMODE_STEPS
  38. half4 _ColorDimSteps;
  39. sampler2D _CelStepTexture;
  40. // --- _CELPRIMARYMODE_STEPS
  41. // --- _CELPRIMARYMODE_CURVE
  42. half4 _ColorDimCurve;
  43. sampler2D _CelCurveTexture;
  44. // --- _CELPRIMARYMODE_CURVE
  45. // --- DR_CEL_EXTRA_ON
  46. half4 _ColorDimExtra;
  47. half _SelfShadingSizeExtra;
  48. half _ShadowEdgeSizeExtra;
  49. half _FlatnessExtra;
  50. // --- DR_CEL_EXTRA_ON
  51. // --- DR_GRADIENT_ON
  52. half4 _ColorGradient;
  53. half _GradientCenterX;
  54. half _GradientCenterY;
  55. half _GradientSize;
  56. half _GradientAngle;
  57. // --- DR_GRADIENT_ON
  58. half _TextureImpact;
  59. half _SelfShadingSize;
  60. half _ShadowEdgeSize;
  61. half _LightContribution;
  62. half _LightFalloffSize;
  63. half _Flatness;
  64. half _UnityShadowPower;
  65. half _UnityShadowSharpness;
  66. half _OverrideLightmapDir;
  67. half3 _LightmapDirection;
  68. half _DetailMapImpact;
  69. half4 _DetailMapColor;
  70. half4 _OutlineColor;
  71. half _OutlineWidth;
  72. half _OutlineScale;
  73. half _OutlineDepthOffset;
  74. half _CameraDistanceImpact;
  75. #ifndef FLATKIT_TERRAIN
  76. CBUFFER_END
  77. #endif
  78. #ifdef UNITY_DOTS_INSTANCING_ENABLED
  79. UNITY_DOTS_INSTANCING_START(MaterialPropertyMetadata)
  80. UNITY_DOTS_INSTANCED_PROP(float4, _BaseColor)
  81. UNITY_DOTS_INSTANCED_PROP(float , _Cutoff)
  82. UNITY_DOTS_INSTANCED_PROP(float , _Surface)
  83. UNITY_DOTS_INSTANCED_PROP(float4, _EmissionColor)
  84. UNITY_DOTS_INSTANCED_PROP(float4 , _UnityShadowColor)
  85. UNITY_DOTS_INSTANCED_PROP(float4, _ColorDim)
  86. UNITY_DOTS_INSTANCED_PROP(float4, _FlatSpecularColor)
  87. UNITY_DOTS_INSTANCED_PROP(float , _FlatSpecularSize)
  88. UNITY_DOTS_INSTANCED_PROP(float , _FlatSpecularEdgeSmoothness)
  89. UNITY_DOTS_INSTANCED_PROP(float4, _FlatRimColor)
  90. UNITY_DOTS_INSTANCED_PROP(float , _FlatRimSize)
  91. UNITY_DOTS_INSTANCED_PROP(float , _FlatRimEdgeSmoothness)
  92. UNITY_DOTS_INSTANCED_PROP(float , _FlatRimLightAlign)
  93. UNITY_DOTS_INSTANCED_PROP(float4, _ColorDimSteps)
  94. UNITY_DOTS_INSTANCED_PROP(float4, _ColorDimCurve)
  95. UNITY_DOTS_INSTANCED_PROP(float4, _ColorDimExtra)
  96. UNITY_DOTS_INSTANCED_PROP(float , _SelfShadingSizeExtra)
  97. UNITY_DOTS_INSTANCED_PROP(float , _ShadowEdgeSizeExtra)
  98. UNITY_DOTS_INSTANCED_PROP(float , _FlatnessExtra)
  99. UNITY_DOTS_INSTANCED_PROP(float4, _ColorGradient)
  100. UNITY_DOTS_INSTANCED_PROP(float , _GradientCenterX)
  101. UNITY_DOTS_INSTANCED_PROP(float , _GradientCenterY)
  102. UNITY_DOTS_INSTANCED_PROP(float , _GradientSize)
  103. UNITY_DOTS_INSTANCED_PROP(float , _GradientAngle)
  104. UNITY_DOTS_INSTANCED_PROP(float , _TextureImpact)
  105. UNITY_DOTS_INSTANCED_PROP(float , _SelfShadingSize)
  106. UNITY_DOTS_INSTANCED_PROP(float , _ShadowEdgeSize)
  107. UNITY_DOTS_INSTANCED_PROP(float , _LightContribution)
  108. UNITY_DOTS_INSTANCED_PROP(float , _LightFalloffSize)
  109. UNITY_DOTS_INSTANCED_PROP(float , _Flatness)
  110. UNITY_DOTS_INSTANCED_PROP(float , _UnityShadowPower)
  111. UNITY_DOTS_INSTANCED_PROP(float , _UnityShadowSharpness)
  112. UNITY_DOTS_INSTANCED_PROP(float , _OverrideLightmapDir)
  113. UNITY_DOTS_INSTANCED_PROP(float3, _LightmapDirection)
  114. UNITY_DOTS_INSTANCED_PROP(float , _DetailMapImpact)
  115. UNITY_DOTS_INSTANCED_PROP(float4, _DetailMapColor)
  116. UNITY_DOTS_INSTANCED_PROP(float4, _OutlineColor)
  117. UNITY_DOTS_INSTANCED_PROP(float , _OutlineWidth)
  118. UNITY_DOTS_INSTANCED_PROP(float , _OutlineScale)
  119. UNITY_DOTS_INSTANCED_PROP(float , _OutlineDepthOffset)
  120. UNITY_DOTS_INSTANCED_PROP(float , _CameraDistanceImpact)
  121. UNITY_DOTS_INSTANCING_END(MaterialPropertyMetadata)
  122. #define _BaseColor UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _BaseColor)
  123. #define _Cutoff UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _Cutoff)
  124. #define _Surface UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _Surface)
  125. #define _EmissionColor UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _EmissionColor)
  126. #define _UnityShadowColor UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _UnityShadowColor)
  127. #define _ColorDim UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _ColorDim)
  128. #define _FlatSpecularColor UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _FlatSpecularColor)
  129. #define _FlatSpecularSize UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _FlatSpecularSize)
  130. #define _FlatSpecularEdgeSmoothness UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _FlatSpecularEdgeSmoothness)
  131. #define _FlatRimColor UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _FlatRimColor)
  132. #define _FlatRimSize UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _FlatRimSize)
  133. #define _FlatRimEdgeSmoothness UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _FlatRimEdgeSmoothness)
  134. #define _FlatRimLightAlign UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _FlatRimLightAlign)
  135. #define _ColorDimSteps UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _ColorDimSteps)
  136. #define _ColorDimCurve UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _ColorDimCurve)
  137. #define _ColorDimExtra UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _ColorDimExtra)
  138. #define _SelfShadingSizeExtra UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _SelfShadingSizeExtra)
  139. #define _ShadowEdgeSizeExtra UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _ShadowEdgeSizeExtra)
  140. #define _FlatnessExtra UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _FlatnessExtra)
  141. #define _ColorGradient UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _ColorGradient)
  142. #define _GradientCenterX UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _GradientCenterX)
  143. #define _GradientCenterY UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _GradientCenterY)
  144. #define _GradientSize UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _GradientSize)
  145. #define _GradientAngle UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _GradientAngle)
  146. #define _TextureImpact UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _TextureImpact)
  147. #define _SelfShadingSize UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _SelfShadingSize)
  148. #define _ShadowEdgeSize UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _ShadowEdgeSize)
  149. #define _LightContribution UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _LightContribution)
  150. #define _LightFalloffSize UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _LightFalloffSize)
  151. #define _Flatness UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _Flatness)
  152. #define _UnityShadowPower UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _UnityShadowPower)
  153. #define _UnityShadowSharpness UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _UnityShadowSharpness)
  154. #define _OverrideLightmapDir UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _OverrideLightmapDir)
  155. #define _LightmapDirection UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float3 , _LightmapDirection)
  156. #define _DetailMapImpact UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _DetailMapImpact)
  157. #define _DetailMapColor UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _DetailMapColor)
  158. #define _OutlineColor UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4 , _OutlineColor)
  159. #define _OutlineWidth UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _OutlineWidth)
  160. #define _OutlineScale UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _OutlineScale)
  161. #define _OutlineDepthOffset UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _OutlineDepthOffset)
  162. #define _CameraDistanceImpact UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float , _CameraDistanceImpact)
  163. #endif
  164. inline void InitializeSimpleLitSurfaceData(float2 uv, out SurfaceData outSurfaceData)
  165. {
  166. outSurfaceData = (SurfaceData)0;
  167. half4 albedo = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap));
  168. outSurfaceData.alpha = albedo.a * _BaseColor.a;
  169. AlphaDiscard(outSurfaceData.alpha, _Cutoff);
  170. outSurfaceData.albedo = albedo.rgb;
  171. #ifdef _ALPHAPREMULTIPLY_ON
  172. outSurfaceData.albedo *= outSurfaceData.alpha;
  173. #endif
  174. outSurfaceData.metallic = 0.0; // unused
  175. outSurfaceData.specular = 0.0; // unused
  176. outSurfaceData.smoothness = 0.0; // unused
  177. outSurfaceData.normalTS = SampleNormal(uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap));
  178. outSurfaceData.occlusion = 1.0; // unused
  179. outSurfaceData.emission = SampleEmission(uv, _EmissionColor.rgb, TEXTURE2D_ARGS(_EmissionMap, sampler_EmissionMap));
  180. }
  181. half4 SampleSpecularSmoothness(half2 uv, half alpha, half4 specColor, TEXTURE2D_PARAM(specMap, sampler_specMap))
  182. {
  183. half4 specularSmoothness = half4(0.0h, 0.0h, 0.0h, 1.0h);
  184. return specularSmoothness;
  185. }
  186. #endif // FLAT_KIT_STYLIZED_INPUT_INCLUDED