bayer-dithering shader revisited

This commit is contained in:
minjaesong
2017-07-15 18:35:57 +09:00
parent 1f0608b768
commit 9f56ca2e99
4 changed files with 54 additions and 49 deletions

View File

@@ -23,6 +23,13 @@ class Float16() {
bits = Float16.fromFloat(fval)
}
operator fun times(other: Float) = fromFloat(this.toFloat() * other)
operator fun times(other: Float16) = fromFloat(this.toFloat() * other.toFloat())
operator fun div(other: Float) = fromFloat(this.toFloat() / other)
operator fun div(other: Float16) = fromFloat(this.toFloat() / other.toFloat())
// operators are stripped: you don't calculate from FP16; this is only for storing values //
companion object {

View File

@@ -37,9 +37,9 @@ object ColorLimiterTest : ApplicationAdapter() {
override fun create() {
ShaderProgram.pedantic = false
shader4096 = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/4096.frag"))
shader4096 = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/4096_bayer.frag"))
shader4096.begin()
//shader4096.setUniformMatrix("Bayer", Matrix4(floatArrayOf(0f,8f,2f,10f,12f,4f,14f,6f,3f,11f,1f,9f,15f,7f,13f,5f)))
shader4096.setUniformf("monitorGamma", 2.2f)
shader4096.end()
@@ -57,13 +57,14 @@ object ColorLimiterTest : ApplicationAdapter() {
batch.inUse {
batch.shader = shader4096
//batch.shader.setUniformf("monitorGamma", 2.2f)
shader4096.setUniformf("rgbaCounts", 16f, 16f, 16f, 16f)
batch.color = Color.WHITE
batch.draw(img, 0f, 0f)
batch.shader = null
batch.color = Color.WHITE
batch.draw(img, img.width.toFloat(), 0f)
}
}

View File

@@ -21,6 +21,8 @@ import java.util.*
//typealias RGB10 = Int
// NOTE: no Float16 on this thing: 67 kB of memory footage is totally acceptable
object LightmapRenderer {
private val world: GameWorld = Terrarum.ingame!!.world
@@ -41,8 +43,6 @@ object LightmapRenderer {
val LIGHTMAP_HEIGHT = Terrarum.ingame!!.ZOOM_MINIMUM.inv().times(Terrarum.HEIGHT)
.div(FeaturesDrawer.TILE_SIZE).ceil() + overscan_open * 2 + 3
//data class Lux(var r: Float16, var g: Float16, var b: Float16, var uv: Float16)
/**
* Float value, 1.0 for 1023
*/