void UpdateMatricesPropertiesForGPUInstancingSRP() { if (SRPHelper.IsUsingCustomRenderPipeline() && Config.Instance.actualRenderingMode == RenderingMode.GPUInstancing) { SetMaterialProp(ShaderProperties.LocalToWorldMatrix, transform.localToWorldMatrix); SetMaterialProp(ShaderProperties.WorldToLocalMatrix, transform.worldToLocalMatrix); } }
void OnEnable() { // When a GAO is disabled, all its coroutines are killed, so renable them on OnEnable. RestartFadeOutCoroutine(); #if VLB_SRP_SUPPORT SRPHelper.RegisterOnBeginCameraRendering(OnBeginCameraRenderingSRP); #endif }
protected override bool OnProcessOcclusion(ProcessOcclusionSource source) { Debug.Assert(m_Master && m_DepthCamera); if (source == ProcessOcclusionSource.RenderLoop && SRPHelper.IsUsingCustomRenderPipeline()) // Recursive rendering is not supported on SRP { m_NeedToUpdateOcclusionNextFrame = true; } else { ProcessOcclusionInternal(); } return(true); }
void OnWillRenderObject() { Camera currentCam = null; #if VLB_SRP_SUPPORT if (SRPHelper.IsUsingCustomRenderPipeline()) { currentCam = m_CurrentCameraRenderingSRP; } else #endif { currentCam = Camera.current; } OnWillCameraRenderThisBeam(currentCam); }
void UpdateCameraRelatedProperties(Camera cam) { if (cam && m_Master) { MaterialChangeStart(); { var camPosOS = m_Master.transform.InverseTransformPoint(cam.transform.position); var camForwardVectorOSN = transform.InverseTransformDirection(cam.transform.forward).normalized; float camIsInsideBeamFactor = cam.orthographic ? -1f : m_Master.GetInsideBeamFactorFromObjectSpacePos(camPosOS); SetMaterialProp(ShaderProperties.CameraParams, new Vector4(camForwardVectorOSN.x, camForwardVectorOSN.y, camForwardVectorOSN.z, camIsInsideBeamFactor)); #if VLB_SRP_SUPPORT // This update is to be able to move beams without trackChangesDuringPlaytime enabled with SRP & GPU Instancing UpdateMatricesPropertiesForGPUInstancingSRP(); #if UNITY_2017_3_OR_NEWER // ScalableBufferManager introduced in Unity 2017.3 if (SRPHelper.IsUsingCustomRenderPipeline()) { var bufferSize = cam.allowDynamicResolution ? new Vector2(ScalableBufferManager.widthScaleFactor, ScalableBufferManager.heightScaleFactor) : Vector2.one; SetMaterialProp(ShaderProperties.CameraBufferSizeSRP, bufferSize); } #endif #endif if (m_Master.colorMode == ColorMode.Gradient) { // Send the gradient matrix every frame since it's not a shader's property SetMaterialProp(ShaderProperties.ColorGradientMatrix, m_ColorGradientMatrix); } } MaterialChangeStop(); #if FORCE_CURRENT_CAMERA_DEPTH_TEXTURE_MODE if (m_Master.depthBlendDistance > 0f) { cam.depthTextureMode |= DepthTextureMode.Depth; } #endif } }
void OnDisable() { SRPHelper.UnregisterOnBeginCameraRendering(OnBeginCameraRenderingSRP); m_CurrentCameraRenderingSRP = null; }