Cull is a fully typed blazing-fast distance culler that can load/unload objects with a minimal logic behind it. It would have been even faster if not my failed RenderCache module.
THIS MODULE USES PARENTING TO LOAD AND UNLOAD OBJECTS
API
local Cull = require(game:GetService("ReplicatedStorage"):WaitForChild("Cull"))
local Culling = Cull.new()
Culling:Start()
Tips/How to use
Cull utilizes CollectionService[Tags] to add culling objects. So to add culling object you need to add tag that you have in your Cull settings. Here’s Cull setting list:
return{
--//[[Main settings]]\\--
--Self explanotory[No default, its all up to you]
RenderDistance = 600;
--Culling object tag[Default = "Cullable"]
Tag = "Cullable";
--//[[Perfomance Settings]]\\--
--Module will multi-task for faster culling[Default = true]
Clusterization = true;
--Self explanotory[Default = 3]
NumClusters = 3;
--How much seconds before culling objects update[Default = 1]
UpdateTime = 1;
--Will update culling every frame[Default = false]
--[[Will ignore UpdateTime]]
UseRunServiceConnection = false;
}
Why Cull?
Cull has Clusterization that allows to cull thousands of objects at the same time. How it works: cull gets all culling objects and splits them into clusters, and then for each cluster it opens a different thread.
Showcase
Stresstest 6000 trees, updating every frame [UseRunServiceConnection enabled]
I recommend disable streaming because of how you should use this module. Module should not be used like in stress test, it should be used to partially remove decoration only props from big maps but still, how you use, its up to you. (I didnt really test compatibility with content streaming but it should work fine because it uses parenting ) Edit: Cull works fine with content streaming!
I would assume you would have to make an exemption, similar to how content streaming needs exemptions for certain objects such as infinitely displayable nametags/parts.