void OnRenderImage(RenderTexture source, RenderTexture destination) { tempCamera.CopyFrom(sourceCamera); tempCamera.clearFlags = CameraClearFlags.SolidColor; tempCamera.backgroundColor = Color.clear; tempCamera.SetTargetBuffers(colorBuffers, depthBuffer.depthBuffer); tempCamera.cullingMask = 1 << LayerMask.NameToLayer("clipRender"); for (int i = 0; i < depthMax; i++) { Graphics.Blit(rts[0], rtTemp);// 这里不知道为什么需要复制出来 不能直接用rts【0】 当时我判断是不可同时读写所以复制一份就可以了 Shader.SetGlobalInt("DepthRenderedIndex", i); tempCamera.RenderWithShader(MRTShader, ""); Graphics.CopyTexture(rts[1], 0, 0, finalClips, i, 0); } if (showFinal == false) { Graphics.Blit(rts[rt.GetHashCode()], destination); } else { Graphics.Blit(null, destination, finalClipsMat); } }
void OnRenderImage(RenderTexture source, RenderTexture destination) { tempCamera.CopyFrom(sourceCamera); tempCamera.SetTargetBuffers(this.colorBuffers, this.depthBuffer.depthBuffer); tempCamera.cullingMask = 1 << LayerMask.NameToLayer("Lerpz"); tempCamera.RenderWithShader(MRTShader, ""); Graphics.Blit(rts[rt.GetHashCode()], destination); }
/// <summary> /// needed for "Equals" /// </summary> /// <returns></returns> public override int GetHashCode() { int hash = 13; hash = (hash * 7) + X.GetHashCode(); hash = (hash * 7) + Y.GetHashCode(); hash = (hash * 7) + Z.GetHashCode(); hash = (hash * 7) + XR.GetHashCode(); hash = (hash * 7) + YR.GetHashCode(); hash = (hash * 7) + LT.GetHashCode(); hash = (hash * 7) + RT.GetHashCode(); hash = (hash * 7) + DpadDirection.GetHashCode(); hash = (hash * 7) + buttons.GetHashCode(); return(hash); }