2626package org.visuals.legacy.animatium.handler.rendering.lighting.lightmap
2727
2828import btw.lowercase.renderer.Renderer
29- import com.mojang.blaze3d.buffers.GpuBuffer
30- import com.mojang.blaze3d.buffers.Std140Builder
31- import com.mojang.blaze3d.buffers.Std140SizeCalculator
3229import com.mojang.blaze3d.textures.GpuTextureView
33- import net.minecraft.client.renderer.MappableRingBuffer
3430import net.minecraft.util.profiling.Profiler
3531import org.visuals.legacy.animatium.handler.rendering.AnimatiumPipelines
3632import org.visuals.legacy.animatium.renderer.buffer.BasicGeometry
33+ import org.visuals.legacy.animatium.renderer.uniform.UniformKey
34+ import org.visuals.legacy.animatium.renderer.uniform.UniformStorage
3735
3836class LegacyLightmapRenderer : AutoCloseable {
3937 companion object {
4038 private val BASE_GEOMETRY = BasicGeometry (0 , 3 )
41- private val LIGHTMAP_UBO_SIZE = Std140SizeCalculator ()
42- .putFloat() // SkyDarken
43- .putFloat() // SkyDarkness
44- .putFloat() // BlockLightRed
45- .putFloat() // NightVisionScale
46- .putFloat() // Gamma
47- .putInt() // UseBrightLightmap
48- .get()
39+ private val SkyDarken = UniformKey .Float (" SkyDarken" )
40+ private val SkyDarkness = UniformKey .Float (" SkyDarkness" )
41+ private val BlockLightRed = UniformKey .Float (" BlockLightRed" )
42+ private val NightVisionScale = UniformKey .Float (" NightVisionScale" )
43+ private val Gamma = UniformKey .Float (" Gamma" )
44+ private val UseBrightLightmap = UniformKey .Integer (" UseBrightLightmap" )
4945 }
5046
51- private val ubo = MappableRingBuffer (
52- { " Legacy Lightmap UBO" },
53- GpuBuffer .USAGE_UNIFORM or GpuBuffer .USAGE_MAP_WRITE ,
54- LIGHTMAP_UBO_SIZE
55- )
47+ private val lightmapInfoUniform = UniformStorage .builder(" Legacy Lightmap UBO" )
48+ .with (SkyDarken )
49+ .with (SkyDarkness )
50+ .with (BlockLightRed )
51+ .with (NightVisionScale )
52+ .with (Gamma )
53+ .with (UseBrightLightmap )
54+ .build()
5655
5756 fun render (state : LegacyLightmapState , textureView : GpuTextureView ) {
5857 if (state.needsUpdate) {
5958 val profiler = Profiler .get()
6059 profiler.push(" lightmap" )
6160
62- this .ubo.currentBuffer().map(false , true ).use { mappedView ->
63- Std140Builder .intoBuffer(mappedView.data())
64- .putFloat(state.skyDarken)
65- .putFloat(state.skyDarkness)
66- .putFloat(state.blockLightRed)
67- .putFloat(state.nightVisionScale)
68- .putFloat(state.gamma)
69- .putInt(if (state.useBrightLightmap) 1 else 0 )
70- }
71-
7261 Renderer .of({ " Legacy Lightmap Update" }, textureView).use { renderer ->
7362 renderer.setPipeline(AnimatiumPipelines .LEGACY_LIGHTMAP )
74- renderer.setUniform(" LightmapInfo" , this .ubo.currentBuffer())
63+ renderer.setUniform(
64+ " LightmapInfo" ,
65+ this .lightmapInfoUniform
66+ .set(SkyDarken , state.skyDarken)
67+ .set(SkyDarkness , state.skyDarkness)
68+ .set(BlockLightRed , state.blockLightRed)
69+ .set(NightVisionScale , state.nightVisionScale)
70+ .set(Gamma , state.gamma)
71+ .set(UseBrightLightmap , if (state.useBrightLightmap) 1 else 0 )
72+ .upload()
73+ )
7574 renderer.draw(BASE_GEOMETRY )
7675 }
7776
78- this .ubo.rotate()
7977 profiler.pop()
8078 }
8179 }
8280
83- override fun close () = this .ubo .close()
81+ override fun close () = this .lightmapInfoUniform .close()
8482}
0 commit comments