void IssueComposite(CommandBuffer cb) { var id = Shader.PropertyToID("SubtractionDepth"); cb.GetTemporaryRT(id, -1, -1, 24, FilterMode.Point, RenderTextureFormat.Depth); cb.SetRenderTarget(id); cb.ClearRenderTarget(true, true, Color.black, 1f); foreach (var subtractee in Subtractee.GetAll()) { subtractee.IssueDrawFront(cb); } for (int i = 0; i < maskDrawNum; ++i) { foreach (var subtractor in Subtractor.GetAll()) { subtractor.IssueDrawMask(cb); } } cb.SetRenderTarget(BuiltinRenderTextureType.CameraTarget); cb.SetGlobalTexture("_SubtractionDepth", id); cb.DrawMesh(quad, Matrix4x4.identity, compositeMaterial); }
void IssueDrawBackDepth(CommandBuffer cb) { var id = Shader.PropertyToID("SubtracteeBackDepth"); cb.GetTemporaryRT(id, -1, -1, 24, FilterMode.Point, RenderTextureFormat.Depth); cb.SetRenderTarget(id); cb.ClearRenderTarget(true, true, Color.black, 0f); foreach (var subtractee in Subtractee.GetAll()) { subtractee.IssueDrawBack(cb); } cb.SetGlobalTexture("_SubtracteeBackDepth", id); }