mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-15 21:14:04 +09:00
trying bytebuf and FloatVector
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package net.torvald.terrarum.blockproperties
|
||||
|
||||
import net.torvald.gdx.graphics.Cvec
|
||||
import jdk.incubator.vector.FloatVector
|
||||
import net.torvald.gdx.graphics.VectorArray
|
||||
import net.torvald.terrarum.App.printdbg
|
||||
import net.torvald.terrarum.ReferencingRanges.PREFIX_VIRTUALTILE
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
@@ -190,7 +191,7 @@ class BlockCodex {
|
||||
prop.shadeColG = record.floatVal("shdg")
|
||||
prop.shadeColB = record.floatVal("shdb")
|
||||
prop.shadeColA = record.floatVal("shduv")
|
||||
prop.opacity = Cvec(prop.shadeColR, prop.shadeColG, prop.shadeColB, prop.shadeColA)
|
||||
|
||||
|
||||
prop.strength = record.intVal("str")
|
||||
prop.density = record.intVal("dsty")
|
||||
@@ -199,7 +200,13 @@ class BlockCodex {
|
||||
prop.baseLumColG = record.floatVal("lumg")
|
||||
prop.baseLumColB = record.floatVal("lumb")
|
||||
prop.baseLumColA = record.floatVal("lumuv")
|
||||
prop.baseLumCol.set(prop.baseLumColR, prop.baseLumColG, prop.baseLumColB, prop.baseLumColA)
|
||||
|
||||
val cvec = floatArrayOf(
|
||||
prop.shadeColR, prop.shadeColG, prop.shadeColB, prop.shadeColA,
|
||||
prop.baseLumColR, prop.baseLumColG, prop.baseLumColB, prop.baseLumColA
|
||||
)
|
||||
prop.opacity = FloatVector.fromArray(VectorArray.SPECIES, cvec, 0)
|
||||
prop.baseLumCol = FloatVector.fromArray(VectorArray.SPECIES, cvec, 4)
|
||||
|
||||
prop.friction = record.intVal("fr")
|
||||
prop.viscosity = record.intVal("vscs")
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package net.torvald.terrarum.blockproperties
|
||||
|
||||
import jdk.incubator.vector.FloatVector
|
||||
import net.torvald.gdx.graphics.Cvec
|
||||
import net.torvald.gdx.graphics.VectorArray.Companion.NULLVEC
|
||||
import net.torvald.random.XXHash32
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
@@ -22,7 +24,7 @@ class BlockProp {
|
||||
var shadeColB = 0f
|
||||
var shadeColA = 0f
|
||||
|
||||
lateinit var opacity: Cvec
|
||||
lateinit var opacity: FloatVector
|
||||
|
||||
fun getOpacity(channel: Int) = when (channel) {
|
||||
0 -> shadeColR
|
||||
@@ -54,12 +56,12 @@ class BlockProp {
|
||||
internal var baseLumColG = 0f // base value used to calculate dynamic luminosity
|
||||
internal var baseLumColB = 0f // base value used to calculate dynamic luminosity
|
||||
internal var baseLumColA = 0f // base value used to calculate dynamic luminosity
|
||||
internal val baseLumCol = Cvec(0)
|
||||
internal var baseLumCol: FloatVector = NULLVEC
|
||||
//var lumColR = 0f // memoised value of dynamic luminosity
|
||||
//var lumColG = 0f // memoised value of dynamic luminosity
|
||||
//var lumColB = 0f // memoised value of dynamic luminosity
|
||||
//var lumColA = 0f // memoised value of dynamic luminosity
|
||||
internal val _lumCol = Cvec(0)
|
||||
internal var _lumCol: FloatVector = NULLVEC
|
||||
// X- and Y-value must be treated properly beforehand! (use GameWorld.coerceXY())
|
||||
fun getLumCol(x: Int, y: Int) = if (dynamicLuminosityFunction == 0) {
|
||||
baseLumCol
|
||||
|
||||
@@ -2,7 +2,9 @@ package net.torvald.terrarum.blockproperties
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.jme3.math.FastMath
|
||||
import jdk.incubator.vector.FloatVector
|
||||
import net.torvald.gdx.graphics.Cvec
|
||||
import net.torvald.gdx.graphics.VectorArray
|
||||
import net.torvald.random.HQRNG
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.gameworld.WorldTime
|
||||
@@ -33,17 +35,17 @@ object BlockPropUtil {
|
||||
|
||||
}
|
||||
|
||||
private fun getTorchFlicker(prop: BlockProp): Cvec {
|
||||
private fun getTorchFlicker(prop: BlockProp): FloatVector {
|
||||
val funcY = FastMath.interpolateLinear(prop.rngBase0 / flickerFuncDomain, prop.rngBase1, prop.rngBase2)
|
||||
return alterBrightnessUniform(prop.baseLumCol, funcY)
|
||||
}
|
||||
|
||||
private fun getSlowBreath(prop: BlockProp): Cvec {
|
||||
private fun getSlowBreath(prop: BlockProp): FloatVector {
|
||||
val funcY = FastMath.sin(FastMath.PI * prop.rngBase0 / breathCycleDuration) * breathRange
|
||||
return alterBrightnessUniform(prop.baseLumCol, funcY)
|
||||
}
|
||||
|
||||
private fun getPulsate(prop: BlockProp): Cvec {
|
||||
private fun getPulsate(prop: BlockProp): FloatVector {
|
||||
val funcY = FastMath.sin(FastMath.PI * prop.rngBase0 / pulsateCycleDuration) * pulsateRange
|
||||
return alterBrightnessUniform(prop.baseLumCol, funcY)
|
||||
}
|
||||
@@ -92,7 +94,7 @@ object BlockPropUtil {
|
||||
prop.rngBase2 = getNewRandom()
|
||||
}
|
||||
|
||||
prop._lumCol.set(getDynamicLumFunc(prop))
|
||||
prop._lumCol = getDynamicLumFunc(prop)
|
||||
//prop.lumColR = prop.lumCol.r
|
||||
//prop.lumColG = prop.lumCol.g
|
||||
//prop.lumColB = prop.lumCol.b
|
||||
@@ -104,11 +106,11 @@ object BlockPropUtil {
|
||||
|
||||
private fun linearInterpolation1D(a: Float, b: Float, x: Float) = a * (1 - x) + b * x
|
||||
|
||||
private fun getDynamicLumFunc(prop: BlockProp): Cvec {
|
||||
private fun getDynamicLumFunc(prop: BlockProp): FloatVector {
|
||||
return when (prop.dynamicLuminosityFunction) {
|
||||
1 -> getTorchFlicker(prop)
|
||||
2 -> (INGAME.world).globalLight.cpy() // current global light
|
||||
3 -> WeatherMixer.getGlobalLightOfTime(INGAME.world, WorldTime.DAY_LENGTH / 2).cpy() // daylight at noon
|
||||
2 -> FloatVector.fromArray(VectorArray.SPECIES, INGAME.world.globalLight.toFloatArray(), 0) // current global light
|
||||
3 -> FloatVector.fromArray(VectorArray.SPECIES, WeatherMixer.getGlobalLightOfTime(INGAME.world, WorldTime.DAY_LENGTH / 2).toFloatArray(), 0) // daylight at noon
|
||||
4 -> getSlowBreath(prop)
|
||||
5 -> getPulsate(prop)
|
||||
else -> prop.baseLumCol
|
||||
@@ -136,12 +138,7 @@ object BlockPropUtil {
|
||||
* @param brighten (-1.0 - 1.0) negative means darkening
|
||||
* @return processed colour
|
||||
*/
|
||||
private fun alterBrightnessUniform(data: Cvec, brighten: Float): Cvec {
|
||||
return Cvec(
|
||||
data.r + brighten,
|
||||
data.g + brighten,
|
||||
data.b + brighten,
|
||||
data.a + brighten
|
||||
)
|
||||
private fun alterBrightnessUniform(data: FloatVector, brighten: Float): FloatVector {
|
||||
return data.add(brighten)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user