IngameRenderer: damned thing finally works somewhat

This commit is contained in:
minjaesong
2018-06-30 16:47:22 +09:00
parent 54a38407e2
commit cf04b7d22a
17 changed files with 628 additions and 646 deletions

View File

@@ -15,6 +15,7 @@ import com.jme3.math.FastMath
import net.torvald.terrarum.gameactors.Actor
import net.torvald.terrarum.imagefont.TinyAlphNum
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.IngameRenderer
import net.torvald.terrarum.ui.ConsoleWindow
import net.torvald.terrarum.utils.JsonFetcher
import net.torvald.terrarum.utils.JsonWriter
@@ -193,8 +194,6 @@ object Terrarum : Screen {
lateinit var shaderBlendGlow: ShaderProgram
lateinit var shaderRGBOnly: ShaderProgram
lateinit var shaderAtoGrey: ShaderProgram
lateinit var shaderMulRGBX: ShaderProgram
lateinit var shaderMulAAAX: ShaderProgram
lateinit var textureWhiteSquare: Texture
@@ -204,8 +203,7 @@ object Terrarum : Screen {
/** Actually just a mesh of four vertices, two triangles -- not a literal glQuad */
lateinit var fullscreenQuad: Mesh; private set
private var fullscreenQuadInit = false
val fullscreenQuad = AppLoader.fullscreenQuad
val deltaTime: Float; get() = Gdx.graphics.rawDeltaTime
@@ -283,28 +281,6 @@ object Terrarum : Screen {
}
val MINIMAL_GL_MAX_TEXTURE_SIZE = 4096
private fun initFullscreenQuad() {
if (!fullscreenQuadInit) {
fullscreenQuad = Mesh(
true, 4, 6,
VertexAttribute.Position(),
VertexAttribute.ColorUnpacked(),
VertexAttribute.TexCoords(0)
)
fullscreenQuadInit = true
}
}
private fun updateFullscreenQuad(WIDTH: Int, HEIGHT: Int) {
initFullscreenQuad()
fullscreenQuad.setVertices(floatArrayOf(
0f, 0f, 0f, 1f, 1f, 1f, 1f, 0f, 1f,
WIDTH.toFloat(), 0f, 0f, 1f, 1f, 1f, 1f, 1f, 1f,
WIDTH.toFloat(), HEIGHT.toFloat(), 0f, 1f, 1f, 1f, 1f, 1f, 0f,
0f, HEIGHT.toFloat(), 0f, 1f, 1f, 1f, 1f, 0f, 0f
))
fullscreenQuad.setIndices(shortArrayOf(0, 1, 2, 2, 3, 0))
}
override fun show() {
if (environment != RunningEnvironment.MOBILE) {
Gdx.gl.glDisable(GL20.GL_DITHER)
@@ -327,9 +303,7 @@ object Terrarum : Screen {
throw GdxRuntimeException("Graphics device not capable -- device's GL_VERSION: $GL_VERSION, required: $MINIMAL_GL_VERSION; GL_MAX_TEXTURE_SIZE: $GL_MAX_TEXTURE_SIZE, required: $MINIMAL_GL_MAX_TEXTURE_SIZE")
}
updateFullscreenQuad(WIDTH, HEIGHT)
// resize fullscreen quad?
TextureRegionPack.globalFlipY = true // !! TO MAKE LEGACY CODE RENDER ON ITS POSITION !!
@@ -377,9 +351,6 @@ object Terrarum : Screen {
shaderRGBOnly = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/rgbonly.frag"))
shaderAtoGrey = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/aonly.frag"))
shaderMulRGBX = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/rgbxmul.frag"))
shaderMulAAAX = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/aaaxmul.frag"))
if (!shaderBlendGlow.isCompiled) {
Gdx.app.log("shaderBlendGlow", shaderBlendGlow.log)
@@ -486,7 +457,7 @@ object Terrarum : Screen {
// re-calculate fullscreen quad
updateFullscreenQuad(screenW, screenH)
//updateFullscreenQuad(screenW, screenH)
//appLoader.resize(width, height)
//Gdx.graphics.setWindowedMode(width, height)
@@ -923,6 +894,10 @@ fun blendScreen(batch: SpriteBatch? = null) {
Gdx.gl.glBlendEquation(GL20.GL_FUNC_ADD) // batch.flush does not touch blend equation
}
fun blendDisable(batch: SpriteBatch? = null) {
(batch ?: Terrarum.batch).disableBlending()
}
object BlendMode {
const val SCREEN = "screen"
const val MULTIPLY = "multiply"