Add rendering API definition
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
package com.seibel.distanthorizons.api.enums.config;
|
||||
|
||||
import com.seibel.distanthorizons.coreapi.ModInfo;
|
||||
|
||||
/**
|
||||
* AUTO, <br>
|
||||
* OPEN_GL, <br>
|
||||
* BLAZE_3D, <br><br>
|
||||
*
|
||||
* @since API 6.0.0
|
||||
* @version 2024-6-8
|
||||
*/
|
||||
public enum EDhApiRenderApi
|
||||
{
|
||||
AUTO,
|
||||
OPEN_GL,
|
||||
BLAZE_3D;
|
||||
|
||||
}
|
||||
+5
@@ -74,6 +74,11 @@ public class DependencyInjector<BindableType extends IBindable> implements IDepe
|
||||
throw new IllegalStateException("The dependency [" + dependencyInterface.getSimpleName() + "] has already been bound.");
|
||||
}
|
||||
|
||||
if (dependencyImplementation == null)
|
||||
{
|
||||
throw new NullPointerException("Can't bind null to ["+dependencyInterface.getSimpleName()+"]");
|
||||
}
|
||||
|
||||
|
||||
// make sure the given dependency implements the necessary interfaces
|
||||
boolean implementsInterface = this.checkIfClassImplements(dependencyImplementation.getClass(), dependencyInterface) ||
|
||||
|
||||
@@ -833,6 +833,18 @@ public class Config
|
||||
.addListener(IgnoredDimensionCsvHandler.INSTANCE)
|
||||
.build();
|
||||
|
||||
public static ConfigEntry<EDhApiRenderApi> renderingApi = new ConfigEntry.Builder<EDhApiRenderApi>()
|
||||
.set(EDhApiRenderApi.AUTO)
|
||||
.setAppearance(EConfigEntryAppearance.ONLY_IN_FILE) // can't be changed while the game is running
|
||||
.comment(""
|
||||
+ "Options: \n"
|
||||
+ EDhApiRenderApi.AUTO + " \n"
|
||||
+ EDhApiRenderApi.OPEN_GL + " \n"
|
||||
+ EDhApiRenderApi.BLAZE_3D + " \n"
|
||||
+ "")
|
||||
.build();
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -110,7 +110,7 @@ public interface IWrapperFactory extends IDhApiWrapperFactory, IBindable
|
||||
IVertexBufferWrapper createVboWrapper(String name);
|
||||
ILodContainerUniformBufferWrapper createLodContainerUniformWrapper();
|
||||
|
||||
IDhGenericObjectVertexBufferContainer createInstancedVboContainer();
|
||||
IDhGenericObjectVertexBufferContainer createGenericObjectVboContainer();
|
||||
|
||||
IDhGenericRenderer createGenericRenderer();
|
||||
|
||||
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package com.seibel.distanthorizons.core.wrapperInterfaces.render;
|
||||
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||
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.ILodContainerUniformBufferWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.IVertexBufferWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.render.renderPass.*;
|
||||
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable;
|
||||
|
||||
public abstract class AbstractDhRenderApiDefinition implements IBindable
|
||||
{
|
||||
//============//
|
||||
// singletons //
|
||||
//============//
|
||||
//region
|
||||
|
||||
public abstract IDhTerrainRenderer getTerrainRenderer();
|
||||
public abstract IDhSsaoRenderer getSsaoRenderer();
|
||||
public abstract IDhFogRenderer getFogRenderer();
|
||||
public abstract IDhFarFadeRenderer getFarFadeRenderer();
|
||||
public abstract AbstractDebugWireframeRenderer getDebugWireframeRenderer();
|
||||
public abstract IDhVanillaFadeRenderer getVanillaFadeRenderer();
|
||||
public abstract IDhTestTriangleRenderer getTestTriangleRenderer();
|
||||
|
||||
public void bindRenderers()
|
||||
{
|
||||
SingletonInjector.INSTANCE.bind(AbstractDhRenderApiDefinition.class, this);
|
||||
|
||||
SingletonInjector.INSTANCE.bind(IDhTerrainRenderer.class, this.getTerrainRenderer());
|
||||
SingletonInjector.INSTANCE.bind(IDhSsaoRenderer.class, this.getSsaoRenderer());
|
||||
SingletonInjector.INSTANCE.bind(IDhFogRenderer.class, this.getFogRenderer());
|
||||
SingletonInjector.INSTANCE.bind(IDhFarFadeRenderer.class, this.getFarFadeRenderer());
|
||||
SingletonInjector.INSTANCE.bind(AbstractDebugWireframeRenderer.class, this.getDebugWireframeRenderer());
|
||||
SingletonInjector.INSTANCE.bind(IDhVanillaFadeRenderer.class, this.getVanillaFadeRenderer());
|
||||
SingletonInjector.INSTANCE.bind(IDhTestTriangleRenderer.class, this.getTestTriangleRenderer());
|
||||
}
|
||||
|
||||
//endregion
|
||||
|
||||
|
||||
|
||||
//===========//
|
||||
// factories //
|
||||
//===========//
|
||||
//region
|
||||
|
||||
// these methods are used by WrapperFactory
|
||||
|
||||
/**
|
||||
* Generic renderers are created for each level they're used in
|
||||
* so we can't just define a single instance.
|
||||
*/
|
||||
public abstract IDhGenericRenderer createGenericRenderer();
|
||||
|
||||
public abstract IVertexBufferWrapper createVboWrapper(String name);
|
||||
public abstract ILodContainerUniformBufferWrapper createLodContainerUniformWrapper();
|
||||
public abstract IDhGenericObjectVertexBufferContainer createGenericVboContainer();
|
||||
|
||||
//endregion
|
||||
|
||||
|
||||
|
||||
}
|
||||
+1
-2
@@ -22,9 +22,8 @@ package com.seibel.distanthorizons.core.wrapperInterfaces.render.renderPass;
|
||||
import com.seibel.distanthorizons.api.interfaces.render.IDhApiCustomRenderRegister;
|
||||
import com.seibel.distanthorizons.core.render.RenderParams;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper;
|
||||
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable;
|
||||
|
||||
public interface IDhGenericRenderer extends IDhApiCustomRenderRegister, IBindable
|
||||
public interface IDhGenericRenderer extends IDhApiCustomRenderRegister
|
||||
{
|
||||
void render(RenderParams renderEventParam, IProfilerWrapper profiler, boolean renderingWithSsao);
|
||||
|
||||
|
||||
@@ -415,7 +415,11 @@
|
||||
"Ignored Dimension CSV",
|
||||
"distanthorizons.config.client.advanced.graphics.experimental.ignoredDimensionCsv.@tooltip":
|
||||
"A comma separated list of dimension resource locations where DH won't render. Example: \"minecraft:the_nether,minecraft:the_end\" \n\nNote: \nSome DH settings will be disabled and/or changed to improve \nvisuals when DH rendering is disabled.",
|
||||
|
||||
"distanthorizons.config.client.advanced.graphics.experimental.renderingApi":
|
||||
"Rendering API",
|
||||
"distanthorizons.config.client.advanced.graphics.experimental.renderingApi.@tooltip":
|
||||
"",
|
||||
|
||||
|
||||
|
||||
"distanthorizons.config.client.advanced.autoUpdater":
|
||||
|
||||
Reference in New Issue
Block a user