document openGL interfaces not used on Blaze3D
Also add API logic to determine if DH is handling the rendering natively or using an interpretation layer
This commit is contained in:
+12
@@ -19,9 +19,21 @@
|
|||||||
|
|
||||||
package com.seibel.distanthorizons.api.interfaces.override.rendering;
|
package com.seibel.distanthorizons.api.interfaces.override.rendering;
|
||||||
|
|
||||||
|
import com.seibel.distanthorizons.api.enums.config.EDhApiRenderApi;
|
||||||
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
|
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
|
||||||
|
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderProxy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* <b>Note: </b><br>
|
||||||
|
* This is only used if Distant Horizons'
|
||||||
|
* {@link IDhApiRenderProxy#getRenderingApi()} returns {@link EDhApiRenderApi#OPEN_GL}
|
||||||
|
* and {@link IDhApiRenderProxy#isNativeRenderer()} returns true.
|
||||||
|
* ie this is only used when DH is doing native OpenGL rendering,
|
||||||
|
* if DH is using Blaze3D this interface will be ignored.
|
||||||
|
*
|
||||||
|
* @see IDhApiRenderProxy#getRenderingApi()
|
||||||
|
* @see IDhApiRenderProxy#isNativeRenderer()
|
||||||
|
*
|
||||||
* @author James Seibel
|
* @author James Seibel
|
||||||
* @version 2024-1-24
|
* @version 2024-1-24
|
||||||
* @since API 2.0.0
|
* @since API 2.0.0
|
||||||
|
|||||||
+11
@@ -19,7 +19,9 @@
|
|||||||
|
|
||||||
package com.seibel.distanthorizons.api.interfaces.override.rendering;
|
package com.seibel.distanthorizons.api.interfaces.override.rendering;
|
||||||
|
|
||||||
|
import com.seibel.distanthorizons.api.enums.config.EDhApiRenderApi;
|
||||||
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
|
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
|
||||||
|
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderProxy;
|
||||||
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderableBoxGroup;
|
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderableBoxGroup;
|
||||||
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
|
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
|
||||||
import com.seibel.distanthorizons.api.objects.math.DhApiVec3d;
|
import com.seibel.distanthorizons.api.objects.math.DhApiVec3d;
|
||||||
@@ -27,7 +29,16 @@ import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBox;
|
|||||||
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBoxGroupShading;
|
import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBoxGroupShading;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* <b>Note: </b><br>
|
||||||
|
* This is only used if Distant Horizons'
|
||||||
|
* {@link IDhApiRenderProxy#getRenderingApi()} returns {@link EDhApiRenderApi#OPEN_GL}
|
||||||
|
* and {@link IDhApiRenderProxy#isNativeRenderer()} returns true.
|
||||||
|
* ie this is only used when DH is doing native OpenGL rendering,
|
||||||
|
* if DH is using Blaze3D this interface will be ignored.
|
||||||
|
*
|
||||||
* @see IDhApiShaderProgram
|
* @see IDhApiShaderProgram
|
||||||
|
* @see IDhApiRenderProxy#getRenderingApi()
|
||||||
|
* @see IDhApiRenderProxy#isNativeRenderer()
|
||||||
*
|
*
|
||||||
* @author James Seibel
|
* @author James Seibel
|
||||||
* @version 2024-7-11
|
* @version 2024-7-11
|
||||||
|
|||||||
+11
@@ -19,12 +19,23 @@
|
|||||||
|
|
||||||
package com.seibel.distanthorizons.api.interfaces.override.rendering;
|
package com.seibel.distanthorizons.api.interfaces.override.rendering;
|
||||||
|
|
||||||
|
import com.seibel.distanthorizons.api.enums.config.EDhApiRenderApi;
|
||||||
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
|
import com.seibel.distanthorizons.api.interfaces.override.IDhApiOverrideable;
|
||||||
|
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderProxy;
|
||||||
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
|
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
|
||||||
import com.seibel.distanthorizons.api.objects.math.DhApiVec3f;
|
import com.seibel.distanthorizons.api.objects.math.DhApiVec3f;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* <b>Note: </b><br>
|
||||||
|
* This is only used if Distant Horizons'
|
||||||
|
* {@link IDhApiRenderProxy#getRenderingApi()} returns {@link EDhApiRenderApi#OPEN_GL}
|
||||||
|
* and {@link IDhApiRenderProxy#isNativeRenderer()} returns true.
|
||||||
|
* ie this is only used when DH is doing native OpenGL rendering,
|
||||||
|
* if DH is using Blaze3D this interface will be ignored.
|
||||||
|
*
|
||||||
* @see IDhApiGenericObjectShaderProgram
|
* @see IDhApiGenericObjectShaderProgram
|
||||||
|
* @see IDhApiRenderProxy#getRenderingApi()
|
||||||
|
* @see IDhApiRenderProxy#isNativeRenderer()
|
||||||
*
|
*
|
||||||
* @author James Seibel
|
* @author James Seibel
|
||||||
* @version 2024-1-24
|
* @version 2024-1-24
|
||||||
|
|||||||
+30
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
package com.seibel.distanthorizons.api.interfaces.render;
|
package com.seibel.distanthorizons.api.interfaces.render;
|
||||||
|
|
||||||
|
import com.seibel.distanthorizons.api.enums.config.EDhApiRenderApi;
|
||||||
|
import com.seibel.distanthorizons.api.methods.events.abstractEvents.DhApiAfterDhInitEvent;
|
||||||
import com.seibel.distanthorizons.api.objects.DhApiResult;
|
import com.seibel.distanthorizons.api.objects.DhApiResult;
|
||||||
|
|
||||||
|
|
||||||
@@ -44,6 +46,34 @@ public interface IDhApiRenderProxy
|
|||||||
*/
|
*/
|
||||||
DhApiResult<Boolean> clearRenderDataCache();
|
DhApiResult<Boolean> clearRenderDataCache();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns which specific {@link EDhApiRenderApi}
|
||||||
|
* Distant Horizons will use for rendering. <br>
|
||||||
|
* Will not return {@link EDhApiRenderApi#AUTO}.<br>
|
||||||
|
*
|
||||||
|
* @throws IllegalStateException if no renderer has been bound yet,
|
||||||
|
* wait till after {@link DhApiAfterDhInitEvent} has been fired
|
||||||
|
*
|
||||||
|
* @see DhApiAfterDhInitEvent
|
||||||
|
* @since API 7.0.0
|
||||||
|
*/
|
||||||
|
EDhApiRenderApi getRenderingApi() throws IllegalStateException;
|
||||||
|
/**
|
||||||
|
* Returns true if the current renderer
|
||||||
|
* is calling the base rendering API's method calls. <br>
|
||||||
|
* ie GL.drawArrays() for OpenGL. <Br><br>
|
||||||
|
*
|
||||||
|
* If DH is using a rendering interpretation layer like Blaze3D (Mojang's rendering API)
|
||||||
|
* this will return false.
|
||||||
|
*
|
||||||
|
* @throws IllegalStateException if no renderer has been bound yet,
|
||||||
|
* wait till after {@link DhApiAfterDhInitEvent} has been fired
|
||||||
|
*
|
||||||
|
* @see DhApiAfterDhInitEvent
|
||||||
|
* @since API 7.0.0
|
||||||
|
*/
|
||||||
|
boolean isNativeRenderer() throws IllegalStateException;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//=======================//
|
//=======================//
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package com.seibel.distanthorizons.core.render;
|
package com.seibel.distanthorizons.core.render;
|
||||||
|
|
||||||
|
import com.seibel.distanthorizons.api.enums.config.EDhApiRenderApi;
|
||||||
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderProxy;
|
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderProxy;
|
||||||
import com.seibel.distanthorizons.api.objects.DhApiResult;
|
import com.seibel.distanthorizons.api.objects.DhApiResult;
|
||||||
import com.seibel.distanthorizons.core.api.internal.SharedApi;
|
import com.seibel.distanthorizons.core.api.internal.SharedApi;
|
||||||
@@ -28,6 +29,8 @@ import com.seibel.distanthorizons.core.level.IDhLevel;
|
|||||||
import com.seibel.distanthorizons.core.util.RenderUtil;
|
import com.seibel.distanthorizons.core.util.RenderUtil;
|
||||||
import com.seibel.distanthorizons.core.world.AbstractDhWorld;
|
import com.seibel.distanthorizons.core.world.AbstractDhWorld;
|
||||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
||||||
|
import com.seibel.distanthorizons.core.wrapperInterfaces.render.AbstractDhRenderApiDefinition;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to interact with Distant Horizons' rendering systems.
|
* Used to interact with Distant Horizons' rendering systems.
|
||||||
@@ -43,6 +46,18 @@ public class DhApiRenderProxy implements IDhApiRenderProxy
|
|||||||
|
|
||||||
private boolean deferTransparentRendering = false;
|
private boolean deferTransparentRendering = false;
|
||||||
|
|
||||||
|
private static AbstractDhRenderApiDefinition renderApiDef = null;
|
||||||
|
@Nullable
|
||||||
|
private static AbstractDhRenderApiDefinition tryGetApiDef()
|
||||||
|
{
|
||||||
|
if (renderApiDef == null)
|
||||||
|
{
|
||||||
|
renderApiDef = SingletonInjector.INSTANCE.get(AbstractDhRenderApiDefinition.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
return renderApiDef;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//=============//
|
//=============//
|
||||||
@@ -57,6 +72,7 @@ public class DhApiRenderProxy implements IDhApiRenderProxy
|
|||||||
// methods //
|
// methods //
|
||||||
//=========//
|
//=========//
|
||||||
|
|
||||||
|
@Override
|
||||||
public DhApiResult<Boolean> clearRenderDataCache()
|
public DhApiResult<Boolean> clearRenderDataCache()
|
||||||
{
|
{
|
||||||
// make sure this is a valid time to run the method
|
// make sure this is a valid time to run the method
|
||||||
@@ -80,6 +96,32 @@ public class DhApiRenderProxy implements IDhApiRenderProxy
|
|||||||
return DhApiResult.createSuccess();
|
return DhApiResult.createSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EDhApiRenderApi getRenderingApi() throws IllegalStateException
|
||||||
|
{
|
||||||
|
AbstractDhRenderApiDefinition apiDef = tryGetApiDef();
|
||||||
|
if (apiDef == null)
|
||||||
|
{
|
||||||
|
// The rendering API hasn't been set up yet
|
||||||
|
throw new IllegalStateException("Distant Horizons hasn't finished setup yet. No renderer has been set.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return apiDef.getRenderApi();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isNativeRenderer() throws IllegalStateException
|
||||||
|
{
|
||||||
|
AbstractDhRenderApiDefinition apiDef = tryGetApiDef();
|
||||||
|
if (apiDef == null)
|
||||||
|
{
|
||||||
|
// The rendering API hasn't been set up yet
|
||||||
|
throw new IllegalStateException("Distant Horizons hasn't finished setup yet. No renderer has been set.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return apiDef.isNativeRenderer();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static int activeOpenGlDhDepthTextureId = -1;
|
public static int activeOpenGlDhDepthTextureId = -1;
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.seibel.distanthorizons.core.render;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* VULKAN, <br>
|
|
||||||
* OPEN_GL, <br>
|
|
||||||
*/
|
|
||||||
public enum EDhRenderApi
|
|
||||||
{
|
|
||||||
VULKAN,
|
|
||||||
OPEN_GL;
|
|
||||||
|
|
||||||
}
|
|
||||||
+2
-2
@@ -21,9 +21,9 @@ package com.seibel.distanthorizons.core.wrapperInterfaces.minecraft;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
|
||||||
|
import com.seibel.distanthorizons.api.enums.config.EDhApiRenderApi;
|
||||||
import com.seibel.distanthorizons.core.api.internal.rendering.DhRenderState;
|
import com.seibel.distanthorizons.core.api.internal.rendering.DhRenderState;
|
||||||
import com.seibel.distanthorizons.core.enums.EDhDirection;
|
import com.seibel.distanthorizons.core.enums.EDhDirection;
|
||||||
import com.seibel.distanthorizons.core.render.EDhRenderApi;
|
|
||||||
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.ILightMapWrapper;
|
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.ILightMapWrapper;
|
||||||
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable;
|
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable;
|
||||||
import com.seibel.distanthorizons.core.util.math.Vec3d;
|
import com.seibel.distanthorizons.core.util.math.Vec3d;
|
||||||
@@ -77,7 +77,7 @@ public interface IMinecraftRenderWrapper extends IBindable
|
|||||||
boolean mcRendersToFrameBuffer();
|
boolean mcRendersToFrameBuffer();
|
||||||
boolean runningLegacyOpenGL();
|
boolean runningLegacyOpenGL();
|
||||||
/** Returns the API Minecraft is currently using for rendering */
|
/** Returns the API Minecraft is currently using for rendering */
|
||||||
EDhRenderApi getMcRenderingApi();
|
EDhApiRenderApi getMcRenderingApi();
|
||||||
|
|
||||||
/** @return -1 if no valid framebuffer is available yet */
|
/** @return -1 if no valid framebuffer is available yet */
|
||||||
int getTargetFramebuffer(); // Note: Iris is now hooking onto this for DH + Iris compat, try not to change (unless we wanna deal with some annoyances)
|
int getTargetFramebuffer(); // Note: Iris is now hooking onto this for DH + Iris compat, try not to change (unless we wanna deal with some annoyances)
|
||||||
|
|||||||
+12
-2
@@ -1,8 +1,8 @@
|
|||||||
package com.seibel.distanthorizons.core.wrapperInterfaces.render;
|
package com.seibel.distanthorizons.core.wrapperInterfaces.render;
|
||||||
|
|
||||||
|
import com.seibel.distanthorizons.api.enums.config.EDhApiRenderApi;
|
||||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||||
import com.seibel.distanthorizons.core.jar.EPlatform;
|
import com.seibel.distanthorizons.core.jar.EPlatform;
|
||||||
import com.seibel.distanthorizons.core.render.EDhRenderApi;
|
|
||||||
import com.seibel.distanthorizons.core.render.EDhRenderDepth;
|
import com.seibel.distanthorizons.core.render.EDhRenderDepth;
|
||||||
import com.seibel.distanthorizons.core.render.renderer.AbstractDebugWireframeRenderer;
|
import com.seibel.distanthorizons.core.render.renderer.AbstractDebugWireframeRenderer;
|
||||||
import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.IDhGenericObjectVertexBufferContainer;
|
import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.IDhGenericObjectVertexBufferContainer;
|
||||||
@@ -32,7 +32,17 @@ public abstract class AbstractDhRenderApiDefinition implements IBindable
|
|||||||
public boolean useSingleIbo() { return this.useSingleIbo; }
|
public boolean useSingleIbo() { return this.useSingleIbo; }
|
||||||
|
|
||||||
public abstract EDhRenderDepth getRenderDepth();
|
public abstract EDhRenderDepth getRenderDepth();
|
||||||
public abstract EDhRenderApi getRenderApi();
|
/** will not return {@link EDhApiRenderApi#AUTO} */
|
||||||
|
public abstract EDhApiRenderApi getRenderApi();
|
||||||
|
/**
|
||||||
|
* Returns true if the current renderer
|
||||||
|
* is calling the base rendering API's method calls. <br>
|
||||||
|
* ie GL.drawArrays() for OpenGL. <Br><br>
|
||||||
|
*
|
||||||
|
* If DH is using Blaze3D (Mojang's rendering API)
|
||||||
|
* this will return false.
|
||||||
|
*/
|
||||||
|
public abstract boolean isNativeRenderer();
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user