public override bool Calculate() { if (m_Output == null) { return(false); } TextureParam input = null; TextureParam input2 = null; if (!GetInput(0, out input)) { return(false); } if (!GetInput(1, out input2)) { return(false); } //input.DestinationToTexture(m_Output); if (m_Output.width != input.m_Width) { Texture2D texture = new Texture2D(input.m_Width, input.m_Height, TextureFormat.ARGB32, false); EditorUtility.CopySerialized(texture, m_Output); AssetDatabase.SaveAssets(); } if (m_Output.format != TextureFormat.ARGB32 && m_Output.format != TextureFormat.RGBA32 && m_Output.format != TextureFormat.RGB24) { Debug.LogError(" Ouput Texture " + m_Output + "wrong Format " + m_Output.format); } else { RenderTexture rt = new RenderTexture(m_Output.width, m_Output.height, 0, RenderTextureFormat.ARGB32); Material m = GetMaterial("TextureOps"); m.SetInt("_MainIsGrey", input.IsGrey() ? 1 : 0); m.SetInt("_TextureBIsGrey", input2.IsGrey() ? 1 : 0); m.SetTexture("_GradientTex", input2.GetHWSourceTexture()); Graphics.Blit(input.GetHWSourceTexture(), rt, m, (int)ShaderOp.CopyRandA); RenderTexture.active = rt; m_Output.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0); //input.DestinationToTexture(m_Output); m_Output.Apply(); } string path = AssetDatabase.GetAssetPath(m_Output); TextureImporter importer = (TextureImporter)TextureImporter.GetAtPath(path); if (UnityTextureOutput.ms_ExportPNG) { if (UnityTextureOutput.ms_ExportPNGAnimated) { path = path.Replace(".png", "" + UnityTextureOutput.ms_ExportPNGFrame + ".png"); } if (UnityTextureOutput.ms_ExportExternal) { Debug.Log("filename is " + Path.GetFileName(path)); path = UnityTextureOutput.ms_ExportExternalPath + Path.DirectorySeparatorChar + Path.GetFileName(path); Debug.Log("new path is " + path); } UnityTextureOutput.SavePNG(m_Output, path, !UnityTextureOutput.ms_ExportExternal); importer.compressionQuality = importer.compressionQuality + 1; //try and force the import importer.SaveAndReimport(); } //Outputs[0].SetValue<TextureParam> (m_Param); return(true); }