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); } }
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); }