/// <summary>
        /// Postprocesses materials while you are importing a SpeedTree 8 asset. Call from OnPostprocessSpeedTree in a MaterialPostprocessor.
        /// </summary>
        /// <param name="speedtree">The GameObject Unity creates from this imported SpeedTree.</param>
        /// <param name="stImporter">The asset importer used to import this SpeedTree asset.</param>
        /// <param name="finalizer">Render pipeline-specific material finalizer.</param>
        public static void PostprocessSpeedTree8Materials(GameObject speedtree, SpeedTreeImporter stImporter, MaterialFinalizer finalizer = null)
        {
            LODGroup lg = speedtree.GetComponent <LODGroup>();

            LOD[] lods = lg.GetLODs();
            for (int l = 0; l < lods.Length; l++)
            {
                LOD  lod         = lods[l];
                bool isBillboard = stImporter.hasBillboard && (l == lods.Length - 1);
                int  wq          = Mathf.Min(stImporter.windQualities[l], stImporter.bestWindQuality);
                foreach (Renderer r in lod.renderers)
                {
                    // Override default motion vector generation mode pending
                    // proper motion vector integration in SRPs.
                    r.motionVectorGenerationMode = MotionVectorGenerationMode.Camera;
                    foreach (Material m in r.sharedMaterials)
                    {
                        float cutoff = stImporter.alphaTestRef;
                        ImportNewSpeedTree8Material(m, wq, isBillboard);
                        if (finalizer != null)
                        {
                            finalizer(m);
                        }
                    }
                }
            }
        }
 public void OnPostprocessSpeedTree(GameObject speedTree)
 {
     context.DependsOnCustomDependency("srp/default-pipeline");
     if (RenderPipelineManager.currentPipeline is HDRenderPipeline)
     {
         SpeedTreeImporter stImporter = assetImporter as SpeedTreeImporter;
         SpeedTree8MaterialUpgrader.PostprocessSpeedTree8Materials(speedTree, stImporter, HDSpeedTree8MaterialUpgrader.HDSpeedTree8MaterialFinalizer);
     }
 }
        public void Apply(AssetImporter originalImporter, string assetPath, Property[] properties)
        {
            SpeedTreeImporter importer = (SpeedTreeImporter)originalImporter;

            for (int i = 0; i < properties.Length; i++)
            {
                var property = properties [i];

                switch (property.name)
                {
                case "scaleFactor":
                    importer.scaleFactor = float.Parse(property.value);
                    break;

                case "alphaTestRef":
                    importer.alphaTestRef = float.Parse(property.value);
                    break;

                case "enableSmoothLODTransition":
                    importer.enableSmoothLODTransition = bool.Parse(property.value);
                    break;

                case "animateCrossFading":
                    importer.animateCrossFading = bool.Parse(property.value);
                    break;

                case "billboardTransitionCrossFadeWidth":
                    importer.billboardTransitionCrossFadeWidth = float.Parse(property.value);
                    break;

                case "fadeOutWidth":
                    importer.fadeOutWidth = float.Parse(property.value);
                    break;

                case "userData":
                    importer.userData = property.value;
                    break;

                case "assetBundleName":
                    importer.assetBundleName = property.value;
                    break;

                case "assetBundleVariant":
                    importer.assetBundleVariant = property.value;
                    break;

                case "name":
                    importer.name = property.value;
                    break;

                case "hideFlags":
                    importer.hideFlags = (HideFlags)System.Enum.Parse(typeof(HideFlags), property.value, true);
                    break;
                }
            }
        }
Exemple #4
0
    // SpeedTree
    private void OnPreprocessSpeedTree()
    {
        SpeedTreeImporter speedTreeImporter = assetImporter as SpeedTreeImporter;

        if (speedTreeImporter == null)
        {
            return;
        }
        Debug.Log("树模型导入前");
    }
        public void OnPostprocessSpeedTree(GameObject speedtree)
        {
            SpeedTreeImporter stImporter = assetImporter as SpeedTreeImporter;

            SpeedTree8MaterialUpgrader.PostprocessSpeedTree8Materials(speedtree, stImporter, HDSpeedTree8MaterialUpgrader.HDSpeedTree8MaterialFinalizer);
        }