Example #1
0
    public void Distort(TextureParam _input, TextureParam _inputB, TextureParam _output)
    {
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        timer.Start();

        Material mat = GetMaterial("TextureOps");

        mat.SetInt("_MainIsGrey", _input.IsGrey() ? 1 : 0);
        mat.SetInt("_TextureBIsGrey", _inputB.IsGrey() ? 1 : 0);
        mat.SetTexture("_GradientTex", _inputB.GetHWSourceTexture());
        mat.SetVector("_TexSizeRecip", new Vector4(1.0f / (float)_inputB.m_Width, 1.0f / (float)_inputB.m_Height, m_Value, m_Value2));
        mat.SetVector("_Multiply", new Vector4(m_Value, m_Value1, m_Value2, 0.0f));
        SetCommonVars(mat);

        //Texture2D tex = input.CreateTexture(TextureParam.ms_TexFormat);
        //input.FillInTexture(tex);

        //RenderTexture destination = RenderTexture.GetTemporary((int)input.m_Width, (int)input.m_Height, 24, TextureParam.ms_RTexFormat);
        RenderTexture destination = CreateRenderDestination(_input, _output);

        Graphics.Blit(_input.GetHWSourceTexture(), destination, mat, 2);

        //output.TexFromRenderTarget();

        //RenderTexture.ReleaseTemporary(destination);
//        Debug.LogError(" Distort in Final" + timer.ElapsedMilliseconds + " ms");
    }
Example #2
0
    protected Texture2D gradient;// = new Texture2D(256, 1, TextureFormat.ARGB32, false);
    public void Gradient(TextureParam _input, TextureParam _output)
    {
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        timer.Start();

        if (gradient == null)
        {
            gradient = new Texture2D(256, 1, TextureFormat.ARGB32, false);
        }
        Color[] cols = new Color[256];
        for (int x = 0; x < 256; x++)
        {
            float t = (float)x / 255.0f;
            cols[x] = m_Gradient.Evaluate(t);
        }
        gradient.SetPixels(cols);
        gradient.Apply();

        TexOpMaterial.SetTexture("_GradientTex", gradient);
        TexOpMaterial.SetVector("_TexSizeRecip", new Vector4(1.0f / (float)255.0f, 1.0f, 0.0f, 0));
        RenderTexture destination = CreateRenderDestination(_input, _output);

        Graphics.Blit(_input.GetHWSourceTexture(), destination, TexOpMaterial, (int)ShaderOp.Gradient);

        m_Cached = destination as Texture;
        Debug.LogError(" Gradient in Final" + timer.ElapsedMilliseconds + " ms");
    }
Example #3
0
    public override bool Calculate()
    {
        if (!allInputsReady())
        {
            return(false);
        }



        if (m_Input == null)
        {
            return(false);
        }
        if (m_Param == null)
        {
            m_Param = new TextureParam(m_TexWidth, m_TexHeight);
        }

        m_Param.SetTex(m_Input);

        m_Cached = m_Param.GetHWSourceTexture();

        Outputs[0].SetValue <TextureParam> (m_Param);
        return(true);
    }
    public override bool Calculate()
    {
        if (!allInputsReady())
        {
            return(false);
        }

        if (m_Output == null)
        {
            return(false);
        }
        TextureParam input = null;

        if (Inputs[0].connection != null)
        {
            input = Inputs[0].connection.GetValue <TextureParam>();
        }

        TextureParam input2 = null;

        if (Inputs[1].connection != null)
        {
            input2 = Inputs[1].connection.GetValue <TextureParam>();
        }


        //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();
        }


        //Outputs[0].SetValue<TextureParam> (m_Param);
        return(true);
    }
Example #5
0
    public void General(float _r, float _g, float _b, TextureParam _input, TextureParam _output, ShaderOp _shaderOp)
    {
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        timer.Start();

        TexOpMaterial.SetVector("_Multiply", new Vector4(_r, _g, _b, 1));
        SetCommonVars(TexOpMaterial);
        RenderTexture destination = CreateRenderDestination(_input, _output);

        Graphics.Blit(_input.GetHWSourceTexture(), destination, TexOpMaterial, (int)_shaderOp);
//        Debug.LogError(" multiply in Final" + timer.ElapsedMilliseconds + " ms");
    }
    public override bool Calculate()
    {
        if (!allInputsReady())
        {
            return(false);
        }

        TextureParam input = null;

        if (Inputs[0].connection != null)
        {
            input = Inputs[0].connection.GetValue <TextureParam>();
        }
        if (input == null)
        {
            return(false);
        }
        TextureParam input2 = null;
        int          index2 = 1;

        if (Inputs.Count < 2)
        {
            index2 = 0;
        }

        if (Inputs[index2].connection != null)
        {
            input2 = Inputs[index2].connection.GetValue <TextureParam>();
        }
        if (input2 == null)
        {
            return(false);
        }

        if (m_Param == null)
        {
            m_Param = new TextureParam(m_TexWidth, m_TexHeight);
        }
        m_TexMode = TexMode.ColorRGB;

        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(), CreateRenderDestination(input, m_Param), m, (int)ShaderOp.CopyColorAndAlpha);

        CreateCachedTextureIcon();



        return(true);
    }
Example #7
0
    public void General(TextureParam _input, TextureParam _inputB, TextureParam _output, ShaderOp _shaderOp)
    {
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        timer.Start();
        Material mat = GetMaterial("TextureOps");

        SetCommonVars(mat);
        mat.SetInt("_MainIsGrey", _input.IsGrey() ? 1 : 0);
        mat.SetInt("_TextureBIsGrey", _inputB.IsGrey() ? 1 : 0);
        mat.SetInt("_Saturate", m_Saturate ? 1 : 0);
        mat.SetTexture("_GradientTex", _inputB.GetHWSourceTexture());
        mat.SetVector("_TexSizeRecip", new Vector4(1.0f / (float)_inputB.m_Width, 1.0f / (float)_inputB.m_Height, m_Value, 0));
        RenderTexture destination = CreateRenderDestination(_input, _output);

        Graphics.Blit(_input.GetHWSourceTexture(), destination, mat, (int)_shaderOp);
//        Debug.LogError(""+ _shaderOp+"  in Final" + timer.ElapsedMilliseconds + " ms");
    }
Example #8
0
    public Texture CreateTextureIcon(int _size)
    {
        if (m_Param == null)
        {
            return(null);
        }
        return(m_Param.m_Destination);//GetHWSourceTexture();

#if OUTPUT_SCALED_GREY
        //this is just for display as a label on the node
        RenderTexture destination = new RenderTexture(_size, _size, 24, RenderTextureFormat.ARGB32);
        Material      m           = GetMaterial("TextureOps");
        m.SetVector("_Multiply", new Vector4(m_ScalePreview, 0, 0, 0));
        Graphics.Blit(m_Param.GetHWSourceTexture(), destination, m, m_Param.IsGrey() ? (int)ShaderOp.CopyGrey : (int)ShaderOp.CopyColor);

        return(destination);
#endif
    }
Example #9
0
    public void CalcNormals(float _size, TextureParam _input, TextureParam _output)
    {
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        timer.Start();
        Material mat = GetMaterial("TextureOps");

        mat.SetInt("_MainIsGrey", _input.IsGrey() ? 1 : 0);


        mat.SetVector("_TexSizeRecip", new Vector4(1.0f / (float)_input.m_Width, 1.0f / (float)_input.m_Height, _size, 0));
        m_TexMode = TexMode.ColorRGB;
        RenderTexture destination = CreateRenderDestination(_input, _output);

        SetCommonVars(mat);
        Graphics.Blit(_input.GetHWSourceTexture(), destination, mat, (int)ShaderOp.Normal);


//        Debug.LogError(" multiply in Final" + timer.ElapsedMilliseconds + " ms");
    }
Example #10
0
    public void General(float _r, float _g, float _b, TextureParam _input, TextureParam _output, ShaderOp _shaderOp)
    {
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        timer.Start();
        Material mat = GetMaterial("TextureOps");

//        if (Inputs.Count>1 && Inputs[1].connection != null)
//            _r=Inputs[1].connection.GetValue<float>();
        mat.SetVector("_TexSizeRecip", new Vector4(1.0f / (float)_input.m_Width, 1.0f / (float)_input.m_Height, _input.m_Width, 0));
        mat.SetVector("_Multiply", new Vector4(_r, _g, _b, 1));
        mat.SetInt("_MainIsGrey", _input.IsGrey() ? 1 : 0);
        SetCommonVars(mat);

        CalcOutputFormat(_input);
        RenderTexture destination = CreateRenderDestination(_input, _output);

        Graphics.Blit(_input.GetHWSourceTexture(), destination, mat, (int)_shaderOp);
//        Debug.LogError(" multiply in Final" + timer.ElapsedMilliseconds + " ms");
    }
Example #11
0
    public void Add(float _r, float _g, float _b, TextureParam _input, TextureParam _output)
    {
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        timer.Start();

        TexOpMaterial.SetVector("_Multiply", new Vector4(_r, _g, _b, 1));
        SetCommonVars(TexOpMaterial);
        //Texture2D tex = input.CreateTexture(TextureParam.ms_TexFormat);
        //        input.FillInTexture(tex);

        //RenderTexture destination = RenderTexture.GetTemporary((int)input.m_Width, (int)input.m_Height, 24, TextureParam.ms_RTexFormat);
        RenderTexture destination = CreateRenderDestination(_input, _output);

        Graphics.Blit(_input.GetHWSourceTexture(), destination, TexOpMaterial, 4);


        //output.TexFromRenderTarget();

        //RenderTexture.ReleaseTemporary(destination);
        Debug.LogError(" add in Final" + timer.ElapsedMilliseconds + " ms");
    }
Example #12
0
    public void CalcBlur(TextureParam _input, TextureParam _output)
    {
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        timer.Start();
        m_Iterations = 1 + (int)m_Value1;
        m_BlurSpread = m_Value2;

        //Texture2D tex = new Texture2D((int)input.m_Width, (int)input.m_Height, TextureFormat.RGBAFloat, false);
        //Texture2D tex = input.CreateTexture(TextureParam.ms_TexFormat);

        //Debug.LogError(" blur in b " + timer.ElapsedMilliseconds + " ms");

        //RenderTexture buffer = RenderTexture.GetTemporary((int)input.m_Width, (int)input.m_Height, 24, TextureParam.ms_RTexFormat);
        CalcOutputFormat(_input);
        RenderTexture destination = CreateRenderDestination(_input, _output);

        DoBlur(_input.GetHWSourceTexture(), destination);

        //output.TexFromRenderTarget();

        //RenderTexture.ReleaseTemporary(buffer);
//        Debug.LogError(" blur in Final" + timer.ElapsedMilliseconds + " ms");
    }
Example #13
0
    public void ExecuteRemapCurve(float _size, TextureParam _input, TextureParam _output)
    {
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        timer.Start();
        Material mat = GetMaterial("TextureOps");

        mat.SetInt("_MainIsGrey", _input.IsGrey() ? 1 : 0);

        if (gradient == null)
        {
            gradient = new Texture2D(1024, 1, TextureFormat.RFloat, false); //1024 possible levels
        }
        Color c = Color.white;

        for (float x = 0.0f; x < (float)gradient.width; x += 1.0f)
        {
            c.g = c.b = c.r = m_RemapCurve.Evaluate(x / (float)gradient.width);

            gradient.SetPixel((int)x, 0, c);
        }
        gradient.wrapMode = TextureWrapMode.Clamp;
        gradient.Apply();



        mat.SetTexture("_GradientTex", gradient);
        mat.SetVector("_TexSizeRecip", new Vector4(1.0f / (float)_input.m_Width, 1.0f / (float)_input.m_Height, _size, 0));
        SetCommonVars(mat);
        m_TexMode = TexMode.ColorRGB;
        RenderTexture destination = CreateRenderDestination(_input, _output);

        Graphics.Blit(_input.GetHWSourceTexture(), destination, mat, (int)ShaderOp.Gradient);


//        Debug.LogError(" multiply in Final" + timer.ElapsedMilliseconds + " ms");
    }
    public override bool Calculate()
    {
        if (!allInputsReady())
        {
            return(false);
        }

        if (m_Output == null)
        {
            return(false);
        }
        TextureParam input = null;

        if (Inputs[0].connection != null)
        {
            input = Inputs[0].connection.GetValue <TextureParam>();
        }
        if (input == null)
        {
            return(false);
        }
        TextureParam input2 = null;
        int          index2 = 1;

        if (Inputs.Count < 2)
        {
            index2 = 0;
        }

        if (Inputs[index2].connection != null)
        {
            input2 = Inputs[index2].connection.GetValue <TextureParam>();
        }
        if (input2 == null)
        {
            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();
        }

        //m_Output.width = 256;
        //m_Output.height = 256;
        //int x = 0, y = 0;
        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
        {
            System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
            timer.Start();

            /*
             *          float minred=float.MaxValue, maxred=float.MinValue;
             *          float minalpha = float.MaxValue, maxalpha = float.MinValue;
             *          for (int x = 0; x < input.m_Width; x++)
             *          {
             *              for (int y = 0; y < input.m_Height; y++)
             *              {
             *                  Color col = input.GetCol(x, y);
             *                  col.a = col.r;
             *                  minred = Mathf.Min(minred, col.r);
             *                  maxred = Mathf.Max(maxred, col.r);
             *                  minalpha = Mathf.Min(minalpha, col.a);
             *                  maxalpha = Mathf.Max(maxalpha, col.a);
             *                  m_Output.SetPixel((int)(((float)x / (float)input.m_Width) * m_Output.width), (int)(((float)y / (float)input.m_Height) * m_Output.height), col);
             *                  //m_Param.Set(x, y, col.r, col.g, col.b, 1.0f);
             *              }
             *          }
             */
            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());
            string          path     = AssetDatabase.GetAssetPath(m_Output);
            TextureImporter importer = (TextureImporter)TextureImporter.GetAtPath(path);
            if (importer.textureType == TextureImporterType.NormalMap)
            {
                Graphics.Blit(input.GetHWSourceTexture(), rt, m, (int)ShaderOp.CopyNormalMap);
            }
            else
            {
                Graphics.Blit(input.GetHWSourceTexture(), rt, m, (int)ShaderOp.CopyColorAndAlpha);
            }


            RenderTexture.active = rt;
            m_Output.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
            //input.DestinationToTexture(m_Output);
            m_Output.Apply();
            RenderTexture.active = null;
            rt.DiscardContents();
            rt.Release();
            rt = null;



//            Debug.Log("applied output to "+ m_Output+" time: "+timer.ElapsedMilliseconds+" ms res: "+input.m_Width+" minred "+minred+" max red "+maxred + " minalpha " + minalpha + " max alpha " + maxalpha);
        }


        //Outputs[0].SetValue<TextureParam> (m_Param);
        return(true);
    }