void ValidateShadowMap() { if (!shadowMapGO) { Color shadowColor = new Color(0.0f, 0.0f, 0.0f, 0.0f); shadowMapGO = new GameObject("__ShadowMap"); shadowMapGO.hideFlags = HideFlags.HideAndDontSave; shadowMapGO.AddComponent(typeof(Camera)); shadowMapGO.GetComponent <Camera>().orthographic = true; shadowMapGO.GetComponent <Camera>().orthographicSize = 1; shadowMapGO.GetComponent <Camera>().aspect = 1; shadowMapGO.GetComponent <Camera>().clearFlags = CameraClearFlags.Nothing; // CameraClearFlags.SolidColor; shadowMapGO.GetComponent <Camera>().backgroundColor = shadowColor; shadowMapGO.GetComponent <Camera>().depth = 0; shadowMapGO.transform.position = transform.position; shadowMapGO.transform.rotation = transform.rotation; shadowMapGO.transform.localScale = Vector3.one; shadowMapGO.GetComponent <Camera>().enabled = false; RenderBorder renderBorder = shadowMapGO.AddComponent(typeof(RenderBorder)) as RenderBorder; renderBorder.border = border; renderBorder.borderColor = shadowColor; } shadowMapRT = RenderTexture.GetTemporary(resolution, resolution, 0, RenderTextureFormat.ARGB32); if (!shadowMapRT) { Debug.Log("Couldn't get ShadowMap RT for shadow blobs " + resolution); } if (shadowMapGO && shadowMapRT) { shadowMapGO.GetComponent <Camera>().targetTexture = shadowMapRT; Rect rect = new Rect(); rect.x = border; rect.y = border; rect.width = shadowMapRT.width - border * 2; rect.height = shadowMapRT.height - border * 2; shadowMapGO.GetComponent <Camera>().pixelRect = rect; } }
internal void UpdateBorder(ColorIndex border) { this.border = border; RenderBorder?.Invoke(border); }