public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { if (colorMaterial != null && fluidMaterial != null) { float blurScale = FluidRenderingUtils.SetupFluidCamera(renderingData.cameraData.camera); depth_BlurMaterial.SetFloat("_BlurScale", blurScale); depth_BlurMaterial.SetFloat("_BlurRadiusWorldspace", blurRadius); if (fluidMaterial != null) { fluidMaterial.SetFloat("_ThicknessCutoff", thicknessCutoff); } CommandBuffer cmd = CommandBufferPool.Get(k_RenderGrabPassTag); using (new ProfilingSample(cmd, k_RenderGrabPassTag)) { ObiParticleRenderer[] particleRenderers = GameObject.FindObjectsOfType <ObiParticleRenderer>(); FluidRenderingUtils.SetupCommandBuffer(cmd, target, renderTargets, depth_BlurMaterial, normal_ReconstructMaterial, thickness_Material, colorMaterial, fluidMaterial, particleRenderers); } context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); } }
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { if (depth_BlurMaterial == null || normal_ReconstructMaterial == null) { return; } float blurScale = FluidRenderingUtils.SetupFluidCamera(renderingData.cameraData.camera); depth_BlurMaterial.SetFloat("_BlurScale", blurScale); depth_BlurMaterial.SetFloat("_BlurRadiusWorldspace", settings.blurRadius); CommandBuffer cmd = CommandBufferPool.Get(k_RenderGrabPassTag); using (new ProfilingSample(cmd, k_RenderGrabPassTag)) { // surface reconstruction and dependant effects (lighting/reflection/refraction/foam) if (settings.generateSurface) { // normals/depth buffers: FluidRenderingUtils.SurfaceReconstruction(cmd, renderTargets, depth_BlurMaterial, normal_ReconstructMaterial, renderers); // blur fluid surface / reconstruct normals from smoothed depth: cmd.Blit(renderTargets.depth, renderTargets.smoothDepth, depth_BlurMaterial); cmd.Blit(renderTargets.smoothDepth, renderTargets.normals, normal_ReconstructMaterial); } } context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); }