Class InstancedLightRenderer<T extends Light & InstancedLight>
java.lang.Object
foundry.veil.api.client.render.light.renderer.InstancedLightRenderer<T>
- Type Parameters:
T
- The type of lights to render
- All Implemented Interfaces:
LightTypeRenderer<T>
,AutoCloseable
,org.lwjgl.system.NativeResource
- Direct Known Subclasses:
AreaLightRenderer
,InstancedPointLightRenderer
public abstract class InstancedLightRenderer<T extends Light & InstancedLight>
extends Object
implements LightTypeRenderer<T>
Draws lights as instanced quads in the scene.
-
Field Summary
-
Constructor Summary
ConstructorDescriptionInstancedLightRenderer
(int lightSize) Creates a new instanced light renderer with a resizeable light buffer. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
clearRenderState
(LightRenderer lightRenderer, List<T> lights) Clears the render state after drawing all lights.protected abstract com.mojang.blaze3d.vertex.MeshData
void
free()
int
protected abstract boolean
isVisible
(T light, CullFrustum frustum) Checks whether the specified light can be seen in the specified frustum.void
prepareLights
(LightRenderer lightRenderer, List<T> lights, Set<T> removedLights, CullFrustum frustum) Prepares the specified lights to be rendered.void
renderLights
(LightRenderer lightRenderer, List<T> lights) Renders all prepared lights with this renderer.protected abstract void
Sets up the instanced buffer state.protected abstract void
setupRenderState
(LightRenderer lightRenderer, List<T> lights) Sets up the render state for drawing all lights.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.lwjgl.system.NativeResource
close
-
Field Details
-
lightSize
protected final int lightSize -
maxLights
protected int maxLights
-
-
Constructor Details
-
InstancedLightRenderer
public InstancedLightRenderer(int lightSize) Creates a new instanced light renderer with a resizeable light buffer.- Parameters:
lightSize
- The size of each light in bytes
-
-
Method Details
-
createMesh
protected abstract com.mojang.blaze3d.vertex.MeshData createMesh()- Returns:
- The mesh data each instanced light will be rendered with use
-
setupBufferState
protected abstract void setupBufferState()Sets up the instanced buffer state. -
setupRenderState
Sets up the render state for drawing all lights.- Parameters:
lightRenderer
- The renderer instancelights
- All lights in the order they are in the instanced buffer
-
clearRenderState
Clears the render state after drawing all lights.- Parameters:
lightRenderer
- The renderer instancelights
- All lights in the order they are in the instanced buffer
-
isVisible
Checks whether the specified light can be seen in the specified frustum.- Parameters:
light
- The light to checkfrustum
- The frustum to check visibility with- Returns:
- Whether that light is visible
-
prepareLights
public void prepareLights(LightRenderer lightRenderer, List<T> lights, Set<T> removedLights, CullFrustum frustum) Description copied from interface:LightTypeRenderer
Prepares the specified lights to be rendered.- Specified by:
prepareLights
in interfaceLightTypeRenderer<T extends Light & InstancedLight>
- Parameters:
lightRenderer
- The light renderer instancelights
- The lights to renderremovedLights
- The lights that will be removed this framefrustum
- The culling view frustum
-
renderLights
Description copied from interface:LightTypeRenderer
Renders all prepared lights with this renderer.
Shaders, custom uniforms, and the way lights are rendered is up to the individual renderer.
- Specified by:
renderLights
in interfaceLightTypeRenderer<T extends Light & InstancedLight>
- Parameters:
lightRenderer
- The light renderer instancelights
- The lights to render
-
getVisibleLights
public int getVisibleLights()- Specified by:
getVisibleLights
in interfaceLightTypeRenderer<T extends Light & InstancedLight>
- Returns:
- The number of lights visible last frame
-
free
public void free()- Specified by:
free
in interfaceorg.lwjgl.system.NativeResource
-