Nav apraksta
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using UnityEngine;
  3. namespace UnityEditor.Rendering.Universal.ShaderGUI
  4. {
  5. internal class UnlitShader : BaseShaderGUI
  6. {
  7. // material changed check
  8. public override void ValidateMaterial(Material material)
  9. {
  10. SetMaterialKeywords(material);
  11. }
  12. // material main surface options
  13. public override void DrawSurfaceOptions(Material material)
  14. {
  15. if (material == null)
  16. throw new ArgumentNullException("material");
  17. // Use default labelWidth
  18. EditorGUIUtility.labelWidth = 0f;
  19. base.DrawSurfaceOptions(material);
  20. }
  21. // material main surface inputs
  22. public override void DrawSurfaceInputs(Material material)
  23. {
  24. base.DrawSurfaceInputs(material);
  25. DrawTileOffset(materialEditor, baseMapProp);
  26. }
  27. public override void AssignNewShaderToMaterial(Material material, Shader oldShader, Shader newShader)
  28. {
  29. if (material == null)
  30. throw new ArgumentNullException("material");
  31. // _Emission property is lost after assigning Standard shader to the material
  32. // thus transfer it before assigning the new shader
  33. if (material.HasProperty("_Emission"))
  34. {
  35. material.SetColor("_EmissionColor", material.GetColor("_Emission"));
  36. }
  37. base.AssignNewShaderToMaterial(material, oldShader, newShader);
  38. if (oldShader == null || !oldShader.name.Contains("Legacy Shaders/"))
  39. {
  40. SetupMaterialBlendMode(material);
  41. return;
  42. }
  43. SurfaceType surfaceType = SurfaceType.Opaque;
  44. BlendMode blendMode = BlendMode.Alpha;
  45. if (oldShader.name.Contains("/Transparent/Cutout/"))
  46. {
  47. surfaceType = SurfaceType.Opaque;
  48. material.SetFloat("_AlphaClip", 1);
  49. }
  50. else if (oldShader.name.Contains("/Transparent/"))
  51. {
  52. // NOTE: legacy shaders did not provide physically based transparency
  53. // therefore Fade mode
  54. surfaceType = SurfaceType.Transparent;
  55. blendMode = BlendMode.Alpha;
  56. }
  57. material.SetFloat("_Blend", (float)blendMode);
  58. material.SetFloat("_Surface", (float)surfaceType);
  59. if (surfaceType == SurfaceType.Opaque)
  60. {
  61. material.DisableKeyword("_SURFACE_TYPE_TRANSPARENT");
  62. }
  63. else
  64. {
  65. material.EnableKeyword("_SURFACE_TYPE_TRANSPARENT");
  66. }
  67. }
  68. }
  69. }