示例#1
0
    public void Bake(string saveDir)
    {
        if (HDR_Image == null)
        {
            return;
        }

        if (m_BakeMat == null)
        {
            Shader sh = Shader.Find("Hidden/HDRIBaker");
            m_BakeMat = new Material(sh);
        }


        //m_BakeMat.SetFloat("_RgbmMaxValue", RGBM_MaxValue);
        Shader.SetGlobalFloat("_RgbmMaxValue", RGBM_MaxValue);
        if (SkyMat != null)
        {
            for (int i = 0; i < (int)EMethod.Max; i += 2)
            {
                EMethod e = (EMethod)i;
                SkyMat.DisableKeyword(e.ToString());
            }

            string keyword = Method.ToString();
            SkyMat.EnableKeyword(keyword);
        }

        RenderTexture tempRT = RenderTexture.GetTemporary(HDR_Image.width, HDR_Image.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);

        Graphics.Blit(HDR_Image, tempRT, m_BakeMat, (int)Method);

        SaveRenderTextureToPNG(tempRT, saveDir, HDR_Image.name + "_Encoded");
        m_RT = tempRT;
        //RenderTexture.ReleaseTemporary(tempRT);


        if (SeperateColorAndAlpha)
        {
            RenderTexture tempRT2 = RenderTexture.GetTemporary(HDR_Image.width, HDR_Image.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
            Graphics.Blit(HDR_Image, tempRT2, m_BakeMat, (int)(Method + 1));
            SaveRenderTextureToPNG(tempRT2, saveDir, HDR_Image.name + "_Encoded_Alpha");

            m_RT2 = tempRT2;
        }
    }