Class InstancedLightRenderer<T extends Light & InstancedLight>
java.lang.Object
foundry.veil.api.client.render.deferred.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
Fields -
Constructor Summary
ConstructorsConstructorDescriptionInstancedLightRenderer(int lightSize) Creates a new instanced light renderer with a resizeable light buffer. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract voidclearRenderState(LightRenderer lightRenderer, List<T> lights) Clears the render state after drawing all lights.protected abstract com.mojang.blaze3d.vertex.MeshDatavoidfree()intprotected abstract booleanisVisible(T light, CullFrustum frustum) Checks whether the specified light can be seen in the specified frustum.voidprepareLights(LightRenderer lightRenderer, List<T> lights, Set<T> removedLights, CullFrustum frustum) Prepares the specified lights to be rendered.voidrenderLights(LightRenderer lightRenderer, List<T> lights) Renders all prepared lights with this renderer.protected abstract voidSets up the instanced buffer state.protected abstract voidsetupRenderState(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, waitMethods 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:LightTypeRendererPrepares the specified lights to be rendered.- Specified by:
prepareLightsin 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:LightTypeRendererRenders all prepared lights with this renderer.
Shaders, custom uniforms, and the way lights are rendered is up to the individual renderer.
- Specified by:
renderLightsin interfaceLightTypeRenderer<T extends Light & InstancedLight>- Parameters:
lightRenderer- The light renderer instancelights- The lights to render
-
getVisibleLights
public int getVisibleLights()- Specified by:
getVisibleLightsin interfaceLightTypeRenderer<T extends Light & InstancedLight>- Returns:
- The number of lights visible last frame
-
free
public void free()- Specified by:
freein interfaceorg.lwjgl.system.NativeResource
-