How to Disable Frustum Culling for an Actor or Component?

Custom culling rules can be set in C++:

There’s this renderer module method that makes the renderer to use the specified custom culling rules:

void IRendererModule::RegisterCustomCullingImpl(ICustomCulling* impl) = 0;

you must give it an object that inherits from this interface (a culling query factory):

class ICustomCulling
{
public:
	virtual ICustomVisibilityQuery* CreateQuery (const FSceneView& View) = 0;
};

The CreateQuery()'s returned object will be used to perform the actual custom visibility check, it must be inherited from ICustomVisibilityQuery interface:

class ICustomVisibilityQuery: public IRefCountedObject
{
public:
	/* prepares the query for visibility tests */
	virtual bool Prepare() = 0;

	/* test primitive visiblity */
	virtual bool IsVisible(int32 VisibilityId, const FBoxSphereBounds& Bounds) = 0;

	/* return true if we can call IsVisible from a ParallelFor */
	virtual bool IsThreadsafe()
	{
		return false;
	}
};

If all you need a “never culled object” i think Prepare() can be left empty and IsThreadsafe() can return true (to make the culling run in multiple threads which is faster).

3 Likes