using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; namespace NiloToon.NiloToonURP { /// /// Contains properties and helper functions that you can use when rendering. /// public static class NiloToonRenderingUtils { static Mesh s_FullscreenMesh = null; /// /// Returns a mesh that you can use with to render full-screen effects. /// public static Mesh fullscreenMesh { // [NiloToon] // Copy from URP 14.0.9's RenderingUtils.cs get { if (s_FullscreenMesh != null) return s_FullscreenMesh; float topV = 1.0f; float bottomV = 0.0f; s_FullscreenMesh = new Mesh { name = "Fullscreen Quad" }; s_FullscreenMesh.SetVertices(new List { new Vector3(-1.0f, -1.0f, 0.0f), new Vector3(-1.0f, 1.0f, 0.0f), new Vector3(1.0f, -1.0f, 0.0f), new Vector3(1.0f, 1.0f, 0.0f) }); s_FullscreenMesh.SetUVs(0, new List { new Vector2(0.0f, bottomV), new Vector2(0.0f, topV), new Vector2(1.0f, bottomV), new Vector2(1.0f, topV) }); s_FullscreenMesh.SetIndices(new[] { 0, 1, 2, 2, 1, 3 }, MeshTopology.Triangles, 0, false); s_FullscreenMesh.UploadMeshData(true); return s_FullscreenMesh; } } public static void DrawRendererListOrRenderers( ScriptableRenderContext context, CommandBuffer cmd, CullingResults cullResults, ref DrawingSettings drawingSettings, ref FilteringSettings filteringSettings) { #if UNITY_6000_0_OR_NEWER var rendererListParams = new RendererListParams(cullResults, drawingSettings, filteringSettings); var rendererList = context.CreateRendererList(ref rendererListParams); cmd.DrawRendererList(rendererList); #else context.DrawRenderers(cullResults, ref drawingSettings, ref filteringSettings); #endif } public static void DrawRendererListOrRenderers( ScriptableRenderContext context, CommandBuffer cmd, ref RenderingData renderingData, ref DrawingSettings drawingSettings, ref FilteringSettings filteringSettings) { DrawRendererListOrRenderers(context, cmd, renderingData.cullResults, ref drawingSettings, ref filteringSettings); } } }