Class FrustumMixin
- All Implemented Interfaces:
CullFrustum
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract boolean
cubeInFrustum
(double d, double e, double f, double g, double h, double i) org.joml.Matrix4fc
org.joml.Vector4fc[]
org.joml.Vector3dc
org.joml.Vector3fc
abstract boolean
isVisible
(net.minecraft.world.phys.AABB aABB) void
offsetToFullyIncludeCameraCube
(int $$0, org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable<net.minecraft.client.renderer.culling.Frustum> cir) boolean
testAab
(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) Test whether the given axis-aligned box is partly or completely within or outside of the frustum defined bythis
frustum culler.boolean
testAab
(net.minecraft.world.phys.AABB aabb) Test whether the given axis-aligned box is partly or completely within or outside of the frustum defined bythis
frustum culler.boolean
testLineSegment
(double aX, double aY, double aZ, double bX, double bY, double bZ) Test whether the given line segment, defined by the end points(aX, aY, aZ)
and(bX, bY, bZ)
, is partly or completely within the frustum defined bythis
frustum culler.boolean
testPlaneXY
(double minX, double minY, double maxX, double maxY) Test whether the given XY-plane (atZ = 0
) is partly or completely within or outside of the frustum defined bythis
frustum culler.boolean
testPlaneXZ
(double minX, float minZ, float maxX, float maxZ) Test whether the given XZ-plane (atY = 0
) is partly or completely within or outside of the frustum defined bythis
frustum culler.boolean
testPoint
(double x, double y, double z) Test whether the given point(x, y, z)
is within the frustum defined bythis
frustum culler.boolean
testSphere
(double x, double y, double z, float r) Test whether the given sphere is partly or completely within or outside of the frustum defined bythis
frustum culler.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface foundry.veil.api.client.render.CullFrustum
testAab, testAab, testLineSegment, testLineSegment, testPlaneXY, testPlaneXY, testPoint, testPoint, testPoint, testSphere, testSphere
-
Constructor Details
-
FrustumMixin
public FrustumMixin()
-
-
Method Details
-
isVisible
public abstract boolean isVisible(net.minecraft.world.phys.AABB aABB) -
cubeInFrustum
protected abstract boolean cubeInFrustum(double d, double e, double f, double g, double h, double i) -
offsetToFullyIncludeCameraCube
public void offsetToFullyIncludeCameraCube(int $$0, org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable<net.minecraft.client.renderer.culling.Frustum> cir) -
testPoint
public boolean testPoint(double x, double y, double z) Description copied from interface:CullFrustum
Test whether the given point(x, y, z)
is within the frustum defined bythis
frustum culler.- Specified by:
testPoint
in interfaceCullFrustum
- Parameters:
x
- the x-coordinate of the pointy
- the y-coordinate of the pointz
- the z-coordinate of the point- Returns:
true
if the given point is inside the frustum;false
otherwise
-
testSphere
public boolean testSphere(double x, double y, double z, float r) Description copied from interface:CullFrustum
Test whether the given sphere is partly or completely within or outside of the frustum defined bythis
frustum culler.The algorithm implemented by this method is conservative. This means that in certain circumstances a false positive can occur, when the method returns
true
for spheres that do not intersect the frustum. See iquilezles.org for an examination of this problem.- Specified by:
testSphere
in interfaceCullFrustum
- Parameters:
x
- the x-coordinate of the sphere's centery
- the y-coordinate of the sphere's centerz
- the z-coordinate of the sphere's centerr
- the sphere's radius- Returns:
true
if the given sphere is partly or completely inside the frustum;false
otherwise
-
testAab
public boolean testAab(net.minecraft.world.phys.AABB aabb) Description copied from interface:CullFrustum
Test whether the given axis-aligned box is partly or completely within or outside of the frustum defined bythis
frustum culler. The box is specified via itsmin
andmax
corner coordinates.The algorithm implemented by this method is conservative. This means that in certain circumstances a false positive can occur, when the method returns
true
for boxes that do not intersect the frustum. See iquilezles.org for an examination of this problem.- Specified by:
testAab
in interfaceCullFrustum
- Parameters:
aabb
- the axis-aligned box- Returns:
true
if the axis-aligned box is completely or partly inside of the frustum;false
otherwise
-
testAab
public boolean testAab(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) Description copied from interface:CullFrustum
Test whether the given axis-aligned box is partly or completely within or outside of the frustum defined bythis
frustum culler. The box is specified via its min and max corner coordinates.The algorithm implemented by this method is conservative. This means that in certain circumstances a false positive can occur, when the method returns
true
for boxes that do not intersect the frustum. See iquilezles.org for an examination of this problem.Reference: Efficient View Frustum Culling
- Specified by:
testAab
in interfaceCullFrustum
- Parameters:
minX
- the x-coordinate of the minimum cornerminY
- the y-coordinate of the minimum cornerminZ
- the z-coordinate of the minimum cornermaxX
- the x-coordinate of the maximum cornermaxY
- the y-coordinate of the maximum cornermaxZ
- the z-coordinate of the maximum corner- Returns:
true
if the axis-aligned box is completely or partly inside of the frustum;false
otherwise
-
testPlaneXY
public boolean testPlaneXY(double minX, double minY, double maxX, double maxY) Description copied from interface:CullFrustum
Test whether the given XY-plane (atZ = 0
) is partly or completely within or outside of the frustum defined bythis
frustum culler. The plane is specified via its min and max corner coordinates.The algorithm implemented by this method is conservative. This means that in certain circumstances a false positive can occur, when the method returns
true
for planes that do not intersect the frustum. See iquilezles.org for an examination of this problem.Reference: Efficient View Frustum Culling
- Specified by:
testPlaneXY
in interfaceCullFrustum
- Parameters:
minX
- the x-coordinate of the minimum cornerminY
- the y-coordinate of the minimum cornermaxX
- the x-coordinate of the maximum cornermaxY
- the y-coordinate of the maximum corner- Returns:
true
if the XY-plane is completely or partly inside of the frustum;false
otherwise
-
testPlaneXZ
public boolean testPlaneXZ(double minX, float minZ, float maxX, float maxZ) Description copied from interface:CullFrustum
Test whether the given XZ-plane (atY = 0
) is partly or completely within or outside of the frustum defined bythis
frustum culler. The plane is specified via its min and max corner coordinates.The algorithm implemented by this method is conservative. This means that in certain circumstances a false positive can occur, when the method returns
true
for planes that do not intersect the frustum. See iquilezles.org for an examination of this problem.Reference: Efficient View Frustum Culling
- Specified by:
testPlaneXZ
in interfaceCullFrustum
- Parameters:
minX
- the x-coordinate of the minimum cornerminZ
- the z-coordinate of the minimum cornermaxX
- the x-coordinate of the maximum cornermaxZ
- the z-coordinate of the maximum corner- Returns:
true
if the XZ-plane is completely or partly inside of the frustum;false
otherwise
-
testLineSegment
public boolean testLineSegment(double aX, double aY, double aZ, double bX, double bY, double bZ) Description copied from interface:CullFrustum
Test whether the given line segment, defined by the end points(aX, aY, aZ)
and(bX, bY, bZ)
, is partly or completely within the frustum defined bythis
frustum culler.- Specified by:
testLineSegment
in interfaceCullFrustum
- Parameters:
aX
- the x coordinate of the line segment's first end pointaY
- the y coordinate of the line segment's first end pointaZ
- the z coordinate of the line segment's first end pointbX
- the x coordinate of the line segment's second end pointbY
- the y coordinate of the line segment's second end pointbZ
- the z coordinate of the line segment's second end point- Returns:
true
if the given line segment is partly or completely inside the frustum;false
otherwise
-
getPlanes
public org.joml.Vector4fc[] getPlanes()- Specified by:
getPlanes
in interfaceCullFrustum
- Returns:
- The data for each plane in the frustum
-
getPosition
public org.joml.Vector3dc getPosition()- Specified by:
getPosition
in interfaceCullFrustum
- Returns:
- The position of the camera
-
getModelViewProjectionMatrix
public org.joml.Matrix4fc getModelViewProjectionMatrix()- Specified by:
getModelViewProjectionMatrix
in interfaceCullFrustum
- Returns:
- The matrix used to create this frustum
-
getViewVector
public org.joml.Vector3fc getViewVector()- Specified by:
getViewVector
in interfaceCullFrustum
- Returns:
- The direction of the camera frustum
-