From d21d640eae696da01ff9d9a50038e84bc6da49fc Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Sat, 16 Jul 2011 16:51:46 -0500 Subject: [PATCH] First pass functional texture pack shader :) --- shaders.txt | 5 + src/main/assembly/package.xml | 3 + src/main/java/org/dynmap/Color.java | 16 + src/main/java/org/dynmap/DynmapPlugin.java | 4 + .../java/org/dynmap/hdmap/HDPerspective.java | 1 + .../org/dynmap/hdmap/HDPerspectiveState.java | 4 + .../org/dynmap/hdmap/IsoHDPerspective.java | 19 +- .../java/org/dynmap/hdmap/TexturePack.java | 316 ++++++++++++++---- .../org/dynmap/hdmap/TexturePackHDShader.java | 78 ++++- texture.txt | 18 +- texturepacks/standard/misc/foliagecolor.png | Bin 0 -> 17693 bytes texturepacks/standard/misc/grasscolor.png | Bin 0 -> 25237 bytes texturepacks/standard/misc/water.png | Bin 0 -> 306 bytes texturepacks/standard/misc/watercolor.png | Bin 0 -> 5446 bytes texturepacks/standard/terrain.png | Bin 0 -> 65050 bytes 15 files changed, 381 insertions(+), 83 deletions(-) create mode 100644 texturepacks/standard/misc/foliagecolor.png create mode 100644 texturepacks/standard/misc/grasscolor.png create mode 100644 texturepacks/standard/misc/water.png create mode 100644 texturepacks/standard/misc/watercolor.png create mode 100644 texturepacks/standard/terrain.png diff --git a/shaders.txt b/shaders.txt index 0754d1d6..1ed6eb86 100644 --- a/shaders.txt +++ b/shaders.txt @@ -34,3 +34,8 @@ shaders: - class: org.dynmap.hdmap.CaveHDShader name: cave + + - class: org.dynmap.hdmap.TexturePackHDShader + name: stdtexture + texturepack: standard + \ No newline at end of file diff --git a/src/main/assembly/package.xml b/src/main/assembly/package.xml index 94ef0e8c..417ad924 100644 --- a/src/main/assembly/package.xml +++ b/src/main/assembly/package.xml @@ -34,6 +34,9 @@ configuration.txt.sample-hd models.txt texture.txt + + ${project.basedir}/texturepacks + /dynmap/texturepacks diff --git a/src/main/java/org/dynmap/Color.java b/src/main/java/org/dynmap/Color.java index 636d5267..8269c67c 100644 --- a/src/main/java/org/dynmap/Color.java +++ b/src/main/java/org/dynmap/Color.java @@ -55,4 +55,20 @@ public class Color { public final void setAlpha(int v) { val = (val & 0x00FFFFFF) | (v << 24); } + /** + * Scale each color component, based on the corresponding component + */ + public final void blendColor(Color c) { + blendColor(c.val); + } + /** + * Scale each color component, based on the corresponding component + */ + public final void blendColor(int argb) { + int nval = (((((val >> 24) & 0xFF) * ((argb >> 24) & 0xFF)) / 255) << 24); + nval = nval | (((((val >> 16) & 0xFF) * ((argb >> 16) & 0xFF)) / 255) << 16); + nval = nval | (((((val >> 8) & 0xFF) * ((argb >> 8) & 0xFF)) / 255) << 8); + nval = nval | (((val & 0xFF) * (argb & 0xFF)) / 255); + val = nval; + } } diff --git a/src/main/java/org/dynmap/DynmapPlugin.java b/src/main/java/org/dynmap/DynmapPlugin.java index 6e9a7fb5..c61f8ff5 100644 --- a/src/main/java/org/dynmap/DynmapPlugin.java +++ b/src/main/java/org/dynmap/DynmapPlugin.java @@ -35,6 +35,7 @@ import org.bukkit.plugin.java.JavaPlugin; import org.dynmap.debug.Debug; import org.dynmap.debug.Debugger; import org.dynmap.hdmap.HDBlockModels; +import org.dynmap.hdmap.TexturePack; import org.dynmap.permissions.NijikokunPermissions; import org.dynmap.permissions.OpPermissions; import org.dynmap.permissions.PermissionProvider; @@ -79,6 +80,9 @@ public class DynmapPlugin extends JavaPlugin { dataDirectory = this.getDataFolder(); /* Load block models */ HDBlockModels.loadModels(dataDirectory); + /* Load texture mappings */ + TexturePack.loadTextureMapping(dataDirectory); + org.bukkit.util.config.Configuration bukkitConfiguration = new org.bukkit.util.config.Configuration(new File(this.getDataFolder(), "configuration.txt")); bukkitConfiguration.load(); configuration = new ConfigurationNode(bukkitConfiguration); diff --git a/src/main/java/org/dynmap/hdmap/HDPerspective.java b/src/main/java/org/dynmap/hdmap/HDPerspective.java index af8b1d92..b6bbe31a 100644 --- a/src/main/java/org/dynmap/hdmap/HDPerspective.java +++ b/src/main/java/org/dynmap/hdmap/HDPerspective.java @@ -26,6 +26,7 @@ public interface HDPerspective { public boolean isBlockTypeDataNeeded(); double getScale(); + int getModelScale(); public void addClientConfiguration(JSONObject mapObject); } diff --git a/src/main/java/org/dynmap/hdmap/HDPerspectiveState.java b/src/main/java/org/dynmap/hdmap/HDPerspectiveState.java index 4903766c..6791a4fd 100644 --- a/src/main/java/org/dynmap/hdmap/HDPerspectiveState.java +++ b/src/main/java/org/dynmap/hdmap/HDPerspectiveState.java @@ -56,4 +56,8 @@ public interface HDPerspectiveState { * Return submodel alpha value (-1 if no submodel rendered) */ int getSubmodelAlpha(); + /** + * Return subblock coordinates of current ray position + */ + void getSubblockCoord(int[] xyz); } diff --git a/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java b/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java index 012030fa..83127146 100644 --- a/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java +++ b/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java @@ -88,6 +88,7 @@ public class IsoHDPerspective implements HDPerspective { double t_next_y, t_next_x, t_next_z; boolean nonairhit; int subalpha; + double mt; /** * Get sky light level - only available if shader requested it */ @@ -363,7 +364,7 @@ public class IsoHDPerspective implements HDPerspective { private boolean raytraceSubblock(short[] model) { int mx = 0, my = 0, mz = 0; double xx, yy, zz; - double mt = t + 0.0000001; + mt = t + 0.0000001; xx = top.x + mt *(bottom.x - top.x); yy = top.y + mt *(bottom.y - top.y); zz = top.z + mt *(bottom.z - top.z); @@ -453,7 +454,17 @@ public class IsoHDPerspective implements HDPerspective { } return true; } - + public void getSubblockCoord(int[] v) { + double tt = t + 0.000001; + if(subalpha >= 0) + tt = mt; + double xx = top.x + tt * (bottom.x - top.x); + double yy = top.y + tt * (bottom.y - top.y); + double zz = top.z + tt * (bottom.z - top.z); + v[0] = (int)((xx - Math.floor(xx)) * modscale); + v[1] = (int)((yy - Math.floor(yy)) * modscale); + v[2] = (int)((zz - Math.floor(zz)) * modscale); + } } public IsoHDPerspective(ConfigurationNode configuration) { @@ -856,6 +867,10 @@ public class IsoHDPerspective implements HDPerspective { return scale; } + public int getModelScale() { + return modscale; + } + @Override public String getName() { return name; diff --git a/src/main/java/org/dynmap/hdmap/TexturePack.java b/src/main/java/org/dynmap/hdmap/TexturePack.java index a114dfd4..3c866124 100644 --- a/src/main/java/org/dynmap/hdmap/TexturePack.java +++ b/src/main/java/org/dynmap/hdmap/TexturePack.java @@ -22,16 +22,17 @@ import org.dynmap.DynmapPlugin; import org.dynmap.Log; import org.dynmap.hdmap.HDPerspectiveState.BlockStep; import org.dynmap.kzedmap.KzedMap; +import org.dynmap.utils.MapIterator; /** * Loader and processor class for minecraft texture packs * Texture packs are found in dynmap/texturepacks directory, and either are either ZIP files * or are directories whose content matches the structure of a zipped texture pack: * ./terrain.png - main color data (required) - * misc/water.png - still water tile? (optional) - * misc/grasscolor.png - tone for grass color, biome sensitive (optional) - * misc/foliagecolor.png - tone for leaf color, biome sensitive (optional) - * misc/watercolor.png - tone for water color, biome sensitive (optional) + * misc/water.png - still water tile (required)) + * misc/grasscolor.png - tone for grass color, biome sensitive (required) + * misc/foliagecolor.png - tone for leaf color, biome sensitive (required) + * misc/watercolor.png - tone for water color, biome sensitive (required) * custom_lava_still.png - custom still lava animation (optional) * custom_lava_flowing.png - custom flowing lava animation (optional) * custom_water_still.png - custom still water animation (optional) @@ -45,17 +46,37 @@ public class TexturePack { private static final String TERRAIN_PNG = "terrain.png"; private static final String GRASSCOLOR_PNG = "misc/grasscolor.png"; private static final String FOLIAGECOLOR_PNG = "misc/foliagecolor.png"; + private static final String WATERCOLOR_PNG = "misc/watercolor.png"; private static final String WATER_PNG = "misc/water.png"; - - private int[] terrain_argb; + + /* Color modifier codes (x1000 for value in mapping code) */ + private static final short COLORMOD_GRASSTONED = 1; + private static final short COLORMOD_FOLIAGETONED = 2; + private static final short COLORMOD_WATERTONED = 3; + /* Special tile index values */ + private static final short BLOCKINDEX_BLANK = -1; + private static final short BLOCKINDEX_STATIONARYWATER = 257; + private static final short BLOCKINDEX_MOVINGWATER = 258; + private static final short BLOCKINDEX_STATIONARYLAVA = 259; + private static final short BLOCKINDEX_MOVINGLAVA = 260; + private static final int MAX_BLOCKINDEX = 260; + private static final int BLOCKTABLELEN = MAX_BLOCKINDEX+1; + + private int[][] terrain_argb; private int terrain_width, terrain_height; private int native_scale; private int[] grasscolor_argb; private int grasscolor_width, grasscolor_height; + private int trivial_grasscolor; private int[] foliagecolor_argb; private int foliagecolor_width, foliagecolor_height; + private int trivial_foliagecolor; + + private int[] watercolor_argb; + private int watercolor_width, watercolor_height; + private int trivial_watercolor; private int[] water_argb; private int water_width, water_height; @@ -70,7 +91,7 @@ public class TexturePack { private static HDTextureMap[] texmaps; private static void initializeTable() { - texmaps = new HDTextureMap[16*256]; + texmaps = new HDTextureMap[16*BLOCKTABLELEN]; HDTextureMap blank = new HDTextureMap(); for(int i = 0; i < texmaps.length; i++) texmaps[i] = blank; @@ -102,6 +123,10 @@ public class TexturePack { } } } + + public static HDTextureMap getMap(int blkid, int blkdata) { + return texmaps[(blkid<<4) + blkdata]; + } } /** Get or load texture pack */ public static TexturePack getTexturePack(String tpname) { @@ -136,25 +161,33 @@ public class TexturePack { is.close(); /* Try to find and load misc/grasscolor.png */ ze = zf.getEntry(GRASSCOLOR_PNG); - if(ze != null) { /* Found it, so load it */ - is = zf.getInputStream(ze); - loadGrassColorPNG(is); - is.close(); - } + if(ze == null) + throw new FileNotFoundException(); + is = zf.getInputStream(ze); + loadGrassColorPNG(is); + is.close(); /* Try to find and load misc/foliagecolor.png */ ze = zf.getEntry(FOLIAGECOLOR_PNG); - if(ze != null) { /* Found it, so load it */ - is = zf.getInputStream(ze); - loadFoliageColorPNG(is); - is.close(); - } + if(ze == null) + throw new FileNotFoundException(); + is = zf.getInputStream(ze); + loadFoliageColorPNG(is); + is.close(); + /* Try to find and load misc/watercolor.png */ + ze = zf.getEntry(WATERCOLOR_PNG); + if(ze == null) + throw new FileNotFoundException(); + is = zf.getInputStream(ze); + loadWaterColorPNG(is); + is.close(); /* Try to find and load misc/water.png */ ze = zf.getEntry(WATER_PNG); - if(ze != null) { /* Found it, so load it */ - is = zf.getInputStream(ze); - loadWaterPNG(is); - is.close(); - } + if(ze == null) + throw new FileNotFoundException(); + is = zf.getInputStream(ze); + loadWaterPNG(is); + is.close(); + zf.close(); return; } catch (IOException iox) { @@ -174,25 +207,24 @@ public class TexturePack { fis.close(); /* Check for misc/grasscolor.png */ f = new File(texturedir, tpname + "/" + GRASSCOLOR_PNG); - if(f.canRead()) { - fis = new FileInputStream(f); - loadGrassColorPNG(fis); - fis.close(); - } + fis = new FileInputStream(f); + loadGrassColorPNG(fis); + fis.close(); /* Check for misc/foliagecolor.png */ f = new File(texturedir, tpname + "/" + FOLIAGECOLOR_PNG); - if(f.canRead()) { - fis = new FileInputStream(f); - loadFoliageColorPNG(fis); - fis.close(); - } + fis = new FileInputStream(f); + loadFoliageColorPNG(fis); + fis.close(); + /* Check for misc/waterecolor.png */ + f = new File(texturedir, tpname + "/" + WATERCOLOR_PNG); + fis = new FileInputStream(f); + loadWaterColorPNG(fis); + fis.close(); /* Check for misc/water.png */ f = new File(texturedir, tpname + "/" + WATER_PNG); - if(f.canRead()) { - fis = new FileInputStream(f); - loadWaterPNG(fis); - fis.close(); - } + fis = new FileInputStream(f); + loadWaterPNG(fis); + fis.close(); } catch (IOException iox) { if(fis != null) { try { fis.close(); } catch (IOException io) {} @@ -202,7 +234,8 @@ public class TexturePack { } /* Copy texture pack */ private TexturePack(TexturePack tp) { - this.terrain_argb = tp.terrain_argb; + this.terrain_argb = new int[tp.terrain_argb.length][]; + System.arraycopy(tp.terrain_argb, 0, this.terrain_argb, 0, this.terrain_argb.length); this.terrain_width = tp.terrain_width; this.terrain_height = tp.terrain_height; this.native_scale = tp.native_scale; @@ -210,11 +243,18 @@ public class TexturePack { this.grasscolor_argb = tp.grasscolor_argb; this.grasscolor_height = tp.grasscolor_height; this.grasscolor_width = tp.grasscolor_width; + this.trivial_grasscolor = tp.trivial_grasscolor; + + this.watercolor_argb = tp.watercolor_argb; + this.watercolor_height = tp.watercolor_height; + this.watercolor_width = tp.watercolor_width; + this.trivial_watercolor = tp.trivial_watercolor; this.foliagecolor_argb = tp.foliagecolor_argb; this.foliagecolor_height = tp.foliagecolor_height; this.foliagecolor_width = tp.foliagecolor_width; - + this.trivial_foliagecolor = tp.trivial_foliagecolor; + this.water_argb = tp.water_argb; this.water_height = tp.water_height; this.water_width = tp.water_width; @@ -222,15 +262,23 @@ public class TexturePack { /* Load terrain.png */ private void loadTerrainPNG(InputStream is) throws IOException { + int i; /* Load image */ BufferedImage img = ImageIO.read(is); if(img == null) { throw new FileNotFoundException(); } terrain_width = img.getWidth(); terrain_height = img.getHeight(); - terrain_argb = new int[terrain_width * terrain_height]; - img.getRGB(0, 0, terrain_width, terrain_height, terrain_argb, 0, terrain_width); - img.flush(); native_scale = terrain_width / 16; + terrain_argb = new int[BLOCKTABLELEN][]; + for(i = 0; i < 256; i++) { + terrain_argb[i] = new int[native_scale*native_scale]; + img.getRGB((i & 0xF)*native_scale, (i>>4)*native_scale, native_scale, native_scale, terrain_argb[i], 0, native_scale); + } + int[] blank = new int[native_scale*native_scale]; + for(i = 256; i < BLOCKTABLELEN; i++) { + terrain_argb[i] = blank; + } + img.flush(); } /* Load misc/grasscolor.png */ @@ -242,7 +290,19 @@ public class TexturePack { grasscolor_height = img.getHeight(); grasscolor_argb = new int[grasscolor_width * grasscolor_height]; img.getRGB(0, 0, grasscolor_width, grasscolor_height, grasscolor_argb, 0, grasscolor_width); - img.flush(); + img.flush(); + /* Figure out trivial color */ + trivial_grasscolor = grasscolor_argb[grasscolor_height*grasscolor_width*3/4 + grasscolor_width/2]; + boolean same = true; + for(int j = 0; same && (j < grasscolor_height); j++) { + for(int i = 0; same && (i <= j); i++) { + if(grasscolor_argb[grasscolor_width*j+i] != trivial_grasscolor) + same = false; + } + } + /* All the same - no biome lookup needed */ + if(same) + grasscolor_argb = null; } /* Load misc/foliagecolor.png */ @@ -255,8 +315,44 @@ public class TexturePack { foliagecolor_argb = new int[foliagecolor_width * foliagecolor_height]; img.getRGB(0, 0, foliagecolor_width, foliagecolor_height, foliagecolor_argb, 0, foliagecolor_width); img.flush(); + /* Figure out trivial color */ + trivial_foliagecolor = foliagecolor_argb[foliagecolor_height*foliagecolor_width*3/4 + foliagecolor_width/2]; + boolean same = true; + for(int j = 0; same && (j < foliagecolor_height); j++) { + for(int i = 0; same && (i <= j); i++) { + if(foliagecolor_argb[foliagecolor_width*j+i] != trivial_foliagecolor) + same = false; + } + } + /* All the same - no biome lookup needed */ + if(same) + foliagecolor_argb = null; } - + + /* Load misc/watercolor.png */ + private void loadWaterColorPNG(InputStream is) throws IOException { + /* Load image */ + BufferedImage img = ImageIO.read(is); + if(img == null) { throw new FileNotFoundException(); } + watercolor_width = img.getWidth(); + watercolor_height = img.getHeight(); + watercolor_argb = new int[watercolor_width * watercolor_height]; + img.getRGB(0, 0, watercolor_width, watercolor_height, watercolor_argb, 0, watercolor_width); + img.flush(); + /* Figure out trivial color */ + trivial_watercolor = watercolor_argb[watercolor_height*watercolor_width*3/4 + watercolor_width/2]; + boolean same = true; + for(int j = 0; same && (j < watercolor_height); j++) { + for(int i = 0; same && (i <= j); i++) { + if(watercolor_argb[watercolor_width*j+i] != trivial_watercolor) + same = false; + } + } + /* All the same - no biome lookup needed */ + if(same) + watercolor_argb = null; + } + /* Load misc/water.png */ private void loadWaterPNG(InputStream is) throws IOException { /* Load image */ @@ -266,13 +362,16 @@ public class TexturePack { water_height = img.getHeight(); water_argb = new int[water_width * water_height]; img.getRGB(0, 0, water_width, water_height, water_argb, 0, water_width); - img.flush(); + img.flush(); + /* Now, patch in to block table */ + int new_water_argb[] = new int[native_scale*native_scale]; + scaleTerrainPNGSubImage(water_width, native_scale, water_argb, new_water_argb); + terrain_argb[BLOCKINDEX_STATIONARYWATER] = new_water_argb; + terrain_argb[BLOCKINDEX_MOVINGWATER] = new_water_argb; } - /* Get texture pack directory */ private static File getTexturePackDirectory() { -// return new File(DynmapPlugin.dataDirectory, "texturepacks"); - return new File("texturepacks"); + return new File(DynmapPlugin.dataDirectory, "texturepacks"); } /** @@ -289,7 +388,6 @@ public class TexturePack { stp.native_scale = scale; stp.terrain_height = 16*scale; stp.terrain_width = 16*scale; - stp.terrain_argb = new int[stp.terrain_height*stp.terrain_width]; scaleTerrainPNG(stp); } /* Remember it */ @@ -301,23 +399,25 @@ public class TexturePack { * @param tp */ private void scaleTerrainPNG(TexturePack tp) { + tp.terrain_argb = new int[256][]; /* Terrain.png is 16x16 array of images : process one at a time */ - for(int ty = 0; ty < 16; ty++) { - for(int tx = 0; tx < 16; tx++) { - int srcoff = ty*native_scale*terrain_width + tx*native_scale; - int destoff = ty*tp.native_scale*tp.terrain_width + tx*tp.native_scale; - scaleTerrainPNGSubImage(tp, srcoff, destoff); - } + for(int idx = 0; idx < 256; idx++) { + tp.terrain_argb[idx] = new int[tp.native_scale*tp.native_scale]; + scaleTerrainPNGSubImage(native_scale, tp.native_scale, terrain_argb[idx], tp.terrain_argb[idx]); } } - private void scaleTerrainPNGSubImage(TexturePack tp, int srcoff, int destoff) { - int nativeres = native_scale; - int res = tp.native_scale; + private static void scaleTerrainPNGSubImage(int srcscale, int destscale, int[] src_argb, int[] dest_argb) { + int nativeres = srcscale; + int res = destscale; Color c = new Color(); + /* Same size, so just copy */ + if(res == nativeres) { + System.arraycopy(src_argb, 0, dest_argb, 0, src_argb.length); + } /* If we're scaling larger source pixels into smaller pixels, each destination pixel * receives input from 1 or 2 source pixels on each axis */ - if(res > nativeres) { + else if(res > nativeres) { int weights[] = new int[res]; int offsets[] = new int[res]; /* LCM of resolutions is used as length of line (res * nativeres) @@ -352,7 +452,7 @@ public class TexturePack { int wy = (yy==0)?wgt_y:(nativeres-wgt_y); if(wy == 0) continue; /* Accumulate */ - c.setARGB(terrain_argb[srcoff + (ind_y+yy)*terrain_width + ind_x + xx]); + c.setARGB(src_argb[(ind_y+yy)*nativeres + ind_x + xx]); accum_red += c.getRed() * wx * wy; accum_green += c.getGreen() * wx * wy; accum_blue += c.getBlue() * wx * wy; @@ -362,7 +462,7 @@ public class TexturePack { /* Generate weighted compnents into color */ c.setRGBA(accum_red / (nativeres*nativeres), accum_green / (nativeres*nativeres), accum_blue / (nativeres*nativeres), accum_alpha / (nativeres*nativeres)); - tp.terrain_argb[destoff + (y*tp.terrain_width) + x] = c.getARGB(); + dest_argb[(y*res) + x] = c.getARGB(); } } } @@ -395,7 +495,7 @@ public class TexturePack { for(int x = 0; x < nativeres; x++) { int ind_x = offsets[x]; int wgt_x = weights[x]; - c.setARGB(terrain_argb[srcoff + (y*terrain_width) + x]); + c.setARGB(src_argb[(y*nativeres) + x]); for(int xx = 0; xx < 2; xx++) { int wx = (xx==0)?wgt_x:(res-wgt_x); if(wx == 0) continue; @@ -416,13 +516,19 @@ public class TexturePack { int off = (y*res) + x; c.setRGBA(accum_red[off]/(nativeres*nativeres), accum_green[off]/(nativeres*nativeres), accum_blue[off]/(nativeres*nativeres), accum_alpha[off]/(nativeres*nativeres)); - tp.terrain_argb[destoff + y*tp.terrain_width + x] = c.getARGB(); + dest_argb[y*res + x] = c.getARGB(); } } } } public void saveTerrainPNG(File f) throws IOException { - BufferedImage img = KzedMap.createBufferedImage(terrain_argb, terrain_width, terrain_height); + int[] outbuf = new int[256*native_scale*native_scale]; + for(int i = 0; i < 256; i++) { + for(int y = 0; y < native_scale; y++) { + System.arraycopy(terrain_argb[i],native_scale*y,outbuf,((i>>4)*native_scale+y)*terrain_width + (i & 0xF)*native_scale, native_scale); + } + } + BufferedImage img = KzedMap.createBufferedImage(outbuf, terrain_width, terrain_height); ImageIO.write(img, "png", f); } @@ -514,9 +620,89 @@ public class TexturePack { } } } + /** + * Read color for given subblock coordinate, with given block id and data and face + */ + public void readColor(HDPerspectiveState ps, MapIterator mapiter, Color rslt) { + int blkid = ps.getBlockTypeID(); + int blkdata = ps.getBlockData(); + HDTextureMap map = HDTextureMap.getMap(blkid, blkdata); + BlockStep laststep = ps.getLastBlockStep(); + int textid = map.faces[laststep.ordinal()]; /* Get index of texture source */ + if(textid < 0) { + rslt.setTransparent(); + return; + } + /* See if not basic block texture */ + int textop = textid / 1000; + textid = textid % 1000; + int[] texture = terrain_argb[textid]; + int clrval = 0; + int[] xyz = new int[3]; + ps.getSubblockCoord(xyz); + switch(laststep) { + case X_MINUS: + clrval = texture[(native_scale-xyz[1]-1)*native_scale + xyz[2]]; + break; + case X_PLUS: + clrval = texture[(native_scale-xyz[1]-1)*native_scale + (native_scale-xyz[2]-1)]; + break; + case Z_MINUS: + clrval = texture[(native_scale-xyz[1]-1)*native_scale + xyz[0]]; + break; + case Z_PLUS: + clrval = texture[(native_scale-xyz[1]-1)*native_scale + (native_scale-xyz[0]-1)]; + break; + case Y_MINUS: + clrval = texture[xyz[2]*native_scale + xyz[0]]; + break; + case Y_PLUS: + clrval = texture[xyz[2]*native_scale + (native_scale-xyz[0]-1)]; + break; + } + rslt.setARGB(clrval); + if(textop > 0) { + int tone = 0xFFFFFFFF; + /* Switch based on texture modifier */ + switch(textop) { + case COLORMOD_GRASSTONED: + if(grasscolor_argb == null) { + tone = trivial_grasscolor; + } + else { + tone = biomeLookup(grasscolor_argb, grasscolor_width, mapiter.getRawBiomeRainfall(), mapiter.getRawBiomeTemperature()); + } + break; + case COLORMOD_FOLIAGETONED: + if(foliagecolor_argb == null) { + tone = trivial_foliagecolor; + } + else { + tone = biomeLookup(foliagecolor_argb, foliagecolor_width, mapiter.getRawBiomeRainfall(), mapiter.getRawBiomeTemperature()); + } + break; + case COLORMOD_WATERTONED: + if(watercolor_argb == null) { + tone = trivial_watercolor; + } + else { + tone = biomeLookup(watercolor_argb, watercolor_width, mapiter.getRawBiomeRainfall(), mapiter.getRawBiomeTemperature()); + } + break; + } + rslt.blendColor(tone); + } + } + + private static final int biomeLookup(int[] argb, int width, double rainfall, double temp) { + int t = (int)((1.0-temp)*(width-1)); + int h = width - (int)(temp*rainfall*(width-1)) - 1; + return argb[width*h + t]; + } public static void main(String[] args) { - TexturePack tp = TexturePack.getTexturePack("test"); + TexturePack.loadTextureMapping(new File(".")); + TexturePack tp = TexturePack.getTexturePack("standard"); TexturePack tp2 = tp.resampleTexturePack(4); try { tp2.saveTerrainPNG(new File("test_terrain_4.png")); diff --git a/src/main/java/org/dynmap/hdmap/TexturePackHDShader.java b/src/main/java/org/dynmap/hdmap/TexturePackHDShader.java index 13f5c48a..85ff2549 100644 --- a/src/main/java/org/dynmap/hdmap/TexturePackHDShader.java +++ b/src/main/java/org/dynmap/hdmap/TexturePackHDShader.java @@ -6,6 +6,7 @@ import org.dynmap.Color; import org.dynmap.ColorScheme; import org.dynmap.ConfigurationNode; import org.dynmap.Log; +import org.dynmap.hdmap.HDPerspectiveState.BlockStep; import org.dynmap.utils.MapChunkCache; import org.dynmap.utils.MapIterator; import org.json.simple.JSONObject; @@ -31,7 +32,7 @@ public class TexturePackHDShader implements HDShader { @Override public boolean isRawBiomeDataNeeded() { - return false; + return true; } @Override @@ -60,15 +61,28 @@ public class TexturePackHDShader implements HDShader { } private class OurShaderState implements HDShaderState { - private Color color; + private Color color[]; + private Color tmpcolor[]; + private Color c; protected MapIterator mapiter; protected HDMap map; - private boolean air; + private TexturePack scaledtp; + private HDLighting lighting; private OurShaderState(MapIterator mapiter, HDMap map) { this.mapiter = mapiter; this.map = map; - this.color = new Color(); + this.lighting = map.getLighting(); + if(lighting.isNightAndDayEnabled()) { + color = new Color[] { new Color(), new Color() }; + tmpcolor = new Color[] { new Color(), new Color() }; + } + else { + color = new Color[] { new Color() }; + tmpcolor = new Color[] { new Color() }; + } + c = new Color(); + scaledtp = tp.resampleTexturePack(map.getPerspective().getModelScale()); } /** * Get our shader @@ -88,15 +102,15 @@ public class TexturePackHDShader implements HDShader { * Get our lighting */ public HDLighting getLighting() { - return map.getLighting(); + return lighting; } /** * Reset renderer state for new ray */ public void reset(HDPerspectiveState ps) { - color.setTransparent(); - air = true; + for(Color c: color) + c.setTransparent(); } /** @@ -105,8 +119,54 @@ public class TexturePackHDShader implements HDShader { */ public boolean processBlock(HDPerspectiveState ps) { int blocktype = ps.getBlockTypeID(); - color.setRGBA(0, 0, 0, 255); + if(blocktype == 0) + return false; + /* Get color from textures */ + scaledtp.readColor(ps, mapiter, c); + if (c.getAlpha() > 0) { + int subalpha = ps.getSubmodelAlpha(); + /* Scale brightness depending upon face */ + switch(ps.getLastBlockStep()) { + case X_MINUS: + case X_PLUS: + /* 60% brightness */ + c.blendColor(0xFFA0A0A0); + break; + case Y_MINUS: + case Y_PLUS: + /* 85% brightness for even, 90% for even*/ + if((mapiter.getY() & 0x01) == 0) + c.blendColor(0xFFD9D9D9); + else + c.blendColor(0xFFE6E6E6); + break; + } + /* Handle light level, if needed */ + lighting.applyLighting(ps, this, c, tmpcolor); + /* If we got alpha from subblock model, use it instead */ + if(subalpha >= 0) { + for(Color clr : tmpcolor) + clr.setAlpha(Math.max(subalpha,clr.getAlpha())); + } + /* If no previous color contribution, use new color */ + if(color[0].isTransparent()) { + for(int i = 0; i < color.length; i++) + color[i].setColor(tmpcolor[i]); + return (color[0].getAlpha() == 255); + } + /* Else, blend and generate new alpha */ + else { + int alpha = color[0].getAlpha(); + int alpha2 = tmpcolor[0].getAlpha() * (255-alpha) / 255; + int talpha = alpha + alpha2; + for(int i = 0; i < color.length; i++) + color[i].setRGBA((tmpcolor[i].getRed()*alpha2 + color[i].getRed()*alpha) / talpha, + (tmpcolor[i].getGreen()*alpha2 + color[i].getGreen()*alpha) / talpha, + (tmpcolor[i].getBlue()*alpha2 + color[i].getBlue()*alpha) / talpha, talpha); + return (talpha >= 254); /* If only one short, no meaningful contribution left */ + } + } return true; } /** @@ -120,7 +180,7 @@ public class TexturePackHDShader implements HDShader { * @param index - index of color to request (renderer specific - 0=default, 1=day for night/day renderer */ public void getRayColor(Color c, int index) { - c.setColor(color); + c.setColor(color[index]); } /** * Clean up state object - called after last ray completed diff --git a/texture.txt b/texture.txt index 63469ca2..9acc04fd 100644 --- a/texture.txt +++ b/texture.txt @@ -1,13 +1,12 @@ # Mapping of texture resources to block ID and data values # block:id=,data=,top=,bottom=,north=,south=,east=,west=,allfaces=,allsides= -# =0-255 (index of patch in terrain.png), -1=clear, 256=patch(38)+biome tint from grasscolor.png,257=stationary water,258=moving water, -# 259=stationary lava,260=moving lava,261=patch(52)+biome tint from foliagecolor.png,262=patch(132)+biome tint from foliagecolor.png, -# 263=patch( +# =0-255 (index of patch in terrain.png), -1=clear, 1xxx=biome tint from grasscolor.png,257=stationary water,258=moving water, +# 259=stationary lava,260=moving lava,2xxx=biome tint from foliagecolor.png,3xxx=biome tint from watercolor.png ###### # Stone block:id=1,data=*,allfaces=1 # Grass -block:id=2,data=*,allsides=3,top=256,bottom=2 +block:id=2,data=*,allsides=3,top=1000,bottom=2 # Dirt block:id=3,data=*,allfaces=2 # Cobblestone @@ -47,11 +46,11 @@ block:id=17,data=1,allsides=116,top=21,bottom=21 # Wood (birch) block:id=17,data=2,allsides=117,top=21,bottom=21 # Leaves (std) -block:id=18,data=0,allfaces=261 +block:id=18,data=0,allfaces=2052 # Leaves (spruce/pine) -block:id=18,data=1,allfaces=262 +block:id=18,data=1,allfaces=2132 # Leaves (birch) -block:id=18,data=2,allfaces=261 +block:id=18,data=2,allfaces=2052 # Sponge block:id=19,data=*,allfaces=48 # Glass @@ -70,3 +69,8 @@ block:id=23,data=4,top=62,north=46,south=45,east=45,west=45,bottom=62 block:id=23,data=5,top=62,south=46,north=45,east=45,west=45,bottom=62 # Sandstone block:id=24,data=*,top=176,bottom=208,allsides=192 +# Snow +block:id=78,data=*,allfaces=66 +# Ice +block:id=79,data=*,allfaces=67 + diff --git a/texturepacks/standard/misc/foliagecolor.png b/texturepacks/standard/misc/foliagecolor.png new file mode 100644 index 0000000000000000000000000000000000000000..81673caee3a2d26227d88215e08d7df8d9ccfe0b GIT binary patch literal 17693 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 U)zFOe5dZ)H07*qoM6N<$f@-qCsQ>@~ literal 0 HcmV?d00001 diff --git a/texturepacks/standard/misc/grasscolor.png b/texturepacks/standard/misc/grasscolor.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d9c2090c4d5723c3f01ffc3559ab248e9fcbc1 GIT binary patch literal 25237 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 Y(5}(#`*R6n1pa&zGJoEsIpVDU10aElA^-pY literal 0 HcmV?d00001 diff --git a/texturepacks/standard/misc/water.png b/texturepacks/standard/misc/water.png new file mode 100644 index 0000000000000000000000000000000000000000..8b92f9bcf74590e50f4eed14ad30e63b634705ea GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-MC9V-A z!TD(=<%vb93;~Imc_n&&t|1C##(KtPE1y471*$pf>Eak-;oloIy5((r`rAv< z+c(9?XYS$6bXla_IG_8G!ZR-Ei5>qJ9zM@q;p6#$jXy|5W&vyOTxIw5Yd*+^`W>j% zEV*H7cz-5e>s(WdEJOal?E(i=<@KTjTqdtyczccEtI6y#iU(r1vfkaj_|Auf{Mz() z;WiyBWDGwE9F$X@x^d>I^q10tJe;SKS8ZHt)-753^V_VsAG1LoV(@hJb6Mw<&;$T3 C&3H)w literal 0 HcmV?d00001 diff --git a/texturepacks/standard/misc/watercolor.png b/texturepacks/standard/misc/watercolor.png new file mode 100644 index 0000000000000000000000000000000000000000..38bff05e9fc50e188d78106318fc8e568319bc3d GIT binary patch literal 5446 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 z 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