Exemple #1
0
        private void DrawLivePreview(GStylizedTerrain t, Camera cam)
        {
            if (t.transform.rotation != Quaternion.identity ||
                t.transform.lossyScale != Vector3.one)
            {
                return;
            }

            instance.GetQuad(worldPoints);
            for (int i = 0; i < normalizedPoints.Length; ++i)
            {
                normalizedPoints[i] = t.WorldPointToUV(worldPoints[i]);
            }

            Rect dirtyRect = GUtilities.GetRectContainsPoints(normalizedPoints);


            if (instance.Channel == GTextureStampChannel.AlbedoMetallicSmoothness)
            {
                int        albedoResolution = t.TerrainData.Shading.AlbedoMapResolution;
                FilterMode albedoFilter     = t.TerrainData.Shading.AlbedoMap.filterMode;

                int        metallicResolution = t.TerrainData.Shading.MetallicMapResolution;
                FilterMode metallicFilter     = t.TerrainData.Shading.MetallicMap.filterMode;

                Texture albedo   = GetPreviewTexture(t, "albedo", albedoResolution, albedoFilter);
                Texture metallic = GetPreviewTexture(t, "metallic", metallicResolution, metallicFilter);
                GLivePreviewDrawer.DrawAMSLivePreview(t, cam, albedo, metallic, dirtyRect);
            }
            else if (instance.Channel == GTextureStampChannel.Splat)
            {
                int       controlMapResolution = t.TerrainData.Shading.SplatControlResolution;
                Texture[] controls             = new Texture[t.TerrainData.Shading.SplatControlMapCount];
                for (int i = 0; i < controls.Length; ++i)
                {
                    Texture currentControl = t.TerrainData.Shading.GetSplatControl(i);
                    controls[i] = GetPreviewTexture(t, "splatControl" + i, controlMapResolution, currentControl.filterMode);
                }
                GLivePreviewDrawer.DrawSplatLivePreview(t, cam, controls, dirtyRect);
            }
        }
Exemple #2
0
        private void SetupAlbedoMetallicPreview(GStylizedTerrain t, Camera cam, Rect dirtyRect)
        {
            Material mat = t.TerrainData.Shading.MaterialToRender;

            if (mat == null)
            {
                return;
            }
            int           albedoResolution = t.TerrainData.Shading.AlbedoMapResolution;
            FilterMode    albedoFilter     = t.TerrainData.Shading.AlbedoMap.filterMode;
            RenderTexture rtAlbedo         = GetPreviewTexture(t, "albedo", albedoResolution, albedoFilter);

            instance.Internal_ApplyAlbedo(t, instance.SplineCreator.Editor_Vertices, rtAlbedo);

            int           metallicResolution = t.TerrainData.Shading.MetallicMapResolution;
            FilterMode    metallicFilter     = t.TerrainData.Shading.MetallicMap.filterMode;
            RenderTexture rtMetallic         = GetPreviewTexture(t, "metallic", metallicResolution, metallicFilter);

            instance.Internal_ApplyMetallic(t, instance.SplineCreator.Editor_Vertices, rtMetallic);

            GLivePreviewDrawer.DrawAMSLivePreview(t, cam, rtAlbedo, rtMetallic, dirtyRect);
        }