mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-19 04:15:14 -04:00
outsource renderers to RendererManager
This commit is contained in:
parent
6e03910ddc
commit
79de462d77
@ -13,8 +13,6 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.gui.rendering
|
package de.bixilon.minosoft.gui.rendering
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
|
||||||
import de.bixilon.kutil.collections.CollectionUtil.synchronizedMapOf
|
|
||||||
import de.bixilon.kutil.concurrent.queue.Queue
|
import de.bixilon.kutil.concurrent.queue.Queue
|
||||||
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
||||||
import de.bixilon.kutil.math.MMath.round10
|
import de.bixilon.kutil.math.MMath.round10
|
||||||
@ -29,41 +27,32 @@ import de.bixilon.minosoft.data.text.BaseComponent
|
|||||||
import de.bixilon.minosoft.data.text.ChatColors
|
import de.bixilon.minosoft.data.text.ChatColors
|
||||||
import de.bixilon.minosoft.data.text.ChatComponent
|
import de.bixilon.minosoft.data.text.ChatComponent
|
||||||
import de.bixilon.minosoft.gui.rendering.camera.Camera
|
import de.bixilon.minosoft.gui.rendering.camera.Camera
|
||||||
import de.bixilon.minosoft.gui.rendering.entity.EntityHitboxRenderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.font.Font
|
import de.bixilon.minosoft.gui.rendering.font.Font
|
||||||
import de.bixilon.minosoft.gui.rendering.font.FontLoader
|
import de.bixilon.minosoft.gui.rendering.font.FontLoader
|
||||||
import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferManager
|
import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferManager
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLike
|
import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLike
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLikeTexture
|
import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.TextureLikeTexture
|
||||||
import de.bixilon.minosoft.gui.rendering.input.key.RenderWindowInputHandler
|
import de.bixilon.minosoft.gui.rendering.input.key.RenderWindowInputHandler
|
||||||
import de.bixilon.minosoft.gui.rendering.modding.events.*
|
import de.bixilon.minosoft.gui.rendering.modding.events.*
|
||||||
import de.bixilon.minosoft.gui.rendering.particle.ParticleRenderer
|
import de.bixilon.minosoft.gui.rendering.renderer.RendererManager
|
||||||
import de.bixilon.minosoft.gui.rendering.sky.SkyRenderer
|
import de.bixilon.minosoft.gui.rendering.renderer.RendererManager.Companion.registerDefault
|
||||||
import de.bixilon.minosoft.gui.rendering.stats.AbstractRenderStats
|
import de.bixilon.minosoft.gui.rendering.stats.AbstractRenderStats
|
||||||
import de.bixilon.minosoft.gui.rendering.stats.ExperimentalRenderStats
|
import de.bixilon.minosoft.gui.rendering.stats.ExperimentalRenderStats
|
||||||
import de.bixilon.minosoft.gui.rendering.stats.RenderStats
|
import de.bixilon.minosoft.gui.rendering.stats.RenderStats
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
|
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
|
import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.PostDrawable
|
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.RenderPhases
|
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.SkipAll
|
|
||||||
import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem
|
||||||
import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow
|
import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.system.window.GLFWWindow
|
import de.bixilon.minosoft.gui.rendering.system.window.GLFWWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.tint.TintManager
|
import de.bixilon.minosoft.gui.rendering.tint.TintManager
|
||||||
import de.bixilon.minosoft.gui.rendering.util.ScreenshotTaker
|
import de.bixilon.minosoft.gui.rendering.util.ScreenshotTaker
|
||||||
import de.bixilon.minosoft.gui.rendering.world.WorldRenderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.world.chunk.ChunkBorderRenderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.world.outline.BlockOutlineRenderer
|
|
||||||
import de.bixilon.minosoft.modding.event.events.InternalMessageReceiveEvent
|
import de.bixilon.minosoft.modding.event.events.InternalMessageReceiveEvent
|
||||||
import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent
|
import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent
|
||||||
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
import de.bixilon.minosoft.protocol.packets.s2c.play.PositionAndRotationS2CP
|
import de.bixilon.minosoft.protocol.packets.s2c.play.PositionAndRotationS2CP
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||||
import de.bixilon.minosoft.terminal.RunConfiguration
|
|
||||||
import de.bixilon.minosoft.util.KUtil.format
|
import de.bixilon.minosoft.util.KUtil.format
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import de.bixilon.minosoft.util.Stopwatch
|
import de.bixilon.minosoft.util.Stopwatch
|
||||||
@ -78,24 +67,44 @@ class RenderWindow(
|
|||||||
val rendering: Rendering,
|
val rendering: Rendering,
|
||||||
) {
|
) {
|
||||||
private val profile = connection.profiles.rendering
|
private val profile = connection.profiles.rendering
|
||||||
|
val preferQuads = profile.advanced.preferQuads
|
||||||
|
|
||||||
val window: BaseWindow = GLFWWindow(this, connection)
|
val window: BaseWindow = GLFWWindow(this, connection)
|
||||||
val renderSystem: RenderSystem = OpenGLRenderSystem(this)
|
val renderSystem: RenderSystem = OpenGLRenderSystem(this)
|
||||||
val camera = Camera(this)
|
val camera = Camera(this)
|
||||||
|
|
||||||
|
val inputHandler = RenderWindowInputHandler(this)
|
||||||
|
val screenshotTaker = ScreenshotTaker(this)
|
||||||
|
val tintManager = TintManager(connection)
|
||||||
|
val textureManager = renderSystem.createTextureManager()
|
||||||
|
|
||||||
|
val queue = Queue()
|
||||||
|
|
||||||
|
val shaderManager = ShaderManager(this)
|
||||||
|
val framebufferManager = FramebufferManager(this)
|
||||||
|
val renderer = RendererManager(this)
|
||||||
|
|
||||||
var initialized = false
|
var initialized = false
|
||||||
private set
|
private set
|
||||||
private lateinit var renderThread: Thread
|
private lateinit var renderThread: Thread
|
||||||
lateinit var renderStats: AbstractRenderStats
|
lateinit var renderStats: AbstractRenderStats
|
||||||
private set
|
private set
|
||||||
|
|
||||||
val preferQuads = profile.advanced.preferQuads
|
lateinit var font: Font
|
||||||
|
|
||||||
val inputHandler = RenderWindowInputHandler(this)
|
lateinit var WHITE_TEXTURE: TextureLike
|
||||||
|
|
||||||
private var deltaFrameTime = 0.0
|
private var deltaFrameTime = 0.0
|
||||||
|
|
||||||
private var lastFrame = 0.0
|
private var lastFrame = 0.0
|
||||||
private val latch = CountUpAndDownLatch(1)
|
private val latch = CountUpAndDownLatch(1)
|
||||||
|
|
||||||
|
var tickCount = 0L
|
||||||
|
var lastTickTimer = TimeUtil.time
|
||||||
|
|
||||||
|
private var initialPositionReceived = false
|
||||||
|
|
||||||
|
|
||||||
var renderingState = RenderingStates.RUNNING
|
var renderingState = RenderingStates.RUNNING
|
||||||
private set(value) {
|
private set(value) {
|
||||||
if (field == value) {
|
if (field == value) {
|
||||||
@ -109,27 +118,6 @@ class RenderWindow(
|
|||||||
connection.fireEvent(RenderingStateChangeEvent(connection, previousState, value))
|
connection.fireEvent(RenderingStateChangeEvent(connection, previousState, value))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private val screenshotTaker = ScreenshotTaker(this)
|
|
||||||
val tintManager = TintManager(connection)
|
|
||||||
val textureManager = renderSystem.createTextureManager()
|
|
||||||
lateinit var font: Font
|
|
||||||
|
|
||||||
val rendererMap: MutableMap<ResourceLocation, Renderer> = synchronizedMapOf()
|
|
||||||
|
|
||||||
val queue = Queue()
|
|
||||||
|
|
||||||
val shaderManager = ShaderManager(this)
|
|
||||||
val framebufferManager = FramebufferManager(this)
|
|
||||||
|
|
||||||
lateinit var WHITE_TEXTURE: TextureLike
|
|
||||||
|
|
||||||
|
|
||||||
var tickCount = 0L
|
|
||||||
var lastTickTimer = TimeUtil.time
|
|
||||||
|
|
||||||
private var initialPositionReceived = false
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
connection.registerEvent(CallbackEventInvoker.of<PacketReceiveEvent> {
|
connection.registerEvent(CallbackEventInvoker.of<PacketReceiveEvent> {
|
||||||
val packet = it.packet
|
val packet = it.packet
|
||||||
@ -148,17 +136,7 @@ class RenderWindow(
|
|||||||
RenderStats()
|
RenderStats()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
renderer.registerDefault(connection.profiles)
|
||||||
// order dependent (from back to front)
|
|
||||||
registerRenderer(SkyRenderer)
|
|
||||||
registerRenderer(WorldRenderer)
|
|
||||||
registerRenderer(BlockOutlineRenderer)
|
|
||||||
if (!connection.profiles.particle.skipLoading) {
|
|
||||||
registerRenderer(ParticleRenderer)
|
|
||||||
}
|
|
||||||
registerRenderer(EntityHitboxRenderer)
|
|
||||||
registerRenderer(ChunkBorderRenderer)
|
|
||||||
registerRenderer(HUDRenderer)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun init(latch: CountUpAndDownLatch) {
|
fun init(latch: CountUpAndDownLatch) {
|
||||||
@ -193,9 +171,7 @@ class RenderWindow(
|
|||||||
|
|
||||||
|
|
||||||
Log.log(LogMessageType.RENDERING_LOADING, LogLevels.VERBOSE) { "Initializing renderer (${stopwatch.labTime()})..." }
|
Log.log(LogMessageType.RENDERING_LOADING, LogLevels.VERBOSE) { "Initializing renderer (${stopwatch.labTime()})..." }
|
||||||
for (renderer in rendererMap.values) {
|
renderer.init()
|
||||||
renderer.init()
|
|
||||||
}
|
|
||||||
|
|
||||||
Log.log(LogMessageType.RENDERING_LOADING, LogLevels.VERBOSE) { "Preloading textures (${stopwatch.labTime()})..." }
|
Log.log(LogMessageType.RENDERING_LOADING, LogLevels.VERBOSE) { "Preloading textures (${stopwatch.labTime()})..." }
|
||||||
textureManager.staticTextures.preLoad()
|
textureManager.staticTextures.preLoad()
|
||||||
@ -205,10 +181,7 @@ class RenderWindow(
|
|||||||
font.postInit()
|
font.postInit()
|
||||||
|
|
||||||
Log.log(LogMessageType.RENDERING_LOADING, LogLevels.VERBOSE) { "Post loading renderer (${stopwatch.labTime()})..." }
|
Log.log(LogMessageType.RENDERING_LOADING, LogLevels.VERBOSE) { "Post loading renderer (${stopwatch.labTime()})..." }
|
||||||
for (renderer in rendererMap.values) {
|
renderer.postInit()
|
||||||
renderer.postInit()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Log.log(LogMessageType.RENDERING_LOADING, LogLevels.VERBOSE) { "Registering callbacks (${stopwatch.labTime()})..." }
|
Log.log(LogMessageType.RENDERING_LOADING, LogLevels.VERBOSE) { "Registering callbacks (${stopwatch.labTime()})..." }
|
||||||
|
|
||||||
@ -340,29 +313,7 @@ class RenderWindow(
|
|||||||
|
|
||||||
textureManager.staticTextures.animator.draw()
|
textureManager.staticTextures.animator.draw()
|
||||||
|
|
||||||
val rendererList = rendererMap.values
|
renderer.render()
|
||||||
|
|
||||||
for (renderer in rendererList) {
|
|
||||||
renderSystem.framebuffer = renderer.framebuffer
|
|
||||||
renderer.prepareDraw()
|
|
||||||
}
|
|
||||||
renderAll(rendererList)
|
|
||||||
|
|
||||||
renderSystem.framebuffer = null
|
|
||||||
framebufferManager.draw()
|
|
||||||
for (renderer in rendererList) {
|
|
||||||
if (renderer is SkipAll && renderer.skipAll) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if (renderer !is PostDrawable) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if (renderer.skipPost) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
renderSystem.framebuffer = renderer.framebuffer
|
|
||||||
renderer.drawPost()
|
|
||||||
}
|
|
||||||
|
|
||||||
renderSystem.reset() // Reset to enable depth mask, etc again
|
renderSystem.reset() // Reset to enable depth mask, etc again
|
||||||
|
|
||||||
@ -398,15 +349,6 @@ class RenderWindow(
|
|||||||
connection.disconnect()
|
connection.disconnect()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun registerRenderer(rendererBuilder: RendererBuilder<*>) {
|
|
||||||
val resourceLocation = rendererBuilder.RESOURCE_LOCATION
|
|
||||||
if (resourceLocation in RunConfiguration.SKIP_RENDERERS) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
val renderer = rendererBuilder.build(connection, this)
|
|
||||||
rendererMap[resourceLocation] = renderer
|
|
||||||
}
|
|
||||||
|
|
||||||
fun sendDebugMessage(message: Any) {
|
fun sendDebugMessage(message: Any) {
|
||||||
connection.fireEvent(InternalMessageReceiveEvent(connection, BaseComponent(RenderConstants.DEBUG_MESSAGES_PREFIX, ChatComponent.of(message).apply { applyDefaultColor(ChatColors.BLUE) })))
|
connection.fireEvent(InternalMessageReceiveEvent(connection, BaseComponent(RenderConstants.DEBUG_MESSAGES_PREFIX, ChatComponent.of(message).apply { applyDefaultColor(ChatColors.BLUE) })))
|
||||||
}
|
}
|
||||||
@ -414,27 +356,4 @@ class RenderWindow(
|
|||||||
fun assertOnRenderThread() {
|
fun assertOnRenderThread() {
|
||||||
check(Thread.currentThread() === renderThread) { "Current thread (${Thread.currentThread().name} is not the render thread!" }
|
check(Thread.currentThread() === renderThread) { "Current thread (${Thread.currentThread().name} is not the render thread!" }
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun <T : Renderer> get(renderer: RendererBuilder<T>): T? {
|
|
||||||
return rendererMap[renderer.RESOURCE_LOCATION].unsafeCast()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun renderAll(rendererList: Collection<Renderer>) {
|
|
||||||
for (phase in RenderPhases.VALUES) {
|
|
||||||
for (renderer in rendererList) {
|
|
||||||
if (renderer is SkipAll && renderer.skipAll) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if (!phase.type.java.isAssignableFrom(renderer::class.java)) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if (phase.invokeSkip(renderer)) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
renderSystem.framebuffer = renderer.framebuffer
|
|
||||||
phase.invokeSetup(renderer)
|
|
||||||
phase.invokeDraw(renderer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ class FogManager(
|
|||||||
fogStart = renderWindow.connection.world.view.viewDistance * 16.0f - 8.0f // ToDo
|
fogStart = renderWindow.connection.world.view.viewDistance * 16.0f - 8.0f // ToDo
|
||||||
fogEnd = fogStart + 10.0f
|
fogEnd = fogStart + 10.0f
|
||||||
}
|
}
|
||||||
renderWindow[SkyRenderer]?.let { fogColor = it.baseColor }
|
renderWindow.renderer[SkyRenderer]?.let { fogColor = it.baseColor }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,9 +25,9 @@ import de.bixilon.minosoft.data.entities.entities.Entity
|
|||||||
import de.bixilon.minosoft.data.player.LocalPlayerEntity
|
import de.bixilon.minosoft.data.player.LocalPlayerEntity
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RendererBuilder
|
|
||||||
import de.bixilon.minosoft.gui.rendering.modding.events.FrustumChangeEvent
|
import de.bixilon.minosoft.gui.rendering.modding.events.FrustumChangeEvent
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions
|
import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.OpaqueDrawable
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.OpaqueDrawable
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.framebuffer
|
package de.bixilon.minosoft.gui.rendering.framebuffer
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.Drawable
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.framebuffer.gui.GUIFramebuffer
|
import de.bixilon.minosoft.gui.rendering.framebuffer.gui.GUIFramebuffer
|
||||||
import de.bixilon.minosoft.gui.rendering.framebuffer.world.WorldFramebuffer
|
import de.bixilon.minosoft.gui.rendering.framebuffer.world.WorldFramebuffer
|
||||||
import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent
|
import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||||
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
||||||
|
|
||||||
class FramebufferManager(
|
class FramebufferManager(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.framebuffer
|
package de.bixilon.minosoft.gui.rendering.framebuffer
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.Drawable
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
|
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
|
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
|
import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader
|
||||||
|
@ -22,10 +22,7 @@ import de.bixilon.minosoft.config.key.KeyBinding
|
|||||||
import de.bixilon.minosoft.config.key.KeyCodes
|
import de.bixilon.minosoft.config.key.KeyCodes
|
||||||
import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatchRendering
|
import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatchRendering
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.Drawable
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RendererBuilder
|
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.elements.Pollable
|
import de.bixilon.minosoft.gui.rendering.gui.elements.Pollable
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.HUDAtlasManager
|
import de.bixilon.minosoft.gui.rendering.gui.hud.atlas.HUDAtlasManager
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
||||||
@ -42,6 +39,9 @@ import de.bixilon.minosoft.gui.rendering.gui.hud.elements.scoreboard.ScoreboardH
|
|||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.tab.TabListHUDElement
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.tab.TabListHUDElement
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.title.TitleHUDElement
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.title.TitleHUDElement
|
||||||
import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent
|
import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
|
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
|
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
|
||||||
|
@ -13,10 +13,10 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.gui.rendering.gui.hud.elements
|
package de.bixilon.minosoft.gui.rendering.gui.hud.elements
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.Drawable
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDElement
|
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDElement
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||||
|
|
||||||
abstract class CustomHUDElement(final override val hudRenderer: HUDRenderer) : HUDElement, Drawable {
|
abstract class CustomHUDElement(final override val hudRenderer: HUDRenderer) : HUDElement, Drawable {
|
||||||
override val renderWindow: RenderWindow = hudRenderer.renderWindow
|
override val renderWindow: RenderWindow = hudRenderer.renderWindow
|
||||||
|
@ -16,11 +16,11 @@ package de.bixilon.minosoft.gui.rendering.gui.hud.elements.other
|
|||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.text.ChatColors
|
import de.bixilon.minosoft.data.text.ChatColors
|
||||||
import de.bixilon.minosoft.data.text.TextComponent
|
import de.bixilon.minosoft.data.text.TextComponent
|
||||||
import de.bixilon.minosoft.gui.rendering.Drawable
|
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement
|
import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.LayoutedHUDElement
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.LayoutedHUDElement
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import glm_.vec2.Vec2i
|
import glm_.vec2.Vec2i
|
||||||
|
|
||||||
|
@ -83,12 +83,12 @@ class DebugHUDElement(hudRenderer: HUDRenderer) : LayoutedHUDElement<GridLayout>
|
|||||||
layout.margin = Vec4i(2)
|
layout.margin = Vec4i(2)
|
||||||
layout += TextElement(hudRenderer, TextComponent(RunConfiguration.VERSION_STRING, ChatColors.RED))
|
layout += TextElement(hudRenderer, TextComponent(RunConfiguration.VERSION_STRING, ChatColors.RED))
|
||||||
layout += AutoTextElement(hudRenderer, 1) { "FPS ${renderWindow.renderStats.smoothAvgFPS.round10}" }
|
layout += AutoTextElement(hudRenderer, 1) { "FPS ${renderWindow.renderStats.smoothAvgFPS.round10}" }
|
||||||
renderWindow[WorldRenderer]?.apply {
|
renderWindow.renderer[WorldRenderer]?.apply {
|
||||||
layout += AutoTextElement(hudRenderer, 1) { "C v=$visibleSize, m=$loadedMeshesSize, cQ=$culledQueuedSize, q=$queueSize, pT=$preparingTasksSize/$maxPreparingTasks, l=$meshesToLoadSize/$maxMeshesToLoad, w=${connection.world.chunks.size}" }
|
layout += AutoTextElement(hudRenderer, 1) { "C v=$visibleSize, m=$loadedMeshesSize, cQ=$culledQueuedSize, q=$queueSize, pT=$preparingTasksSize/$maxPreparingTasks, l=$meshesToLoadSize/$maxMeshesToLoad, w=${connection.world.chunks.size}" }
|
||||||
}
|
}
|
||||||
layout += AutoTextElement(hudRenderer, 1) { "E t=${connection.world.entities.size}" }
|
layout += AutoTextElement(hudRenderer, 1) { "E t=${connection.world.entities.size}" }
|
||||||
|
|
||||||
renderWindow[ParticleRenderer]?.apply {
|
renderWindow.renderer[ParticleRenderer]?.apply {
|
||||||
layout += AutoTextElement(hudRenderer, 1) { "P t=$size" }
|
layout += AutoTextElement(hudRenderer, 1) { "P t=$size" }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ class DebugHUDElement(hudRenderer: HUDRenderer) : LayoutedHUDElement<GridLayout>
|
|||||||
BaseComponent().apply {
|
BaseComponent().apply {
|
||||||
this += "S "
|
this += "S "
|
||||||
if (connection.profiles.audio.skipLoading || !audioProfile.enabled) {
|
if (connection.profiles.audio.skipLoading || !audioProfile.enabled) {
|
||||||
this += "$§cdisabled"
|
this += "§cdisabled"
|
||||||
} else {
|
} else {
|
||||||
val audioPlayer = renderWindow.rendering.audioPlayer
|
val audioPlayer = renderWindow.rendering.audioPlayer
|
||||||
|
|
||||||
|
@ -2,10 +2,10 @@ package de.bixilon.minosoft.gui.rendering.gui.hud.elements.scoreboard
|
|||||||
|
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.scoreboard.ScoreboardPositions
|
import de.bixilon.minosoft.data.scoreboard.ScoreboardPositions
|
||||||
import de.bixilon.minosoft.gui.rendering.Drawable
|
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.LayoutedHUDElement
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.LayoutedHUDElement
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||||
import de.bixilon.minosoft.modding.event.events.scoreboard.*
|
import de.bixilon.minosoft.modding.event.events.scoreboard.*
|
||||||
import de.bixilon.minosoft.modding.event.events.scoreboard.team.TeamUpdateEvent
|
import de.bixilon.minosoft.modding.event.events.scoreboard.team.TeamUpdateEvent
|
||||||
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
||||||
|
@ -17,10 +17,10 @@ import de.bixilon.minosoft.config.key.KeyAction
|
|||||||
import de.bixilon.minosoft.config.key.KeyBinding
|
import de.bixilon.minosoft.config.key.KeyBinding
|
||||||
import de.bixilon.minosoft.config.key.KeyCodes
|
import de.bixilon.minosoft.config.key.KeyCodes
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.Drawable
|
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.LayoutedHUDElement
|
import de.bixilon.minosoft.gui.rendering.gui.hud.elements.LayoutedHUDElement
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Drawable
|
||||||
import de.bixilon.minosoft.modding.event.events.TabListEntryChangeEvent
|
import de.bixilon.minosoft.modding.event.events.TabListEntryChangeEvent
|
||||||
import de.bixilon.minosoft.modding.event.events.TabListInfoChangeEvent
|
import de.bixilon.minosoft.modding.event.events.TabListInfoChangeEvent
|
||||||
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
|
||||||
|
@ -19,9 +19,13 @@ import de.bixilon.kutil.concurrent.time.TimeWorkerTask
|
|||||||
import de.bixilon.kutil.time.TimeUtil
|
import de.bixilon.kutil.time.TimeUtil
|
||||||
import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatch
|
import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatch
|
||||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.*
|
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||||
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
|
import de.bixilon.minosoft.gui.rendering.RenderingStates
|
||||||
import de.bixilon.minosoft.gui.rendering.modding.events.CameraMatrixChangeEvent
|
import de.bixilon.minosoft.gui.rendering.modding.events.CameraMatrixChangeEvent
|
||||||
import de.bixilon.minosoft.gui.rendering.particle.types.Particle
|
import de.bixilon.minosoft.gui.rendering.particle.types.Particle
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.SkipAll
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.SkipAll
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.TranslucentDrawable
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.TranslucentDrawable
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package de.bixilon.minosoft.gui.rendering
|
package de.bixilon.minosoft.gui.rendering.renderer
|
||||||
|
|
||||||
interface Drawable {
|
interface Drawable {
|
||||||
val skipDraw: Boolean
|
val skipDraw: Boolean
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Minosoft
|
* Minosoft
|
||||||
* Copyright (C) 2020 Moritz Zwerger
|
* Copyright (C) 2021 Moritz Zwerger
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||||
*
|
*
|
||||||
@ -11,8 +11,9 @@
|
|||||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package de.bixilon.minosoft.gui.rendering
|
package de.bixilon.minosoft.gui.rendering.renderer
|
||||||
|
|
||||||
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
|
import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer
|
||||||
|
|
@ -11,9 +11,10 @@
|
|||||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package de.bixilon.minosoft.gui.rendering
|
package de.bixilon.minosoft.gui.rendering.renderer
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.registries.CompanionResourceLocation
|
import de.bixilon.minosoft.data.registries.CompanionResourceLocation
|
||||||
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
|
|
||||||
interface RendererBuilder<T : Renderer> : CompanionResourceLocation {
|
interface RendererBuilder<T : Renderer> : CompanionResourceLocation {
|
@ -0,0 +1,154 @@
|
|||||||
|
/*
|
||||||
|
* Minosoft
|
||||||
|
* Copyright (C) 2021 Moritz Zwerger
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.bixilon.minosoft.gui.rendering.renderer
|
||||||
|
|
||||||
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
|
import de.bixilon.kutil.collections.CollectionUtil.synchronizedMapOf
|
||||||
|
import de.bixilon.minosoft.config.profile.ConnectionProfiles
|
||||||
|
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||||
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
|
import de.bixilon.minosoft.gui.rendering.entity.EntityHitboxRenderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.particle.ParticleRenderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.sky.SkyRenderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.PostDrawable
|
||||||
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.PreDrawable
|
||||||
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.RenderPhases
|
||||||
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.SkipAll
|
||||||
|
import de.bixilon.minosoft.gui.rendering.world.WorldRenderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.world.chunk.ChunkBorderRenderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.world.outline.BlockOutlineRenderer
|
||||||
|
import de.bixilon.minosoft.terminal.RunConfiguration
|
||||||
|
|
||||||
|
class RendererManager(
|
||||||
|
private val renderWindow: RenderWindow,
|
||||||
|
) {
|
||||||
|
private val renderers: MutableMap<ResourceLocation, Renderer> = synchronizedMapOf()
|
||||||
|
private val connection = renderWindow.connection
|
||||||
|
private val renderSystem = renderWindow.renderSystem
|
||||||
|
private val framebufferManager = renderWindow.framebufferManager
|
||||||
|
|
||||||
|
|
||||||
|
fun register(builder: RendererBuilder<*>) {
|
||||||
|
val resourceLocation = builder.RESOURCE_LOCATION
|
||||||
|
if (resourceLocation in RunConfiguration.SKIP_RENDERERS) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
renderers[resourceLocation] = builder.build(connection, renderWindow)
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun plusAssign(builder: RendererBuilder<*>) = register(builder)
|
||||||
|
|
||||||
|
operator fun <T : Renderer> get(renderer: RendererBuilder<T>): T? {
|
||||||
|
return this[renderer.RESOURCE_LOCATION].unsafeCast()
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun get(resourceLocation: ResourceLocation): Renderer? {
|
||||||
|
return renderers[resourceLocation]
|
||||||
|
}
|
||||||
|
|
||||||
|
fun init() {
|
||||||
|
for (renderer in renderers.values) {
|
||||||
|
renderer.init()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun postInit() {
|
||||||
|
for (renderer in renderers.values) {
|
||||||
|
renderer.postInit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun renderAll(rendererList: Collection<Renderer>) {
|
||||||
|
for (phase in RenderPhases.VALUES) {
|
||||||
|
for (renderer in rendererList) {
|
||||||
|
if (renderer is SkipAll && renderer.skipAll) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (!phase.type.java.isAssignableFrom(renderer::class.java)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (phase.invokeSkip(renderer)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
renderSystem.framebuffer = renderer.framebuffer
|
||||||
|
phase.invokeSetup(renderer)
|
||||||
|
phase.invokeDraw(renderer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun render() {
|
||||||
|
val renderers = renderers.values
|
||||||
|
|
||||||
|
for (renderer in renderers) {
|
||||||
|
renderSystem.framebuffer = renderer.framebuffer
|
||||||
|
renderer.prepareDraw()
|
||||||
|
}
|
||||||
|
renderAll(renderers)
|
||||||
|
|
||||||
|
renderSystem.framebuffer = null
|
||||||
|
renderPre(renderers)
|
||||||
|
framebufferManager.draw()
|
||||||
|
renderPost(renderers)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun renderPre(renderers: Collection<Renderer>) {
|
||||||
|
for (renderer in renderers) {
|
||||||
|
if (renderer is SkipAll && renderer.skipAll) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (renderer !is PreDrawable) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (renderer.skipPre) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
renderSystem.framebuffer = renderer.framebuffer
|
||||||
|
renderer.drawPre()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun renderPost(renderers: Collection<Renderer>) {
|
||||||
|
for (renderer in renderers) {
|
||||||
|
if (renderer is SkipAll && renderer.skipAll) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (renderer !is PostDrawable) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (renderer.skipPost) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
renderSystem.framebuffer = renderer.framebuffer
|
||||||
|
renderer.drawPost()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
fun RendererManager.registerDefault(profiles: ConnectionProfiles) {
|
||||||
|
// order dependent (from back to front)
|
||||||
|
register(SkyRenderer)
|
||||||
|
register(WorldRenderer)
|
||||||
|
register(BlockOutlineRenderer)
|
||||||
|
if (!profiles.particle.skipLoading) {
|
||||||
|
register(ParticleRenderer)
|
||||||
|
}
|
||||||
|
register(EntityHitboxRenderer)
|
||||||
|
register(ChunkBorderRenderer)
|
||||||
|
register(HUDRenderer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -18,9 +18,9 @@ import de.bixilon.minosoft.data.text.ChatColors
|
|||||||
import de.bixilon.minosoft.data.text.RGBColor
|
import de.bixilon.minosoft.data.text.RGBColor
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RendererBuilder
|
|
||||||
import de.bixilon.minosoft.gui.rendering.modding.events.CameraMatrixChangeEvent
|
import de.bixilon.minosoft.gui.rendering.modding.events.CameraMatrixChangeEvent
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions
|
import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions
|
import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
|
||||||
interface CustomDrawable : Renderer {
|
interface CustomDrawable : Renderer {
|
||||||
val skipCustom: Boolean
|
val skipCustom: Boolean
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
|
||||||
interface OpaqueDrawable : Renderer {
|
interface OpaqueDrawable : Renderer {
|
||||||
val skipOpaque: Boolean
|
val skipOpaque: Boolean
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
|
||||||
interface OtherDrawable : Renderer {
|
interface OtherDrawable : Renderer {
|
||||||
val skipOther: Boolean
|
val skipOther: Boolean
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
|
||||||
interface PostDrawable : Renderer {
|
interface PostDrawable : Renderer {
|
||||||
val skipPost: Boolean
|
val skipPost: Boolean
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||||
|
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
|
||||||
|
interface PreDrawable : Renderer {
|
||||||
|
val skipPre: Boolean
|
||||||
|
get() = false
|
||||||
|
|
||||||
|
fun drawPre()
|
||||||
|
}
|
@ -14,7 +14,7 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||||
|
|
||||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
class RenderPhases<T : Renderer>(
|
class RenderPhases<T : Renderer>(
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions
|
import de.bixilon.minosoft.gui.rendering.system.base.BlendingFunctions
|
||||||
|
|
||||||
interface TranslucentDrawable : Renderer {
|
interface TranslucentDrawable : Renderer {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
package de.bixilon.minosoft.gui.rendering.system.base.phases
|
||||||
|
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
|
||||||
interface TransparentDrawable : Renderer {
|
interface TransparentDrawable : Renderer {
|
||||||
val skipTransparent: Boolean
|
val skipTransparent: Boolean
|
||||||
|
@ -34,12 +34,12 @@ import de.bixilon.minosoft.data.world.ChunkSection
|
|||||||
import de.bixilon.minosoft.data.world.World
|
import de.bixilon.minosoft.data.world.World
|
||||||
import de.bixilon.minosoft.data.world.view.ViewDistanceChangeEvent
|
import de.bixilon.minosoft.data.world.view.ViewDistanceChangeEvent
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RendererBuilder
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderingStates
|
import de.bixilon.minosoft.gui.rendering.RenderingStates
|
||||||
import de.bixilon.minosoft.gui.rendering.modding.events.FrustumChangeEvent
|
import de.bixilon.minosoft.gui.rendering.modding.events.FrustumChangeEvent
|
||||||
import de.bixilon.minosoft.gui.rendering.modding.events.RenderingStateChangeEvent
|
import de.bixilon.minosoft.gui.rendering.modding.events.RenderingStateChangeEvent
|
||||||
import de.bixilon.minosoft.gui.rendering.models.ModelLoader
|
import de.bixilon.minosoft.gui.rendering.models.ModelLoader
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.OpaqueDrawable
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.OpaqueDrawable
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.TranslucentDrawable
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.TranslucentDrawable
|
||||||
|
@ -20,8 +20,8 @@ import de.bixilon.minosoft.data.registries.ResourceLocation
|
|||||||
import de.bixilon.minosoft.data.text.ChatColors
|
import de.bixilon.minosoft.data.text.ChatColors
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
import de.bixilon.minosoft.gui.rendering.RendererBuilder
|
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.OpaqueDrawable
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.OpaqueDrawable
|
||||||
import de.bixilon.minosoft.gui.rendering.util.mesh.LineMesh
|
import de.bixilon.minosoft.gui.rendering.util.mesh.LineMesh
|
||||||
|
@ -20,9 +20,9 @@ import de.bixilon.minosoft.data.registries.ResourceLocation
|
|||||||
import de.bixilon.minosoft.data.registries.blocks.BlockState
|
import de.bixilon.minosoft.data.registries.blocks.BlockState
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
import de.bixilon.minosoft.gui.rendering.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.Renderer
|
|
||||||
import de.bixilon.minosoft.gui.rendering.RendererBuilder
|
|
||||||
import de.bixilon.minosoft.gui.rendering.camera.target.targets.BlockTarget
|
import de.bixilon.minosoft.gui.rendering.camera.target.targets.BlockTarget
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.Renderer
|
||||||
|
import de.bixilon.minosoft.gui.rendering.renderer.RendererBuilder
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions
|
import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.phases.OtherDrawable
|
import de.bixilon.minosoft.gui.rendering.system.base.phases.OtherDrawable
|
||||||
|
Loading…
x
Reference in New Issue
Block a user