Class ReloadableShaderEffectManager

java.lang.Object
dev.cammiescorner.velvet.impl.ReloadableShaderEffectManager
All Implemented Interfaces:
LevelRendererReloadCallback, ResolutionChangeCallback, ShaderEffectManager

public final class ReloadableShaderEffectManager extends Object implements ShaderEffectManager, ResolutionChangeCallback, LevelRendererReloadCallback
A ShaderEffectManager that is reloaded along with resources
See Also:
  • Field Details

  • Constructor Details

    • ReloadableShaderEffectManager

      public ReloadableShaderEffectManager()
  • Method Details

    • manage

      public ManagedShaderEffect manage(net.minecraft.resources.ResourceLocation location)
      Manages a post-processing shader loaded from a json definition file
      Specified by:
      manage in interface ShaderEffectManager
      Parameters:
      location - the location of the json within your mod's assets
      Returns:
      a lazily initialized shader effect
    • manage

      public ManagedShaderEffect manage(net.minecraft.resources.ResourceLocation location, Consumer<ManagedShaderEffect> initCallback)
      Manages a post-processing shader loaded from a json definition file
      Specified by:
      manage in interface ShaderEffectManager
      Parameters:
      location - the location of the json within your mod's assets
      initCallback - a block ran once the shader effect is initialized
      Returns:
      a lazily initialized screen shader
    • manageCoreShader

      public ManagedCoreShader manageCoreShader(net.minecraft.resources.ResourceLocation location)
      Description copied from interface: ShaderEffectManager
      Manages a core ShaderInstance loaded from a json definition file

      This overload forwards to ShaderEffectManager.manageCoreShader(ResourceLocation, VertexFormat) with DefaultVertexFormat.NEW_ENTITY, the format used by entity rendering

      The shader location must be in assets/shaders/core. Eg. to get a shader located at mymod/assets/shaders/core/myshader.json:

      ShaderEffectManager.getInstance().manageCoreShader(Identifier.of("mymod", "myshader")
      Specified by:
      manageCoreShader in interface ShaderEffectManager
      Parameters:
      location - the location of the json within your mod's assets
      Returns:
      a core render shader that will be reloaded as needed
    • manageCoreShader

      public ManagedCoreShader manageCoreShader(net.minecraft.resources.ResourceLocation location, com.mojang.blaze3d.vertex.VertexFormat vertexFormat)
      Description copied from interface: ShaderEffectManager
      Manages a core ShaderInstance loaded from a json definition file

      The shader location must be in assets/shaders/core. Eg. to get a shader located at mymod/assets/shaders/core/myshader.json:

      ShaderEffectManager.getInstance().manageCoreShader(Identifier.of("mymod", "myshader")
      Specified by:
      manageCoreShader in interface ShaderEffectManager
      Parameters:
      location - the location of the json within your mod's assets
      vertexFormat - the format expected by your shader
      Returns:
      a core render shader that will be reloaded as needed
    • manageCoreShader

      public ManagedCoreShader manageCoreShader(net.minecraft.resources.ResourceLocation location, com.mojang.blaze3d.vertex.VertexFormat vertexFormat, Consumer<ManagedCoreShader> initCallback)
      Description copied from interface: ShaderEffectManager
      Manages a core ShaderInstance loaded from a json definition file

      The shader location must be in assets/shaders/core. E.g. to get a shader located at mymod/assets/shaders/core/myshader.json:

      ShaderEffectManager.getInstance().manageCoreShader(Identifier.of("mymod", "myshader")
      Specified by:
      manageCoreShader in interface ShaderEffectManager
      Parameters:
      location - the location of the json within your mod's assets
      vertexFormat - the format expected by your shader
      initCallback - a block ran once the shader effect is initialized
      Returns:
      a core render shader that will be reloaded as needed
    • dispose

      public void dispose(ManagedShaderEffect shader)
      Removes a shader from the global list of managed shaders, making it not respond to resource reloading and screen resizing. This also calls ResettableManagedShaderBase.release() to release the shader's resources. A ManagedShaderEffect object cannot be used after it has been disposed of.
      Specified by:
      dispose in interface ShaderEffectManager
      Parameters:
      shader - the shader to stop managing
      See Also:
    • dispose

      public void dispose(ManagedCoreShader shader)
      Specified by:
      dispose in interface ShaderEffectManager
    • reload

      public void reload(net.minecraft.server.packs.resources.ResourceProvider shaderResources)
    • onResolutionChanged

      public void onResolutionChanged(int newWidth, int newHeight)
      Specified by:
      onResolutionChanged in interface ResolutionChangeCallback
    • onRendererReload

      public void onRendererReload(net.minecraft.client.renderer.LevelRenderer renderer)
      Specified by:
      onRendererReload in interface LevelRendererReloadCallback