diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/render/IDhApiRenderProxy.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/render/IDhApiRenderProxy.java index d68eb6a9b..01e931ec2 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/render/IDhApiRenderProxy.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/render/IDhApiRenderProxy.java @@ -51,14 +51,16 @@ public interface IDhApiRenderProxy //=======================// /** - * Returns the name of Distant Horizons' depth texture.
- * Will return {@link DhApiResult#success} = false and {@link DhApiResult#payload} = -1 if the texture hasn't been created yet. + * Returns the OpenGL name of Distant Horizons' depth texture.
+ * Will return {@link DhApiResult#success} = false and {@link DhApiResult#payload} = -1 if the texture hasn't been created yet + * or a rendering API other than OpenGL is in use. */ DhApiResult getDhDepthTextureId(); /** - * Returns the name of Distant Horizons' color texture.
- * Will return {@link DhApiResult#success} = false and {@link DhApiResult#payload} = -1 if the texture hasn't been created yet. + * Returns the OpenGL name of Distant Horizons' color texture.
+ * Will return {@link DhApiResult#success} = false and {@link DhApiResult#payload} = -1 if the texture hasn't been created yet + * or a rendering API other than OpenGL is in use */ DhApiResult getDhColorTextureId(); diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeBufferRenderEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeBufferRenderEvent.java index 617118427..4ac2ff470 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeBufferRenderEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeBufferRenderEvent.java @@ -27,7 +27,7 @@ import com.seibel.distanthorizons.api.objects.math.DhApiVec3f; /** * Called before Distant Horizons starts rendering a buffer.
- * This event cannot be cancelled, use {@link DhApiBeforeRenderEvent} if you want to cancel rendering. + * This event cannot be canceled, use {@link DhApiBeforeRenderEvent} if you want to cancel rendering. * * @author James Seibel * @version 2023-1-31 diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeColorDepthTextureCreatedEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeColorDepthTextureCreatedEvent.java index 780423aa5..d1a153416 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeColorDepthTextureCreatedEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeColorDepthTextureCreatedEvent.java @@ -31,7 +31,10 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * @author James Seibel * @version 2025-6-9 * @since API 4.1.0 + * @deprecated Only used for the legacy OpenGL renderer
+ * Using {@link DhApiAfterColorDepthTextureCreatedEvent} instead is recommended. */ +@Deprecated public abstract class DhApiBeforeColorDepthTextureCreatedEvent implements IDhApiEvent { /** Fired before Distant Horizons creates. */ diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiColorDepthTextureCreatedEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiColorDepthTextureCreatedEvent.java index 7d353be1e..1ee98f0d3 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiColorDepthTextureCreatedEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiColorDepthTextureCreatedEvent.java @@ -31,7 +31,9 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * @author James Seibel * @version 2024-3-2 * @since API 2.0.0 - * @deprecated Replaced by {@link DhApiBeforeColorDepthTextureCreatedEvent} since this event's name isn't obvious when it fires. + * @deprecated Only used for the legacy OpenGL renderer
+ * Replaced by {@link DhApiBeforeColorDepthTextureCreatedEvent} since this event's name isn't obvious when it fires. + * Using {@link DhApiAfterColorDepthTextureCreatedEvent} instead is recommended */ @Deprecated // internal notes: this method must be kept around due to Iris using it and we don't want to break old Iris support public abstract class DhApiColorDepthTextureCreatedEvent implements IDhApiEvent diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java index 259a1782b..55fc48f64 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java @@ -190,7 +190,12 @@ public class LodRenderer if (!runningDeferredPass) { - this.metaRenderer.clearDhDepthAndColorTextures(renderParams); + // needs to be fired after all the textures have been created/bound + boolean clearTextures = !ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeTextureClearEvent.class, renderParams); + if (clearTextures) + { + this.metaRenderer.clearDhDepthAndColorTextures(renderParams); + } @@ -202,6 +207,8 @@ public class LodRenderer // opaque LODs profiler.popPush("LOD Opaque"); + ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeRenderPassEvent.class, renderParams); + this.renderTerrain(this.terrainRenderer, renderBufferHandler, renderParams, /*opaquePass*/ true, profiler); // custom objects with SSAO @@ -287,6 +294,8 @@ public class LodRenderer if (Config.Client.Advanced.Graphics.Quality.transparency.get().transparencyEnabled) { + ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeRenderPassEvent.class, renderParams); + profiler.popPush("LOD Transparent"); this.renderTerrain(this.terrainRenderer, renderBufferHandler, renderParams, /*opaquePass*/ false, profiler); @@ -330,8 +339,6 @@ public class LodRenderer // rendering // //===========// - ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeRenderPassEvent.class, renderEventParam); - SortedArraySet lodBufferContainer = lodBufferHandler.getColumnRenderBuffers(); if (lodBufferContainer != null) {