🔌 API & Mod Integration (Minecraft 26.3)
Camera Culling is designed to operate seamlessly alongside client rendering mods (such as Sodium, Iris, Canvas) and content mods adding custom entities or block entities.
🤝 Third-Party Renderer Compatibility
1. Sodium & Embeddium
- Static Terrain Chunks: Sodium optimizes the 16x16 chunk meshing and static block face rendering pipeline.
- Dynamic Entities: Camera Culling optimizes dynamic entities, chests, signs, and particles.
- Compatibility: 100% Compatible with zero overlapping Mixins or state collisions.
2. Iris & Shaders
- Shader Uniforms: Shaders perform post-processing on the extracted frame buffer.
- Occlusion Savings: Because culled entities are prevented from submitting geometry to the G-Buffer, shaders run with significantly higher framerates in dense areas.
🛠️ Programmatic Java API Hooks
Other mods can query or integrate with Camera Culling via static utility facades:
1. Querying Culling Engine State
java
import net.vanillaoutsider.culling.CameraCullingClient;
boolean isEnabled = CameraCullingClient.isCullingEnabled();
long culledMobs = CameraCullingClient.getCulledEntitiesCount();
long renderedMobs = CameraCullingClient.getRenderedEntitiesCount();2. Programmatic Immunity Blacklisting
java
import net.vanillaoutsider.culling.config.CameraCullingConfig;
// Whitelist a custom entity ID from culling
CameraCullingConfig.addClientBlacklist("mymod:custom_companion");3. Direct Raycast Line-of-Sight Verification
java
import net.vanillaoutsider.culling.util.CullingRaycastHelper;
// Perform a zero-allocation sightline test
boolean visible = CullingRaycastHelper.hasLineOfSight(level, camPos, targetX, targetY, targetZ);