/// <summary> /// Shader Control - (C) Copyright 2016-2022 Ramiro Oliva (Kronnect) /// </summary> /// using UnityEngine; using UnityEditor; using System; using System.IO; using System.Text; namespace ShaderControl { public partial class SCWindow : EditorWindow { const int SHADER_GRAPH_KEYWORD_DEFINITION_MULTI_COMPILE = 1; const int SHADER_GRAPH_KEYWORD_DEFINITION_SHADER_FEATURE = 0; const int SHADER_GRAPH_KEYWORD_SCOPE_GLOBAL = 1; const int SHADER_GRAPH_KEYWORD_SCOPE_LOCAL = 0; void ScanShaderGraph(SCShader shader) { // Reads shader string shaderContents = File.ReadAllText(shader.path, Encoding.UTF8); // Check shader graph version if (shaderContents.Contains("m_SGVersion")) { shader.shaderGraphVersion = 3; ScanShaderGraphV2(shader, shaderContents); } else if (shaderContents.Contains("m_Version")) { shader.shaderGraphVersion = 2; ScanShaderGraphV2(shader, shaderContents); } else { shader.shaderGraphVersion = 1; ScanShaderGraphV1(shader, shaderContents); } } void UpdateShaderGraph(SCShader shader) { // Currently shader graph keywords cannot be disabled with Shader Control to avoid graph issues // Just click "Locate" and remove the keyword using the Shader Graph editor } void ConvertToLocalGraph(SCKeyword keyword, SCShader shader) { if (shader.shaderGraphVersion == 2) { ConvertToLocalGraphV2(keyword, shader); } else { ConvertToLocalGraphV1(keyword, shader); } } } }