Esempio n. 1
0
        public Material GetClonedMaterial(GLightingModel light, GTexturingModel texturing, GSplatsModel splats = GSplatsModel.Splats4)
        {
            GWizardMaterialTemplate        matTemplate;
            List <GWizardMaterialTemplate> collection =
                GCommon.CurrentRenderPipeline == GRenderPipelineType.Universal ? UniversalRPMaterials :
                GCommon.CurrentRenderPipeline == GRenderPipelineType.Lightweight ? LightweightRPMaterials :
                BuiltinRPMaterials;

            if (texturing != GTexturingModel.Splat)
            {
                matTemplate = collection.Find(m =>
                {
                    return(m.LightingModel == light && m.TexturingModel == texturing);
                });
            }
            else
            {
                matTemplate = collection.Find(m =>
                {
                    return(m.LightingModel == light && m.TexturingModel == texturing && m.SplatsModel == splats);
                });
            }

            Material mat = null;

            if (matTemplate.Material != null)
            {
                mat = Object.Instantiate(matTemplate.Material);
            }

            return(mat);
        }
        private void RecordShadingAnalytics()
        {
            GTexturingModel texturing = GGriffinSettings.Instance.WizardSettings.TexturingModel;
            string          url       =
                texturing == GTexturingModel.ColorMap ? GAnalytics.SHADING_COLOR_MAP :
                texturing == GTexturingModel.GradientLookup ? GAnalytics.SHADING_GRADIENT_LOOKUP :
                texturing == GTexturingModel.Splat ? GAnalytics.SHADING_SPLAT :
                texturing == GTexturingModel.VertexColor ? GAnalytics.SHADING_VERTEX_COLOR : string.Empty;

            GAnalytics.Record(url);
        }
        public static void SetShader(GStylizedTerrain terrain, GLightingModel lighting, GTexturingModel texturing, GSplatsModel splats = GSplatsModel.Splats4)
        {
            if (terrain.TerrainData == null)
            {
                throw new NullReferenceException("The selected terrain doesn't have terrain data.");
            }
            if (terrain.TerrainData.Shading.CustomMaterial == null)
            {
                throw new NullReferenceException("The selected terrain doesn't have material. Make sure you've assigned a material for it.");
            }

            Material mat = GRuntimeSettings.Instance.terrainRendering.GetClonedMaterial(
                GCommon.CurrentRenderPipeline,
                lighting,
                texturing,
                splats);

            if (mat == null)
            {
                throw new Exception("Fail to get template material. Try re-install render pipeline extension package.");
            }
            terrain.TerrainData.Shading.CustomMaterial.shader = mat.shader;
            terrain.TerrainData.Shading.UpdateMaterials();
            GUtilities.DestroyObject(mat);
        }
Esempio n. 4
0
            public Material GetClonedMaterial(GRenderPipelineType pipeline, GLightingModel light, GTexturingModel texturing, GSplatsModel splats = GSplatsModel.Splats4)
            {
                TerrainMaterialTemplate        matTemplate;
                List <TerrainMaterialTemplate> collection =
                    pipeline == GRenderPipelineType.Universal ? universalRpMaterials :
                    builtinRpMaterials;

                if (texturing != GTexturingModel.Splat)
                {
                    matTemplate = collection.Find(m =>
                    {
                        return(m.lightingModel == light && m.texturingModel == texturing);
                    });
                }
                else
                {
                    matTemplate = collection.Find(m =>
                    {
                        return(m.lightingModel == light && m.texturingModel == texturing && m.splatsModel == splats);
                    });
                }

                Material mat = null;

                if (matTemplate.material != null)
                {
                    mat = UnityEngine.Object.Instantiate(matTemplate.material);
                }

                return(mat);
            }