SCWindow.Project.Shaders.Graph.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /// <summary>
  2. /// Shader Control - (C) Copyright 2016-2022 Ramiro Oliva (Kronnect)
  3. /// </summary>
  4. ///
  5. using UnityEngine;
  6. using UnityEditor;
  7. using System;
  8. using System.IO;
  9. using System.Text;
  10. namespace ShaderControl {
  11. public partial class SCWindow : EditorWindow {
  12. const int SHADER_GRAPH_KEYWORD_DEFINITION_MULTI_COMPILE = 1;
  13. const int SHADER_GRAPH_KEYWORD_DEFINITION_SHADER_FEATURE = 0;
  14. const int SHADER_GRAPH_KEYWORD_SCOPE_GLOBAL = 1;
  15. const int SHADER_GRAPH_KEYWORD_SCOPE_LOCAL = 0;
  16. void ScanShaderGraph(SCShader shader) {
  17. // Reads shader
  18. string shaderContents = File.ReadAllText(shader.path, Encoding.UTF8);
  19. // Check shader graph version
  20. if (shaderContents.Contains("m_SGVersion")) {
  21. shader.shaderGraphVersion = 3;
  22. ScanShaderGraphV2(shader, shaderContents);
  23. } else if (shaderContents.Contains("m_Version")) {
  24. shader.shaderGraphVersion = 2;
  25. ScanShaderGraphV2(shader, shaderContents);
  26. } else {
  27. shader.shaderGraphVersion = 1;
  28. ScanShaderGraphV1(shader, shaderContents);
  29. }
  30. }
  31. void UpdateShaderGraph(SCShader shader) {
  32. // Currently shader graph keywords cannot be disabled with Shader Control to avoid graph issues
  33. // Just click "Locate" and remove the keyword using the Shader Graph editor
  34. }
  35. void ConvertToLocalGraph(SCKeyword keyword, SCShader shader) {
  36. if (shader.shaderGraphVersion == 2) {
  37. ConvertToLocalGraphV2(keyword, shader);
  38. } else {
  39. ConvertToLocalGraphV1(keyword, shader);
  40. }
  41. }
  42. }
  43. }