private void ResizeSplatControlMaps() { for (int i = 0; i < SplatControlMapCount; ++i) { Texture2D t = GetSplatControl(i); if (t == null) { return; } Texture2D tmp = GCommon.CreateTexture(SplatControlResolution, Color.clear); RenderTexture rt = new RenderTexture(SplatControlResolution, SplatControlResolution, 32, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); GCommon.CopyToRT(t, rt); GCommon.CopyFromRT(tmp, rt); rt.Release(); Object.DestroyImmediate(rt); tmp.name = t.name; tmp.filterMode = t.filterMode; tmp.wrapMode = t.wrapMode; Object.DestroyImmediate(t, true); SplatControls[i] = tmp; GCommon.TryAddObjectToAsset(tmp, TerrainData); } UpdateMaterials(); }
public Texture2D GetSplatControl(int index) { if (index < 0 || index >= SplatControlMapCount) { throw new System.ArgumentException("Index must be >=0 and <=SplatControlMapCount"); } else { Texture2D t = SplatControls[index]; if (t == null) { Color fillColor = (index == 0 && SplatControlMapCount == 1) ? new Color(1, 0, 0, 0) : new Color(0, 0, 0, 0); t = GCommon.CreateTexture(SplatControlResolution, fillColor); t.filterMode = FilterMode.Bilinear; t.wrapMode = TextureWrapMode.Clamp; t.name = SPLAT_CONTROL_MAP_NAME + " " + index; SplatControls[index] = t; } GCommon.TryAddObjectToAsset(t, TerrainData); return(t); } }
private void ResizeMetallicMap() { if (metallicMap == null) { return; } Texture2D tmp = GCommon.CreateTexture(MetallicMapResolution, Color.black); RenderTexture rt = new RenderTexture(MetallicMapResolution, MetallicMapResolution, 32, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear); GCommon.CopyToRT(metallicMap, rt); GCommon.CopyFromRT(tmp, rt); rt.Release(); Object.DestroyImmediate(rt); tmp.name = metallicMap.name; tmp.filterMode = metallicMap.filterMode; tmp.wrapMode = metallicMap.wrapMode; Object.DestroyImmediate(metallicMap, true); metallicMap = tmp; GCommon.TryAddObjectToAsset(metallicMap, TerrainData); UpdateMaterials(); }