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

ParticlesSimpleLitShader.cs 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace UnityEditor.Rendering.Universal.ShaderGUI
  5. {
  6. internal class ParticlesSimpleLitShader : BaseShaderGUI
  7. {
  8. // Properties
  9. private SimpleLitGUI.SimpleLitProperties shadingModelProperties;
  10. private ParticleGUI.ParticleProperties particleProps;
  11. // List of renderers using this material in the scene, used for validating vertex streams
  12. List<ParticleSystemRenderer> m_RenderersUsingThisMaterial = new List<ParticleSystemRenderer>();
  13. public override void FindProperties(MaterialProperty[] properties)
  14. {
  15. base.FindProperties(properties);
  16. shadingModelProperties = new SimpleLitGUI.SimpleLitProperties(properties);
  17. particleProps = new ParticleGUI.ParticleProperties(properties);
  18. }
  19. public override void ValidateMaterial(Material material)
  20. {
  21. SetMaterialKeywords(material, SimpleLitGUI.SetMaterialKeywords, ParticleGUI.SetMaterialKeywords);
  22. }
  23. public override void DrawSurfaceOptions(Material material)
  24. {
  25. base.DrawSurfaceOptions(material);
  26. DoPopup(ParticleGUI.Styles.colorMode, particleProps.colorMode, Enum.GetNames(typeof(ParticleGUI.ColorMode)));
  27. }
  28. public override void DrawSurfaceInputs(Material material)
  29. {
  30. base.DrawSurfaceInputs(material);
  31. SimpleLitGUI.Inputs(shadingModelProperties, materialEditor, material);
  32. DrawEmissionProperties(material, true);
  33. }
  34. public override void DrawAdvancedOptions(Material material)
  35. {
  36. SimpleLitGUI.Advanced(shadingModelProperties);
  37. materialEditor.ShaderProperty(particleProps.flipbookMode, ParticleGUI.Styles.flipbookMode);
  38. ParticleGUI.FadingOptions(material, materialEditor, particleProps);
  39. ParticleGUI.DoVertexStreamsArea(material, m_RenderersUsingThisMaterial, true);
  40. DrawQueueOffsetField();
  41. }
  42. public override void OnOpenGUI(Material material, MaterialEditor materialEditor)
  43. {
  44. CacheRenderersUsingThisMaterial(material);
  45. base.OnOpenGUI(material, materialEditor);
  46. }
  47. void CacheRenderersUsingThisMaterial(Material material)
  48. {
  49. m_RenderersUsingThisMaterial.Clear();
  50. ParticleSystemRenderer[] renderers = UnityEngine.Object.FindObjectsByType<ParticleSystemRenderer>(FindObjectsSortMode.InstanceID);
  51. foreach (ParticleSystemRenderer renderer in renderers)
  52. {
  53. if (renderer.sharedMaterial == material)
  54. m_RenderersUsingThisMaterial.Add(renderer);
  55. }
  56. }
  57. }
  58. } // namespace UnityEditor