No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

StencilExtensions.cs 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using UnityEditor.ShaderGraph.Internal;
  2. namespace UnityEditor.ShaderGraph
  3. {
  4. static class StencilExtensions
  5. {
  6. public static string ToShaderString(this StencilDescriptor descriptor)
  7. {
  8. ShaderStringBuilder builder = new ShaderStringBuilder();
  9. builder.AppendLine("Stencil");
  10. using (builder.BlockScope())
  11. {
  12. string compBack = descriptor.CompBack != null && descriptor.CompBack.Length > 0 ? descriptor.CompBack : descriptor.Comp;
  13. string zFailBack = descriptor.ZFailBack != null && descriptor.ZFailBack.Length > 0 ? descriptor.ZFailBack : descriptor.ZFail;
  14. string failBack = descriptor.FailBack != null && descriptor.FailBack.Length > 0 ? descriptor.FailBack : descriptor.Fail;
  15. string passBack = descriptor.PassBack != null && descriptor.PassBack.Length > 0 ? descriptor.PassBack : descriptor.Pass;
  16. if (descriptor.ReadMask != null && descriptor.ReadMask.Length > 0)
  17. builder.AppendLine($"ReadMask {descriptor.ReadMask}");
  18. if (descriptor.WriteMask != null && descriptor.WriteMask.Length > 0)
  19. builder.AppendLine($"WriteMask {descriptor.WriteMask}");
  20. if (descriptor.Ref != null && descriptor.Ref.Length > 0)
  21. builder.AppendLine($"Ref {descriptor.Ref}");
  22. if (descriptor.Comp != null && descriptor.Comp.Length > 0)
  23. builder.AppendLine($"CompFront {descriptor.Comp}");
  24. if (descriptor.ZFail != null && descriptor.ZFail.Length > 0)
  25. builder.AppendLine($"ZFailFront {descriptor.ZFail}");
  26. if (descriptor.Fail != null && descriptor.Fail.Length > 0)
  27. builder.AppendLine($"FailFront {descriptor.Fail}");
  28. if (descriptor.Pass != null && descriptor.Pass.Length > 0)
  29. builder.AppendLine($"PassFront {descriptor.Pass}");
  30. if (compBack != null && compBack.Length > 0)
  31. builder.AppendLine($"CompBack {compBack}");
  32. if (zFailBack != null && zFailBack.Length > 0)
  33. builder.AppendLine($"ZFailBack {zFailBack}");
  34. if (failBack != null && failBack.Length > 0)
  35. builder.AppendLine($"FailBack {failBack}");
  36. if (passBack != null && passBack.Length > 0)
  37. builder.AppendLine($"PassBack {passBack}");
  38. }
  39. return builder.ToCodeBlock();
  40. }
  41. }
  42. }