mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-17 09:06:06 +09:00
we've got something
- except actor's RGB won't draw; only the glow does
This commit is contained in:
@@ -553,16 +553,35 @@ class Ingame(val batch: SpriteBatch) : Screen {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
worldBlendFrameBuffer.inAction(null, null) {
|
||||||
|
Gdx.gl.glClearColor(0f,0f,0f,0f)
|
||||||
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_TEXTURE_2D)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_BLEND)
|
||||||
|
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)
|
||||||
|
}
|
||||||
worldDrawFrameBuffer.inAction(null, null) {
|
worldDrawFrameBuffer.inAction(null, null) {
|
||||||
Gdx.gl.glClearColor(0f,0f,0f,0f)
|
Gdx.gl.glClearColor(0f,0f,0f,0f)
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_TEXTURE_2D)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_BLEND)
|
||||||
|
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)
|
||||||
}
|
}
|
||||||
worldGlowFrameBuffer.inAction(null, null) {
|
worldGlowFrameBuffer.inAction(null, null) {
|
||||||
Gdx.gl.glClearColor(0f,0f,0f,1f)
|
Gdx.gl.glClearColor(0f,0f,0f,1f)
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_TEXTURE_2D)
|
||||||
|
Gdx.gl.glEnable(GL20.GL_BLEND)
|
||||||
|
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun moveCameraToWorldCoord() {
|
||||||
|
// using custom code for camera; this is obscure and tricky
|
||||||
|
camera.position.set(WorldCamera.gdxCamX, WorldCamera.gdxCamY, 0f) // make camara work
|
||||||
|
camera.update()
|
||||||
|
batch.projectionMatrix = camera.combined
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////
|
///////////////////////////
|
||||||
@@ -574,44 +593,45 @@ class Ingame(val batch: SpriteBatch) : Screen {
|
|||||||
batch.inUse {
|
batch.inUse {
|
||||||
batch.shader = null
|
batch.shader = null
|
||||||
|
|
||||||
// using custom code for camera; this is obscure and tricky
|
|
||||||
camera.position.set(WorldCamera.gdxCamX, WorldCamera.gdxCamY, 0f) // make camara work
|
|
||||||
camera.update()
|
|
||||||
batch.projectionMatrix = camera.combined
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
batch.color = Color.WHITE
|
batch.color = Color.WHITE
|
||||||
blendNormal()
|
blendNormal()
|
||||||
|
|
||||||
|
setCameraPosition(0f, 0f)
|
||||||
BlocksDrawer.renderWall(batch)
|
BlocksDrawer.renderWall(batch)
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
|
||||||
|
moveCameraToWorldCoord()
|
||||||
actorsRenderBehind.forEach { it.drawBody(batch) }
|
actorsRenderBehind.forEach { it.drawBody(batch) }
|
||||||
particlesContainer.forEach { it.drawBody(batch) }
|
particlesContainer.forEach { it.drawBody(batch) }
|
||||||
|
|
||||||
|
setCameraPosition(0f, 0f)
|
||||||
BlocksDrawer.renderTerrain(batch)
|
BlocksDrawer.renderTerrain(batch)
|
||||||
|
|
||||||
|
|
||||||
/////////////////
|
/////////////////
|
||||||
// draw actors //
|
// draw actors //
|
||||||
/////////////////
|
/////////////////
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
moveCameraToWorldCoord()
|
||||||
actorsRenderMiddle.forEach { it.drawBody(batch) }
|
actorsRenderMiddle.forEach { it.drawBody(batch) }
|
||||||
actorsRenderMidTop.forEach { it.drawBody(batch) }
|
actorsRenderMidTop.forEach { it.drawBody(batch) }
|
||||||
player.drawBody(batch)
|
player.drawBody(batch)
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
|
||||||
actorsRenderFront.forEach { it.drawBody(batch) }
|
actorsRenderFront.forEach { it.drawBody(batch) }
|
||||||
// --> Change of blend mode <-- introduced by childs of ActorWithBody //
|
// --> Change of blend mode <-- introduced by children of ActorWithBody //
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// draw map related stuffs //
|
// draw map related stuffs //
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
|
|
||||||
|
setCameraPosition(0f, 0f)
|
||||||
BlocksDrawer.renderFront(batch, false)
|
BlocksDrawer.renderFront(batch, false)
|
||||||
|
|
||||||
// --> blendNormal() <-- by BlocksDrawer.renderFront
|
// --> blendNormal() <-- by BlocksDrawer.renderFront
|
||||||
FeaturesDrawer.drawEnvOverlay(batch)
|
FeaturesDrawer.drawEnvOverlay(batch)
|
||||||
|
|
||||||
|
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
|
||||||
|
|
||||||
|
|
||||||
// mix lighpmap canvas to this canvas (Colors -- RGB channel)
|
// mix lighpmap canvas to this canvas (Colors -- RGB channel)
|
||||||
@@ -641,7 +661,7 @@ class Ingame(val batch: SpriteBatch) : Screen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is REALLY needed; it really depresses me
|
||||||
batch.shader = null
|
batch.shader = null
|
||||||
|
|
||||||
|
|
||||||
@@ -664,11 +684,6 @@ class Ingame(val batch: SpriteBatch) : Screen {
|
|||||||
batch.inUse {
|
batch.inUse {
|
||||||
batch.shader = null
|
batch.shader = null
|
||||||
|
|
||||||
// using custom code for camera; this is obscure and tricky
|
|
||||||
camera.position.set(WorldCamera.gdxCamX, WorldCamera.gdxCamY, 0f) // make camara work
|
|
||||||
camera.update()
|
|
||||||
batch.projectionMatrix = camera.combined
|
|
||||||
|
|
||||||
|
|
||||||
batch.color = Color.WHITE
|
batch.color = Color.WHITE
|
||||||
blendNormal()
|
blendNormal()
|
||||||
@@ -678,18 +693,16 @@ class Ingame(val batch: SpriteBatch) : Screen {
|
|||||||
//////////////////////
|
//////////////////////
|
||||||
// draw actor glows //
|
// draw actor glows //
|
||||||
//////////////////////
|
//////////////////////
|
||||||
|
moveCameraToWorldCoord()
|
||||||
actorsRenderBehind.forEach { it.drawGlow(batch) }
|
actorsRenderBehind.forEach { it.drawGlow(batch) }
|
||||||
particlesContainer.forEach { it.drawGlow(batch) }
|
particlesContainer.forEach { it.drawGlow(batch) }
|
||||||
actorsRenderMiddle.forEach { it.drawGlow(batch) }
|
actorsRenderMiddle.forEach { it.drawGlow(batch) }
|
||||||
actorsRenderMidTop.forEach { it.drawGlow(batch) }
|
actorsRenderMidTop.forEach { it.drawGlow(batch) }
|
||||||
player.drawGlow(batch)
|
player.drawGlow(batch)
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
|
||||||
actorsRenderFront.forEach { it.drawGlow(batch) }
|
actorsRenderFront.forEach { it.drawGlow(batch) }
|
||||||
// --> blendNormal() <-- introduced by childs of ActorWithBody //
|
// --> blendNormal() <-- introduced by childs of ActorWithBody //
|
||||||
|
|
||||||
|
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
|
||||||
|
|
||||||
// mix lighpmap canvas to this canvas (UV lights -- A channel written on RGB as greyscale image)
|
// mix lighpmap canvas to this canvas (UV lights -- A channel written on RGB as greyscale image)
|
||||||
if (!KeyToggler.isOn(Input.Keys.F6)) { // F6 to disable lightmap draw
|
if (!KeyToggler.isOn(Input.Keys.F6)) { // F6 to disable lightmap draw
|
||||||
@@ -735,8 +748,8 @@ class Ingame(val batch: SpriteBatch) : Screen {
|
|||||||
worldTex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest)
|
worldTex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest)
|
||||||
glowTex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest)
|
glowTex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest)
|
||||||
|
|
||||||
glowTex.bind(1)
|
|
||||||
worldTex.bind(0)
|
worldTex.bind(0)
|
||||||
|
glowTex.bind(1)
|
||||||
|
|
||||||
|
|
||||||
Terrarum.shaderBlendGlow.begin()
|
Terrarum.shaderBlendGlow.begin()
|
||||||
@@ -748,7 +761,7 @@ class Ingame(val batch: SpriteBatch) : Screen {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is REALLY needed; it really depresses me
|
||||||
|
|
||||||
|
|
||||||
batch.inUse {
|
batch.inUse {
|
||||||
@@ -873,7 +886,7 @@ class Ingame(val batch: SpriteBatch) : Screen {
|
|||||||
// draw some overlays (UI) //
|
// draw some overlays (UI) //
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
|
|
||||||
uiContainer.forEach { if (it != consoleHandler) it.render(batch, camera) } // FIXME some of the UIs causes memory leak
|
uiContainer.forEach { if (it != consoleHandler) it.render(batch, camera) }
|
||||||
|
|
||||||
debugWindow.render(batch, camera)
|
debugWindow.render(batch, camera)
|
||||||
// make sure console draws on top of other UIs
|
// make sure console draws on top of other UIs
|
||||||
|
|||||||
@@ -254,9 +254,9 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun renderDemoWorld() {
|
private fun renderDemoWorld() {
|
||||||
println("camera TL: ${WorldCamera.x}, ${WorldCamera.y}")
|
//println("camera TL: ${WorldCamera.x}, ${WorldCamera.y}")
|
||||||
println("camera CN: ${WorldCamera.gdxCamX}, ${WorldCamera.gdxCamY}")
|
//println("camera CN: ${WorldCamera.gdxCamX}, ${WorldCamera.gdxCamY}")
|
||||||
println()
|
//println()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -272,7 +272,6 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
BlocksDrawer.renderWall(batch)
|
BlocksDrawer.renderWall(batch)
|
||||||
BlocksDrawer.renderTerrain(batch)
|
BlocksDrawer.renderTerrain(batch)
|
||||||
|
|
||||||
|
|
||||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1151,7 +1151,7 @@ open class ActorWithPhysics(val world: GameWorld, renderOrder: RenderOrder, val
|
|||||||
// this code potentially caused a collision bug which only happens near the "edge" of the world.
|
// this code potentially caused a collision bug which only happens near the "edge" of the world.
|
||||||
//
|
//
|
||||||
// -- Signed, 2017-09-17
|
// -- Signed, 2017-09-17
|
||||||
|
|
||||||
|
|
||||||
// wrap around for X-axis
|
// wrap around for X-axis
|
||||||
val actorMinimumX = Terrarum.HALFW // to make camera's X stay positive
|
val actorMinimumX = Terrarum.HALFW // to make camera's X stay positive
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package net.torvald.terrarum.weather
|
package net.torvald.terrarum.weather
|
||||||
|
|
||||||
|
import com.badlogic.gdx.Gdx
|
||||||
import com.badlogic.gdx.Input
|
import com.badlogic.gdx.Input
|
||||||
import com.badlogic.gdx.graphics.*
|
import com.badlogic.gdx.graphics.*
|
||||||
import javafx.scene.effect.Light
|
import javafx.scene.effect.Light
|
||||||
@@ -138,6 +139,10 @@ object WeatherMixer {
|
|||||||
Terrarum.shaderBayerSkyboxFill.setUniformf("parallax_size", 1f/3f)
|
Terrarum.shaderBayerSkyboxFill.setUniformf("parallax_size", 1f/3f)
|
||||||
Terrarum.fullscreenQuad.render(Terrarum.shaderBayerSkyboxFill, GL20.GL_TRIANGLES)
|
Terrarum.fullscreenQuad.render(Terrarum.shaderBayerSkyboxFill, GL20.GL_TRIANGLES)
|
||||||
Terrarum.shaderBayerSkyboxFill.end()
|
Terrarum.shaderBayerSkyboxFill.end()
|
||||||
|
|
||||||
|
|
||||||
|
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // don't know why it is needed; it really depresses me
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Float.clampOne() = if (this > 1) 1f else this
|
fun Float.clampOne() = if (this > 1) 1f else this
|
||||||
|
|||||||
Reference in New Issue
Block a user