using Unity.Collections; using Unity.Burst; namespace UnityEngine.Rendering { [BurstCompile] internal static class InstanceCullerBurst { [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] public static unsafe void SetupCullingJobInput(float lodBias, float meshLodThreshold, BatchCullingContext* context, ReceiverPlanes* receiverPlanes, ReceiverSphereCuller* receiverSphereCuller, FrustumPlaneCuller* frustumPlaneCuller, float* screenRelativeMetric, float* meshLodConstant) { *receiverPlanes = ReceiverPlanes.Create(*context, Allocator.TempJob); *receiverSphereCuller = ReceiverSphereCuller.Create(*context, Allocator.TempJob); *frustumPlaneCuller = FrustumPlaneCuller.Create(*context, receiverPlanes->planes.AsArray(), *receiverSphereCuller, Allocator.TempJob); *screenRelativeMetric = LODRenderingUtils.CalculateScreenRelativeMetricNoBias(context->lodParameters); *meshLodConstant = LODRenderingUtils.CalculateMeshLodConstant(context->lodParameters, *screenRelativeMetric, meshLodThreshold); *screenRelativeMetric /= lodBias; } } }