simplified the tiling shader a bit

This commit is contained in:
minjaesong
2020-04-13 02:13:24 +09:00
parent a08d09b1b8
commit 9e082e914d
7 changed files with 43 additions and 42 deletions

View File

@@ -396,11 +396,11 @@ public class AppLoader implements ApplicationListener {
CommonResourcePool.INSTANCE.addToLoadingList("title_health2", () -> new Texture(Gdx.files.internal("./assets/graphics/gui/health_distance.tga")));
// set GL graphics constants
shaderBayerSkyboxFill = loadShader("assets/4096.vert", "assets/4096_bayer_skyboxfill.frag");
shaderHicolour = loadShader("assets/4096.vert", "assets/hicolour.frag");
shaderBayerSkyboxFill = loadShaderFromFile("assets/4096.vert", "assets/4096_bayer_skyboxfill.frag");
shaderHicolour = loadShaderFromFile("assets/4096.vert", "assets/hicolour.frag");
shaderPassthruRGB = SpriteBatch.createDefaultShader();
shaderColLUT = loadShader("assets/4096.vert", "assets/passthrurgb.frag");
shaderReflect = loadShader("assets/4096.vert", "assets/reflect.frag");
shaderColLUT = loadShaderFromFile("assets/4096.vert", "assets/passthrurgb.frag");
shaderReflect = loadShaderFromFile("assets/4096.vert", "assets/reflect.frag");
fullscreenQuad = new Mesh(
true, 4, 6,
@@ -1182,7 +1182,7 @@ public class AppLoader implements ApplicationListener {
System.out.println("[" + out + "] " + message.toString());
}
public static ShaderProgram loadShader(String vert, String frag) {
public static ShaderProgram loadShaderFromFile(String vert, String frag) {
ShaderProgram s = new ShaderProgram(Gdx.files.internal(vert), Gdx.files.internal(frag));
if (s.getLog().toLowerCase().contains("error")) {
@@ -1192,6 +1192,16 @@ public class AppLoader implements ApplicationListener {
return s;
}
public static ShaderProgram loadShaderInline(String vert, String frag) {
ShaderProgram s = new ShaderProgram(vert, frag);
if (s.getLog().toLowerCase().contains("error")) {
throw new Error(String.format("Shader program loaded with %s, %s failed:\n%s", vert, frag, s.getLog()));
}
return s;
}
public static void measureDebugTime(String name, kotlin.jvm.functions.Function0<kotlin.Unit> block) {
if (IS_DEVELOPMENT_BUILD) {
//debugTimers.put(name, kotlin.system.TimingKt.measureNanoTime(block));

View File

@@ -152,8 +152,8 @@ object GlslTilingTest : ApplicationAdapter() {
shader.setUniformf("tilesInAxes", tilesInHorizontal, tilesInVertical)
shader.setUniformf("cameraTranslation", cameraX, cameraY)
shader.setUniformi("tileSizeInPx", 16)
shader.setUniformi("tilesInAtlas", 256, 256) //depends on the tile atlas
shader.setUniformi("atlasTexSize", 4096, 4096) //depends on the tile atlas
shader.setUniformf("tilesInAtlas", 256f, 256f) //depends on the tile atlas
shader.setUniformf("atlasTexSize", 4096f, 4096f) //depends on the tile atlas
tilesQuad.render(shader, GL20.GL_TRIANGLES)
shader.end()
tilesBufferAsTex.dispose()

View File

@@ -28,12 +28,12 @@ import java.util.Properties;
public class CSVEditor extends JFrame {
/** Default columns. When you open existing csv, it should overwrite this. */
private String[] columns = new String[]{"id", "drop", "name", "shdr", "shdg", "shdb", "shduv", "str", "dsty", "mate", "solid", "plat", "wall", "grav", "dlfn", "fv", "fr", "lumr", "lumg", "lumb", "lumuv", "colour", "vscs"};
private String[] columns = new String[]{"id", "drop", "name", "shdr", "shdg", "shdb", "shduv", "str", "dsty", "mate", "solid", "plat", "wall", "grav", "dlfn", "fv", "fr", "lumr", "lumg", "lumb", "lumuv", "colour", "vscs", "refl"};
private final int FOUR_DIGIT = 42;
private final int SIX_DIGIT = 50;
private final int TWO_DIGIT = 30;
private final int ARBITRARY = 240;
private int[] colWidth = new int[]{FOUR_DIGIT, FOUR_DIGIT, ARBITRARY, SIX_DIGIT, SIX_DIGIT, SIX_DIGIT, SIX_DIGIT, TWO_DIGIT, FOUR_DIGIT, FOUR_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, SIX_DIGIT, SIX_DIGIT, SIX_DIGIT, SIX_DIGIT, FOUR_DIGIT * 2, TWO_DIGIT};
private int[] colWidth = new int[]{FOUR_DIGIT, FOUR_DIGIT, ARBITRARY, SIX_DIGIT, SIX_DIGIT, SIX_DIGIT, SIX_DIGIT, TWO_DIGIT, FOUR_DIGIT, FOUR_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, TWO_DIGIT, SIX_DIGIT, SIX_DIGIT, SIX_DIGIT, SIX_DIGIT, FOUR_DIGIT * 2, TWO_DIGIT, SIX_DIGIT};
private final int UNDO_BUFFER_SIZE = 10;
@@ -501,7 +501,8 @@ public class CSVEditor extends JFrame {
"fv=Vertical friction when player slide on the cliff. 0 means not slide-able\n" +
"fr=Horizontal friction. &lt;16:slippery 16:regular &gt;16:sticky\n" +
"colour=[Fluids] Colour of the block in hexadecimal RGBA.\n" +
"vscs=[Fluids] Viscocity of the block. 16 for water.\n";
"vscs=[Fluids] Viscocity of the block. 16 for water.\n" +
"refl=[NOT Fluids] Reflectance of the block, used by the light calculation. Valid range 0.0-1.0\n";
/**
* ¤ is used as a \n marker

View File

@@ -80,11 +80,11 @@ object IngameRenderer : Disposable {
// these codes will run regardless of the invocation of the "initialise()" function
// the "initialise()" function will also be called
init {
shaderBlur = AppLoader.loadShader("assets/blur.vert", "assets/blur.frag")
shaderBlur = AppLoader.loadShaderFromFile("assets/blur.vert", "assets/blur.frag")
if (AppLoader.getConfigBoolean("fxdither")) {
shaderBayer = AppLoader.loadShader("assets/4096.vert", "assets/4096_bayer.frag")
shaderBayer = AppLoader.loadShaderFromFile("assets/4096.vert", "assets/4096_bayer.frag")
shaderBayer.begin()
shaderBayer.setUniformf("rcount", 64f)
shaderBayer.setUniformf("gcount", 64f)
@@ -92,14 +92,14 @@ object IngameRenderer : Disposable {
shaderBayer.end()
}
else {
shaderBayer = AppLoader.loadShader("assets/4096.vert", "assets/passthrurgb.frag")
shaderBayer = AppLoader.loadShaderFromFile("assets/4096.vert", "assets/passthrurgb.frag")
}
shaderBlendGlow = AppLoader.loadShader("assets/blendGlow.vert", "assets/blendGlow.frag")
shaderBlendGlow = AppLoader.loadShaderFromFile("assets/blendGlow.vert", "assets/blendGlow.frag")
shaderRGBOnly = AppLoader.loadShader("assets/4096.vert", "assets/rgbonly.frag")
shaderAtoGrey = AppLoader.loadShader("assets/4096.vert", "assets/aonly.frag")
shaderRGBOnly = AppLoader.loadShaderFromFile("assets/4096.vert", "assets/rgbonly.frag")
shaderAtoGrey = AppLoader.loadShaderFromFile("assets/4096.vert", "assets/aonly.frag")
if (!shaderBlendGlow.isCompiled) {

View File

@@ -86,7 +86,7 @@ internal object BlocksDrawer {
private lateinit var tilesQuad: Mesh
private val shader = AppLoader.loadShader("assets/4096.vert", "assets/tiling.frag")
private val shader = AppLoader.loadShaderFromFile("assets/4096.vert", "assets/tiling.frag")
init {
@@ -637,8 +637,8 @@ internal object BlocksDrawer {
shader.setUniformi("tilemapDimension", tilesBuffer.width, tilesBuffer.height)
shader.setUniformf("tilesInAxes", tilesInHorizontal.toFloat(), tilesInVertical.toFloat())
shader.setUniformi("cameraTranslation", WorldCamera.x fmod TILE_SIZE, WorldCamera.y fmod TILE_SIZE) // usage of 'fmod' and '%' were depend on the for_x_start, which I can't just do naive int div
/*shader hard-code*/shader.setUniformi("tilesInAtlas", tileAtlas.horizontalCount, tileAtlas.verticalCount) //depends on the tile atlas
/*shader hard-code*/shader.setUniformi("atlasTexSize", tileAtlas.texture.width, tileAtlas.texture.height) //depends on the tile atlas
shader.setUniformf("tilesInAtlas", tileAtlas.horizontalCount.toFloat(), tileAtlas.verticalCount.toFloat()) //depends on the tile atlas
shader.setUniformf("atlasTexSize", tileAtlas.texture.width.toFloat(), tileAtlas.texture.height.toFloat()) //depends on the tile atlas
// set the blend value as world's time progresses, in linear fashion
shader.setUniformf("tilesBlend", if (world is GameWorldExtension && (mode == TERRAIN || mode == WALL))
drawTIME_T.fmod(SECONDS_IN_MONTH) / SECONDS_IN_MONTH.toFloat()
@@ -646,7 +646,6 @@ internal object BlocksDrawer {
0f
)
//shader.setUniformf("drawBreakage", if (mode == WIRE) 0f else 1f)
shader.setUniformf("zoom", Terrarum.ingame?.screenZoom ?: 1f)
tilesQuad.render(shader, GL20.GL_TRIANGLES)
shader.end()