LuxURPCustomSingleSidedShaderGUI.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using UnityEngine;
  2. using UnityEditor;
  3. public class LuxURPCustomSingleSidedShaderGUI : ShaderGUI
  4. {
  5. public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
  6. {
  7. base.OnGUI(materialEditor, properties);
  8. Material material = materialEditor.target as Material;
  9. // Old signature
  10. if (material.HasProperty("_Culling")) {
  11. var _Culling = ShaderGUI.FindProperty("_Culling", properties);
  12. if(_Culling.floatValue == 0.0f) {
  13. if (material.doubleSidedGI == false) {
  14. Debug.Log ("Double Sided Global Illumination enabled.");
  15. }
  16. material.doubleSidedGI = true;
  17. }
  18. }
  19. // Handle both cases
  20. if (material.HasProperty("_Cull")) {
  21. var _Cull = ShaderGUI.FindProperty("_Cull", properties);
  22. if(_Cull.floatValue == 0.0f) {
  23. if (material.doubleSidedGI == false) {
  24. Debug.Log ("Double Sided Global Illumination enabled.");
  25. }
  26. material.doubleSidedGI = true;
  27. }
  28. }
  29. if (material.HasProperty("_AlphaClip")) {
  30. var _AlphaClip = ShaderGUI.FindProperty("_AlphaClip", properties);
  31. if(_AlphaClip.floatValue == 1.0f) {
  32. material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.AlphaTest;
  33. material.SetOverrideTag("RenderType", "TransparentCutout");
  34. }
  35. else {
  36. material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Geometry;
  37. material.SetOverrideTag("RenderType", "Opaque");
  38. // In case alpha testing is disabled we also want to disable alpha to coverage.
  39. if(material.HasProperty("_Coverage")) {
  40. material.SetFloat("_Coverage", 0.0f);
  41. }
  42. }
  43. }
  44. //material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.AlphaTest;
  45. //material.SetOverrideTag("RenderType", "TransparentCutout");
  46. // Needed to make the Selection Outline work
  47. if (material.HasProperty("_MainTex") && material.HasProperty("_BaseMap") ) {
  48. if (material.GetTexture("_BaseMap") != null) {
  49. material.SetTexture("_MainTex", material.GetTexture("_BaseMap"));
  50. }
  51. }
  52. }
  53. }