Example #1
0
    public static void FlattenSSBump(Texture2D Normal, bool flipXZ)
    {
        if (!flipXZ)
        {
            Texture2D SSBumpTex = new Texture2D(Normal.width, Normal.height, TextureFormat.RGB24, true);
            Color[]   SSBumpColor;
            Color[]   NormalColor;

            Vector4[] Basis = new Vector4[3];
            Basis[0] = new Vector4(0.816496580927726f, 0.0f, 0.5773502691896258f, 0.0f);
            Basis[1] = new Vector4(-0.408248290463863f, 0.7071067811865475f, 0.5773502691896258f, 0.0f);
            Basis[2] = new Vector4(-0.408248290463863f, -0.7071067811865475f, 0.5773502691896258f, 0.0f);


            //Make our Normal Texture readible temporarily
            TextureImporter tempRNMImport = TextureImporter.GetAtPath(AssetDatabase.GetAssetPath(Normal.GetInstanceID())) as TextureImporter;
            tempRNMImport.textureType = TextureImporterType.Image;
            tempRNMImport.isReadable  = true;
            AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(Normal.GetInstanceID()), ImportAssetOptions.ForceUpdate);

            SSBumpColor = Normal.GetPixels();
            NormalColor = Normal.GetPixels();

            for (int i = 0; i < SSBumpColor.Length; i++)
            {
                SSBumpColor[i].r = (DotBasis(UnpackNormal(NormalColor[i]), Basis[0]) + 1) / 2;
                SSBumpColor[i].g = (DotBasis(UnpackNormal(NormalColor[i]), Basis[1]) + 1) / 2;
                SSBumpColor[i].b = (DotBasis(UnpackNormal(NormalColor[i]), Basis[2]) + 1) / 2;
            }

            SSBumpTex.SetPixels(SSBumpColor);
            GzCRNMMergeUtil.TextureImportHelper(SSBumpTex, AssetDatabase.GetAssetPath(Normal.GetInstanceID()) + "_SSBump.png");

            tempRNMImport.textureType = TextureImporterType.Bump;
            tempRNMImport.isReadable  = false;
            AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(Normal.GetInstanceID()), ImportAssetOptions.ForceUpdate);
        }
        else
        {
            Color[] SSBumpColor;

            TextureImporter tempRNMImport = TextureImporter.GetAtPath(AssetDatabase.GetAssetPath(Normal.GetInstanceID())) as TextureImporter;
            tempRNMImport.isReadable    = true;
            tempRNMImport.textureFormat = TextureImporterFormat.ARGB32;
            AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(Normal.GetInstanceID()), ImportAssetOptions.ForceUpdate);
            SSBumpColor = Normal.GetPixels();
            for (int i = 0; i < SSBumpColor.Length; i++)
            {
                SSBumpColor[i].a = SSBumpColor[i].b;
                SSBumpColor[i].b = SSBumpColor[i].g;
                SSBumpColor[i].g = SSBumpColor[i].a;
                SSBumpColor[i].a = 0.0f;
            }

            Normal.SetPixels(SSBumpColor);
            GzCRNMMergeUtil.TextureImportHelper(Normal, AssetDatabase.GetAssetPath(Normal.GetInstanceID()) + "_ConvertedSSBump.png");
            tempRNMImport.isReadable = false;
            AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(Normal.GetInstanceID()), ImportAssetOptions.ForceUpdate);
        }
    }
Example #2
0
    public static void MakeBasis(string name, Vector4 basisx, Vector4 basisy, Vector4 basisz)
    {
        Color[]   cBasisx;
        Color[]   cBasisy;
        Color[]   cBasisz;
        Texture2D texBasisx = new Texture2D(16, 16);
        Texture2D texBasisy = new Texture2D(16, 16);
        Texture2D texBasisz = new Texture2D(16, 16);

        cBasisx = texBasisx.GetPixels();
        cBasisy = texBasisy.GetPixels();
        cBasisz = texBasisz.GetPixels();

        for (int i = 0; i < cBasisx.Length; i++)
        {
            cBasisx[i] = CompressedBasis(basisx);
            cBasisy[i] = CompressedBasis(basisy);
            cBasisz[i] = CompressedBasis(basisz);
        }

        texBasisx.SetPixels(cBasisx);
        texBasisy.SetPixels(cBasisy);
        texBasisz.SetPixels(cBasisz);
        if (!System.IO.Directory.Exists("Assets/GzRNM/BasisMaps"))
        {
            System.IO.Directory.CreateDirectory("Assets/GzRNM/BasisMaps");
        }
        GzCRNMMergeUtil.TextureImportHelper(texBasisx, "Assets/GzRNM/BasisMaps/Basis X.png");
        GzCRNMMergeUtil.TextureImportHelper(texBasisy, "Assets/GzRNM/BasisMaps/Basis Y.png");
        GzCRNMMergeUtil.TextureImportHelper(texBasisz, "Assets/GzRNM/BasisMaps/Basis Z.png");
    }
Example #3
0
 void OnWizardCreate()
 {
     Texture2D[] RNM = new Texture2D[3];
     RNM[0] = RNMX;
     RNM[1] = RNMY;
     RNM[2] = RNMZ;
     GzCRNMMergeUtil.FlattenCRNM(RNM);
 }