rendering improvements

begin adding weeping sky
datagen
bayer transparency
This commit is contained in:
techno-sam
2025-08-28 13:25:29 +02:00
parent 23977a3b3a
commit 4ff50b44d4
62 changed files with 610 additions and 17 deletions
@@ -0,0 +1,44 @@
// 1.21.8 -999999999-01-01T00:00:00 Crystalline Sky/Model Definitions
e832366c216102270b75085db7a7169881b853b3 assets/crystalline_sky/blockstates/sky.json
ecc125a24d3e2c86d922352d8449f26a4e06d122 assets/crystalline_sky/blockstates/sky_light.json
03e2eb768bc34fbeaabffbff8ed3a2a3044a6db1 assets/crystalline_sky/blockstates/weeping_sky.json
c0168359bc7e3978778cee2d000b21c3889c235c assets/crystalline_sky/items/sky.json
c9ebbcbf9d632aeab6bfab2014d7c225f2b290d9 assets/crystalline_sky/items/sky_light.json
2371c7a720a552589983925a24677fd3d1b649b4 assets/crystalline_sky/items/weeping_sky.json
6d1e10716c05150e73b2b9e254091125264a7a3d assets/crystalline_sky/models/block/sky.json
3183aeb9fff78d0c65f1ddd0dfb599420573e281 assets/crystalline_sky/models/block/sky_light_00.json
7eaa4c3d4913e0cb117585204dd1dd9e58402b83 assets/crystalline_sky/models/block/sky_light_01.json
59463cef438e58b137e5ce27402acf42a3a0ae87 assets/crystalline_sky/models/block/sky_light_02.json
ee9cb7604922cdb2ad71d021a593ca82f0baf493 assets/crystalline_sky/models/block/sky_light_03.json
317f9881c20b1aaa3902b3999dd1c76d00afbde6 assets/crystalline_sky/models/block/sky_light_04.json
2ce612b8445da92c6cecd07bd5364a25bcfb127f assets/crystalline_sky/models/block/sky_light_05.json
19859c3124196f3788bfbae1ec2bcd4d1e46db2e assets/crystalline_sky/models/block/sky_light_06.json
fceb0c59b7f6d431200764ccf87596541bacb17f assets/crystalline_sky/models/block/sky_light_07.json
c0d693e4f78ce15c238909130382909abda4c922 assets/crystalline_sky/models/block/sky_light_08.json
ef9e5aca345b59cb4692a7bcfaac539aed6f6889 assets/crystalline_sky/models/block/sky_light_09.json
9c6ba4d90f2c4f2a9beb910c1b32023e49445749 assets/crystalline_sky/models/block/sky_light_10.json
e91808daecfc454b784f5fb27003c58bb0caedce assets/crystalline_sky/models/block/sky_light_11.json
e2c7bebd9eca446bb06fff866ec4d4996917e7e4 assets/crystalline_sky/models/block/sky_light_12.json
0b4015acca6117ea633ae3cdaf3fe40fcab6b628 assets/crystalline_sky/models/block/sky_light_13.json
0ac5351c3a01e0f9e76517452918e12770b3b54b assets/crystalline_sky/models/block/sky_light_14.json
a87d8988452529a1f5af5662ad636223fdd98fec assets/crystalline_sky/models/block/sky_light_15.json
14508173fcca14cb42755d47374c94d3eace42ce assets/crystalline_sky/models/block/weeping_sky.json
008a0d0a76a34d8f375fa355452a5d0f93f9af3b assets/crystalline_sky/models/item/sky.json
2fedd8aff557d4e559ffa8166b4e5ac78136046d assets/crystalline_sky/models/item/sky_light.json
9f0d9fe5dfb05bbe18177db5c40e600c5b256858 assets/crystalline_sky/models/item/sky_light_00.json
0e8a96cfb88f4c58679709cc9397b5700878a9c4 assets/crystalline_sky/models/item/sky_light_01.json
ed5894de7afa66f73c72093f2dd7d046cf647070 assets/crystalline_sky/models/item/sky_light_02.json
b29c14f77a08da7a6994cff4c6801d6f04b12ec0 assets/crystalline_sky/models/item/sky_light_03.json
51fa40ff02afcec303e7a18478cbae5375dfb140 assets/crystalline_sky/models/item/sky_light_04.json
42f8b696ba0f511edce656b9055764ed13013221 assets/crystalline_sky/models/item/sky_light_05.json
910c51120a0931851db6b75b337bc21241165c2f assets/crystalline_sky/models/item/sky_light_06.json
dff33a68a694de0f3ef177886c002204ffe49a8c assets/crystalline_sky/models/item/sky_light_07.json
89582890605d371d936384a83950af603d2fe495 assets/crystalline_sky/models/item/sky_light_08.json
7115b88da2cc0bfdc68646d034de8d14f181eb01 assets/crystalline_sky/models/item/sky_light_09.json
9c6c61b7f805a614d2d15d8dde390ed068913182 assets/crystalline_sky/models/item/sky_light_10.json
04f1e4eba184b8e7b1669fc61006e3d00e09d164 assets/crystalline_sky/models/item/sky_light_11.json
b8795df31017499b35a5b37a4dfbe555a8242cb0 assets/crystalline_sky/models/item/sky_light_12.json
25f0831f8c64db0e5c08fc968445e329f1e3a91c assets/crystalline_sky/models/item/sky_light_13.json
58349dc5dedb8016fb0bc958fcd4a9ccde13a1cd assets/crystalline_sky/models/item/sky_light_14.json
d500e56057c0c2f3c948894694e2826f1726fd9e assets/crystalline_sky/models/item/sky_light_15.json
15c0a47d504ddd41bbecd4ac58c0c8ccd0f37943 assets/crystalline_sky/models/item/weeping_sky.json
@@ -0,0 +1,3 @@
// 1.21.8 -999999999-01-01T00:00:00 Crystalline Sky/Block Loot Tables
6a9b7a08424cbd3d699dfd3252d432517254aa45 data/crystalline_sky/loot_table/blocks/sky.json
337de0acfc1b9b86adde0705e342ed1d4b5c9c4e data/crystalline_sky/loot_table/blocks/weeping_sky.json
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "crystalline_sky:block/sky"
}
}
}
@@ -0,0 +1,52 @@
{
"variants": {
"level=0": {
"model": "crystalline_sky:block/sky_light_00"
},
"level=1": {
"model": "crystalline_sky:block/sky_light_01"
},
"level=10": {
"model": "crystalline_sky:block/sky_light_10"
},
"level=11": {
"model": "crystalline_sky:block/sky_light_11"
},
"level=12": {
"model": "crystalline_sky:block/sky_light_12"
},
"level=13": {
"model": "crystalline_sky:block/sky_light_13"
},
"level=14": {
"model": "crystalline_sky:block/sky_light_14"
},
"level=15": {
"model": "crystalline_sky:block/sky_light_15"
},
"level=2": {
"model": "crystalline_sky:block/sky_light_02"
},
"level=3": {
"model": "crystalline_sky:block/sky_light_03"
},
"level=4": {
"model": "crystalline_sky:block/sky_light_04"
},
"level=5": {
"model": "crystalline_sky:block/sky_light_05"
},
"level=6": {
"model": "crystalline_sky:block/sky_light_06"
},
"level=7": {
"model": "crystalline_sky:block/sky_light_07"
},
"level=8": {
"model": "crystalline_sky:block/sky_light_08"
},
"level=9": {
"model": "crystalline_sky:block/sky_light_09"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "crystalline_sky:block/weeping_sky"
}
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky"
}
}
@@ -0,0 +1,125 @@
{
"model": {
"type": "minecraft:select",
"block_state_property": "level",
"cases": [
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_00"
},
"when": "0"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_01"
},
"when": "1"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_02"
},
"when": "2"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_03"
},
"when": "3"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_04"
},
"when": "4"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_05"
},
"when": "5"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_06"
},
"when": "6"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_07"
},
"when": "7"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_08"
},
"when": "8"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_09"
},
"when": "9"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_10"
},
"when": "10"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_11"
},
"when": "11"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_12"
},
"when": "12"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_13"
},
"when": "13"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_14"
},
"when": "14"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_15"
},
"when": "15"
}
],
"fallback": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light"
},
"property": "minecraft:block_state"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/weeping_sky"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "crystalline_sky:block/sky"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_00"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_01"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_02"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_03"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_04"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_05"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_06"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_07"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_08"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_09"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_10"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_11"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_12"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_13"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_14"
}
}
@@ -0,0 +1,5 @@
{
"textures": {
"particle": "crystalline_sky:item/sky_light_15"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "crystalline_sky:block/weeping_sky"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:block/sky"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_00"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_01"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_02"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_03"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_04"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_05"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_06"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_07"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_08"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_09"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_10"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_11"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_12"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_13"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_14"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:item/sky_light_15"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "crystalline_sky:block/weeping_sky"
}
}
@@ -0,0 +1,32 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"predicates": {
"minecraft:enchantments": [
{
"enchantments": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
}
],
"entries": [
{
"type": "minecraft:item",
"name": "crystalline_sky:sky"
}
],
"rolls": 1.0
}
]
}
@@ -0,0 +1,32 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"predicates": {
"minecraft:enchantments": [
{
"enchantments": "minecraft:silk_touch",
"levels": {
"min": 1
}
}
]
}
}
}
],
"entries": [
{
"type": "minecraft:item",
"name": "crystalline_sky:weeping_sky"
}
],
"rolls": 1.0
}
]
}
@@ -9,5 +9,6 @@ public class CrystallineSkyClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
BlockRenderLayerMap.putBlock(CrystallineBlocks.SKY, BlockRenderLayerExt.CRYSTALLINE_SKY_SKY);
BlockRenderLayerMap.putBlock(CrystallineBlocks.WEEPING_SKY, BlockRenderLayerExt.CRYSTALLINE_SKY_SKY);
}
}
@@ -1,5 +1,6 @@
package io.github.slimeistdev.crystalline_sky.datagen;
import io.github.slimeistdev.crystalline_sky.datagen.providers.CrystallineSkyLootProvider;
import io.github.slimeistdev.crystalline_sky.datagen.providers.CrystallineSkyModelProvider;
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
@@ -10,5 +11,6 @@ public class CrystallineSkyDataGenerator implements DataGeneratorEntrypoint {
FabricDataGenerator.Pack pack = gen.createPack();
pack.addProvider(CrystallineSkyModelProvider::new);
pack.addProvider(CrystallineSkyLootProvider::new);
}
}
@@ -0,0 +1,20 @@
package io.github.slimeistdev.crystalline_sky.datagen.providers;
import io.github.slimeistdev.crystalline_sky.registry.CrystallineBlocks;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider;
import net.minecraft.registry.RegistryWrapper;
import java.util.concurrent.CompletableFuture;
public class CrystallineSkyLootProvider extends FabricBlockLootTableProvider {
public CrystallineSkyLootProvider(FabricDataOutput dataOutput, CompletableFuture<RegistryWrapper.WrapperLookup> registryLookup) {
super(dataOutput, registryLookup);
}
@Override
public void generate() {
addDropWithSilkTouch(CrystallineBlocks.SKY);
addDropWithSilkTouch(CrystallineBlocks.WEEPING_SKY);
}
}
@@ -4,10 +4,12 @@ import io.github.slimeistdev.crystalline_sky.registry.CrystallineBlocks;
import io.github.slimeistdev.crystalline_sky.registry.CrystallineItems;
import net.fabricmc.fabric.api.client.datagen.v1.provider.FabricModelProvider;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.minecraft.block.Block;
import net.minecraft.block.LightBlock;
import net.minecraft.client.data.*;
import net.minecraft.client.render.item.model.ItemModel;
import net.minecraft.client.render.model.json.WeightedVariant;
import net.minecraft.item.Item;
import net.minecraft.state.property.Properties;
import net.minecraft.util.Identifier;
@@ -17,6 +19,7 @@ import java.util.Map;
import static net.minecraft.client.data.BlockStateModelGenerator.createWeightedVariant;
@SuppressWarnings("SameParameterValue")
public class CrystallineSkyModelProvider extends FabricModelProvider {
public CrystallineSkyModelProvider(FabricDataOutput output) {
super(output);
@@ -24,33 +27,37 @@ public class CrystallineSkyModelProvider extends FabricModelProvider {
@Override
public void generateBlockStateModels(BlockStateModelGenerator gen) {
gen.registerBuiltinWithParticle(CrystallineBlocks.SKY, CrystallineItems.SKY);
gen.registerItemModel(CrystallineItems.SKY);
registerSkyLightBlock(gen);
registerSkyBlock(gen, CrystallineBlocks.SKY);
registerSkyBlock(gen, CrystallineBlocks.WEEPING_SKY);
registerSkyLightBlock(gen, CrystallineBlocks.SKY_LIGHT, CrystallineItems.SKY_LIGHT);
}
private void registerSkyLightBlock(BlockStateModelGenerator gen) {
ItemModel.Unbaked fallback = ItemModels.basic(gen.uploadItemModel(CrystallineItems.SKY_LIGHT));
private void registerSkyBlock(BlockStateModelGenerator gen, Block block) {
gen.registerSimpleCubeAll(block);
gen.registerItemModel(block);
}
private void registerSkyLightBlock(BlockStateModelGenerator gen, Block block, Item item) {
ItemModel.Unbaked fallback = ItemModels.basic(gen.uploadItemModel(item));
Map<Integer, ItemModel.Unbaked> itemModels = new HashMap<>(16);
BlockStateVariantMap.SingleProperty<WeightedVariant, Integer> levelProp = BlockStateVariantMap.models(Properties.LEVEL_15);
for (int level = 0; level <= 15; level++) {
String suffix = String.format(Locale.ROOT, "_%02d", level);
Identifier texture = TextureMap.getSubId(CrystallineItems.SKY_LIGHT, suffix);
Identifier texture = TextureMap.getSubId(item, suffix);
levelProp.register(level, createWeightedVariant(Models.PARTICLE.upload(CrystallineBlocks.SKY_LIGHT, suffix, TextureMap.particle(texture), gen.modelCollector)));
levelProp.register(level, createWeightedVariant(Models.PARTICLE.upload(block, suffix, TextureMap.particle(texture), gen.modelCollector)));
ItemModel.Unbaked levelItemModel = ItemModels.basic(Models.GENERATED.upload(
ModelIds.getItemSubModelId(CrystallineItems.SKY_LIGHT, suffix),
ModelIds.getItemSubModelId(item, suffix),
TextureMap.layer0(texture),
gen.modelCollector
));
itemModels.put(level, levelItemModel);
}
gen.itemModelOutput.accept(CrystallineItems.SKY_LIGHT, ItemModels.select(LightBlock.LEVEL_15, fallback, itemModels));
gen.blockStateCollector.accept(VariantsBlockModelDefinitionCreator.of(CrystallineBlocks.SKY_LIGHT).with(levelProp));
gen.itemModelOutput.accept(item, ItemModels.select(LightBlock.LEVEL_15, fallback, itemModels));
gen.blockStateCollector.accept(VariantsBlockModelDefinitionCreator.of(block).with(levelProp));
}
@Override
@@ -25,5 +25,7 @@ public class ClientWorldMixin {
private static void modifyBlockMarkerItems(CallbackInfo ci) {
BLOCK_MARKER_ITEMS = new HashSet<>(BLOCK_MARKER_ITEMS);
BLOCK_MARKER_ITEMS.add(CrystallineItems.SKY_LIGHT);
BLOCK_MARKER_ITEMS.add(CrystallineItems.SKY);
BLOCK_MARKER_ITEMS.add(CrystallineItems.WEEPING_SKY);
}
}
@@ -18,6 +18,7 @@ import net.minecraft.client.render.*;
import net.minecraft.client.util.Handle;
import net.minecraft.client.util.ObjectAllocator;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.profiler.Profiler;
import org.jetbrains.annotations.Nullable;
import org.joml.*;
@@ -158,7 +159,13 @@ public abstract class WorldRendererMixin {
&& client.player != null
&& (client.player.getMainHandStack().isOf(CrystallineItems.SKY)
|| client.player.getOffHandStack().isOf(CrystallineItems.SKY))) {
colorModulator = new Vector4f(1.0f, 0.5f, 0.5f, 1.0f).mul(colorModulator);
float f = ticks + client.getRenderTickCounter().getTickProgress(true);
float alpha = (MathHelper.sin(f / 10.0f) + 1.0f) / 2.0f;
// remap alpha from [0, 1] to [0, 0.75]
float maxAlpha = 1.0f - 0.25f;
alpha = alpha * maxAlpha;
colorModulator = new Vector4f(1.0f, 1.0f, 1.0f, alpha).mul(colorModulator);
}
return original.call(modelView, colorModulator, modelOffset, textureMatrix, lineWidth);
@@ -24,6 +24,8 @@ public class CrystallineBlocks {
.blockVision(Blocks::never)
.emissiveLighting(Blocks::always));
public static final Block WEEPING_SKY = register("weeping_sky", TransparentBlock::new, Settings.copy(SKY));
public static final Block SKY_LIGHT = register(
"sky_light",
LightBlock::new,
@@ -46,10 +48,14 @@ public class CrystallineBlocks {
return getSkyLightLevel(state) > 0;
}
public static boolean isWeepingSky(BlockState state) {
return state.isOf(WEEPING_SKY);
}
public static int getSkyLightLevel(BlockState state) {
if (state.isOf(SKY_LIGHT)) {
return state.get(LightBlock.LEVEL_15);
} else if (state.isOf(SKY)) {
} else if (state.isOf(SKY) || state.isOf(WEEPING_SKY)) {
return 15;
}
@@ -13,6 +13,11 @@ public class CrystallineItems {
settings -> settings.rarity(Rarity.EPIC)
);
public static final Item WEEPING_SKY = Items.register(
CrystallineBlocks.WEEPING_SKY,
settings -> settings.rarity(Rarity.EPIC)
);
public static final Item SKY_LIGHT = Items.register(
CrystallineBlocks.SKY_LIGHT,
settings -> settings.rarity(Rarity.EPIC)
@@ -13,6 +13,7 @@ public class CrystallineRenderPipelines {
.withFragmentShader(CrystallineSky.id("core/terrain_sky"))
.withVertexShader(CrystallineSky.id("core/terrain_sky"))
.withLocation(CrystallineSky.id("pipeline/sky"))
.withShaderDefine("BAYER_BIAS", 0.03125f)
.build()
);
}
@@ -1,2 +1,5 @@
{
"block.crystalline_sky.sky": "Sky",
"block.crystalline_sky.weeping_sky": "Weeping Sky",
"block.crystalline_sky.sky_light": "Sky Light"
}
@@ -1,5 +1,6 @@
#version 150
#moj_import <minecraft:globals.glsl>
#moj_import <minecraft:fog.glsl>
#moj_import <minecraft:dynamictransforms.glsl>
@@ -11,12 +12,30 @@ in vec4 texProj0;
out vec4 fragColor;
#ifndef BAYER_BIAS
#define BAYER_BIAS 0.0
#endif
#ifndef SCALE
#define SCALE 1
#endif
const mat4x4 bayerMatrix4x4 = mat4x4(
0.0, 8.0, 2.0, 10.0,
12.0, 4.0, 14.0, 6.0,
3.0, 11.0, 1.0, 9.0,
15.0, 7.0, 13.0, 5.0
) / 16.0;
void main() {
vec4 color = textureProj(Sampler0, texProj0) * ColorModulator;
#ifdef ALPHA_CUTOUT
if (color.a < ALPHA_CUTOUT) {
int x = int(gl_FragCoord.x / SCALE) % 4;
int y = int(gl_FragCoord.y / SCALE) % 4;
float bayer = bayerMatrix4x4[y][x];
if (ColorModulator.a <= bayer + BAYER_BIAS) {
discard;
}
#endif
vec4 color = textureProj(Sampler0, texProj0) * vec4(ColorModulator.rgb, 1.0);
fragColor = apply_fog(color, sphericalVertexDistance, cylindricalVertexDistance, FogEnvironmentalStart, FogEnvironmentalEnd, FogRenderDistanceStart, FogRenderDistanceEnd, FogColor);
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB