Class IndirectLightRenderer<T extends Light & IndirectLight<T>>
java.lang.Object
foundry.veil.api.client.render.deferred.light.renderer.IndirectLightRenderer<T>
- Type Parameters:
T- The type of lights to render
- All Implemented Interfaces:
LightTypeRenderer<T>,AutoCloseable,org.lwjgl.system.NativeResource
- Direct Known Subclasses:
IndirectPointLightRenderer
public abstract class IndirectLightRenderer<T extends Light & IndirectLight<T>>
extends Object
implements LightTypeRenderer<T>
Draws lights as indirect instanced quads in the scene.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final intprotected final intprotected final intprotected intprotected final intprotected final int -
Constructor Summary
ConstructorsConstructorDescriptionIndirectLightRenderer(int lightSize, int lowResSize, int positionOffset, int rangeOffset) 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()intstatic booleanvoidprepareLights(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 -
highResSize
protected final int highResSize -
lowResSize
protected final int lowResSize -
positionOffset
protected final int positionOffset -
rangeOffset
protected final int rangeOffset -
maxLights
protected int maxLights
-
-
Constructor Details
-
IndirectLightRenderer
public IndirectLightRenderer(int lightSize, int lowResSize, int positionOffset, int rangeOffset) Creates a new instanced light renderer with a resizeable light buffer.- Parameters:
lightSize- The size of each light in byteslowResSize- The size of the low-resolution mesh or0to only use the high-detail mesh
-
-
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
-
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 & IndirectLight<T>>- 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 & IndirectLight<T>>- Parameters:
lightRenderer- The light renderer instancelights- The lights to render
-
getVisibleLights
public int getVisibleLights()- Specified by:
getVisibleLightsin interfaceLightTypeRenderer<T extends Light & IndirectLight<T>>- Returns:
- The number of lights visible last frame
-
free
public void free()- Specified by:
freein interfaceorg.lwjgl.system.NativeResource
-
isSupported
public static boolean isSupported()- Returns:
- Whether this renderer is supported
-