jasonjgardner / jg-rtx

Minecraft v1.21 HD PBR resource pack. Works with Java and Bedrock shaders.
Creative Commons Attribution Share Alike 4.0 International
117 stars 5 forks source link

Some name collisions and whatnot for 0.10.0-alpha #5

Closed erich666 closed 3 years ago

erich666 commented 3 years ago

Feedback Lookin' good overall! Keep up the cool work.

Feature Requests Here are a number of warnings that Mineways' ChannelMixer and TileMaker utilities pop up when processing JG-RTX. I thought you might find them useful in figuring out what blocks are not quite complete, e.g., rails and prismarine don't have RGB(A) color textures for them, AFAIK, just the PBR ones:

DUP WARNING: Duplicate file ignored; file 'netherrack_mer.png' is a different name for the same texture 'netherack_mer.png'. DUP WARNING: Duplicate file ignored; file 'stonebrick_mossy.png' is a different name for the same texture 'mossy_stone_brick.png'. DUP WARNING: Duplicate file ignored; file 'stonebrick_mossy_mer.png' is a different name for the same texture 'mossy_stone_brick_mer.png'. DUP WARNING: Duplicate file ignored; file 'stonebrick_mossy_normal.png' is a different name for the same texture 'mossy_stone_brick_normal.png'. WARNING: the grass_block_side_overlay texture does not exist, so the grass_block_side texture replaces it. RGB MISSING WARNING: File 'rail_normal_normal.png' exists but there is no corresponding color file. Perhaps the color file is in a TGA file? You'll need to convert it to a PNG file. and RGB MISSING WARNING: File 'rail_normal_m.png' exists but there is no corresponding color file. and RGB MISSING WARNING: File 'rail_normal_r.png' exists but there is no corresponding color file. RGB MISSING WARNING: File 'prismarine_rough_normal.png' exists but there is no corresponding color file. Perhaps the color file is in a TGA file? You'll need to convert it to a PNG file. and RGB MISSING WARNING: File 'prismarine_rough_r.png' exists but there is no corresponding color file. WARNING: File 'grass_side.png' has texels that are fully transparent, but grass block side images should be in a pair: a fully opaque grass_block_side.png image, and a grayscale grass with alpha cutout image grass_block_side_overlay.png WARNING: File 'grass_side_snowed.png' has texels that are fully transparent, but the image is not identified as having cutout geometry, being a decal, or being an overlay.

There are also a pile of warnings about TGA files existing without PNG equivalents - my utilities don't convert from TGA. You might want to save all images in PNG format, as these are more compact (e.g. acacia_trapdoor is 257 KB TGA, 119 KB PNG when I convert).

I don't actually know a heck of a lot about what Minecraft "expects" and how you modify those expectations. My goal is to use your textures as direct substitutes. So, I find myself making grass_side.png and grass_side_snowed.png by hand in paint.net, compositing your versions over dirt. Being lazy, I'd be happier if these match what Minecraft's look like.

jasonjgardner commented 3 years ago

About the warnings

I just tried making my own terrain file with ChannelMixer and TileMaker. This output contains a lot of useful information. Thanks! It looks like my current working directory doesn't produce the errors you've encountered when I run it through the CLI utilities; however, I still get a bunch of warnings like:

WARNING: The file 'chain1.png' is not recognized and so is not used. WARNING: The file 'chain1_mer.png' is not recognized and so is not used. WARNING: The file 'chain1_normal.png' is not recognized and so is not used. WARNING: The file 'chain2.png' is not recognized and so is not used. WARNING: The file 'chain2_mer.png' is not recognized and so is not used. WARNING: The file 'chain2_normal.png' is not recognized and so is not used. WARNING: The file 'double_plant_fern_carried.png' is not recognized and so is not used. WARNING: The file 'double_plant_grass_carried.png' is not recognized and so is not used. WARNING: The file 'element_006_c.png' is not recognized and so is not used. WARNING: The file 'element_006_c_mer.png' is not recognized and so is not used. ... WARNING: The file 'mood_block.png' is not recognized and so is not used. WARNING: The file 'mood_block_mer.png' is not recognized and so is not used. WARNING: The file 'mood_block_normal.png' is not recognized and so is not used. ...

How does ChannelMixer/TileMaker recognize textures?

Some of these texture file names match the names found in the vanilla pack template. Some are from the Education Edition. I'm toying around with custom texture names too. Minecraft is able to find them because I've either specified the texture's file path in the textures/terrain_texture.json file, or I've set the custom name within the .texture_set.json layer names.


Side note

This is unrelated to Mineways, but may help explain the method to my madness.

I'm not sure which aforementioned method (if either) is the best way to squeeze "custom" texture names into the Bedrock Edition. The terrain_texture.json file allows me to create a namespace for textures. The .texture_set.json file allows reusing/sharing texture files between different texture sets. I assume both approaches could be used together too.

I'm working on a web app to assist in making Minecraft resource packs – particularly for those which support raytracing. I want to know how to implement unique, custom texture names so users of the app can arbitrarily assign textures to blocks.


About the TGA files

I feel like Minecraft does a better job of rendering transparencies through alpha channels. Transparencies in PNG files tend to show a bit of matte background and the anti-aliasing around opaque edges is poor-quality. I'll see if there are any TGA files that can be cleanly converted to PNG.

I can easily export a PNG alongside the TGA files, though I'm not quite sure how I can share those without cluttering the resource pack. I think I might have to provide dist and src directories in the repository so I can still provide something optimal for Minecraft. I'm open to suggestions!

erich666 commented 3 years ago

ChannelMixer and TileMaker use the default Minecraft texture names (which occasionally change), along with some common variants. The list is here: https://github.com/erich666/Mineways/blob/master/Win/tiles.h#L77 - I even include some common misspellings and more variants at the end of this file. But, I can only go so far...

One (of many) problem with parsing any JSON files is that Mineways does not support modded blocks. It also does not support modded or custom texture layouts, such as putting different textures on the top and sides of a stone block. Basically, if there's no reason to change a texture's name, I wouldn't. Naming it the same as Minecraft's directly helps anyone looking at these textures, vs. them having to try to decode a JSON file.

Is there a list of the "alternate" Education Edition texture names somewhere? I'd like to make sure I have covered all these. Google's turned up nothing.


Could you tell me how to reproduce or show me an example of the TGA vs. PNG problem within Minecraft? Which texture(s) show this? In Bedrock or Java Editions? Or RTX? I would like to see this in action and try to understand how that could happen. I know about fringing and interpolation problems that can occur, I wrote about it here, and the second half of this article gives more on the problem and how to solve it with dilation filters and similar. But that's mostly a DCC program problem, where nearest neighbor texture sampling is not used. Minecraft uses nearest neighbor (giving the blocky look) - or is there a way for mods to turn that off?

Mineways avoids the problem when exporting its PNG textures by doing dilation around the immediate fringes and averaging elsewhere (a full dilation on high-res textures would take a lot of passes, but for your textures would need to be done only once).

So the only thing I can imagine is that Targa files have white (say) wherever alpha is 0, while the PNGs have black, so giving different fringing artifacts. That sounds like a function of Minecraft itself, an unfortunate one, if that's what's going on. The solution on your end is to dilate your textures into the cutout regions, as I mentioned. Aha, there's even a Photoshop plugin for this, and some other tools out there. This article notes "To avoid those artifacts a better solution is to use Solidify (see also Photoshop plug-in) or Dilation filter." Seriously consider using them on completed cutouts and see if that improves things.

jasonjgardner commented 3 years ago

I stand corrected! I switched the double tall grass from a TGA to a PNG and did not see an apparent difference. I think my other misgivings over PNGs are simply due to textures without any dilation. I'm very new to 3D in general and am unaware of many common or best practices.

You'll notice there's still a bunch of TGAs in the last release. I wanted to get another release out ASAP, so I just uploaded everything in its current format. But yes, I will certainly use PNG over TGA now. Thank you for the advice.

I didn't have time to test this release with ChannelMixer and TileMaker. I'm going to close this issue with this comment, because the repository should be a bit cleaner now to avoid some of those older warning messages. I wouldn't be surprised if this last release comes with a new batch of problems though, so please feel free to post another issue.


The Education Edition blocks use the following naming convention:

Put it together for: element_001_h

Thank you to KellyTheDerg in the Minecraft RTX community for figuring this out.

Here is a list for you and Googlers of the future:

Minecraft Education Edition block texture names

element_001_h element_002_he element_003_li element_004_be element_005_b element_006_c element_007_n element_008_o element_009_f element_010_ne element_011_na element_012_mg element_013_al element_014_si element_015_p element_016_s element_017_cl element_018_ar element_019_k element_020_ca element_021_sc element_022_ti element_023_v element_024_cr element_025_mn element_026_fe element_027_co element_028_ni element_029_cu element_030_zn element_031_ga element_032_ge element_033_as element_034_se element_035_br element_036_kr element_037_rb element_038_sr element_039_y element_040_zr element_041_nb element_042_mo element_043_tc element_044_ru element_045_rh element_046_pd element_047_ag element_048_cd element_049_in element_050_sn element_051_sb element_052_te element_053_i element_054_xe element_055_cs element_056_ba element_057_la element_058_ce element_059_pr element_060_nd element_061_pm element_062_sm element_063_eu element_064_gd element_065_tb element_066_dy element_067_ho element_068_er element_069_tm element_070_yb element_071_lu element_072_hf element_073_ta element_074_w element_075_re element_076_os element_077_ir element_078_pt element_079_au element_080_hg element_081_tl element_082_pb element_083_bi element_084_po element_085_at element_086_rn element_087_fr element_088_ra element_089_ac element_090_th element_091_pa element_092_u element_093_np element_094_pu element_095_am element_096_cm element_097_bk element_098_cf element_099_es element_100_fm element_101_md element_102_no element_103_lr element_104_rf element_105_db element_106_sg element_107_bh element_108_hs element_109_mt element_110_ds element_111_rg element_112_cn element_113_nh element_114_fl element_115_mc element_116_lv element_117_ts element_118_og

erich666 commented 3 years ago

Ha, that's a revelation - the EE edition has elements?! I had no idea. Found. Well, that's something definitely not in the Java edition, so I can blithely ignore these.