Class VeilRenderSystem

java.lang.Object
foundry.veil.api.client.render.VeilRenderSystem

public final class VeilRenderSystem extends Object
Additional functionality for RenderSystem.
  • Field Details

    • BLOOM_SHARD

      public static final net.minecraft.client.renderer.RenderStateShard.OutputStateShard BLOOM_SHARD
      Output state for drawing into the bloom framebuffer.
  • Method Details

    • bootstrap

      @Internal public static void bootstrap()
    • init

      @Internal public static void init()
    • bindTextures

      public static void bindTextures(int first, IntBuffer textures)
      Binds the specified texture ids to sequential texture units and invalidates the GLStateManager.
      Parameters:
      first - The first unit to bind to
      textures - The textures to bind
    • bindTextures

      public static void bindTextures(int first, int... textures)
      Binds the specified texture ids to sequential texture units and invalidates the GLStateManager.
      Parameters:
      first - The first unit to bind to
      textures - The textures to bind
    • bindSamplers

      public static void bindSamplers(int first, IntBuffer textures)
      Binds the specified sampler ids to sequential texture units.
      Parameters:
      first - The first unit to bind to
      textures - The samplers to bind
    • bindSamplers

      public static void bindSamplers(int first, int... textures)
      Binds the specified sampler ids to sequential texture units.
      Parameters:
      first - The first unit to bind to
      textures - The samplers to bind
    • unbindSamplers

      public static void unbindSamplers(int first, int count)
      Unbinds the specified number of sampler from sequential texture units.
      Parameters:
      first - The first unit to unbind from
      count - The number of samplers to unbind
    • drawScreenQuad

      public static void drawScreenQuad()
      Draws a quad onto the full screen.
    • setShader

      @Nullable public static @Nullable ShaderProgram setShader(net.minecraft.resources.ResourceLocation shader)
      Sets the shader instance to be a reference to the shader manager.
      Parameters:
      shader - The name of the shader to use
      Returns:
      The Veil shader instance applied or null if there was an error
    • setShader

      @Nullable public static @Nullable ShaderProgram setShader(@Nullable @Nullable ShaderProgram shader)
      Sets the shader instance to a specific instance of a shader. setShader(ResourceLocation) should be used in most cases.
      Parameters:
      shader - The shader instance to use
      Returns:
      The Veil shader instance applied or null if there was an error
    • setShader

      @Nullable public static @Nullable ShaderProgram setShader(Supplier<ShaderProgram> shader)
      Sets the shader instance to a specific instance reference of a shader. setShader(ResourceLocation) should be used in most cases.
      Parameters:
      shader - The reference to the shader to use
      Returns:
      The Veil shader instance applied or null if there was an error
    • drawInstanced

      public static void drawInstanced(com.mojang.blaze3d.vertex.VertexBuffer vbo, int instances)
      Draws instances of the specified vertex buffer.
      Parameters:
      vbo - The vertex buffer to draw
      instances - The number of instances to draw
      See Also:
    • drawIndirect

      public static void drawIndirect(com.mojang.blaze3d.vertex.VertexBuffer vbo, long indirect, int drawCount, int stride)
      Draws indirect instances of the specified vertex buffer.
      Parameters:
      vbo - The vertex buffer to draw
      indirect - A pointer into the currently bound GL40C.GL_DRAW_INDIRECT_BUFFER or the address of a struct containing draw data
      drawCount - The number of primitives to draw
      stride - The offset between indirect elements
      See Also:
    • endLastBatch

      public static void endLastBatch(net.minecraft.client.renderer.MultiBufferSource.BufferSource source, String name)
      Finishes the last batch of the specified buffer builder if it has the same name.
      Parameters:
      source - The source to end the buffer for
      name - The name of the buffer to end
    • endLastBatch

      public static void endLastBatch(net.minecraft.client.renderer.MultiBufferSource.BufferSource source, net.minecraft.client.renderer.RenderType renderType)
      Finishes the last batch of the specified buffer builder if it is the same render type.
      Parameters:
      source - The source to end the buffer for
      renderType - The render type to end
    • rebuildChunks

      public static void rebuildChunks()
      Rebuilds all chunks in view without deleting the old chunks.
    • printGlErrors

      public static void printGlErrors(@Nullable @Nullable String glCall)
      Consumes all OpenGL errors and prints them to console.
      Parameters:
      glCall - The name of the OpenGL call made for extra logging or null to not include
    • getIndexCount

      public static int getIndexCount(com.mojang.blaze3d.vertex.VertexBuffer vbo)
      Retrieves the number of indices in the specified vertex buffer.
      Parameters:
      vbo - The vertex buffer to query
      Returns:
      The number of indices in the buffer
    • computeSupported

      public static boolean computeSupported()
      Returns:
      Whether compute shaders are supported
    • atomicCounterSupported

      public static boolean atomicCounterSupported()
      Returns:
      Whether atomic counters in shaders are supported
    • transformFeedbackSupported

      public static boolean transformFeedbackSupported()
      Returns:
      Whether transform feedback from shaders is supported
    • multibindSupported

      public static boolean multibindSupported()
      Returns:
      Whether ARBMultiBind is supported
    • sparseBuffersSupported

      public static boolean sparseBuffersSupported()
      Returns:
      Whether ARBSparseBuffer is supported
    • directStateAccessSupported

      public static boolean directStateAccessSupported()
      Returns:
      Whether ARBDirectStateAccess is supported
    • clearTextureSupported

      public static boolean clearTextureSupported()
      Returns:
      Whether ARBClearTexture is supported
    • copyImageSupported

      public static boolean copyImageSupported()
      Returns:
      Whether ARBCopyImage is supported
    • shaderStorageBufferSupported

      public static boolean shaderStorageBufferSupported()
      Returns:
      Whether ARBShaderStorageBufferObject is supported
    • programInterfaceQuerySupported

      public static boolean programInterfaceQuerySupported()
      Returns:
      Whether ARBProgramInterfaceQuery is supported
    • textureAnisotropySupported

      public static boolean textureAnisotropySupported()
      Returns:
      Whether ARBTextureFilterAnisotropic is supported
    • textureMirrorClampToEdgeSupported

      public static boolean textureMirrorClampToEdgeSupported()
      Returns:
      Whether ARBTextureMirrorClampToEdge is supported
    • textureCubeMapSeamlessSupported

      public static boolean textureCubeMapSeamlessSupported()
      Returns:
      Whether ARBSeamlessCubemapPerTexture is supported
    • maxCombinedTextureUnits

      public static int maxCombinedTextureUnits()
      Returns:
      The GL maximum number of texture units that can be bound
    • maxColorAttachments

      public static int maxColorAttachments()
      Returns:
      The GL maximum amount of color attachments a framebuffer can have
    • maxSamples

      public static int maxSamples()
      Returns:
      The GL maximum amount of samples a render buffer can have
    • maxTargetBindings

      public static int maxTargetBindings(int target)
      Retrieves the maximum bindings for the specified buffer binding.
      Parameters:
      target - The target to query the maximum bindings of
      Returns:
      The GL maximum amount of buffer bindings available
    • shaderLimits

      public static VeilShaderLimits shaderLimits(int shader)
      Retrieves the maximum limits for the specified shader type.
      Parameters:
      shader - The shader to query the limits for
      Returns:
      The GL limits available
    • maxTransformFeedbackBindings

      public static int maxTransformFeedbackBindings()
      Returns:
      The GL maximum number of transform feedback buffers bindings available
    • maxUniformBuffersBindings

      public static int maxUniformBuffersBindings()
      Returns:
      The GL maximum number of uniform buffers bindings available
    • maxAtomicCounterBufferBindings

      public static int maxAtomicCounterBufferBindings()
      Returns:
      The GL maximum number of atomic counter buffers bindings available
    • maxShaderStorageBufferBindings

      public static int maxShaderStorageBufferBindings()
      Returns:
      The GL maximum number of shader storage buffers bindings available
    • maxArrayTextureLayers

      public static int maxArrayTextureLayers()
      Returns:
      The GL maximum number of array texture layers available
    • maxTextureAnisotropy

      public static float maxTextureAnisotropy()
      Returns:
      The GL maximum texture anisotropy value
    • maxVertexAttributes

      public static int maxVertexAttributes()
      Returns:
      The GL maximum number of vertex attributes available
    • maxVertexAttributeRelativeOffset

      public static int maxVertexAttributeRelativeOffset()
      Returns:
      The GL maximum offset of vertex attribute relative offsets
    • maxFramebufferWidth

      public static int maxFramebufferWidth()
      Returns:
      The GL maximum width of framebuffers
    • maxFramebufferHeight

      public static int maxFramebufferHeight()
      Returns:
      The GL maximum width of framebuffers
    • maxComputeWorkGroupCountX

      public static int maxComputeWorkGroupCountX()
      Returns:
      The GL maximum number of work groups in the X
    • maxComputeWorkGroupCountY

      public static int maxComputeWorkGroupCountY()
      Returns:
      The GL maximum number of work groups in the Y
    • maxComputeWorkGroupCountZ

      public static int maxComputeWorkGroupCountZ()
      Returns:
      The GL maximum number of work groups in the Z
    • maxComputeWorkGroupSizeX

      public static int maxComputeWorkGroupSizeX()
      Returns:
      The GL maximum number of local work groups in the X
    • maxComputeWorkGroupSizeY

      public static int maxComputeWorkGroupSizeY()
      Returns:
      The GL maximum number of local work groups in the Y
    • maxComputeWorkGroupSizeZ

      public static int maxComputeWorkGroupSizeZ()
      Returns:
      The GL maximum number of local work groups in the Z
    • maxComputeWorkGroupInvocations

      public static int maxComputeWorkGroupInvocations()
      Returns:
      The GL maximum number of total compute shader invocations
    • maxUniformBufferSize

      public static long maxUniformBufferSize()
      Returns:
      The GL maximum size of uniform buffers
    • uniformBufferAlignment

      public static int uniformBufferAlignment()
      Returns:
      The GL offset byte alignment requirement of uniform buffers
    • maxShaderStorageBufferSize

      public static long maxShaderStorageBufferSize()
      Returns:
      The GL maximum size of shader storage buffers
    • bind

      public static void bind(CharSequence name, ShaderBlock<?> block)

      Binds the specified block into the next available binding spot and updates all shaders if the binding index has changed.

      Make sure this is called before trying to use the block on this frame as it may have been overwritten.

      This binds the block and assigns it to shader values.

      Parameters:
      name - The name of the block in shader code
      block - The block to bind
    • bind

      public static void bind(VeilShaderBufferLayout<?> layout) throws IllegalArgumentException

      Binds the specified block into the next available binding spot and updates all shaders if the binding index has changed.

      Make sure this is called before trying to use the block on this frame as it may have been overwritten.

      This binds the block and assigns it to shader values.

      Parameters:
      layout - The layout of the buffer to bind
      Throws:
      IllegalArgumentException - If the layout is not registered
    • unbind

      public static void unbind(ShaderBlock<?> block)
      Unbinds the specified block and frees the binding it occupied. It isn't strictly necessary to unbind blocks, but they should not be referenced anymore after being deleted.
      Parameters:
      block - The block to unbind
    • unbind

      public static void unbind(VeilShaderBufferLayout<?> layout) throws IllegalArgumentException
      Unbinds the specified block and frees the binding it occupied. It isn't strictly necessary to unbind blocks, but they should not be referenced anymore after being deleted.
      Parameters:
      layout - The layout of the buffer to unbind
      Throws:
      IllegalArgumentException - If the layout is not registered
    • getBlock

      @Nullable public static <T> @Nullable ShaderBlock<T> getBlock(VeilShaderBufferLayout<T> layout) throws IllegalArgumentException
      Retrieves the registered block for the specified layout. Make sure the layout is registered.
      Type Parameters:
      T - The type of data the block encodes
      Parameters:
      layout - The layout to retrieve the block for
      Returns:
      The block created or null if no shaders reference the block. #buffer namespace:path
      Throws:
      IllegalArgumentException - If the layout is not registered
    • bindVertexArray

      public static void bindVertexArray(int vao)
      Binds the specified vertex array and invalidates the vanilla MC immediate buffer state.
      Parameters:
      vao - The vao to bind
    • renderer

      public static VeilRenderer renderer()
      Returns:
      The veil renderer instance
    • renderThreadExecutor

      public static Executor renderThreadExecutor()
      Returns:
      An executor for the main render thread
    • getShader

      @Nullable public static @Nullable ShaderProgram getShader()
      Returns:
      The actual shader reference to use while rendering or null if no shader is selected or the selected shader is from Vanilla Minecraft
    • getLight0Direction

      public static org.joml.Vector3fc getLight0Direction()
      Returns:
      The position of the first light
    • getLight1Direction

      public static org.joml.Vector3fc getLight1Direction()
      Returns:
      The position of the second light
    • getCameraBobOffset

      public static org.joml.Vector3fc getCameraBobOffset()
      Returns:
      The camera position offset from view bobbing
    • hasImGui

      public static boolean hasImGui()
      Returns:
      Whether ImGui can be used
    • getCullingFrustum

      public static CullFrustum getCullingFrustum()
      Returns:
      The culling frustum for the renderer
    • beginFrame

      @Internal public static void beginFrame()
    • endFrame

      @Internal public static void endFrame()
    • clearShaderBlocks

      @Internal public static void clearShaderBlocks()
    • shaderUpdate

      @Internal public static void shaderUpdate()
    • resize

      @Internal public static void resize(int width, int height)
    • close

      @Internal public static void close()
    • renderPost

      @Internal public static void renderPost(@Nullable VeilRenderLevelStageEvent.Stage stage)
    • setShaderLights

      @Internal public static void setShaderLights(org.joml.Vector3fc light0, org.joml.Vector3fc light1)
    • setCameraBobOffset

      @Internal public static void setCameraBobOffset(org.joml.Vector3fc offset)
    • blit

      @Internal public static void blit(net.minecraft.util.profiling.ProfilerFiller profiler)
    • clearLevel

      @Internal public static void clearLevel()