diff --git a/.gitignore b/.gitignore index 78fcb96..a6960da 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ devtools/.sandbox-home/.pki/nssdb/pkcs11.txt devtools/.sandbox-home/.local/share/recently-used.xbel devtools/.sandbox-home/.local/share/PrismLauncher/metacache 1.20.1-FearFactoryTest/minecraft/libEffekseerNativeForJava.so +/1.20.1-FearFactoryTest/minecraft/shaderpacks/Spooklementary_1.1 diff --git a/1.20.1-FearFactoryTest/instance.cfg b/1.20.1-FearFactoryTest/instance.cfg index f20fe90..3212f9e 100644 --- a/1.20.1-FearFactoryTest/instance.cfg +++ b/1.20.1-FearFactoryTest/instance.cfg @@ -1,20 +1,32 @@ [General] +AutoCloseConsole=false AutomaticJava=true +CloseAfterLaunch=false ConfigVersion=1.2 +CustomGLFWPath= +CustomOpenALPath= +EnableFeralGamemode=false +EnableMangoHud=false +Env=@Variant(\0\0\0\b\0\0\0\0) ExportAuthor= ExportName= ExportOptionalFiles=true ExportSummary= ExportVersion=1.0.0 IgnoreJavaCompatibility=false +InstanceAccountId= InstanceType=OneSix JavaArchitecture=64 -JavaPath=C:/Users/Keybl/Documents/PrismLauncher-Windows-MinGW-w64-Portable-9.4/java/java-runtime-gamma/bin/javaw.exe +JavaPath=/nix/store/nsmg802n6amn3fwaimx4ps7qf4q8jbh7-openjdk-17.0.14+7/bin/java JavaRealArchitecture=amd64 -JavaSignature=2c94189bf2f770bbfd88f8047fdcb69e492a67b6 -JavaVendor=Microsoft -JavaVersion=17.0.8 +JavaSignature=96e27d752af8564c76a043616ad56dc190bbbabd +JavaVendor=N/A +JavaVersion=17.0.14 JoinServerOnLaunch=false +JoinServerOnLaunchAddress= +JoinWorldOnLaunch= +JvmArgs= +LaunchMaximized=false LogPrePostOutput=true ManagedPack=false ManagedPackID= @@ -24,6 +36,9 @@ ManagedPackVersionID= ManagedPackVersionName= MaxMemAlloc=10000 MinMemAlloc=512 +MinecraftWinHeight=480 +MinecraftWinWidth=854 +OnlineFixes=false OverrideCommands=false OverrideConsole=false OverrideEnv=false @@ -37,17 +52,29 @@ OverrideNativeWorkarounds=false OverridePerformance=false OverrideWindow=false PermGen=128 +PostExitCommand= +PreLaunchCommand= Profiler= +QuitAfterGameStop=false +RecordGameTime=true +ShowConsole=false +ShowConsoleOnError=true +ShowGameTime=true UseAccountForInstance=false +UseDiscreteGpu=false +UseNativeGLFW=false +UseNativeOpenAL=false +UseZink=false +WrapperCommand= iconKey=default -lastLaunchTime=1747962123987 -lastTimePlayed=867 +lastLaunchTime=1748042937668 +lastTimePlayed=189 linkedInstances=[] name=1.20.1 FearFactory notes= -totalTimePlayed=372747 +totalTimePlayed=357386 [UI] -mods_Page\Columns=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x2\x1\0\0\0\0\0\0\0\0\0\0\0\v\x80\a\0\0\0\x4\0\0\0\t\0\0\0\x64\0\0\0\b\0\0\0\x64\0\0\0\a\0\0\0\x64\0\0\0\n\0\0\0\x64\0\0\b\xa4\0\0\0\v\x1\x1\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\v\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x6L\0\0\0\x1\0\0\0\x1\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0) +mods_Page\Columns=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x2\x1\0\0\0\0\0\0\0\0\0\0\0\v\x80\a\0\0\0\x4\0\0\0\a\0\0\0\x64\0\0\0\n\0\0\0\x64\0\0\0\b\0\0\0\x64\0\0\0\t\0\0\0\x64\0\0\x4[\0\0\0\v\x1\x1\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\v\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x2\x3\0\0\0\x1\0\0\0\x1\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0) resourcepacks_Page\Columns=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3\xff\0\0\0\x6\x1\x1\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x6\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x2\v\0\0\0\x1\0\0\0\x1\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0) shaderpacks_Page\Columns=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3\xf5\0\0\0\x4\x1\x1\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x2\xc9\0\0\0\x1\0\0\0\x1\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0) diff --git a/1.20.1-FearFactoryTest/minecraft/config/allthetrims.json b/1.20.1-FearFactoryTest/minecraft/config/allthetrims.json index 04d26d3..23ad039 100644 --- a/1.20.1-FearFactoryTest/minecraft/config/allthetrims.json +++ b/1.20.1-FearFactoryTest/minecraft/config/allthetrims.json @@ -1,4 +1,4 @@ { "debug": false, - "trim_registry_mismatch_message": "b[All The Trims] cTrim Registry Mismatch. rPlease ensure that the client and server have the same mods with the same versions." + "trim_registry_mismatch_message": "§b[All The Trims] §cTrim Registry Mismatch. §rPlease ensure that the client and server have the same mods with the same versions." } \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/config/darkness.properties b/1.20.1-FearFactoryTest/minecraft/config/darkness.properties index b495cac..dabf848 100644 --- a/1.20.1-FearFactoryTest/minecraft/config/darkness.properties +++ b/1.20.1-FearFactoryTest/minecraft/config/darkness.properties @@ -1,5 +1,5 @@ #Darkness properties file -#Thu May 22 20:05:42 CDT 2025 +#Fri May 23 18:37:26 CDT 2025 dark_nether_fog=0.5 only_affect_block_light=false dark_end_fog=0.0 diff --git a/1.20.1-FearFactoryTest/minecraft/config/dsurround/soundconfig.json b/1.20.1-FearFactoryTest/minecraft/config/dsurround/soundconfig.json index f286470..eabddea 100644 --- a/1.20.1-FearFactoryTest/minecraft/config/dsurround/soundconfig.json +++ b/1.20.1-FearFactoryTest/minecraft/config/dsurround/soundconfig.json @@ -3,6 +3,10 @@ "startup": true, "soundEventId": "darwiniv:cavesoundsbeta" }, + { + "startup": true, + "soundEventId": "minecraft:ambient.cave" + }, { "block": true, "soundEventId": "minecraft:block.water.ambient" @@ -11,27 +15,11 @@ "cull": true, "soundEventId": "minecraft:entity.chicken.ambient" }, - { - "startup": true, - "soundEventId": "minecraft:ambient.cave" - }, - { - "startup": true, - "soundEventId": "the_deep_void:void_cave_ambient_2" - }, { "cull": true, "soundEventId": "minecraft:entity.ender_dragon.death", "volumeScale": 10 }, - { - "startup": true, - "soundEventId": "the_deep_void:void_cave_ambient" - }, - { - "startup": true, - "soundEventId": "the_deep_void:void_cave_ambient_3" - }, { "cull": true, "soundEventId": "minecraft:entity.pig.ambient" @@ -49,5 +37,17 @@ "cull": true, "soundEventId": "minecraft:entity.wither.spawn", "volumeScale": 10 + }, + { + "startup": true, + "soundEventId": "the_deep_void:void_cave_ambient" + }, + { + "startup": true, + "soundEventId": "the_deep_void:void_cave_ambient_2" + }, + { + "startup": true, + "soundEventId": "the_deep_void:void_cave_ambient_3" } ] \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/config/embeddium-fingerprint.json b/1.20.1-FearFactoryTest/minecraft/config/embeddium-fingerprint.json index b1742c2..25838b5 100644 --- a/1.20.1-FearFactoryTest/minecraft/config/embeddium-fingerprint.json +++ b/1.20.1-FearFactoryTest/minecraft/config/embeddium-fingerprint.json @@ -1 +1 @@ -{"v":1,"s":"56611012faf982866dd74c206f5f6f508180c27af5e78270c02b4c53bb832c0bb960dd7659da92993205245134d2166690da716b08c5dc8d02c23ff08fd1e22d","u":"32ef8a6f821aff9459e277605f4bbff675e246427b195d1759b07d124c487193211916e5625cde497d3abb4ba1855a2e19506b42fac8ad10641a1ee7f8a7f7e5","p":"40eb1a8a07c80c6cfc490ddaca6d03de1f5466cee6fe772f0f964f34c084172c83a6283c26ed7e882905e008c6ce18e163af4fa3c7f8a8ee800cc90b3287e59b","t":1747542042} \ No newline at end of file +{"v":1,"s":"ad9cded51ce8d06bbe05fa47233e1b61365cd6dcb6a17919dc129de1b9d5f15119e3ea92a6f95c81450a58dc73220ac1820a99604e2fedcef038a662d5d76870","u":"2c8d9f6d02fc60fa907ad7a42865dedcfc7fc86436a6fc1c6e49097a9813a312b87d4aa225f7f0f2bae0865c1b5e4436f431b22fd95c700ff7d347738c009ac0","p":"0544a70c267000580a5187b0b3f8d58d3e6fec4f21f7e8c9dd05750b173b19f68a2f89b04e9da22f8104d960e1cc5e22def1071b5990d1d83780a5cb9d39183b","t":1748042975} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/config/embeddium-options.json b/1.20.1-FearFactoryTest/minecraft/config/embeddium-options.json index 5e9f492..5d80ab6 100644 --- a/1.20.1-FearFactoryTest/minecraft/config/embeddium-options.json +++ b/1.20.1-FearFactoryTest/minecraft/config/embeddium-options.json @@ -25,6 +25,6 @@ "notifications": { "force_disable_donation_prompts": false, "has_cleared_donation_button": false, - "has_seen_donation_prompt": true + "has_seen_donation_prompt": false } } \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/config/fabric/indigo-renderer.properties b/1.20.1-FearFactoryTest/minecraft/config/fabric/indigo-renderer.properties index fe52494..496cfbf 100644 --- a/1.20.1-FearFactoryTest/minecraft/config/fabric/indigo-renderer.properties +++ b/1.20.1-FearFactoryTest/minecraft/config/fabric/indigo-renderer.properties @@ -1,5 +1,5 @@ #Indigo properties file -#Thu May 22 20:02:32 CDT 2025 +#Fri May 23 18:29:36 CDT 2025 fix-mean-light-calculation=auto debug-compare-lighting=auto fix-exterior-vertex-lighting=auto diff --git a/1.20.1-FearFactoryTest/minecraft/config/flywheel-client.toml b/1.20.1-FearFactoryTest/minecraft/config/flywheel-client.toml index 6d59965..8b9521a 100644 --- a/1.20.1-FearFactoryTest/minecraft/config/flywheel-client.toml +++ b/1.20.1-FearFactoryTest/minecraft/config/flywheel-client.toml @@ -3,7 +3,7 @@ backend = "DEFAULT" #Enable or disable instance update limiting with distance. limitUpdates = true #The number of worker threads to use. Set to -1 to let Flywheel decide. Set to 0 to disable parallelism. Requires a game restart to take effect. -#Range: -1 ~ 16 +#Range: -1 ~ 12 workerThreads = -1 #Config options for Flywheel's built-in backends. diff --git a/1.20.1-FearFactoryTest/minecraft/config/jei/ingredient-list-mod-sort-order.ini b/1.20.1-FearFactoryTest/minecraft/config/jei/ingredient-list-mod-sort-order.ini index d2e22b7..1f3d1bb 100644 --- a/1.20.1-FearFactoryTest/minecraft/config/jei/ingredient-list-mod-sort-order.ini +++ b/1.20.1-FearFactoryTest/minecraft/config/jei/ingredient-list-mod-sort-order.ini @@ -1,5 +1,4 @@ Minecraft -Abyssal Sovereigns Alex's Caves Apotheosis Aquamirae diff --git a/1.20.1-FearFactoryTest/minecraft/config/oculus.properties b/1.20.1-FearFactoryTest/minecraft/config/oculus.properties index 113c53a..8c36dec 100644 --- a/1.20.1-FearFactoryTest/minecraft/config/oculus.properties +++ b/1.20.1-FearFactoryTest/minecraft/config/oculus.properties @@ -1,5 +1,5 @@ #This file stores configuration options for Iris, such as the currently active shaderpack -#Thu May 22 20:02:31 CDT 2025 +#Fri May 23 19:26:20 CDT 2025 colorSpace=SRGB disableUpdateMessage=false enableDebugOptions=false diff --git a/1.20.1-FearFactoryTest/minecraft/icon.png b/1.20.1-FearFactoryTest/minecraft/icon.png index 1c4c623..a447e98 100644 --- a/1.20.1-FearFactoryTest/minecraft/icon.png +++ b/1.20.1-FearFactoryTest/minecraft/icon.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:247dfe5bf4e6c33acadbc90e91a28d74ea25f0c1471264de2ddc0ca1a6ee7bbd +oid sha256:aba93480387ce59f4f8ec4157ec0c07b3c8243088df535bc9cdd61acd8e869a2 size 2441 diff --git a/1.20.1-FearFactoryTest/minecraft/options.txt b/1.20.1-FearFactoryTest/minecraft/options.txt index 3b4b3f9..4c2298d 100644 --- a/1.20.1-FearFactoryTest/minecraft/options.txt +++ b/1.20.1-FearFactoryTest/minecraft/options.txt @@ -187,11 +187,11 @@ key_keybind.sophisticatedbackpacks.open_backpack:key.mouse.4 key_keybind.sophisticatedbackpacks.inventory_interaction:key.keyboard.c key_keybind.sophisticatedbackpacks.tool_swap:key.keyboard.unknown key_keybind.sophisticatedbackpacks.sort:key.mouse.middle -key_keybind.sophisticatedbackpacks.toggle_upgrade_3:key.keyboard.unknown -key_keybind.sophisticatedbackpacks.toggle_upgrade_4:key.keyboard.unknown key_keybind.sophisticatedbackpacks.toggle_upgrade_5:key.keyboard.unknown key_keybind.sophisticatedbackpacks.toggle_upgrade_1:key.keyboard.z:ALT key_keybind.sophisticatedbackpacks.toggle_upgrade_2:key.keyboard.x:ALT +key_keybind.sophisticatedbackpacks.toggle_upgrade_3:key.keyboard.unknown +key_keybind.sophisticatedbackpacks.toggle_upgrade_4:key.keyboard.unknown key_key.cataclysm.ability:key.keyboard.x key_key.cataclysm.helmet_ability:key.keyboard.c key_key.cataclysm.chestplate_ability:key.keyboard.y @@ -205,37 +205,37 @@ key_key.ftbultimine:key.mouse.5 key_key.ftbteams.open_gui:key.keyboard.unknown key_chunkloaders.keys.open_screen:key.keyboard.c key_key.biomancy.item_default:key.keyboard.v -key_key.jei.maxTransferRecipeBookmark:key.mouse.left:CONTROL +key_key.jei.showUses:key.keyboard.u +key_key.jei.nextPage:key.keyboard.unknown +key_key.jei.bookmark:key.keyboard.a +key_key.jei.cheatItemStack:key.mouse.left:SHIFT key_key.jei.recipeBack:key.keyboard.backspace +key_key.jei.toggleWildcardHideIngredient:key.mouse.right:CONTROL +key_key.jei.previousSearch:key.keyboard.up +key_key.jei.toggleHideIngredient:key.mouse.left:CONTROL +key_key.jei.previousPage:key.keyboard.unknown +key_key.jei.focusSearch:key.keyboard.f:CONTROL +key_key.jei.copy.recipe.id:key.keyboard.unknown +key_key.jei.cheatItemStack2:key.mouse.middle +key_key.jei.toggleCheatModeConfigButton:key.mouse.left:CONTROL +key_key.jei.closeRecipeGui:key.keyboard.escape +key_key.jei.showRecipe:key.keyboard.r +key_key.jei.nextRecipePage:key.keyboard.page.down +key_key.jei.maxTransferRecipeBookmark:key.mouse.left:CONTROL key_key.jei.previousCategory:key.keyboard.page.up:SHIFT -key_key.jei.showRecipe2:key.mouse.left +key_key.jei.toggleOverlay:key.keyboard.o:CONTROL +key_key.jei.clearSearchBar:key.mouse.right +key_key.jei.transferRecipeBookmark:key.mouse.left:SHIFT key_key.jei.cheatOneItem2:key.mouse.right +key_key.jei.toggleBookmarkOverlay:key.keyboard.unknown key_key.jei.nextSearch:key.keyboard.down +key_key.jei.showUses2:key.mouse.right +key_key.jei.toggleEditMode:key.keyboard.unknown key_key.jei.cheatOneItem:key.mouse.left key_key.jei.previousRecipePage:key.keyboard.page.up -key_key.jei.showUses:key.keyboard.u -key_key.jei.toggleHideIngredient:key.mouse.left:CONTROL -key_key.jei.copy.recipe.id:key.keyboard.unknown -key_key.jei.toggleOverlay:key.keyboard.o:CONTROL -key_key.jei.previousSearch:key.keyboard.up -key_key.jei.cheatItemStack:key.mouse.left:SHIFT key_key.jei.toggleCheatMode:key.keyboard.unknown -key_key.jei.focusSearch:key.keyboard.f:CONTROL -key_key.jei.transferRecipeBookmark:key.mouse.left:SHIFT -key_key.jei.toggleCheatModeConfigButton:key.mouse.left:CONTROL -key_key.jei.nextPage:key.keyboard.unknown -key_key.jei.showRecipe:key.keyboard.r -key_key.jei.showUses2:key.mouse.right -key_key.jei.toggleWildcardHideIngredient:key.mouse.right:CONTROL +key_key.jei.showRecipe2:key.mouse.left key_key.jei.nextCategory:key.keyboard.page.down:SHIFT -key_key.jei.clearSearchBar:key.mouse.right -key_key.jei.nextRecipePage:key.keyboard.page.down -key_key.jei.toggleEditMode:key.keyboard.unknown -key_key.jei.previousPage:key.keyboard.unknown -key_key.jei.cheatItemStack2:key.mouse.middle -key_key.jei.closeRecipeGui:key.keyboard.escape -key_key.jei.toggleBookmarkOverlay:key.keyboard.unknown -key_key.jei.bookmark:key.keyboard.a key_key.ars_nouveau.open_book:key.keyboard.c key_key.ars_nouveau.selection_hud:key.keyboard.v key_key.ars_nouveau.next_slot:key.keyboard.x diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test.txt b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test.txt index d9a45a3..1c01f6f 100644 --- a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test.txt +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test.txt @@ -1,4 +1,4 @@ -#Thu May 22 20:02:31 CDT 2025 +#Fri May 23 19:26:20 CDT 2025 AURORA_CONDITION=4 CLOUD_STYLE_DEFINE=3 WATER_STYLE_DEFINE=3 @@ -46,7 +46,6 @@ WB_DOF_FOCUS=1 WB_DB_NETHER_I=18.0 SHADOW_QUALITY=0 MOON_PHASE_PARTIAL=0.55 -GLOWING_ORE_MASTER=0 WB_CHROMATIC=true WATER_BUMPINESS=1.00 BLOOM_STRENGTH=0.045 diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/dimension.properties b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/dimension.properties index 3e1a38f..1abefff 100644 --- a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/dimension.properties +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/dimension.properties @@ -9,6 +9,8 @@ dimension.world1=minecraft:the_end dimension.world2=theabyss:frost_world +dimension.worldflesh=ihfr:the_carnage + dimension.stop= * diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/shaders.properties b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/shaders.properties index f6fbc89..4081abe 100644 --- a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/shaders.properties +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/shaders.properties @@ -97,27 +97,33 @@ program.world-1/composite2.enabled=MOTION_BLURRING program.world1/composite2.enabled=MOTION_BLURRING program.world2/composite2.enabled=MOTION_BLURRING + program.worldflesh/composite2.enabled=MOTION_BLURRING program.world0/composite4.enabled=BLOOM program.world-1/composite4.enabled=BLOOM program.world1/composite4.enabled=BLOOM program.world2/composite4.enabled=BLOOM + program.worldflesh/composite4.enabled=BLOOM #if SHADOW_QUALITY == -1 program.world0/shadow.enabled=false program.world-1/shadow.enabled=false program.world1/shadow.enabled=false program.world2/shadow.enabled=false + program.worldflesh/shadow.enabled=false #endif #if FXAA_DEFINE == -1 program.world0/composite7.enabled=FXAA program.world-1/composite7.enabled=FXAA program.world1/composite7.enabled=FXAA program.world2/composite7.enabled=FXAA + program.worldflesh/composite7.enabled=FXAA #endif #if COLORED_LIGHTING == 0 program.world0/shadowcomp.enabled=false program.world-1/shadowcomp.enabled=false program.world1/shadowcomp.enabled=false program.world2/shadowcomp.enabled=false + program.worldflesh/shadowcomp.enabled=false + worldflesh #endif # Miscellaneous diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylang/en_US.lang b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylang/en_US.lang new file mode 100644 index 0000000..f56874e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylang/en_US.lang @@ -0,0 +1,891 @@ +#shaders/lang/en_us.lang + +#Profiles +profile.POTATO=§4Potato +profile.VERYLOW=§6Very Low +profile.LOW=§eLow +profile.MEDIUM=§aMedium +profile.HIGH=§bHigh (Default) +profile.VERYHIGH=§9Very High +profile.ULTRA=§dUltra +profile.comment=Shader profiles change performance settings with the most optimised visual fidelity to performance ratio. §e[*]§r It's recommended to use one of these profiles for your settings unless you know what you are doing. §e[*]§r All affected settings can all be found in the "Performance Settings" menu. + +#Information +screen.INFORMATION=Information +screen.INFORMATION.comment=This section contains buttons that only exist to provide information. + +option.info0=§bHover your mouse on a button +value.info0.0= +option.info0.comment=This section contains buttons that only exist to provide information. + +option.info1=How to get more performance +value.info1.0= +option.info1.comment=Performance is a complex topic in Minecraft because it gets affected by so many things, but you can try these:. Reduce your render distance, ideally it should be between 6 and 16 for almost every device. Reduce the "Profile" shader setting, these have been carefully tested for the best visual/performance ratio. More information will be added later. + +option.info2=What are the best settings +value.info2.0= +option.info2.comment=Best settings are subjective, but using the default settings will be the near-best for most people. The default settings have been shaped by years of community evaluations and feedback, while paying a lot of attention to the visual/performance ratio. But you should still feel free to tweak around and have fun doing so! + +option.info3=What is Profile or Visual Style +value.info3.0= +option.info3.comment="Profile" setting changes the setting founds in the "Performance Settings" menu, while not affecting any preference-based settings. "Visual Style" changes the "Default Style" values that exist on many preference-based settings, but it does not impact performance by an important amount. + +option.info4=What is RP Support +value.info4.0= +option.info4.comment=RP Support option determines how the shader pack treats the different blocks of Minecraft. For example, §bIntegratedPBR+§r treats gold blocks as reflective things, while §elabPBR§r or §eseuspbr§r require you to install a resource pack to tell that to the shader. Setting RP Support to §aBasic§r will make it so that no block is "special" other than a couple exceptions like water. + +option.info5=How to fix mod issues +value.info5.0= +option.info5.comment=Mod incompatibilities are inevitable with shader packs because of the way they work, but you can check out this information page about mod issues with Complementary to view a bunch of known fixes. www.complementary.dev/mod-issues + +option.info6= +value.info6.0= +option.info6.comment= + +option.info7= +value.info7.0= +option.info7.comment= + +option.info8=How to join the community +value.info8.0= +option.info8.comment=You can join the Complementary Discord server to join our friendly community, and be able to contact developers or experienced community members. www.complementary.dev/discord + +option.info9=How to support Complementary +value.info9.0= +option.info9.comment=Best way to support the development of Complementary is to share it with your friends or social media, but you can also directly support the developer on Patreon. www.patreon.com/emingt + +option.info10=Credits +value.info10.0= +option.info10.comment=EminGT: The main developer of Complementary. Capt Tatsu: Developer of BSL Shaders, his generosity is what made Complementary possible in the first place. Special Thanks: IMS212, sp614x, Chocapic13, Robobo1221, SixthSurge, null511, fayer3, catlikecoding, Builderb0y, Jessie, SpacEagle17, isuewo, flytrap + +#Style +option.SHADER_STYLE=Visual Style +option.SHADER_STYLE.comment=Determines the default visual style of the shader pack. §bReimagined§r: Complementing Minecraft while preserving its unique visual elements. §dUnbound§r: Reworking the visuals of Minecraft with a semi-realistic fantasy style. §e[*]§r Affected settings: Water Style, Cloud Style, Sun/Moon Style, Sun/Moon Angle, Aurora Style. +value.SHADER_STYLE.1=§bReimagined +value.SHADER_STYLE.4=§dUnbound + +#Screens +screen.PERFORMANCE_SETTINGS=§ePerformance Settings§r +screen.PERFORMANCE_SETTINGS.comment=Settings that directly relate to the performance, and get changed by the different shader profiles. + +screen.ATMOSPHERE_SETTINGS=Atmosphere +screen.ATMOSPHERE_SETTINGS.comment=Settings that relate to the atmosphere. + +screen.ATM_COLOR_SETTINGS=Atmosphere Color Multipliers +screen.ATM_COLOR_SETTINGS.comment=Enables customization of atmosphere colors that are mostly seen in the sky and fog. + +screen.MORNING_ATM_MULTS=Sunrise/Sunset Time +screen.NOON_ATM_MULTS=Noon Time +screen.NIGHT_ATM_MULTS=Night Time +screen.RAIN_ATM_MULTS=Rainy/Snowy Weather +screen.NETHER_ATM_MULTS=The Nether Dimension +screen.END_ATM_MULTS=The End Dimension + +screen.CLOUD_SETTINGS=Clouds +screen.CLOUD_SETTINGS.comment=Settings that relate to the clouds. + +screen.CLOUD_UNBOUND_SETTINGS=Unbound Cloud Settings +screen.CLOUD_REIMAGINED_SETTINGS=Reimagined Cloud Settings + +screen.FOG_SETTINGS=Fog +screen.FOG_SETTINGS.comment=Settings that relate to the various types of fog. + +screen.NETHER_SETTINGS=The Nether Dimension +screen.NETHER_SETTINGS.comment=Settings that relate to the Nether dimension. + +screen.CAMERA_SETTINGS=Camera +screen.CAMERA_SETTINGS.comment=Settings that relate to the view/camera. + +screen.TONEMAP_SETTINGS=Color Balance +screen.TONEMAP_SETTINGS.comment=Settings that determine the color balance of the visuals. + +screen.COLORGRADING_SETTINGS=Color Grading +screen.COLORGRADING_SETTINGS.comment=Settings to mix up the final color channels. + +screen.WORLD_BLUR_SETTINGS=World Blur +screen.WORLD_BLUR_SETTINGS.comment=Settings that relate to fancy world blurring effects. + +screen.MATERIAL_SETTINGS=Materials +screen.MATERIAL_SETTINGS.comment=Settings that are related to the materials of Minecraft. + +screen.IPBR_SETTINGS=Integrated Materials +screen.IPBR_SETTINGS.comment=Settings that are related to the features of IntegratedPBR+. + +screen.GLOWING_ORE_SETTINGS=Glowing Ores +screen.GLOWING_ORE_SETTINGS.comment=Settings to adjust emission of ore blocks. + +screen.GLOWING_STUFF_SETTINGS=Glowing Stuff +screen.GLOWING_STUFF_SETTINGS.comment=Settings to adjust emission of miscellaneous blocks. + +screen.OTHER_IPBR_SETTINGS=Other +screen.OTHER_IPBR_SETTINGS.comment=Miscellaneous IntegratedPBR+ settings. + +screen.CUSTOM_PBR_SETTINGS=labPBR/seuspbr Materials +screen.CUSTOM_PBR_SETTINGS.comment=Settings that are related to the features of labPBR/seuspbr. + +screen.LIGHTING_SETTINGS=Lighting +screen.LIGHTING_SETTINGS.comment=Settings that are related to lighting. + +screen.LIGHT_COLOR_SETTINGS=Lighting Color Multipliers +screen.LIGHT_COLOR_SETTINGS.comment=Enables customization of lighting colors that are seen on all surfaces. + +screen.MORNING_LIGHT_MULTS=Sunrise/Sunset Time +screen.NOON_LIGHT_MULTS=Noon Time +screen.NIGHT_LIGHT_MULTS=Night Time +screen.RAIN_LIGHT_MULTS=Rainy/Snowy Weather +screen.NETHER_LIGHT_MULTS=The Nether Dimension +screen.END_LIGHT_MULTS=The End Dimension + +screen.BLOCKLIGHT_COLOR_SETTINGS=Blocklight Color +screen.BLOCKLIGHT_COLOR_SETTINGS.comment=Settings to adjust the color emited from light source blocks. + +screen.MOON_PHASE_INF_SETTINGS=Moon Phase Influence +screen.MOON_PHASE_INF_SETTINGS.comment=Settings to determine how different moon phases affect the night lighting. + +screen.WATER_SETTINGS=Water +screen.WATER_SETTINGS.comment=Settings that are about water. + +screen.WATER_COLOR_SETTINGS=Water Surface Color +screen.UNDERWATER_COLOR_SETTINGS=Underwater Color + +screen.WATER_WAVE_SETTINGS=Waving Water Normals §e[*]§r +screen.WATER_WAVE_SETTINGS.comment=Settings to customise the surface-direction waves (normals) seen on water. §e[*]§r These settings only work when the Water Style is set to "Reimagined + Waves" or "Unbound". + +screen.WAVING_SETTINGS=Waving Textures +screen.WAVING_SETTINGS.comment=Settings that are about waving textures. + +screen.OTHER_SETTINGS=Other +screen.OTHER_SETTINGS.comment=Settings that don't fit into any other category. + +screen.SELECT_OUTLINE_SETTINGS=Selection Outline +screen.SELECT_OUTLINE_SETTINGS.comment=Settings that change the block selection outline. + +screen.WORLD_OUTLINE_SETTINGS=World Outline +screen.WORLD_OUTLINE_SETTINGS.comment=Settings that are about optional outline effects. + +screen.SPOOKY_SETTINGS=Spooklementary Settings +screen.EYES_SETTINGS=Eyes Settings +screen.BLOOD_MOON_SETTINGS=Blood Moon Settings + +#Settings +option.RP_MODE=RP Support +option.RP_MODE.comment=Changes many internal calculations to determine how different blocks and materials will be rendered. §bIntegrated PBR+§r: Calculated PBR and extra effects, highly recommended for most use cases. §aBasic§r: No PBR or extra effects. §elabPBR/seuspbr§r: Materials using the required PBR resource packs. +value.RP_MODE.0=§aBasic +value.RP_MODE.1=§bIntegrated PBR+ +value.RP_MODE.2=§eseuspbr (RP Required) +value.RP_MODE.3=§elabPBR (RP Required) + +option.WATER_QUALITY=Water Material Quality +option.WATER_QUALITY.comment=Adjusts the visual quality of water. §bHigh§r: Enables water refraction and allows for more detail on wavy water styles. §aMedium§r: Default. §eLow§r: No edge foaming, no fancy alpha, no varying color intensity, no surface shadows, and no wave parallax. +value.WATER_QUALITY.1=§eLow +value.WATER_QUALITY.2=§aMedium +value.WATER_QUALITY.3=§bHigh + +option.WATER_REFLECT_QUALITY=Water Reflection Quality +option.WATER_REFLECT_QUALITY.comment=Adjusts the visual quality of reflections that appear on translucents. §aMedium§r: Screenspace ray-traced reflections on water and translucents. §4Potato§r: Replaces water and translucent reflections with a faster method, may look incorrect in some situations. §cOFF§r: No reflections. +value.WATER_REFLECT_QUALITY.0=§cOFF +value.WATER_REFLECT_QUALITY.1=§4Potato +value.WATER_REFLECT_QUALITY.2=§aMedium + +option.BLOCK_REFLECT_QUALITY=Block Reflection Quality §e[*]§r +option.BLOCK_REFLECT_QUALITY.comment=Adjusts the visual quality of reflections that appear on solid materials. §bHigh§r: Sun/moon highlights + smoother specular reflections using a temporal filter. §aMedium§r: Sun/moon highlights + specular reflections. §eLow§r: Sun/moon highlights only. §e[*]§r RP Support option must be set to anything but Basic for any specular reflections to appear. +value.BLOCK_REFLECT_QUALITY.0=§cOFF +value.BLOCK_REFLECT_QUALITY.1=§eLow +value.BLOCK_REFLECT_QUALITY.2=§aMedium +value.BLOCK_REFLECT_QUALITY.3=§bHigh + +option.REALTIME_SHADOWS=Real-Time Shadows +option.REALTIME_SHADOWS.comment=Enables traditional shadows that move depending on the terrain and sun/moon angle. §e[*]§r Disabling this option will cause Light Shafts to not work, and will stop other shadow options from doing anything +value.REALTIME_SHADOWS.true=§bON +value.REALTIME_SHADOWS.false=§cOFF + +option.SHADOW_QUALITY=Shadow Sample Quality +option.SHADOW_QUALITY.comment=Adjusts the quality of shadows. Every tier further reduces the shadow noise artifacts, and options lower than §bHigh§r enable optimised shadows on leaves; meanwhile the §6Very Low§r option significantly downgrades shadows in multiple ways. +value.SHADOW_QUALITY.0=§6Very Low +value.SHADOW_QUALITY.1=§eLow +value.SHADOW_QUALITY.2=§aMedium +value.SHADOW_QUALITY.3=§bHigh +value.SHADOW_QUALITY.4=§9Very High +value.SHADOW_QUALITY.5=§dUltra + +option.LIGHTSHAFT_QUALI_DEFINE=Light Shaft Quality +option.LIGHTSHAFT_QUALI_DEFINE.comment=Adjusts the quality of light shafts. Every tier further reduces the light shaft noise artifacts. +value.LIGHTSHAFT_QUALI_DEFINE.0=§cOFF +value.LIGHTSHAFT_QUALI_DEFINE.1=§eLow +value.LIGHTSHAFT_QUALI_DEFINE.2=§aMedium +value.LIGHTSHAFT_QUALI_DEFINE.3=§bHigh +value.LIGHTSHAFT_QUALI_DEFINE.4=§9Very High + +option.shadowDistance=Shadow Distance +option.shadowDistance.comment=Adjusts the distance from the player which real-time shadows are rendered. §e[*]§r The value is internally capped at Render Distance. §c[-]§r Lower values may cause excessive Light Shaft leaking. +value.shadowDistance.64.0=§e4 Chunks §c[-] +value.shadowDistance.80.0=§e5 Chunks §c[-] +value.shadowDistance.96.0=§e6 Chunks §c[-] +value.shadowDistance.112.0=§e7 Chunks §c[-] +value.shadowDistance.128.0=§a8 Chunks +value.shadowDistance.160.0=§a10 Chunks +value.shadowDistance.192.0=§b12 Chunks +value.shadowDistance.224.0=§b14 Chunks +value.shadowDistance.256.0=§b16 Chunks +value.shadowDistance.320.0=§d20 Chunks +value.shadowDistance.384.0=§d24 Chunks +value.shadowDistance.512.0=§d32 Chunks +value.shadowDistance.768.0=§d48 Chunks +value.shadowDistance.1024.0=§d64 Chunks + +option.ENTITY_SHADOWS=Entity Shadows +option.ENTITY_SHADOWS.comment=Enables the ability for entities and block entities to cast shadows. +value.ENTITY_SHADOWS.true=§dON +value.ENTITY_SHADOWS.false=§eOFF + +option.DETAIL_QUALITY=Detail Quality +option.DETAIL_QUALITY.comment=Adjusts several small things that affect performance. Adjust the quality of: TAA, lighting tweaks, Night Nebula, Nether Storm, Ender Beams. +value.DETAIL_QUALITY.0=§4Potato +value.DETAIL_QUALITY.2=§aMedium +value.DETAIL_QUALITY.3=§bHigh + +option.CLOUD_QUALITY=Cloud Quality +option.CLOUD_QUALITY.comment=Adjusts the lighting, detail, and sample quality of Reimagined/Unbound cloud styles. §e[*]§r This setting only works with the "Reimagined" or "Unbound" Cloud Styles. +value.CLOUD_QUALITY.0=§cOFF +value.CLOUD_QUALITY.1=§eLow +value.CLOUD_QUALITY.2=§aMedium +value.CLOUD_QUALITY.3=§bHigh + +option.SSAO_QUALI_DEFINE=Edge Shadow (SSAO) Quality +option.SSAO_QUALI_DEFINE.comment=Adjusts the quality of Screen-Space Ambient Occlusion (SSAO) which adds extra ambient shadowing to the edges of the scene. Every tier further reduces the ssao noise artifacts. +value.SSAO_QUALI_DEFINE.0=§cOFF +value.SSAO_QUALI_DEFINE.2=§aMedium +value.SSAO_QUALI_DEFINE.3=§bHigh +value.SSAO_QUALI_DEFINE.5=§dUltra + +option.SSAO_I=Edge Shadow Intensity (SSAO) +option.SSAO_I.comment=Determines the strength of Screen-Space Ambient Occlusion (SSAO) which adds extra ambient shadowing to the edges of the scene. §e[*]§r This setting won't work if SSAO is disabled in "Performance Settings". +value.SSAO_I.0=§cOFF + +option.VANILLAAO_I=Edge Shadow Intensity (Vanilla) +option.VANILLAAO_I.comment=Determines the strength of Minecraft's ambient occlusion which adds extra ambient shadowing to the edges of the scene. +value.VANILLAAO_I.0=§cOFF + +option.BORDER_FOG=Border Fog +option.BORDER_FOG.comment=Intense fog on the edges of the loaded world to hide chunk borders. §e[*]§r It's recommended to disable Border Fog when playing with less than 8 chunks of render distance. + +option.ATM_FOG_MULT=Atmospheric Fog +option.ATM_FOG_MULT.comment=Adjusts the intensity of altitude-based fog. +value.ATM_FOG_MULT.0.50=Very Subtle +value.ATM_FOG_MULT.0.65=Subtle +value.ATM_FOG_MULT.0.80=Normal +value.ATM_FOG_MULT.0.95=Intense + +option.ATM_FOG_DISTANCE=Atmospheric Fog Distance +option.ATM_FOG_DISTANCE.comment=Adjusts the distance from the camera that the atmospheric fog starts to appear. §e[*]§r Note that the fog distance also gets automatically adjusted by the Render Distance setting in Video Settings. + +option.ATM_FOG_ALTITUDE=Atmospheric Fog Altitude +option.ATM_FOG_ALTITUDE.comment=Determines the altitude that the atmospheric fog appears the most prominently. + +option.CAVE_FOG=Cave Fog +option.CAVE_FOG.comment=Enables extra fog in deep underground areas. + +option.LIGHTSHAFT_BEHAVIOUR=Light Shaft Mode +option.LIGHTSHAFT_BEHAVIOUR.comment=Determines the behaviour of light shafts. §a[+]§r Scene Aware Light Shafts automatically transition between regular and extreme modes to provide the best results. §c[-]§r Extreme mode is not recommended for general gameplay, and it can severely impact performance. +value.LIGHTSHAFT_BEHAVIOUR.0=§cOFF +value.LIGHTSHAFT_BEHAVIOUR.1=Scene Aware §a[+] +value.LIGHTSHAFT_BEHAVIOUR.2=Regular +value.LIGHTSHAFT_BEHAVIOUR.3=Extreme §c[-] + +option.LIGHTSHAFT_DAY_I=Light Shaft Day Multiplier +option.LIGHTSHAFT_NIGHT_I=Light Shaft Night Multiplier +option.LIGHTSHAFT_RAIN_I=Light Shaft Rain Multiplier + +option.CLOUD_STYLE_DEFINE=Cloud Style +option.CLOUD_STYLE_DEFINE.comment=Determines the style of clouds. §e[*]§r "Default Style" means that the setting will be automatically determined by the "Visual Style" setting in the main menu of Shader Options. §e[*]§r The "Vanilla" style requires clouds to be enabled in Video Settings. +value.CLOUD_STYLE_DEFINE.-1=Default Style +value.CLOUD_STYLE_DEFINE.0=§cOFF +value.CLOUD_STYLE_DEFINE.1=Reimagined +value.CLOUD_STYLE_DEFINE.3=Unbound +value.CLOUD_STYLE_DEFINE.50=Vanilla §e[*] + +option.CLOUD_SHADOWS=Cloud Shadows +option.CLOUD_SHADOWS.comment=Enables shadows that are cast from the clouds. §e[*]§r This setting only works with the "Reimagined" or "Unbound" Cloud Styles. §e[*]§r Cloud shadows will be randomly generated if Cloud Style is set to "Unbound", because of the extra complexity of Unbound clouds. + +option.CLOUD_CLOSED_AREA_CHECK=Prevent Clouds in Interiors +option.CLOUD_CLOSED_AREA_CHECK.comment=Does additional checks to remove clouds in closed areas. §e[*]§r This setting only works with the "Reimagined" or "Unbound" Cloud Styles. §e[*]§r This setting will be treated as disabled if "Real-Time Shadows" are also disabled. + +option.CLOUD_ALT1=Cloud Altitude +option.CLOUD_ALT1.comment=Determines the world height which the clouds will appear at. §e[*]§r This setting only works with the "Reimagined" or "Unbound" Cloud Styles. + +option.CLOUD_SPEED_MULT=Cloud Speed +option.CLOUD_SPEED_MULT.comment=Determines how fast the clouds are going to move. "Synced to World Time" setting uses Minecraft world time to advance the cloud positions; this allows for clouds to appear the same between players in the same server. §e[*]§r This setting only works with the "Reimagined" or "Unbound" Cloud Styles. +value.CLOUD_SPEED_MULT.100=Synced to World Time + +option.CLOUD_UNBOUND_AMOUNT=Cloud Amount +option.CLOUD_UNBOUND_AMOUNT.comment=Adjusts the amount of Unbound clouds. + +option.CLOUD_UNBOUND_SIZE_MULT=Cloud Size +option.CLOUD_UNBOUND_SIZE_MULT.comment=Adjusts the size of Unbound clouds. Higher values produce smaller clouds. + +option.DOUBLE_REIM_CLOUDS=Double Reimagined Clouds +option.DOUBLE_REIM_CLOUDS.comment=Enables a secondary Reimagined cloud layer. §e[*]§r This setting only works with the "Reimagined" Cloud Style. + +option.CLOUD_ALT2=Cloud Layer 2 Altitude +option.CLOUD_ALT2.comment=Determines the world height which the second layer clouds will appear at. §e[*]§r This setting only works when the "Double Reimagined Clouds" option is enabled with the "Reimagined" Cloud Style. + +option.NETHER_STORM=Nether Storm +option.NETHER_STORM.comment=Adds a smoke-like volumetric effect to the Nether dimension. §c[-]§r This effect can impact performance. + +option.NETHER_STORM_I=Nether Storm Opacity +option.NETHER_STORM_I.comment=Adjusts the opacity of the Nether Storm. + +option.NETHER_STORM_LOWER_ALT=Nether Storm Lower Altitude +option.NETHER_STORM_LOWER_ALT.comment=Determines the lower starting point of the Nether Storm. The Nether Storm won't appear below this altitude, and it will look the most bright right above this altitude. + +option.NETHER_STORM_HEIGHT=Nether Storm Height +option.NETHER_STORM_HEIGHT.comment=Determines how tall the Nether Storm will form. Decrasing this value will result in the Nether Storm gathering near the "Nether Storm Lower Altitude". + +option.NETHER_COLOR_MODE=Color Mode +option.NETHER_COLOR_MODE.comment=Determines how the ambience colors will be handled in the Nether. Constant: Colors won't change between biomes. Biome Based: Colors will change depending on the biome. Biome Based (Modified): Biome based, but the colors have been rebalanced to better suit the default visual direction of Complementary. +value.NETHER_COLOR_MODE.3=Biome Based (Modified) +value.NETHER_COLOR_MODE.2=Biome Based +value.NETHER_COLOR_MODE.0=Constant + +option.T_EXPOSURE=General Brightness +option.T_EXPOSURE.comment=Also known as "Tonemap Exposure". Adjusts the overall brightness of the whole image. + +option.TM_WHITE_CURVE=White Brightness +option.TM_WHITE_CURVE.comment=Also known as "Tonemap White Curve". Adjusts how easily the colors reach to full white. + +option.T_UPPER_CURVE=Contrast of Brighter Colors +option.T_UPPER_CURVE.comment=Also known as "Tonemap Upper Curve". Adjusts contrast of brighter colors. + +option.T_LOWER_CURVE=Contrast of Darker Colors +option.T_LOWER_CURVE.comment=Also known as "Tonemap Lower Curve". Adjusts contrast of darker colors. + +option.T_SATURATION=Saturation +option.T_SATURATION.comment=Adjusts overall colorfulness of the image. + +option.T_VIBRANCE=Saturation of Paler Colors +option.T_VIBRANCE.comment=Also known as "Vibrance". Adjusts the colorfulness of the image, but already colorful pixels are less affected. + +option.COLORGRADING=§eColor Grading +option.COLORGRADING.comment=Enables settings to freely mix up the final color channels. +option.GR_RR=Red to Red +option.GR_RG=Red to Green +option.GR_RB=Red to Blue +option.GR_RC=Red Curve +option.GR_GR=Green to Red +option.GR_GG=Green to Green +option.GR_GB=Green to Blue +option.GR_GC=Green Curve +option.GR_BR=Blue to Red +option.GR_BG=Blue to Green +option.GR_BB=Blue to Blue +option.GR_BC=Blue Curve + +option.WATER_STYLE_DEFINE=Water Style +option.WATER_STYLE_DEFINE.comment=Determines the style of water. §e[*]§r "Default Style" means that the setting will be automatically determined by the "Visual Style" setting in the main menu of Shader Options. +value.WATER_STYLE_DEFINE.-1=Default Style +value.WATER_STYLE_DEFINE.1=Reimagined +value.WATER_STYLE_DEFINE.2=Reimagined + Waves +value.WATER_STYLE_DEFINE.3=Unbound + +option.WATER_CAUSTIC_STYLE_DEFINE=Water Caustic Style +option.WATER_CAUSTIC_STYLE_DEFINE.comment=Determines the style of water shadows, also known as water caustics. +value.WATER_CAUSTIC_STYLE_DEFINE.-1=Same as Water +value.WATER_CAUSTIC_STYLE_DEFINE.1=Reimagined +value.WATER_CAUSTIC_STYLE_DEFINE.3=Unbound + +option.WATER_REFRACTION_INTENSITY=Water Refraction Intensity §e[*]§r +option.WATER_REFRACTION_INTENSITY.comment=Adjusts the intensity of water refraction and underwater distortion. §e[*]§r This setting only fully works when the Water Quality is set to "High" or above, or else it will only affect the subtle underwater distortion. + +option.WATER_FOAM_I=Water Foam Intensity +option.WATER_FOAM_I.comment=Determines the opacity of foam seen on water edges. §e[*]§r This setting only works when the Water Material Quality is set to Medium or above. + +option.WATER_ALPHA_MULT=Water Opacity Factor +option.WATER_ALPHA_MULT.comment=Adjusts how opaque the water looks. §c[-]§r Extreme values will break the balance of water lighting. + +option.WATER_FOG_MULT=Water Fog Factor +option.WATER_FOG_MULT.comment=Adjusts how close the water fog looks. Higher values provide closer fog. §c[-]§r Extreme values will break the balance of water lighting. + +option.WATERCOLOR_R=Water Surface Red Multiplier +option.WATERCOLOR_G=Water Surface Green Multiplier +option.WATERCOLOR_B=Water Surface Blue Multiplier + +option.WATERCOLOR_MODE=Color Mode +option.WATERCOLOR_MODE.comment=Determines how the water color will be handled. Constant: Water colors won't change between biomes. Biome Based: Color will change depending on the biome. Biome Based (Clamped): Biome based, but prevents the surface color from getting weird in certain biomes. §e[*]§r This setting won't work correctly on Minecraft versions below 1.13. +value.WATERCOLOR_MODE.3=Biome Based (Clamped) +value.WATERCOLOR_MODE.2=Biome Based +value.WATERCOLOR_MODE.0=Constant + +option.BRIGHT_CAVE_WATER=Brighter Shallow/Cave Water +option.BRIGHT_CAVE_WATER.comment=Makes shallow water or water in closed areas brighter to improve visibility in caves, and add some color detail to the shallow parts of oceans. §e[*]§r This effect won't work if Water Opacity Factor is set higher than 199 for technical reasons. + +option.UNDERWATERCOLOR_R=Underwater Red Multiplier +option.UNDERWATERCOLOR_G=Underwater Green Multiplier +option.UNDERWATERCOLOR_B=Underwater Blue Multiplier + +option.WATER_BUMPINESS=Wave Strength +option.WATER_BUMPINESS.comment=Adjusts the intensity of surface-direction waves (normals) seen on water. + +option.WATER_BUMP_SMALL=Wave Strength - Small Waves +option.WATER_BUMP_SMALL.comment=Adjusts the intensity of waves that are smaller than others. + +option.WATER_BUMP_MED=Wave Strength - Medium Waves +option.WATER_BUMP_MED.comment=Adjusts the intensity of waves that are average-sized compared to others. + +option.WATER_BUMP_BIG=Wave Strength - Large Waves +option.WATER_BUMP_BIG.comment=Adjusts the intensity of waves that are larger than others. + +option.WATER_SPEED_MULT=Wave Speed +option.WATER_SPEED_MULT.comment=Adjusts the movement speed of surface-direction waves (normals) seen on water. + +option.WATER_SIZE_MULT=Wave Size +option.WATER_SIZE_MULT.comment=Adjusts how big the surface-direction waves (normals) look on water. + +option.SUN_ANGLE=Sun/Moon Angle +option.SUN_ANGLE.comment=Adjusts the angle of sun/moon relative to the world during noon. §a[+]§r Reimagined's lighting model is specially designed to make the "0" sun angle work just as well as others. +value.SUN_ANGLE.-1=Default Style +value.SUN_ANGLE.0=0 §r(§bReimagined§r) +value.SUN_ANGLE.-40=-40 §r(§dUnbound§r) + +option.SUN_MOON_STYLE_DEFINE=Sun/Moon Style +option.SUN_MOON_STYLE_DEFINE.comment=Determines the style of sun/moon. §e[*]§r This setting might interact incorrectly with some resource packs due to the limitations of sun/moon/skybox differentiation. +value.SUN_MOON_STYLE_DEFINE.-1=Default Style +value.SUN_MOON_STYLE_DEFINE.1=Reimagined +value.SUN_MOON_STYLE_DEFINE.2=Unbound +value.SUN_MOON_STYLE_DEFINE.3=Unbound - Smaller + +option.SUN_MOON_HORIZON=Sun/Moon Horizon +option.SUN_MOON_HORIZON.comment=Prevents the sun/moon from appearing below the horizon line. + +option.NIGHT_STAR_AMOUNT=Night Star Amount +option.NIGHT_STAR_AMOUNT.comment=Determines the amount of stars in the night sky. +value.NIGHT_STAR_AMOUNT.2=Medium +value.NIGHT_STAR_AMOUNT.3=High + +option.AURORA_STYLE_DEFINE=Aurora Borealis Style +option.AURORA_STYLE_DEFINE.comment=Determines the style of northern lights that appear in the night sky. +value.AURORA_STYLE_DEFINE.-1=Default Style +value.AURORA_STYLE_DEFINE.0=§cOFF +value.AURORA_STYLE_DEFINE.1=Reimagined +value.AURORA_STYLE_DEFINE.2=Unbound + +option.AURORA_CONDITION=Aurora +option.AURORA_CONDITION.comment=Determines the condition(s) for the Aurora Borealis to appear. §e[*]§r Aurora Borealis will only appear during night regardless of this setting +value.AURORA_CONDITION.0=Every Night +value.AURORA_CONDITION.1=Full Moon +value.AURORA_CONDITION.2=Snowy Biome +value.AURORA_CONDITION.3=Full Moon in Snowy Biome +value.AURORA_CONDITION.4=Full Moon or Snowy Biome + +option.NIGHT_NEBULA=Night Nebulae +option.NIGHT_NEBULA.comment=Adds galaxy-style nebulae to the night sky. The nebulae are procedurally generated, and they will look different every night. §c[-]§r This effect can impact performance. §e[*]§r "Nebulae" isn't a typo, it's the plural of Nebula =D + +option.NIGHT_NEBULA_I=Night Nebula Brightness +option.NIGHT_NEBULA_I.comment=Adjusts the brightness of Night Nebulae. + +option.WEATHER_TEX_OPACITY=Weather Texture Opacity +option.WEATHER_TEX_OPACITY.comment=Adjusts the opacity of the rainfall/snowfall weather textures. + +option.PIXEL_SHADOW=Pixelated Shadows +option.PIXEL_SHADOW.comment=Modifies the world coordinates on a grid to make shadows pixelated. §e[*]§r This setting does not affect performance. +value.PIXEL_SHADOW.0=OFF +value.PIXEL_SHADOW.8=8x8 §e[*] +value.PIXEL_SHADOW.16=16x16 §e[*] +value.PIXEL_SHADOW.32=32x32 §e[*] +value.PIXEL_SHADOW.64=64x64 §e[*] +value.PIXEL_SHADOW.128=128x128 §e[*] + +option.BLOOM=Bloom +option.BLOOM.comment=Enables blurry glow from bright objects and humidity. + +option.BLOOM_STRENGTH=Bloom Strength +option.BLOOM_STRENGTH.comment=Determines the intensity of glow on bright things, and the bloom from rain/cave humidity. §c[-]§r Too much bloom will cause the image to get blurrier and brighter than intended, especially in humid conditions. +value.BLOOM_STRENGTH.0.027=15% +value.BLOOM_STRENGTH.0.036=20% +value.BLOOM_STRENGTH.0.045=25% +value.BLOOM_STRENGTH.0.054=30% +value.BLOOM_STRENGTH.0.063=35% +value.BLOOM_STRENGTH.0.072=40% +value.BLOOM_STRENGTH.0.081=45% +value.BLOOM_STRENGTH.0.09=50% +value.BLOOM_STRENGTH.0.10=55% +value.BLOOM_STRENGTH.0.11=60% +value.BLOOM_STRENGTH.0.12=65% +value.BLOOM_STRENGTH.0.13=70% +value.BLOOM_STRENGTH.0.14=75% +value.BLOOM_STRENGTH.0.15=80% §c[-] +value.BLOOM_STRENGTH.0.16=85% §c[-] +value.BLOOM_STRENGTH.0.17=90% §c[-] +value.BLOOM_STRENGTH.0.18=95% §c[-] +value.BLOOM_STRENGTH.0.19=100% §c[-] +value.BLOOM_STRENGTH.0.21=110% §c[-] +value.BLOOM_STRENGTH.0.23=120% §c[-] +value.BLOOM_STRENGTH.0.25=130% §c[-] +value.BLOOM_STRENGTH.0.28=150% §c[-] +value.BLOOM_STRENGTH.0.32=180% §c[-] +value.BLOOM_STRENGTH.10.00=§cInsane + +option.FXAA=Anti-Aliasing (FXAA) +option.FXAA.comment=Enables Fast Approximate Anti-Aliasing (FXAA), which is basically an effect that produces smoother image. +value.FXAA.true=§aON +value.FXAA.false=§eOFF + +option.IMAGE_SHARPENING=Image Sharpening +option.IMAGE_SHARPENING.comment=Makes the image sharper using a filter. §c[-]§r Too much sharpening might cause visual artifacts like aliasing, flickering, noise, and subtle brightness changes. +value.IMAGE_SHARPENING.6=6 §c[-] +value.IMAGE_SHARPENING.7=7 §c[-] +value.IMAGE_SHARPENING.8=8 §c[-] +value.IMAGE_SHARPENING.9=9 §c[-] +value.IMAGE_SHARPENING.10=10 §c[-] + +option.LENSFLARE=Lens Flare +option.LENSFLARE.comment=Adds camera lens reflection effect when towards the sun or moon. §c[-]§r This effect can severely impact performance. + +option.LENSFLARE_I=Lens Flare Intensity +option.LENSFLARE_I.comment=Adjusts the strength of the Lens Flare effect. + +option.MOTION_BLURRING=Motion Blur +option.MOTION_BLURRING.comment=Applies blur to the image when moving the camera. + +option.MOTION_BLURRING_STRENGTH=Motion Blur Strength +option.MOTION_BLURRING_STRENGTH.comment=Adjusts the intensity of motion blur. + +option.WORLD_BLUR=§eWorld Blur +option.WORLD_BLUR.comment=Enables world blurring. Distance Blur: Blur gets applied like fog, depending on the distance from the camera. Depth of Field: Blurring happens depending on the focus point of the camera. §c[-]§r This effect can severely impact performance. +value.WORLD_BLUR.0=OFF +value.WORLD_BLUR.1=Distance Blur +value.WORLD_BLUR.2=Depth of Field + +option.WB_FOV_SCALED=FOV Scaled Blur +option.WB_FOV_SCALED.comment=Scales World Blur to the camera Field of View. World Blur will get more intense if you zoom in with this enabled. + +option.WB_CHROMATIC=Chromatic Blur +option.WB_CHROMATIC.comment=Applies chromatic aberration to the blurry areas, separating different colors in blurred areas. + +option.WB_ANAMORPHIC=Anamorphic Blur +option.WB_ANAMORPHIC.comment=Stretches the blur in one direction. §c[-]§r This option can reduce the quality of the World Blur + +option.WB_DOF_I=Depth of Field Strength +option.WB_DOF_FOCUS=Depth of Field Focus +option.WB_DOF_FOCUS.comment=Determines the focus distance of the camera. Automatic: The focus point will be adjusted according to the center point of the screen. Brightness: The focus point will be determined by the "Brightness" slider in Video Settings. +value.WB_DOF_FOCUS.-1=Brightness §e[*] +value.WB_DOF_FOCUS.0=Automatic + +option.WB_DB_DAY_I=Dis. Blur - Day +option.WB_DB_NIGHT_I=Dis. Blur - Night & Interiors +option.WB_DB_RAIN_I=Dis. Blur - Rain & Snow +option.WB_DB_WATER_I=Dis. Blur - Underwater +option.WB_DB_NETHER_I=Dis. Blur - The Nether +option.WB_DB_END_I=Dis. Blur - The End + +option.VIGNETTE_R=Vignette +option.VIGNETTE_R.comment=Applies darkening around the edges of the screen. + +option.CHROMA_ABERRATION=Chromatic Aberration +option.CHROMA_ABERRATION.comment=Separates different colors towards the edges of the screen. §c[-] Chromatic Aberration can cause the image to feel blurry; high values aren't recommended for gameplay. +value.CHROMA_ABERRATION.4=4 §c[-] +value.CHROMA_ABERRATION.5=5 §c[-] +value.CHROMA_ABERRATION.6=6 §c[-] +value.CHROMA_ABERRATION.7=7 §c[-] +value.CHROMA_ABERRATION.8=8 §c[-] + +option.FANCY_GLASS=Improved Glass +option.FANCY_GLASS.comment=Improves the regular glass by adding a translucent layer to it. §c[-]§r Does not work on Iris because of a Sodium bug. §e[*]§r RP Support option must be set to Integrated PBR+. + +option.GREEN_SCREEN_LIME=Green Screen Lime Blocks +option.GREEN_SCREEN_LIME.comment=Turns "Lime Concrete", "Lime Wool", and "Lime Carpet" into green screens for video editing. Tip 1: Turn off "Bloom" option to improve separation. Tip 2: Put lights under lime carpets for lighting. Tip 3: You can turn off Anti-Aliasing (FXAA) and set Detail Quality to Potato in Performance Settings to disable all filtering and get pixel-perfect separation. + +option.HAND_SWAYING=Hand Sway +option.HAND_SWAYING.comment=Adds slow movement to the player hand to simulate a breathing animation. +value.HAND_SWAYING.0=OFF +value.HAND_SWAYING.1=Subtle +value.HAND_SWAYING.2=Normal +value.HAND_SWAYING.3=Intense + +option.LESS_LAVA_FOG=Better Visibility Inside Lava +option.LESS_LAVA_FOG.comment=Reduces the lava fog to improve visibility inside lava. + +option.REDUCE_CLOSE_PARTICLES=Reduce Close-up Particles +option.REDUCE_CLOSE_PARTICLES.comment=Reduces the opacity of particles that are close to the camera to improve visibility. + +option.SNOWY_WORLD=Snowy World +option.SNOWY_WORLD.comment=Makes the entire world covered with snow. + +option.SHOW_LIGHT_LEVEL=Show Light Levels +option.SHOW_LIGHT_LEVEL.comment=In Overworld: Yellow means mobs can spawn during night time, red means mobs can spawn anytime. In Nether or End: Yellow means some mobs can spawn, red means all mobs can spawn. §e[*]§r Disable Smooth Lighting for precise results. +value.SHOW_LIGHT_LEVEL.0=OFF +value.SHOW_LIGHT_LEVEL.1=Hold Spider Eye +value.SHOW_LIGHT_LEVEL.2=Hold Light Source +value.SHOW_LIGHT_LEVEL.3=Always ON + +option.COLOR_CODED_PROGRAMS=Color Coded Programs §c[-]§r +option.COLOR_CODED_PROGRAMS.comment=Shows which shader programs are being used to render geometry. §c[-]§r This option is only for development purposes and shouldn't be used for gameplay. §e[*]§r Color values can be found in the shader pack files: shaders/lib/misc/colorCodedPrograms.glsl + +option.MINIMUM_LIGHT_MODE=Cave Lighting +option.MINIMUM_LIGHT_MODE.comment=Adds extra lighting to areas that don't have skylight. §a[+]§r "Default" option determines the lighting according to the "Brightness" slider in Video Settings. +value.MINIMUM_LIGHT_MODE.0=Very Dark +value.MINIMUM_LIGHT_MODE.1=Dark +value.MINIMUM_LIGHT_MODE.2=Default §a[+] +value.MINIMUM_LIGHT_MODE.3=Bright +value.MINIMUM_LIGHT_MODE.4=Very Bright + +option.AMBIENT_MULT=Shadow Light Multiplier +option.AMBIENT_MULT.comment=Determines the amount of ambient lighting seen in shadows. §c[-]§r Drastically changing this setting can break the lighting balance. + +option.GENERATED_NORMALS=Generated Normals +option.GENERATED_NORMALS.comment=Adds auto-generated bumpy details to surfaces. §e[*]§r RP Support option must be set to Integrated PBR+. + +option.COATED_TEXTURES=Coated Textures +option.COATED_TEXTURES.comment=Adds auto-generated dusty details to textures. §e[*]§r RP Support option must be set to Integrated PBR+. + +option.ENTITY_GN_AND_CT=Allow GN and CT on Entities +option.ENTITY_GN_AND_CT.comment=Decides if Generated Normals and Coated Textures can appear on entities. §e[*]§r This won't enable GN or CT on entities if the main GN or CT options are disabled. + +option.GENERATED_NORMAL_MULT=Generated Normal Strength +option.GENERATED_NORMAL_MULT.comment=Adjusts the strength of auto-generated bumpy details on surfaces. + +option.COATED_TEXTURE_MULT=Coated Texture Strength +option.COATED_TEXTURE_MULT.comment=Adjusts the strength of auto-generated dusty details on textures. + +option.GLOWING_ORE_MASTER=§eEnable Glowing Ores +option.GLOWING_ORE_MASTER.comment=Enables the functionality of glowing ores. §e[*]§r Choosing "Default" will only enable glowing ores if the "Visual Style" is set to "Unbound". §e[*]§r The settings below won't work if this option isn't enabled. +value.GLOWING_ORE_MASTER.0=§cOFF +value.GLOWING_ORE_MASTER.1=Default [*] +value.GLOWING_ORE_MASTER.2=§aON + +option.GLOWING_ORE_MULT=Ore Glow Strength +option.GLOWING_ORE_MULT.comment=Determines the emission strength of glowing ores. + +option.GLOWING_ORE_IRON=Glowing Iron Ore +option.GLOWING_ORE_GOLD=Glowing Gold Ore +option.GLOWING_ORE_COPPER=Glowing Copper Ore +option.GLOWING_ORE_REDSTONE=Glowing Redstone Ore §e[*]§r +option.GLOWING_ORE_REDSTONE.comment=§e[*]§r All redstone ores will still glow if they are "activated" regardless of this setting. +option.GLOWING_ORE_LAPIS=Glowing Lapis Lazuli Ore +option.GLOWING_ORE_EMERALD=Glowing Emerald Ore +option.GLOWING_ORE_DIAMOND=Glowing Diamond Ore +option.GLOWING_ORE_NETHERQUARTZ=Glowing Nether Quartz Ore +option.GLOWING_ORE_NETHERGOLD=Glowing Nether Gold Ore +option.GLOWING_ORE_GILDEDBLACKSTONE=Glowing Gilded Blackstone +option.GLOWING_ORE_ANCIENTDEBRIS=Glowing Ancient Debris +option.GLOWING_ORE_MODDED=Glowing Modded Ores §e[*]§r +option.GLOWING_ORE_MODDED.comment=§e[*]§r You can add modded ore IDs to "Complementary-->shaders-->block.properties" file in order to make them glow. You can open block.properties using any text editor like notepad, and then add modded ore block IDs next to "block.10024=". + +option.GLOWING_AMETHYST=Glowing Amethyst +value.GLOWING_AMETHYST.0=§cOFF +value.GLOWING_AMETHYST.1=Crystal +value.GLOWING_AMETHYST.2=Crystal & Block + +option.GLOWING_LICHEN=Glowing Glow Lichen +value.GLOWING_LICHEN.0=§cOFF +value.GLOWING_LICHEN.1=In Closed Areas +value.GLOWING_LICHEN.2=Always + +option.EMISSIVE_REDSTONE_BLOCK=Glowing Redstone Block + +option.EMISSIVE_LAPIS_BLOCK=Glowing Lapis Lazuli Block + +option.GLOWING_ARMOR_TRIM=Glowing Armor Trim §e[*]§r +option.GLOWING_ARMOR_TRIM.comment=Makes armor trims emissive. §e[*]§r This feature only works on Iris, as Optifine doesn't support armor trim detection. + +option.NORMAL_MAP_STRENGTH=Normal Map Strength +option.NORMAL_MAP_STRENGTH.comment=Adjusts the strength of bumpy details on surfaces. §e[*]§r RP Support option must be set to labPBR/seuspbr, and a compatible resource pack must be used. + +option.CUSTOM_EMISSION_INTENSITY=Custom Emission Intensity +option.CUSTOM_EMISSION_INTENSITY.comment=Adjusts the intensity of glowing surfaces. §e[*]§r RP Support option must be set to labPBR/seuspbr, and a compatible resource pack must be used. + +option.POM=Parallax Occlusion Mapping +option.POM.comment=Enables 3D effect on surfaces. §c[-]§r This effect can severely impact performance. §e[*]§r RP Support option must be set to labPBR/seuspbr, and a compatible resource pack must be used. +value.POM.false=OFF +value.POM.true=ON §c[-] + +option.POM_DEPTH=POM Depth +option.POM_DEPTH.comment=Adjusts the depth of parallax occlusion mapping. §e[*]§r RP Support option must be set to labPBR/seuspbr, and a compatible resource pack must be used. + +option.POM_QUALITY=POM Quality +option.POM_QUALITY.comment=Adjusts the sharpness/accuracy of parallax occlusion mapping. §c[-]§r Values higher than 200 can severely impact performance. §e[*]§r Values lower than 100 will force "POM Lighting Mode" to "Smooth". §e[*]§r RP Support option must be set to labPBR/seuspbr, and a compatible resource pack must be used. +value.POM_QUALITY.16=16 §e[*] +value.POM_QUALITY.32=32 §e[*] +value.POM_QUALITY.64=64 §e[*] +value.POM_QUALITY.256=256 §c[-] +value.POM_QUALITY.512=512 §c[-] + +option.POM_DISTANCE=POM Distance +option.POM_DISTANCE.comment=Adjusts how far parallax occlusion mapping is calculated. §e[*]§r It's recommended to keep this value below 50 to get a small performance gain. §e[*]§r RP Support option must be set to labPBR/seuspbr, and a compatible resource pack must be used. +value.POM_DISTANCE.64=64 §e[*] +value.POM_DISTANCE.128=128 §e[*] +value.POM_DISTANCE.256=256 §e[*] +value.POM_DISTANCE.512=512 §e[*] +value.POM_DISTANCE.1024=1024 §e[*] + +option.POM_LIGHTING_MODE=POM Lighting Mode +option.POM_LIGHTING_MODE.comment=Adjusts the lighting style for POM-affected surfaces. Sharp: POM walls won't get light if they aren't facing towards the light. Smooth: POM walls will still get light as if they are not walls. §e[*]§r This option will be forced to "Smooth" if POM Quality is set lower than 100. +value.POM_LIGHTING_MODE.1=Smooth +value.POM_LIGHTING_MODE.2=Sharp + +option.POM_ALLOW_CUTOUT=POM on Cutout Surfaces §c[-]§r +option.POM_ALLOW_CUTOUT.comment=Makes POM be able to work on cutout block sections (like gaps of leaves). §c[-]§r This effect can severely impact performance. + +option.DIRECTIONAL_BLOCKLIGHT=Directional Blocklight +option.DIRECTIONAL_BLOCKLIGHT.comment=Adds depth to blocklight depending on the surface normal. §c[-]§r May cause visual artifacts in some situations. §c[-]§r This effect can impact performance. §e[*]§r RP Support option must be set to labPBR/seuspbr, and a compatible resource pack must be used. +value.DIRECTIONAL_BLOCKLIGHT.0=OFF +value.DIRECTIONAL_BLOCKLIGHT.3=Subtle §c[-] +value.DIRECTIONAL_BLOCKLIGHT.7=Normal §c[-] +value.DIRECTIONAL_BLOCKLIGHT.11=Intense §c[-] + +option.HELD_LIGHTING_MODE=Dynamic Handheld Lighting +option.HELD_LIGHTING_MODE.comment=Allows handheld light sources to cast light onto the scene. +value.HELD_LIGHTING_MODE.0=§cOFF +value.HELD_LIGHTING_MODE.1=Subtle +value.HELD_LIGHTING_MODE.2=Normal + +option.WAVING_SPEED=Waving Speed +option.WAVING_SPEED.comment=Adjusts how quickly the waving effects happen. + +option.WAVING_I=Waving Intensity +option.WAVING_I.comment=Adjusts how much the blocks move when waving. §c[-]§r Too much waving intensity can cause waving blocks to clip in and out of other blocks. +value.WAVING_I.1.25=1.25 §c[-] +value.WAVING_I.1.50=1.50 §c[-] +value.WAVING_I.1.75=1.75 §c[-] +value.WAVING_I.2.00=2.00 §c[-] +value.WAVING_I.50.0=§cInsane + +option.NO_WAVING_INDOORS=No Waving in Closed Areas +option.NO_WAVING_INDOORS.comment=Prevents blocks from waving in closed areas using skylight. §c[-]§r This setting being enabled can cause problems with some resource packs or mods. + +option.WAVING_FOLIAGE=Waving Foliage +option.WAVING_FOLIAGE.comment=Adds movement to foliage to simulate wind. + +option.WAVING_LEAVES=Waving Leaves +option.WAVING_LEAVES.comment=Adds movement to leaves to simulate wind. + +option.WAVING_LAVA=Waving Lava Texture +option.WAVING_LAVA.comment=Adds constant movement to lava. §e[*]§r Lava waving in particular is not affected by the "No Waving in Closed Areas" setting. + +option.WAVING_WATER_VERTEX=Waving Water Texture +option.WAVING_WATER_VERTEX.comment=Adds movement to water position to simulate wind. §e[*]§r This option is not related to the "Water Wave Strength" setting. + +option.WAVING_RAIN=Waving Rain/Snow Texture +option.WAVING_RAIN.comment=Adds movement to falling rain and snow textures to make it look more dynamic. + +option.WORLD_OUTLINE=World Outline +option.WORLD_OUTLINE.comment=Adds bright outlines around blocks. §c[-]§r This effect can impact performance. + +option.WORLD_OUTLINE_THICKNESS=World Outline Thickness +option.WORLD_OUTLINE_THICKNESS.comment=Determines the thickness of the World Outline effect. §c[-]§r Increasing this setting can impact performance. + +option.WORLD_OUTLINE_I=World Outline Brightness +option.WORLD_OUTLINE_I.comment=Determines how intense the World Outline effect will be. + +option.DARK_OUTLINE=Dark Outline +option.DARK_OUTLINE.comment=Adds dark outlines around blocks. §c[-]§r This effect can impact performance. + +option.DARK_OUTLINE_THICKNESS=Dark Outline Thickness +option.DARK_OUTLINE_THICKNESS.comment=Determines the thickness of the Dark Outline effect. §c[-]§r Increasing this setting can impact performance. + +option.RAIN_PUDDLES=Rain Puddles +option.RAIN_PUDDLES.comment=Adds water puddles to the terrain during rain. §e[*]§r RP Support option must be set to anything but Basic, and Block Reflection Quality must be set to Medium or above. §c[-]§r Rain puddles can severely impact performance. +value.RAIN_PUDDLES.0=OFF +value.RAIN_PUDDLES.1=§aON - Puddles +value.RAIN_PUDDLES.2=§aON - Full Coverage +value.RAIN_PUDDLES.3=§aON - §cAlways§a Puddles +value.RAIN_PUDDLES.4=§aON - §cAlways§a Full + +option.UNDERWATER_DISTORTION=Underwater Distortion +option.UNDERWATER_DISTORTION.comment=Adds subtle refraction to the screen when the camera is inside water. + +option.SELECT_OUTLINE=Selection Outline +option.SELECT_OUTLINE.comment=Determines the color of the block selection outline. +value.SELECT_OUTLINE.0=§cOFF +value.SELECT_OUTLINE.1=Default +value.SELECT_OUTLINE.2=Rainbow +value.SELECT_OUTLINE.3=Select Color +value.SELECT_OUTLINE.4=Versatile + +option.SELECT_OUTLINE_I=SO Brightness +option.SELECT_OUTLINE_R=SO Red +option.SELECT_OUTLINE_G=SO Green +option.SELECT_OUTLINE_B=SO Blue + +option.MOON_PHASE_INF_LIGHT=Moon Phased Night Lighting +option.MOON_PHASE_INF_LIGHT.comment=Enables different moon phases to change the night lighting brightness. + +option.MOON_PHASE_INF_REFLECTION=Moon Phased Moon Reflection +option.MOON_PHASE_INF_REFLECTION.comment=Enables different moon phases to change the brightness of moon reflections. + +option.MOON_PHASE_FULL=Full Moon Intensity +option.MOON_PHASE_FULL.comment=Adjusts the moon phase influence during the Full Moon phase (brightest phase). + +option.MOON_PHASE_PARTIAL=Partial Moon Intensity +option.MOON_PHASE_PARTIAL.comment=Adjusts the moon phase influence during all moon phases between Full Moon and Dark Moon. This is the phase you will see the most in Minecraft. + +option.MOON_PHASE_DARK=Dark Moon Intensity +option.MOON_PHASE_DARK.comment=Adjusts the moon phase influence during New Moon (darkest phase). + +option.LIGHT_COLOR_MULTS=§eLighting Color Multipliers +option.LIGHT_COLOR_MULTS.comment=Enables customization of lighting colors that are seen on all surfaces. + +option.ATM_COLOR_MULTS=§eAtmosphere Color Multipliers +option.ATM_COLOR_MULTS.comment=Enables customization of atmosphere colors that are mostly seen in the sky and fog. + +option.LIGHT_MORNING_R=Lighting Red Multiplier +option.LIGHT_MORNING_G=Lighting Green Multiplier +option.LIGHT_MORNING_B=Lighting Blue Multiplier +option.LIGHT_MORNING_I=Lighting Intensity Multiplier +option.ATM_MORNING_R=Atmosphere Red Multiplier +option.ATM_MORNING_G=Atmosphere Green Multiplier +option.ATM_MORNING_B=Atmosphere Blue Multiplier +option.ATM_MORNING_I=Atmosphere Intensity Multiplier +option.LIGHT_NOON_R=Lighting Red Multiplier +option.LIGHT_NOON_G=Lighting Green Multiplier +option.LIGHT_NOON_B=Lighting Blue Multiplier +option.LIGHT_NOON_I=Lighting Intensity Multiplier +option.ATM_NOON_R=Atmosphere Red Multiplier +option.ATM_NOON_G=Atmosphere Green Multiplier +option.ATM_NOON_B=Atmosphere Blue Multiplier +option.ATM_NOON_I=Atmosphere Intensity Multiplier +option.LIGHT_NIGHT_R=Lighting Red Multiplier +option.LIGHT_NIGHT_G=Lighting Green Multiplier +option.LIGHT_NIGHT_B=Lighting Blue Multiplier +option.LIGHT_NIGHT_I=Lighting Intensity Multiplier +option.ATM_NIGHT_R=Atmosphere Red Multiplier +option.ATM_NIGHT_G=Atmosphere Green Multiplier +option.ATM_NIGHT_B=Atmosphere Blue Multiplier +option.ATM_NIGHT_I=Atmosphere Intensity Multiplier +option.LIGHT_RAIN_R=Lighting Red Multiplier +option.LIGHT_RAIN_G=Lighting Green Multiplier +option.LIGHT_RAIN_B=Lighting Blue Multiplier +option.LIGHT_RAIN_I=Lighting Intensity Multiplier +option.ATM_RAIN_R=Atmosphere Red Multiplier +option.ATM_RAIN_G=Atmosphere Green Multiplier +option.ATM_RAIN_B=Atmosphere Blue Multiplier +option.ATM_RAIN_I=Atmosphere Intensity Multiplier +option.LIGHT_NETHER_R=Lighting Red Multiplier +option.LIGHT_NETHER_G=Lighting Green Multiplier +option.LIGHT_NETHER_B=Lighting Blue Multiplier +option.LIGHT_NETHER_I=Lighting Intensity Multiplier +option.ATM_NETHER_R=Atmosphere Red Multiplier +option.ATM_NETHER_G=Atmosphere Green Multiplier +option.ATM_NETHER_B=Atmosphere Blue Multiplier +option.ATM_NETHER_I=Atmosphere Intensity Multiplier +option.LIGHT_END_R=Lighting Red Multiplier +option.LIGHT_END_G=Lighting Green Multiplier +option.LIGHT_END_B=Lighting Blue Multiplier +option.LIGHT_END_I=Lighting Intensity Multiplier +option.ATM_END_R=Atmosphere Red Multiplier +option.ATM_END_G=Atmosphere Green Multiplier +option.ATM_END_B=Atmosphere Blue Multiplier +option.ATM_END_I=Atmosphere Intensity Multiplier + +option.XLIGHT_R=Blocklight Red Multiplier +option.XLIGHT_G=Blocklight Green Multiplier +option.XLIGHT_B=Blocklight Blue Multiplier + +option.EYES=Eyes +option.EYE_FREQUENCY=Eye Frequency +option.EYE_SPEED=Eye Speed +option.EYE_RED_PROBABILITY=Red Eyes Probability +option.BLOOD_MOON=Blood Mood +value.BLOOD_MOON.0=Off +value.BLOOD_MOON.1=On - Full Moon +value.BLOOD_MOON.2=On - Every Night +option.EMISSIVE_BLOOD_MOON_FLOWERS=Emissive Blood Moon Flowers \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/antialiasing/fxaa.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/antialiasing/fxaa.glsl new file mode 100644 index 0000000..1fe67ea --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/antialiasing/fxaa.glsl @@ -0,0 +1,183 @@ +//FXAA 3.11 from http://blog.simonrodriguez.fr/articles/30-07-2016_implementing_fxaa.html +float quality[12] = float[12] (1.0, 1.0, 1.0, 1.0, 1.0, 1.5, 2.0, 2.0, 2.0, 2.0, 4.0, 8.0); + +void FXAA311(inout vec3 color) { + float edgeThresholdMin = 0.03125; + float edgeThresholdMax = 0.0625; + float subpixelQuality = 0.75; + int iterations = 12; + + vec2 view = 1.0 / vec2(viewWidth, viewHeight); + + float lumaCenter = GetLuminance(color); + #ifndef LIGHT_COLORING + float lumaDown = GetLuminance(texelFetch(colortex3, texelCoord + ivec2( 0, -1), 0).rgb); + float lumaUp = GetLuminance(texelFetch(colortex3, texelCoord + ivec2( 0, 1), 0).rgb); + float lumaLeft = GetLuminance(texelFetch(colortex3, texelCoord + ivec2(-1, 0), 0).rgb); + float lumaRight = GetLuminance(texelFetch(colortex3, texelCoord + ivec2( 1, 0), 0).rgb); + #else + float lumaDown = GetLuminance(texelFetch(colortex8, texelCoord + ivec2( 0, -1), 0).rgb); + float lumaUp = GetLuminance(texelFetch(colortex8, texelCoord + ivec2( 0, 1), 0).rgb); + float lumaLeft = GetLuminance(texelFetch(colortex8, texelCoord + ivec2(-1, 0), 0).rgb); + float lumaRight = GetLuminance(texelFetch(colortex8, texelCoord + ivec2( 1, 0), 0).rgb); + #endif + + float lumaMin = min(lumaCenter, min(min(lumaDown, lumaUp), min(lumaLeft, lumaRight))); + float lumaMax = max(lumaCenter, max(max(lumaDown, lumaUp), max(lumaLeft, lumaRight))); + + float lumaRange = lumaMax - lumaMin; + + if (lumaRange > max(edgeThresholdMin, lumaMax * edgeThresholdMax)) { + #ifndef LIGHT_COLORING + float lumaDownLeft = GetLuminance(texelFetch(colortex3, texelCoord + ivec2(-1, -1), 0).rgb); + float lumaUpRight = GetLuminance(texelFetch(colortex3, texelCoord + ivec2( 1, 1), 0).rgb); + float lumaUpLeft = GetLuminance(texelFetch(colortex3, texelCoord + ivec2(-1, 1), 0).rgb); + float lumaDownRight = GetLuminance(texelFetch(colortex3, texelCoord + ivec2( 1, -1), 0).rgb); + #else + float lumaDownLeft = GetLuminance(texelFetch(colortex8, texelCoord + ivec2(-1, -1), 0).rgb); + float lumaUpRight = GetLuminance(texelFetch(colortex8, texelCoord + ivec2( 1, 1), 0).rgb); + float lumaUpLeft = GetLuminance(texelFetch(colortex8, texelCoord + ivec2(-1, 1), 0).rgb); + float lumaDownRight = GetLuminance(texelFetch(colortex8, texelCoord + ivec2( 1, -1), 0).rgb); + #endif + + float lumaDownUp = lumaDown + lumaUp; + float lumaLeftRight = lumaLeft + lumaRight; + + float lumaLeftCorners = lumaDownLeft + lumaUpLeft; + float lumaDownCorners = lumaDownLeft + lumaDownRight; + float lumaRightCorners = lumaDownRight + lumaUpRight; + float lumaUpCorners = lumaUpRight + lumaUpLeft; + + float edgeHorizontal = abs(-2.0 * lumaLeft + lumaLeftCorners ) + + abs(-2.0 * lumaCenter + lumaDownUp ) * 2.0 + + abs(-2.0 * lumaRight + lumaRightCorners); + float edgeVertical = abs(-2.0 * lumaUp + lumaUpCorners ) + + abs(-2.0 * lumaCenter + lumaLeftRight ) * 2.0 + + abs(-2.0 * lumaDown + lumaDownCorners ); + + bool isHorizontal = (edgeHorizontal >= edgeVertical); + + float luma1 = isHorizontal ? lumaDown : lumaLeft; + float luma2 = isHorizontal ? lumaUp : lumaRight; + float gradient1 = luma1 - lumaCenter; + float gradient2 = luma2 - lumaCenter; + + bool is1Steepest = abs(gradient1) >= abs(gradient2); + float gradientScaled = 0.25 * max(abs(gradient1), abs(gradient2)); + + float stepLength = isHorizontal ? view.y : view.x; + + float lumaLocalAverage = 0.0; + + if (is1Steepest) { + stepLength = - stepLength; + lumaLocalAverage = 0.5 * (luma1 + lumaCenter); + } else { + lumaLocalAverage = 0.5 * (luma2 + lumaCenter); + } + + vec2 currentUv = texCoord; + if (isHorizontal) { + currentUv.y += stepLength * 0.5; + } else { + currentUv.x += stepLength * 0.5; + } + + vec2 offset = isHorizontal ? vec2(view.x, 0.0) : vec2(0.0, view.y); + + vec2 uv1 = currentUv - offset; + vec2 uv2 = currentUv + offset; + + #ifndef LIGHT_COLORING + float lumaEnd1 = GetLuminance(texture2D(colortex3, uv1).rgb); + float lumaEnd2 = GetLuminance(texture2D(colortex3, uv2).rgb); + #else + float lumaEnd1 = GetLuminance(texture2D(colortex8, uv1).rgb); + float lumaEnd2 = GetLuminance(texture2D(colortex8, uv2).rgb); + #endif + lumaEnd1 -= lumaLocalAverage; + lumaEnd2 -= lumaLocalAverage; + + bool reached1 = abs(lumaEnd1) >= gradientScaled; + bool reached2 = abs(lumaEnd2) >= gradientScaled; + bool reachedBoth = reached1 && reached2; + + if (!reached1) { + uv1 -= offset; + } + if (!reached2) { + uv2 += offset; + } + + if (!reachedBoth) { + for (int i = 2; i < iterations; i++) { + if (!reached1) { + #ifndef LIGHT_COLORING + lumaEnd1 = GetLuminance(texture2D(colortex3, uv1).rgb); + #else + lumaEnd1 = GetLuminance(texture2D(colortex8, uv1).rgb); + #endif + lumaEnd1 = lumaEnd1 - lumaLocalAverage; + } + if (!reached2) { + #ifndef LIGHT_COLORING + lumaEnd2 = GetLuminance(texture2D(colortex3, uv2).rgb); + #else + lumaEnd2 = GetLuminance(texture2D(colortex8, uv2).rgb); + #endif + lumaEnd2 = lumaEnd2 - lumaLocalAverage; + } + + reached1 = abs(lumaEnd1) >= gradientScaled; + reached2 = abs(lumaEnd2) >= gradientScaled; + reachedBoth = reached1 && reached2; + + if (!reached1) { + uv1 -= offset * quality[i]; + } + if (!reached2) { + uv2 += offset * quality[i]; + } + + if (reachedBoth) break; + } + } + + float distance1 = isHorizontal ? (texCoord.x - uv1.x) : (texCoord.y - uv1.y); + float distance2 = isHorizontal ? (uv2.x - texCoord.x) : (uv2.y - texCoord.y); + + bool isDirection1 = distance1 < distance2; + float distanceFinal = min(distance1, distance2); + + float edgeThickness = (distance1 + distance2); + + float pixelOffset = - distanceFinal / edgeThickness + 0.5; + + bool isLumaCenterSmaller = lumaCenter < lumaLocalAverage; + + bool correctVariation = ((isDirection1 ? lumaEnd1 : lumaEnd2) < 0.0) != isLumaCenterSmaller; + + float finalOffset = correctVariation ? pixelOffset : 0.0; + + float lumaAverage = (1.0 / 12.0) * (2.0 * (lumaDownUp + lumaLeftRight) + lumaLeftCorners + lumaRightCorners); + float subPixelOffset1 = clamp(abs(lumaAverage - lumaCenter) / lumaRange, 0.0, 1.0); + float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1; + float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * subpixelQuality; + + finalOffset = max(finalOffset, subPixelOffsetFinal); + + // Compute the final UV coordinates. + vec2 finalUv = texCoord; + if (isHorizontal) { + finalUv.y += finalOffset * stepLength; + } else { + finalUv.x += finalOffset * stepLength; + } + + #ifndef LIGHT_COLORING + color = texture2D(colortex3, finalUv).rgb; + #else + color = texture2D(colortex8, finalUv).rgb; + #endif + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/antialiasing/taa.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/antialiasing/taa.glsl new file mode 100644 index 0000000..36d55ec --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/antialiasing/taa.glsl @@ -0,0 +1,146 @@ +const float regularEdge = 20.0; +const float extraEdgeMult = 3.0; + +// Previous frame reprojection from Chocapic13 +vec2 Reprojection(vec3 pos, vec3 cameraOffset) { + pos = pos * 2.0 - 1.0; + + vec4 viewPosPrev = gbufferProjectionInverse * vec4(pos, 1.0); + viewPosPrev /= viewPosPrev.w; + viewPosPrev = gbufferModelViewInverse * viewPosPrev; + + vec4 previousPosition = viewPosPrev + vec4(cameraOffset, 0.0); + previousPosition = gbufferPreviousModelView * previousPosition; + previousPosition = gbufferPreviousProjection * previousPosition; + return previousPosition.xy / previousPosition.w * 0.5 + 0.5; +} + +vec3 RGBToYCoCg(vec3 col) { + return vec3( + col.r * 0.25 + col.g * 0.5 + col.b * 0.25, + col.r * 0.5 - col.b * 0.5, + col.r * -0.25 + col.g * 0.5 + col.b * -0.25 + ); +} + +vec3 YCoCgToRGB(vec3 col) { + float n = col.r - col.b; + return vec3(n + col.g, col.r + col.b, n - col.g); +} + +vec3 ClipAABB(vec3 q,vec3 aabb_min, vec3 aabb_max){ + vec3 p_clip = 0.5 * (aabb_max + aabb_min); + vec3 e_clip = 0.5 * (aabb_max - aabb_min) + 0.00000001; + + vec3 v_clip = q - vec3(p_clip); + vec3 v_unit = v_clip.xyz / e_clip; + vec3 a_unit = abs(v_unit); + float ma_unit = max(a_unit.x, max(a_unit.y, a_unit.z)); + + if (ma_unit > 1.0) + return vec3(p_clip) + v_clip / ma_unit; + else + return q; +} + +ivec2 neighbourhoodOffsets[8] = ivec2[8]( + ivec2( 1, 1), + ivec2( 1,-1), + ivec2(-1, 1), + ivec2(-1,-1), + ivec2( 1, 0), + ivec2( 0, 1), + ivec2(-1, 0), + ivec2( 0,-1) +); + +void NeighbourhoodClamping(vec3 color, inout vec3 tempColor, float depth, inout float edge) { + vec3 minclr = RGBToYCoCg(color); + vec3 maxclr = minclr; + + for (int i = 0; i < 8; i++) { + ivec2 texelCoordM = texelCoord + neighbourhoodOffsets[i]; + + float depthCheck = texelFetch(depthtex1, texelCoordM, 0).r; + if (abs(GetLinearDepth(depthCheck) - GetLinearDepth(depth)) > 0.09) { + edge = regularEdge; + + if (int(texelFetch(colortex1, texelCoordM, 0).g * 255.1) == 253) // Reduced Edge TAA + edge *= extraEdgeMult; + } + + #ifndef LIGHT_COLORING + vec3 clr = texelFetch(colortex3, texelCoordM, 0).rgb; + #else + vec3 clr = texelFetch(colortex8, texelCoordM, 0).rgb; + #endif + clr = RGBToYCoCg(clr); + minclr = min(minclr, clr); maxclr = max(maxclr, clr); + } + + tempColor = RGBToYCoCg(tempColor); + tempColor = ClipAABB(tempColor, minclr, maxclr); + tempColor = YCoCgToRGB(tempColor); +} + +void DoTAA(inout vec3 color, inout vec3 temp, float depth) { + int materialMask = int(texelFetch(colortex1, texelCoord, 0).g * 255.1); + + if (materialMask == 254) { // No SSAO, No TAA + int i = 0; + while (i < 4) { + int mms = int(texelFetch(colortex1, texelCoord + neighbourhoodOffsets[i], 0).g * 255.1); + if (mms != materialMask) break; + i++; + } // Checking edge-pixels prevents flickering + if (i == 4) return; + } + + #ifndef TEMPORAL_FILTER + depth = texelFetch(depthtex1, texelCoord, 0).r; + #endif + + #if defined CUSTOM_PBR || defined IPBR && defined IS_IRIS + if (depth <= 0.56) return; // materialMask might be occupied, so we do the check manually + #endif + + vec3 coord = vec3(texCoord, depth); + vec3 cameraOffset = cameraPosition - previousCameraPosition; + vec2 prvCoord = Reprojection(coord, cameraOffset); + + vec2 view = vec2(viewWidth, viewHeight); + vec3 tempColor = texture2D(colortex2, prvCoord).rgb; + if (tempColor == vec3(0.0)) { // Fixes the first frame + temp = color; + return; + } + + float edge = 0.0; + NeighbourhoodClamping(color, tempColor, depth, edge); + + if (materialMask == 253) // Reduced Edge TAA + edge *= extraEdgeMult; + + vec2 velocity = (texCoord - prvCoord.xy) * view; + float blendFactor = float(prvCoord.x > 0.0 && prvCoord.x < 1.0 && + prvCoord.y > 0.0 && prvCoord.y < 1.0); + //float blendMinimum = 0.6; + //float blendVariable = 0.5; + //float blendConstant = 0.4; + float blendMinimum = 0.3; + float blendVariable = 0.2; + float blendConstant = 0.7; + float velocityFactor = dot(velocity, velocity) * 10.0; + blendFactor *= max(exp(-velocityFactor) * blendVariable + blendConstant - length(cameraOffset) * edge, blendMinimum); + + #ifdef IS_IRIS + if (lightning > 0.0) blendFactor = 0.0; + #else + if (lightningFlashOptifine > 0.0) blendFactor = 0.0; + #endif + + color = mix(color, tempColor, blendFactor); + temp = color; + + //if (edge > 0.05) color.rgb = vec3(1.0, 0.0, 1.0); +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/auroraBorealis.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/auroraBorealis.glsl new file mode 100644 index 0000000..68b40e8 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/auroraBorealis.glsl @@ -0,0 +1,65 @@ +vec3 GetAuroraBorealis(vec3 viewPos, float VdotU, float dither) { + float visibility = sqrt1(clamp01(VdotU * 1.5 - 0.225)) - sunVisibility; + visibility -= mix(0.0, rainFactor, heightRelativeToCloud); + visibility *= 1.0 - VdotU * 0.9; + + #if AURORA_CONDITION == 1 || AURORA_CONDITION == 3 + visibility -= moonPhase; + #endif + #if AURORA_CONDITION == 2 || AURORA_CONDITION == 3 + visibility *= inSnowy; + #endif + #if AURORA_CONDITION == 4 + visibility = max(visibility * inSnowy, visibility - moonPhase); + #endif + + if (visibility > 0.0) { + if (max(blindness, darknessFactor) > 0.1) return vec3(0.0); + + vec3 aurora = vec3(0.0); + + vec3 wpos = (gbufferModelViewInverse * vec4(viewPos, 1.0)).xyz; + wpos.xz /= wpos.y; + vec2 cameraPositionM = cameraPosition.xz * 0.0075; + cameraPositionM.x += syncedTime * 0.04; + + int sampleCount = 25; + int sampleCountP = sampleCount + 5; + float ditherM = dither + 5.0; + float auroraAnimate = frameTimeCounter * 0.001; + for (int i = 0; i < sampleCount; i++) { + float current = pow2((i + ditherM) / sampleCountP); + + vec2 planePos = wpos.xz * (0.8 + current) * 11.0 + cameraPositionM; + #if AURORA_STYLE == 1 + planePos = floor(planePos) * 0.0007; + + float noise = texture2D(noisetex, planePos).b; + noise = pow2(pow2(pow2(pow2(1.0 - 2.0 * abs(noise - 0.5))))); + + noise *= pow1_5(texture2D(noisetex, planePos * 100.0 + auroraAnimate).b); + #else + planePos *= 0.0007; + + float noise = texture2D(noisetex, planePos).r; + noise = pow2(pow2(pow2(pow2(1.0 - 2.0 * abs(noise - 0.5))))); + + noise *= texture2D(noisetex, planePos * 3.0 + auroraAnimate).b; + noise *= texture2D(noisetex, planePos * 5.0 - auroraAnimate).b; + #endif + + float currentM = 1.0 - current; + aurora += noise * currentM * mix(vec3(0.0, 7.0, 7.0), vec3(20.0, 0.0, 0.0), pow2(pow2(currentM))); + } + + #if AURORA_STYLE == 1 + aurora *= 1.3; + #else + aurora *= 1.8; + #endif + + return aurora * visibility / sampleCount; + } + + return vec3(0.0); +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/cloudCoord.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/cloudCoord.glsl new file mode 100644 index 0000000..76467f4 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/cloudCoord.glsl @@ -0,0 +1,30 @@ +const float cloudNarrowness = 0.05; + +#ifdef DEFERRED1 + const float cloudRoundness = 0.125; // for clouds +#else + const float cloudRoundness = 0.35; // for cloud shadows +#endif + +vec2 GetRoundedCloudCoord(vec2 pos) { // Thanks to SixthSurge + vec2 coord = pos.xy + 0.5; + vec2 signCoord = sign(coord); + coord = abs(coord) + 1.0; + vec2 i, f = modf(coord, i); + f = smoothstep(0.5 - cloudRoundness, 0.5 + cloudRoundness, f); + coord = i + f; + return (coord - 0.5) * signCoord / 256.0; +} + +vec3 ModifyTracePos(vec3 tracePos, int cloudAltitude) { + #if CLOUD_SPEED_MULT == 100 + float wind = syncedTime; + #else + #define CLOUD_SPEED_MULT_M CLOUD_SPEED_MULT * 0.01 + float wind = frameTimeCounter * CLOUD_SPEED_MULT_M; + #endif + tracePos.x += wind; + tracePos.z += cloudAltitude * 64.0; + tracePos.xz *= cloudNarrowness; + return tracePos.xyz; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/mainClouds.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/mainClouds.glsl new file mode 100644 index 0000000..b254736 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/mainClouds.glsl @@ -0,0 +1,90 @@ +#include "/spookylib/colors/lightAndAmbientColors.glsl" +#include "/spookylib/colors/cloudColors.glsl" +#include "/spookylib/atmospherics/sky.glsl" + +float InterleavedGradientNoise() { + float n = 52.9829189 * fract(0.06711056 * gl_FragCoord.x + 0.00583715 * gl_FragCoord.y); + #ifdef TAA + return fract(n + 1.61803398875 * mod(float(frameCounter), 3600.0)); + #else + return fract(n); + #endif +} + +#ifdef REALTIME_SHADOWS + vec3 GetShadowOnCloudPosition(vec3 tracePos) { + vec3 wpos = PlayerToShadow(tracePos - cameraPosition); + float distb = sqrt(wpos.x * wpos.x + wpos.y * wpos.y); + float distortFactor = 1.0 - shadowMapBias + distb * shadowMapBias; + vec3 shadowPosition = vec3(vec2(wpos.xy / distortFactor), wpos.z * 0.2); + return shadowPosition * 0.5 + 0.5; + } + + bool GetShadowOnCloud(vec3 tracePos, int cloudAltitude, float lowerPlaneAltitude, float higherPlaneAltitude) { + const float cloudShadowOffset = 0.5; + + vec3 shadowPosition0 = GetShadowOnCloudPosition(tracePos); + if (length(shadowPosition0.xy * 2.0 - 1.0) < 1.0) { + float shadowsample0 = shadow2D(shadowtex0, shadowPosition0).z; + + if (shadowsample0 == 0.0) return true; + } + + return false; + } +#endif + +#ifdef CLOUDS_REIMAGINED + #include "/spookylib/atmospherics/clouds/reimaginedClouds.glsl" +#endif +#ifdef CLOUDS_UNBOUND + #include "/spookylib/atmospherics/clouds/unboundClouds.glsl" +#endif + +vec4 GetClouds(inout float cloudLinearDepth, float skyFade, vec3 playerPos, vec3 viewPos, float lViewPos, float VdotS, float VdotU, float dither) { + vec4 clouds = vec4(0.0); + + vec3 nPlayerPos = normalize(playerPos); + float lViewPosM = lViewPos < far * 1.5 ? lViewPos - 1.0 : 1000000000.0; + float skyMult0 = pow2(skyFade * 3.333333 - 2.333333); + #if BLOOD_MOON > 0 + cloudAmbientColor *= mix(vec3(1.0), vec3(1.0, 0.0, 0.0) * 20.0, getBloodMoon(moonPhase, sunVisibility)); + #endif + + #ifdef CLOUDS_REIMAGINED + cloudAmbientColor *= 1.0 - 0.25 * rainFactor; + + const float threshold1 = 1000.0; + const float threshold2 = 1000.0; + + #ifndef DOUBLE_REIM_CLOUDS + clouds = + GetVolumetricClouds(cloudAlt1i, threshold1, cloudLinearDepth, skyFade, skyMult0, nPlayerPos, lViewPosM, VdotS, VdotU, dither); + #else + int maxCloudAlt = max(cloudAlt1i, cloudAlt2i); + int minCloudAlt = min(cloudAlt1i, cloudAlt2i); + + if (abs(cameraPosition.y - minCloudAlt) < abs(cameraPosition.y - maxCloudAlt)) { + clouds = + GetVolumetricClouds(minCloudAlt, threshold1, cloudLinearDepth, skyFade, skyMult0, nPlayerPos, lViewPosM, VdotS, VdotU, dither); + if (clouds.a == 0.0) clouds = + GetVolumetricClouds(maxCloudAlt, threshold2, cloudLinearDepth, skyFade, skyMult0, nPlayerPos, lViewPosM, VdotS, VdotU, dither); + } else { + clouds = + GetVolumetricClouds(maxCloudAlt, threshold2, cloudLinearDepth, skyFade, skyMult0, nPlayerPos, lViewPosM, VdotS, VdotU, dither); + if (clouds.a == 0.0) clouds = + GetVolumetricClouds(minCloudAlt, threshold1, cloudLinearDepth, skyFade, skyMult0, nPlayerPos, lViewPosM, VdotS, VdotU, dither); + } + #endif + #endif + + #ifdef CLOUDS_UNBOUND + float thresholdMix = pow2(clamp01(VdotU * 5.0)); + float thresholdF = mix(far, 1000.0, thresholdMix * 0.5 + 0.5); + + clouds = + GetVolumetricClouds(cloudAlt1i, thresholdF, cloudLinearDepth, skyFade, skyMult0, nPlayerPos, lViewPosM, VdotS, VdotU, dither); + #endif + + return clouds; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/reimaginedClouds.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/reimaginedClouds.glsl new file mode 100644 index 0000000..4e72768 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/reimaginedClouds.glsl @@ -0,0 +1,117 @@ +#include "/spookylib/atmospherics/clouds/cloudCoord.glsl" + +const float cloudStretch = 5.5; +const float cloudHeightShader = cloudStretch * 2.0; + +bool GetCloudNoise(vec3 tracePos, inout vec3 tracePosM, int cloudAltitude) { + tracePosM = ModifyTracePos(tracePos, cloudAltitude); + vec2 coord = GetRoundedCloudCoord(tracePosM.xz); + float noise = texture2D(colortex3, coord).b; + + float threshold = clamp(abs(cloudAltitude - tracePos.y) / cloudStretch, 0.001, 0.999); + threshold = pow2(pow2(pow2(threshold))); + return noise > threshold * 0.5 + 0.25; +} + +vec4 GetVolumetricClouds(int cloudAltitude, float distanceThreshold, inout float cloudLinearDepth, float skyFade, float skyMult0, vec3 nPlayerPos, float lViewPosM, float VdotS, float VdotU, float dither) { + vec4 volumetricClouds = vec4(0.0); + + float higherPlaneAltitude = cloudAltitude + cloudStretch; + float lowerPlaneAltitude = cloudAltitude - cloudStretch; + + float lowerPlaneDistance = (lowerPlaneAltitude - cameraPosition.y) / nPlayerPos.y; + float higherPlaneDistance = (higherPlaneAltitude - cameraPosition.y) / nPlayerPos.y; + float minPlaneDistance = min(lowerPlaneDistance, higherPlaneDistance); + minPlaneDistance = max(minPlaneDistance, 0.0); + float maxPlaneDistance = max(lowerPlaneDistance, higherPlaneDistance); + if (maxPlaneDistance < 0.0) return vec4(0.0); + float planeDistanceDif = maxPlaneDistance - minPlaneDistance; + + #if CLOUD_QUALITY == 1 + int sampleCount = max(int(planeDistanceDif) / 16, 6); + #elif CLOUD_QUALITY == 2 + int sampleCount = max(int(planeDistanceDif) / 8, 12); + #elif CLOUD_QUALITY == 3 + int sampleCount = max(int(planeDistanceDif), 12); + #endif + + float stepMult = planeDistanceDif / sampleCount; + vec3 traceAdd = nPlayerPos * stepMult; + vec3 tracePos = cameraPosition + minPlaneDistance * nPlayerPos; + tracePos += traceAdd * dither; + tracePos.y -= traceAdd.y; + + for (int i = 0; i < sampleCount; i++) { + tracePos += traceAdd; + + vec3 cloudPlayerPos = tracePos - cameraPosition; + float lTracePos = length(cloudPlayerPos); + float lTracePosXZ = length(cloudPlayerPos.xz); + float cloudMult = 1.0; + if (lTracePosXZ > distanceThreshold) break; + if (lTracePos > lViewPosM) { + if (skyFade < 0.7) continue; + else cloudMult = skyMult0; + } + + vec3 tracePosM; + if (GetCloudNoise(tracePos, tracePosM, cloudAltitude)) { + float lightMult = 1.0; + + #ifdef REALTIME_SHADOWS + if (GetShadowOnCloud(tracePos, cloudAltitude, lowerPlaneAltitude, higherPlaneAltitude)) { + #ifdef CLOUD_CLOSED_AREA_CHECK + if (eyeBrightness.y != 240) continue; + else + #endif + lightMult = 0.25; + } + #endif + + float cloudShading = 1.0 - (higherPlaneAltitude - tracePos.y) / cloudHeightShader; + float VdotSM1 = max0(sunVisibility > 0.5 ? VdotS : - VdotS); + + #if CLOUD_QUALITY >= 2 + float cloudShadingM = 1.0 - pow2(cloudShading); + + float gradientNoise = InterleavedGradientNoise(); + + vec3 cLightPos = tracePosM; + vec3 cLightPosAdd = normalize(ViewToPlayer(lightVec * 1000000000.0)) * vec3(0.08); + cLightPosAdd *= shadowTime; + + float light = 2.0; + cLightPos += (1.0 + gradientNoise) * cLightPosAdd; + light -= texture2D(colortex3, GetRoundedCloudCoord(cLightPos.xz)).b * cloudShadingM; + cLightPos += gradientNoise * cLightPosAdd; + light -= texture2D(colortex3, GetRoundedCloudCoord(cLightPos.xz)).b * cloudShadingM; + + float VdotSM2 = VdotSM1 * shadowTime * 0.25; + VdotSM2 += 0.5 * cloudShading + 0.08; + cloudShading = VdotSM2 * light * lightMult; + #endif + + vec3 colorSample = cloudAmbientColor + cloudLightColor * (0.07 + cloudShading); + #ifdef IS_IRIS + vec2 lightningAdd = lightningFlashEffect(tracePos - cameraPosition, lightningBoltPosition.xyz, vec3(1.0), 450.0) * lightningBoltPosition.w * 10.0; + colorSample += lightningAdd.y; + #else + vec2 lightningAdd = lightningFlashEffect(tracePos - cameraPosition, vec3(0.0, exp(1.0) - 1000.0, 0.0), vec3(1.0), 450.0) * lightningFlashOptifine * 10.0; + colorSample += lightningAdd.y; + #endif + vec3 cloudSkyColor = GetSky(VdotU, VdotS, dither, true, false); + float cloudFogFactor = clamp((distanceThreshold - lTracePosXZ) / distanceThreshold, 0.0, 0.75); + float skyMult1 = 1.0 - 0.2 * (1.0 - skyFade) * max(sunVisibility2, nightFactor); + float skyMult2 = 1.0 - 0.33333 * skyFade; + colorSample = mix(cloudSkyColor, colorSample * skyMult1, cloudFogFactor * skyMult2); + colorSample *= pow2(1.0 - max(blindness, darknessFactor)); + + cloudLinearDepth = sqrt(lTracePos / far); + volumetricClouds.a = pow(cloudFogFactor * 1.33333, 0.5 + 10.0 * pow(abs(VdotSM1), 90.0)) * cloudMult; + volumetricClouds.rgb = colorSample; + break; + } + } + + return volumetricClouds; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/unboundClouds.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/unboundClouds.glsl new file mode 100644 index 0000000..b9edd23 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/clouds/unboundClouds.glsl @@ -0,0 +1,191 @@ +#if CLOUD_UNBOUND_SIZE_MULT != 100 + #define CLOUD_UNBOUND_SIZE_MULT_M CLOUD_UNBOUND_SIZE_MULT * 0.01 +#endif + +#if CLOUD_QUALITY == 1 + const float cloudStretchRaw = 11.0; +#elif CLOUD_QUALITY == 2 + const float cloudStretchRaw = 16.0; +#elif CLOUD_QUALITY == 3 + const float cloudStretchRaw = 18.0; +#endif +#if CLOUD_UNBOUND_SIZE_MULT <= 100 + const float cloudStretch = cloudStretchRaw; +#else + const float cloudStretch = cloudStretchRaw / float(CLOUD_UNBOUND_SIZE_MULT_M); +#endif + +const float cloudHeightShader = cloudStretch * 2.0; + +float Noise3D(vec3 p) { + p.z = fract(p.z) * 128.0; + float iz = floor(p.z); + float fz = fract(p.z); + vec2 a_off = vec2(23.0, 29.0) * (iz) / 128.0; + vec2 b_off = vec2(23.0, 29.0) * (iz + 1.0) / 128.0; + float a = texture2D(noisetex, p.xy + a_off).r; + float b = texture2D(noisetex, p.xy + b_off).r; + return mix(a, b, fz); +} + +float GetCloudNoise(vec3 tracePos, int cloudAltitude, float lTracePosXZ, float cloudPlayerPosY) { + vec3 tracePosM = tracePos.xyz * 0.00016; + float wind = 0.0006; + float noise = 0.0; + float currentPersist = 1.0; + float total = 0.0; + + #if CLOUD_SPEED_MULT == 100 + #define CLOUD_SPEED_MULT_M CLOUD_SPEED_MULT * 0.01 + wind *= syncedTime; + #else + #define CLOUD_SPEED_MULT_M CLOUD_SPEED_MULT * 0.01 + wind *= frameTimeCounter * CLOUD_SPEED_MULT_M; + #endif + #if CLOUD_UNBOUND_SIZE_MULT != 100 + tracePosM *= CLOUD_UNBOUND_SIZE_MULT_M; + wind *= CLOUD_UNBOUND_SIZE_MULT_M; + #endif + + #if CLOUD_QUALITY == 1 + int sampleCount = 2; + float persistance = 0.6; + float noiseMult = 0.95; + tracePosM *= 0.5; wind *= 0.5; + #elif CLOUD_QUALITY == 2 + int sampleCount = 4; + float persistance = 0.5; + float noiseMult = 1.07; + #elif CLOUD_QUALITY == 3 + int sampleCount = 4; + float persistance = 0.5; + float noiseMult = 1.0; + #endif + + for (int i = 0; i < sampleCount; i++) { + #if CLOUD_QUALITY >= 2 + noise += Noise3D(tracePosM + vec3(wind, 0.0, 0.0)) * currentPersist; + #else + noise += texture2D(noisetex, tracePosM.xz + vec2(wind, 0.0)).b * currentPersist; + #endif + total += currentPersist; + + tracePosM *= 3.0; + wind *= 0.5; + currentPersist *= persistance; + } + noise = pow2(noise / total); + noiseMult *= 0.65 + 0.01 * sqrt(lTracePosXZ + 10.0) // more clouds far away + + 0.1 * clamp01(-cloudPlayerPosY / cloudHeightShader) // more clouds when camera is above them + + 0.4 * rainFactor + 0.5 ; // more clouds during rain + noise *= noiseMult * CLOUD_UNBOUND_AMOUNT; + + float threshold = clamp(abs(cloudAltitude - tracePos.y) / cloudStretch, 0.001, 0.999); + threshold = pow2(pow2(pow2(threshold))); + return noise - (threshold * 0.2 + 0.25); +} + +vec4 GetVolumetricClouds(int cloudAltitude, float distanceThreshold, inout float cloudLinearDepth, float skyFade, float skyMult0, vec3 nPlayerPos, float lViewPosM, float VdotS, float VdotU, float dither) { + vec4 volumetricClouds = vec4(0.0); + + float higherPlaneAltitude = cloudAltitude + cloudStretch; + float lowerPlaneAltitude = cloudAltitude - cloudStretch; + + float lowerPlaneDistance = (lowerPlaneAltitude - cameraPosition.y) / nPlayerPos.y; + float higherPlaneDistance = (higherPlaneAltitude - cameraPosition.y) / nPlayerPos.y; + float minPlaneDistance = min(lowerPlaneDistance, higherPlaneDistance); + minPlaneDistance = max(minPlaneDistance, 0.0); + float maxPlaneDistance = max(lowerPlaneDistance, higherPlaneDistance); + if (maxPlaneDistance < 0.0) return vec4(0.0); + float planeDistanceDif = maxPlaneDistance - minPlaneDistance; + + #if CLOUD_QUALITY == 1 + float stepMult = 16.0; + #elif CLOUD_QUALITY == 2 + float stepMult = 24.0; + #elif CLOUD_QUALITY == 3 + float stepMult = 16.0; + #endif + + #if CLOUD_UNBOUND_SIZE_MULT > 100 + stepMult = stepMult / sqrt(float(CLOUD_UNBOUND_SIZE_MULT_M)); + #endif + + int sampleCount = int(planeDistanceDif / stepMult + dither + 1); + vec3 traceAdd = nPlayerPos * stepMult; + vec3 tracePos = cameraPosition + minPlaneDistance * nPlayerPos; + tracePos += traceAdd * dither; + tracePos.y -= traceAdd.y; + + float firstHitPos = 0.0; + float VdotSM1 = max0(sunVisibility > 0.5 ? VdotS : - VdotS); + float VdotSM1M = VdotSM1 * invRainFactor; + float VdotSM2 = pow2(VdotSM1) * abs(sunVisibility - 0.5) * 2.0; + float VdotSM3 = VdotSM2 * (2.5 + rainFactor) + 1.5 * rainFactor; + + for (int i = 0; i < sampleCount; i++) { + tracePos += traceAdd; + + if (abs(tracePos.y - cloudAltitude) > cloudStretch) break; + + vec3 cloudPlayerPos = tracePos - cameraPosition; + float lTracePos = length(cloudPlayerPos); + float lTracePosXZ = length(cloudPlayerPos.xz); + float cloudMult = 1.0; + if (lTracePosXZ > distanceThreshold) break; + if (lTracePos > lViewPosM) { + if (skyFade < 0.7) continue; + else cloudMult = skyMult0; + } + + float cloudNoise = GetCloudNoise(tracePos, cloudAltitude, lTracePosXZ, cloudPlayerPos.y); + + if (cloudNoise > 0.00001) { + #if defined CLOUD_CLOSED_AREA_CHECK && defined REALTIME_SHADOWS + if (GetShadowOnCloud(tracePos, cloudAltitude, lowerPlaneAltitude, higherPlaneAltitude)) { + if (eyeBrightness.y != 240) continue; + } + #endif + + if (firstHitPos < 1.0) { + firstHitPos = lTracePos; + #if CLOUD_QUALITY == 1 + tracePos.y += 4.0 * (texture2D(noisetex, tracePos.xz * 0.001).r - 0.5); + #endif + } + + float opacityFactor = min1(cloudNoise * 8.0); + + float cloudShading = 1.0 - (higherPlaneAltitude - tracePos.y) / cloudHeightShader; + cloudShading *= 1.0 + 0.75 * VdotSM3 * (1.0 - opacityFactor); + + vec3 colorSample = cloudAmbientColor * (0.7 + 0.3 * cloudShading) + cloudLightColor * cloudShading; + //vec3 colorSample = 2.5 * cloudLightColor * pow2(cloudShading); // <-- Used this to take the Unbound logo + #ifdef IS_IRIS + vec2 lightningAdd = lightningFlashEffect(tracePos - cameraPosition, lightningBoltPosition.xyz, vec3(1.0), 400.0) * lightningBoltPosition.w * 10.0; + colorSample += lightningAdd.y; + #else + vec2 lightningAdd = lightningFlashEffect(tracePos - cameraPosition, vec3(0.0, exp(1.0) - 1000.0, 0.0), vec3(1.0), 400.0) * lightningFlashOptifine * 10.0; + colorSample += lightningAdd.y; + #endif + vec3 cloudSkyColor = GetSky(VdotU, VdotS, dither, true, false); + float cloudFogFactor = clamp((distanceThreshold - lTracePosXZ) / distanceThreshold, 0.0, 0.8) * 1.25; + float skyMult1 = 1.0 - 0.2 * (1.0 - skyFade) * max(sunVisibility2, nightFactor); + float skyMult2 = 1.0 - 0.33333 * skyFade; + colorSample = mix(cloudSkyColor, colorSample * skyMult1, cloudFogFactor * skyMult2 * 0.72); + colorSample *= pow2(1.0 - max(blindness, darknessFactor)); + + volumetricClouds.rgb = mix(volumetricClouds.rgb, colorSample, 1.0 - min1(volumetricClouds.a)); + volumetricClouds.a += opacityFactor * pow(cloudFogFactor, 0.5 + 10.0 * pow(abs(VdotSM1M), 90.0)) * cloudMult; + + if (volumetricClouds.a > 0.9) { + volumetricClouds.a = 1.0; + break; + } + } + } + + if (volumetricClouds.a > 0.5) cloudLinearDepth = sqrt(firstHitPos / far); + + return volumetricClouds; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/enderBeams.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/enderBeams.glsl new file mode 100644 index 0000000..6cf201e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/enderBeams.glsl @@ -0,0 +1,63 @@ +#ifndef INCLUDE_ENDERBEAMS +#define INCLUDE_ENDERBEAMS + +#include "/spookylib/colors/lightAndAmbientColors.glsl" + +vec3 endOrangeCol = vec3(1.0, 0.3, 0.0); +vec3 beamPurple = normalize(ambientColor * ambientColor * ambientColor) * (2.5 - 1.0 * vlFactor); +vec3 beamOrange = endOrangeCol * (300.0 + 700.0 * vlFactor); + +vec2 wind = vec2(syncedTime * 0.00); + +float BeamNoise(vec2 planeCoord, vec2 wind) { + float noise = texture2D(noisetex, planeCoord * 0.175 - wind * 0.0625).b; + noise+= texture2D(noisetex, planeCoord * 0.04375 + wind * 0.0375).b * 5.0; + + return noise; +} + +vec3 DrawEnderBeams(float VdotU, vec3 playerPos) { + int sampleCount = 8; + + float VdotUM = 1.0 - VdotU * VdotU; + float VdotUM2 = VdotUM + smoothstep1(pow2(pow2(1.0 - abs(VdotU)))) * 0.2; + + vec4 beams = vec4(0.0); + float gradientMix = 1.0; + for(int i = 0; i < sampleCount; i++) { + vec2 planeCoord = playerPos.xz + cameraPosition.xz; + planeCoord *= (1.0 + i * 6.0 / sampleCount) * 0.0014; + + float noise = BeamNoise(planeCoord, wind); + noise = max(0.75 - 1.0 / abs(noise - (4.0 + VdotUM * 2.0)), 0.0) * 3.0; + + if (noise > 0.0) { + noise *= 0.65; + float fireNoise = texture2D(noisetex, abs(planeCoord * 0.2) - wind).b; + noise *= 0.5 * fireNoise + 0.75; + noise = noise * noise * 3.0 / sampleCount; + noise *= VdotUM2; + + vec3 beamColor = beamPurple; + beamColor += beamOrange * pow2(pow2(fireNoise - 0.5)); + beamColor *= gradientMix / sampleCount; + + noise *= exp2(-6.0 * i / float(sampleCount)); + beams += vec4(noise * beamColor, noise); + } + gradientMix += 1.0; + } + + #ifdef IS_IRIS + beams.rgb += 0.2 * lightningBoltPosition.w; + #else + beams.rgb += 0.3 * lightningFlashOptifine; + #endif + + beams.rgb *= beams.a * beams.a * beams.a * 3.5; + beams.rgb = sqrt(beams.rgb); + + return beams.rgb; +} + +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/enderStars.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/enderStars.glsl new file mode 100644 index 0000000..6f2e57b --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/enderStars.glsl @@ -0,0 +1,29 @@ +float GetEnderStarNoise(vec2 pos) { + return fract(sin(dot(pos, vec2(12.9898, 4.1414))) * 43758.54953); +} + +vec3 GetEnderStars(vec3 viewPos, float VdotU) { + vec3 wpos = normalize((gbufferModelViewInverse * vec4(viewPos * 1000.0, 1.0)).xyz); + + vec3 starCoord = 0.65 * wpos / (abs(wpos.y) + length(wpos.xz)); + vec2 starCoord2 = starCoord.xz * 0.5; + if (VdotU < 0.0) starCoord2 += 100.0; + float starFactor = 1024.0; + starCoord2 = floor(starCoord2 * starFactor) / starFactor; + + float star = 1.0; + star *= GetEnderStarNoise(starCoord2.xy); + star *= GetEnderStarNoise(starCoord2.xy+0.1); + star *= GetEnderStarNoise(starCoord2.xy+0.23); + star = max(star - 0.7, 0.0); + star *= star; + + vec3 enderStars = star * endSkyColor * 3000.0; + + float VdotUM1 = abs(VdotU); + float VdotUM2 = pow2(1.0 - VdotUM1); + enderStars *= VdotUM1 * VdotUM1 * (VdotUM2 + 0.015) + 0.015; + //if (gl_FragCoord.x > 960.0) enderStars = vec3(VdotUM1); else enderStars = vec3(VdotUM2); + + return enderStars; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/bloomFog.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/bloomFog.glsl new file mode 100644 index 0000000..233bee8 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/bloomFog.glsl @@ -0,0 +1,41 @@ +#ifdef CAVE_FOG + #include "/spookylib/atmospherics/fog/caveFactor.glsl" +#endif + +const float rainBloomAdd = 8.0; +const float nightBloomAdd = 3.0; +const float caveBloomAdd = 10.0; +const float waterBloomAdd = 14.0; + +#ifdef BORDER_FOG + const float netherBloomAdd = 14.0; +#else + const float netherBloomAdd = 3.0; +#endif + +float GetBloomFog(float lViewPos) { + #ifdef OVERWORLD + float bloomFog = pow2(pow2(1.0 - exp(- lViewPos * (0.02 + 0.04 * float(isEyeInWater == 1))))); + + float bloomFogMult; + if (isEyeInWater != 1) { + bloomFogMult = (rainFactor2 * rainBloomAdd + nightBloomAdd * (1.0 - sunFactor)) * eyeBrightnessM; + #ifdef CAVE_FOG + bloomFogMult += GetCaveFactor() * caveBloomAdd; + #endif + } else { + bloomFogMult = waterBloomAdd; + } + #elif defined NETHER + float bloomFog = lViewPos / clamp(far, 128.0, 256.0); // consistency9023HFUE85JG + bloomFog *= bloomFog * bloomFog; + bloomFog = 1.0 - exp(-8.0 * bloomFog); + bloomFog *= float(isEyeInWater == 0); + + float bloomFogMult = netherBloomAdd; + #endif + + bloomFogMult *= BLOOM_STRENGTH * 8.33333; + + return 1.0 + bloomFog * bloomFogMult; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/caveFactor.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/caveFactor.glsl new file mode 100644 index 0000000..75c6b68 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/caveFactor.glsl @@ -0,0 +1,6 @@ +#ifndef INCLUDE_CAVE_FACTOR +#define INCLUDE_CAVE_FACTOR + float GetCaveFactor() { + return clamp(1.0 - cameraPosition.y / oceanAltitude, 0.0, 1.0 - eyeBrightnessM); + } +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/mainFog.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/mainFog.glsl new file mode 100644 index 0000000..2590f17 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/mainFog.glsl @@ -0,0 +1,192 @@ + #include "/spookylib/colors/colorMultipliers.glsl" + +#ifdef BORDER_FOG + #ifdef OVERWORLD + #include "/spookylib/atmospherics/sky.glsl" + #elif defined NETHER + #include "/spookylib/colors/skyColors.glsl" + #endif + + void DoBorderFog(inout vec3 color, inout float skyFade, float lPlayerPosXZ, float VdotU, float VdotS, float dither) { + #if defined OVERWORLD || defined END + float fog = lPlayerPosXZ / far; + fog *= fog; + fog = 1.0 - exp(-3.0 * fog); + #endif + #ifdef NETHER + float farM = min(far, 256.0); // consistency9023HFUE85JG + float fog = lPlayerPosXZ / farM; + fog = pow(fog, 2.0 - farM / 256.0); + #endif + + if (fog > 0.0) { + fog = clamp(fog, 0.0, 1.0); + + #ifdef OVERWORLD + vec3 fogColorM = GetSky(VdotU, VdotS, dither, true, false); + #elif defined NETHER + vec3 fogColorM = netherColor; + #else + vec3 fogColorM = endSkyColor; + #endif + + fogColorM *= atmColorMult; + + color = mix(color, fogColorM, fog); + + #ifndef GBUFFERS_WATER + skyFade = fog; + #else + skyFade = fog * (1.0 - isEyeInWater); + #endif + } + } +#endif + +#ifdef CAVE_FOG + #include "/spookylib/atmospherics/fog/caveFactor.glsl" + + void DoCaveFog(inout vec3 color, float lViewPos) { + float fog = GetCaveFactor() * (0.9 - 0.9 * exp(- lViewPos * 0.015)); + + color = mix(color, caveFogColor, fog); + } +#endif + +#ifdef ATMOSPHERIC_FOG + #include "/spookylib/colors/lightAndAmbientColors.glsl" + #include "/spookylib/colors/skyColors.glsl" + + // SRATA: Atm. fog starts reducing above this altitude + // CRFTM: Atm. fog continues reducing for this meters + #ifdef OVERWORLD + #define atmFogSRATA ATM_FOG_ALTITUDE + 0.1 + float atmFogCRFTM = 60.0; + #else + float atmFogSRATA = 55.1; + float atmFogCRFTM = 30.0; + #endif + + float GetAtmFogAltitudeFactor(float altitude) { + float altitudeFactor = pow2(1.0 - clamp(altitude - atmFogSRATA, 0.0, atmFogCRFTM) / atmFogCRFTM); + #ifndef LIGHTSHAFTS_ACTIVE + altitudeFactor = mix(altitudeFactor, 1.0, rainFactor * 0.2); + #endif + return altitudeFactor; + } + + void DoAtmosphericFog(inout vec3 color, vec3 playerPos, float lViewPos, float VdotS) { + float renDisFactor = min1(192.0 / far); + + #if ATM_FOG_DISTANCE != 100 + #define ATM_FOG_DISTANCE_M 100.0 / ATM_FOG_DISTANCE; + renDisFactor *= ATM_FOG_DISTANCE_M; + #endif + + float fog = 1.0 - exp(-pow(lViewPos * (0.001 - 0.0007 * rainFactor), 2.0 - rainFactor2) * lViewPos * renDisFactor * 100.0); + fog *= max(ATM_FOG_MULT, 1.0) - 0.1 - 0.15 * invRainFactor; + + float altitudeFactorP = GetAtmFogAltitudeFactor(playerPos.y + cameraPosition.y); + float altitudeFactor = altitudeFactorP; + + #ifdef OVERWORLD + altitudeFactor *= 1.0 - 0.75 * GetAtmFogAltitudeFactor(cameraPosition.y) * invRainFactor; + + #ifdef CAVE_FOG + fog *= 0.2 + 0.8 * sqrt2(eyeBrightnessM); + fog *= 1.0 - GetCaveFactor(); + fog *= 1.5; + fog *= mix(1.0, 0.6, rainFactor); + #else + fog *= eyeBrightnessM; + #endif + #endif + + fog *= altitudeFactor * 0.9 + 0.1; + + if (fog > 0.0) { + fog = clamp(fog, 0.0, 1.0); + + #ifdef OVERWORLD + float nightFogMult = 2.5 - 0.625 * pow2(pow2(altitudeFactorP)); + float dayNightFogBlend = pow(invNightFactor, 4.0 - VdotS - 2.5 * sunVisibility2); + vec3 fogColorM = mix( + nightUpSkyColor * (nightFogMult - dayNightFogBlend * nightFogMult), + dayDownSkyColor * (0.9 + 0.2 * noonFactor), + dayNightFogBlend + ) * 0.5; + #else + vec3 fogColorM = endSkyColor; + #endif + + fogColorM *= atmColorMult; + + color = mix(color, fogColorM, fog); + } + } +#endif + +#include "/spookylib/atmospherics/fog/waterFog.glsl" + +void DoWaterFog(inout vec3 color, float lViewPos) { + float fog = GetWaterFog(lViewPos); + + color = mix(color, waterFogColor, fog) * 0.7; +} + +void DoLavaFog(inout vec3 color, float lViewPos) { + float fog = (lViewPos * 3.0 - gl_Fog.start) * gl_Fog.scale; + + #ifdef LESS_LAVA_FOG + fog = sqrt(fog) * 0.4; + #endif + + fog = 1.0 - exp(-fog); + + fog = clamp(fog, 0.0, 1.0); + color = mix(color, fogColor * 5.0, fog); +} + +void DoPowderSnowFog(inout vec3 color, float lViewPos) { + float fog = lViewPos; + fog *= fog; + fog = 1.0 - exp(-fog); + + fog = clamp(fog, 0.0, 1.0); + color = mix(color, fogColor, fog); +} + +void DoBlindnessFog(inout vec3 color, float lViewPos) { + float fog = lViewPos * 0.3 * blindness; + fog *= fog; + fog = 1.0 - exp(-fog); + + fog = clamp(fog, 0.0, 1.0); + color = mix(color, vec3(0.0), fog); +} + +void DoDarknessFog(inout vec3 color, float lViewPos) { + float fog = lViewPos * 0.075 * darknessFactor; + fog *= fog; + fog *= fog; + color *= exp(-fog); +} + +void DoFog(inout vec3 color, inout float skyFade, float lViewPos, vec3 playerPos, float VdotU, float VdotS, float dither) { + #ifdef CAVE_FOG + DoCaveFog(color, lViewPos); + #endif + #ifdef ATMOSPHERIC_FOG + DoAtmosphericFog(color, playerPos, lViewPos, VdotS); + #endif + #ifdef BORDER_FOG + DoBorderFog(color, skyFade, length(playerPos.xz), VdotU, VdotS, dither); + #endif + + if (isEyeInWater == 1) DoWaterFog(color, lViewPos); + else if (isEyeInWater == 2) DoLavaFog(color, lViewPos); + else if (isEyeInWater == 3) DoPowderSnowFog(color, lViewPos); + + if (blindness > 0.00001) DoBlindnessFog(color, lViewPos); + if (darknessFactor > 0.00001) DoDarknessFog(color, lViewPos); +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/waterFog.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/waterFog.glsl new file mode 100644 index 0000000..de76b8a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/fog/waterFog.glsl @@ -0,0 +1,18 @@ +#ifndef INCLUDE_WATER_FOG +#define INCLUDE_WATER_FOG + float GetWaterFog(float lViewPos) { + #if WATER_FOG_MULT != 100 + #define WATER_FOG_MULT_M WATER_FOG_MULT * 0.01; + lViewPos *= WATER_FOG_MULT_M; + #endif + + #if LIGHTSHAFT_QUALI > 0 && defined REALTIME_SHADOWS + float fog = lViewPos / 48.0; + fog *= fog; + #else + float fog = lViewPos / 32.0; + #endif + + return 1.0 - exp(-fog); + } +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/netherStorm.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/netherStorm.glsl new file mode 100644 index 0000000..272935b --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/netherStorm.glsl @@ -0,0 +1,91 @@ +float Noise3D(vec3 p) { + p.z = fract(p.z) * 128.0; + float iz = floor(p.z); + float fz = fract(p.z); + vec2 a_off = vec2(23.0, 29.0) * (iz) / 128.0; + vec2 b_off = vec2(23.0, 29.0) * (iz + 1.0) / 128.0; + float a = texture2D(noisetex, p.xy + a_off).r; + float b = texture2D(noisetex, p.xy + b_off).r; + return mix(a, b, fz); +} + +vec4 GetNetherStorm(vec3 color, vec3 translucentMult, vec3 playerPos, vec3 viewPos, float lViewPos, float lViewPos1, float dither) { + vec4 netherStorm = vec4(1.0, 1.0, 1.0, 0.0); + vec3 nPlayerPos = normalize(playerPos); + + #ifdef BORDER_FOG + float maxDist = min(far, 256.0); // consistency9023HFUE85JG + #else + float maxDist = far; + #endif + + #ifndef LOW_QUALITY_NETHER_STORM + int sampleCount = int(maxDist / 8.0 + 0.001); + + vec3 traceAdd = nPlayerPos * maxDist / sampleCount; + vec3 tracePos = cameraPosition; + tracePos += traceAdd * dither; + #else + int sampleCount = int(maxDist / 16.0 + 0.001); + + vec3 traceAdd = 0.75 * nPlayerPos * maxDist / sampleCount; + vec3 tracePos = cameraPosition; + tracePos += traceAdd * dither; + tracePos += traceAdd * sampleCount * 0.25; + #endif + + vec3 translucentMultM = pow(translucentMult, vec3(1.0 / sampleCount)); + + for (int i = 0; i < sampleCount; i++) { + tracePos += traceAdd; + + vec3 tracedPlayerPos = tracePos - cameraPosition; + float lTracePos = length(tracedPlayerPos); + if (lTracePos > lViewPos1) break; + + vec3 wind = vec3(frameTimeCounter * 0.002); + + vec3 tracePosM = tracePos * 0.001; + tracePosM.y += tracePosM.x; + tracePosM += Noise3D(tracePosM - wind) * 0.01; + tracePosM = tracePosM * vec3(2.0, 0.5, 2.0); + + float traceAltitudeM = abs(tracePos.y - NETHER_STORM_LOWER_ALT); + if (tracePos.y < NETHER_STORM_LOWER_ALT) traceAltitudeM *= 10.0; + traceAltitudeM = 1.0 - min1(abs(traceAltitudeM) / NETHER_STORM_HEIGHT); + + for (int h = 0; h < 4; h++) { + float stormSample = pow2(Noise3D(tracePosM + wind)); + stormSample *= traceAltitudeM; + stormSample = pow2(pow2(stormSample)); + stormSample *= sqrt1(max0(1.0 - lTracePos / maxDist)); + + netherStorm.a += stormSample; + tracePosM *= 2.0; + wind *= -2.0; + } + + #ifdef IS_IRIS + vec2 lightningAdd = lightningFlashEffect(tracePos - cameraPosition, lightningBoltPosition.xyz, vec3(1.0), 150.0) * lightningBoltPosition.w * 8.0; + netherStorm.rgb += lightningAdd.y; + #else + vec2 lightningAdd = lightningFlashEffect(tracePos - cameraPosition, vec3(0.0, exp(1.0) - 1000.0, 0.0), vec3(1.0), 80.0) * lightningFlashOptifine * 10.0; + netherStorm.rgb += lightningAdd.y; + #endif + + if (lTracePos > lViewPos) netherStorm.rgb *= translucentMultM; + } + + #ifdef LOW_QUALITY_NETHER_STORM + netherStorm.a *= 1.8; + #endif + + netherStorm.a = min1(netherStorm.a * NETHER_STORM_I); + + netherStorm.rgb *= netherColor * 3.0; + + //if (netherStorm.a > 0.98) netherStorm.rgb = vec3(1,0,1); + //netherStorm.a *= 1.0 - max0(netherStorm.a - 0.98) * 50.0; + + return netherStorm; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/nightNebula.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/nightNebula.glsl new file mode 100644 index 0000000..4b87ac5 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/nightNebula.glsl @@ -0,0 +1,96 @@ +#include "/spookylib/atmospherics/stars.glsl" + +// Nebula implementation by flytrap https://godotshaders.com/shader/2d-nebula-shader/ + +#ifndef HQ_NIGHT_NEBULA + const int OCTAVE = 5; +#else + const int OCTAVE = 8; +#endif +const float timescale = 5.0; +const float zoomScale = 3.0; +const vec4 CLOUD1_COL = vec4(0.41, 0.64, 0.97, 0.4); +const vec4 CLOUD2_COL = vec4(0.81, 0.55, 0.21, 0.2); +const vec4 CLOUD3_COL = vec4(0.51, 0.81, 0.98, 1.0); + +float rand(vec2 inCoord){ + return fract(sin(dot(inCoord, vec2(23.53, 44.0))) * 42350.45); +} + +float perlin(vec2 inCoord){ + vec2 i = floor(inCoord); + vec2 j = fract(inCoord); + vec2 coord = smoothstep(0.0, 1.0, j); + + float a = rand(i); + float b = rand(i + vec2(1.0, 0.0)); + float c = rand(i + vec2(0.0, 1.0)); + float d = rand(i + vec2(1.0, 1.0)); + + return mix(mix(a, b, coord.x), mix(c, d, coord.x), coord.y); +} + +float fbmCloud(vec2 inCoord, float minimum){ + float value = 0.0; + float scale = 0.5; + + for(int i = 0; i < OCTAVE; i++){ + value += perlin(inCoord) * scale; + inCoord *= 2.0; + scale *= 0.5; + } + + return smoothstep(0.0, 1.0, (smoothstep(minimum, 1.0, value) - minimum) / (1.0 - minimum)); +} + +float fbmCloud2(vec2 inCoord, float minimum){ + float value = 0.0; + float scale = 0.5; + + for(int i = 0; i < OCTAVE; i++){ + value += perlin(inCoord) * scale; + inCoord *= 2.0; + scale *= 0.5; + } + + return (smoothstep(minimum, 1.0, value) - minimum) / (1.0 - minimum); +} + +vec3 GetNightNebula(vec3 viewPos, float VdotU, float VdotS) { + float nebulaFactor = pow2(max0(VdotU) * min1(nightFactor * 2.0)); + nebulaFactor *= mix(1.0, invRainFactor, heightRelativeToCloud); + if (nebulaFactor < 0.001) return vec3(0.0); + + vec2 UV = GetStarCoord(viewPos, 0.5); + float TIME = syncedTime * 0.003 + 15.0; + + float timescaled = TIME * timescale; + vec2 zoomUV2 + = vec2(zoomScale * UV.x + 0.03 * timescaled * sin(0.07 * timescaled), zoomScale * UV.y + 0.03 * timescaled * cos(0.06 * timescaled)); + vec2 zoomUV3 + = vec2(zoomScale * UV.x + 0.027 * timescaled * sin(0.07 * timescaled), zoomScale * UV.y + 0.025 * timescaled * cos(0.06 * timescaled)); + vec2 zoomUV4 + = vec2(zoomScale * UV.x + 0.021 * timescaled * sin(0.07 * timescaled), zoomScale * UV.y + 0.021 * timescaled * cos(0.07 * timescaled)); + float tide = 0.05 * sin(TIME); + float tide2 = 0.06 * cos(0.3 * TIME); + + vec4 nebulaTexture = vec4(vec3(0.0), 0.5 + 0.2 * sin(0.23 * TIME + UV.x - UV.y)); + nebulaTexture += fbmCloud2(zoomUV3, 0.24 + tide) * CLOUD1_COL; + nebulaTexture += fbmCloud(zoomUV2 * 0.9, 0.33 - tide) * CLOUD2_COL; + nebulaTexture = mix(nebulaTexture, CLOUD3_COL, fbmCloud(vec2(0.9 * zoomUV4.x, 0.9 * zoomUV4.y), 0.25 + tide2)); + + //nebulaTexture = vec4(1,0,1,1);, + nebulaFactor *= 1.0 - pow2(pow2(pow2(abs(VdotS)))); + nebulaTexture.a *= min1(pow2(pow2(nebulaTexture.a))) * nebulaFactor; + + float starFactor = 1024.0; + vec2 starCoord = floor(UV * 0.2 * starFactor) / starFactor; + nebulaTexture.rgb *= 1.5 + 10.0 * pow2(max0(GetStarNoise(starCoord) * GetStarNoise(starCoord + 0.1) - 0.6)); + + #if NIGHT_NEBULA_I != 100 + #define NIGHT_NEBULA_IM NIGHT_NEBULA_I * 0.01 + nebulaTexture.a *= NIGHT_NEBULA_IM; + #endif + + return max(nebulaTexture.rgb * nebulaTexture.a, vec3(0.0)); +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/sky.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/sky.glsl new file mode 100644 index 0000000..7cde8be --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/sky.glsl @@ -0,0 +1,131 @@ +#ifndef INCLUDE_SKY +#define INCLUDE_SKY + +#include "/spookylib/colors/lightAndAmbientColors.glsl" +#include "/spookylib/colors/skyColors.glsl" + +#ifdef CAVE_FOG + #include "/spookylib/atmospherics/fog/caveFactor.glsl" +#endif + +vec3 GetSky(float VdotU, float VdotS, float dither, bool doGlare, bool doGround) { + // Prepare variables + float nightFactorM = sqrt3(nightFactor) * 0.4; + float VdotSM1 = pow2(max(VdotS, 0.0)); + float VdotSM2 = pow2(VdotSM1); + float VdotSM3 = pow2(pow2(max(-VdotS, 0.0))); + float VdotSML = sunVisibility > 0.5 ? VdotS : -VdotS; + + float VdotUmax0 = max(VdotU, 0.0); + float VdotUmax0M = 1.0 - pow2(VdotUmax0); + + // Prepare colors + vec3 upColor = mix(nightUpSkyColor * (1.0 + nightFactorM * VdotSM3 * 1.5), dayUpSkyColor, sunFactor); + vec3 middleColor = mix(nightMiddleSkyColor, dayMiddleSkyColor * (1.0 + VdotSM2 * 0.3), sunFactor); + vec3 downColor = mix(nightDownSkyColor, dayDownSkyColor, (sunFactor + sunVisibility) * 0.5); + + // Mix the colors + // Set sky gradient + float VdotUM1 = pow2(1.0 - VdotUmax0); + VdotUM1 = pow(VdotUM1, 1.0 - VdotSM2 * 0.4); + VdotUM1 = mix(VdotUM1, 1.0, rainFactor2 * 0.15); + vec3 finalSky = mix(upColor, middleColor * 0.8, VdotUM1); + + // Add sunset color + float VdotUM2 = pow2(1.0 - abs(VdotU)); + VdotUM2 = VdotUM2 * VdotUM2 * (3.0 - 2.0 * VdotUM2); + VdotUM2 *= (0.7 - nightFactorM + VdotSM1 * (0.3 + nightFactorM)) * invNoonFactor * sunFactor; + finalSky = mix(finalSky, sunsetDownSkyColorP * (1.0 + VdotSM1 * 0.3), VdotUM2 * invRainFactor); + + // Add sky ground with fake light scattering + float VdotUM3 = min(max0(-VdotU + 0.08) / 0.35, 1.0); + VdotUM3 = smoothstep1(VdotUM3); + vec3 scatteredGroundMixer = vec3(VdotUM3 * VdotUM3, sqrt1(VdotUM3), sqrt3(VdotUM3)); + scatteredGroundMixer = mix(vec3(VdotUM3), scatteredGroundMixer, 0.75 - 0.5 * rainFactor); + finalSky = mix(finalSky, downColor, scatteredGroundMixer * 0.2); + // + + // Sky Ground + if (doGround) + finalSky *= smoothstep1(pow2(1.0 + min(VdotU, 0.0))); + + // Apply Underwater Fog + if (isEyeInWater == 1) + finalSky = mix(finalSky * 3.0, waterFogColor, VdotUmax0M); + + // Sun/Moon Glare + if (doGlare) { + if (0.0 < VdotSML) { + float glareScatter = 4.0 * (2.0 - clamp01(VdotS * 1000.0)); + float VdotSM4 = pow(abs(VdotS), glareScatter); + + float visfactor = 0.075; + float glare = visfactor / (1.0 - (1.0 - visfactor) * VdotSM4) - visfactor; + + glare *= 0.5 + pow2(noonFactor) * 1.2; + glare *= 1.0 - rainFactor * 0.5; + + float glareWaterFactor = isEyeInWater * sunVisibility; + vec3 moonGlareColor = vec3(0.502, 0.3804, 0.3804); + #if BLOOD_MOON > 0 + moonGlareColor = mix(moonGlareColor, vec3(1.0, 0.0, 0.0) * 1.5, getBloodMoon(moonPhase, sunVisibility)); + #endif + vec3 glareColor = mix(moonGlareColor * 0.7, vec3(0.5), sunVisibility); + glareColor = glareColor + glareWaterFactor * vec3(7.0); + glare *= 0.5; + + finalSky += glare * shadowTime * glareColor; + } + } + + #ifdef CAVE_FOG + // Apply Cave Fog + finalSky = mix(finalSky, caveFogColor, GetCaveFactor() * VdotUmax0M); + #endif + + // Dither to fix banding + finalSky += (dither - 0.5) / 128.0; + + return finalSky; +} + +vec3 GetLowQualitySky(float VdotU, float VdotS, float dither, bool doGlare, bool doGround) { + // Prepare variables + float VdotUmax0 = max(VdotU, 0.0); + float VdotUmax0M = 1.0 - pow2(VdotUmax0); + + // Prepare colors + vec3 upColor = mix(nightUpSkyColor, dayUpSkyColor, sunFactor); + vec3 middleColor = mix(nightMiddleSkyColor, dayMiddleSkyColor, sunFactor); + + // Mix the colors + // Set sky gradient + float VdotUM1 = pow2(1.0 - VdotUmax0); + VdotUM1 = mix(VdotUM1, 1.0, rainFactor2 * 0.2); + vec3 finalSky = mix(upColor, middleColor, VdotUM1); + + // Add sunset color + float VdotUM2 = pow2(1.0 - abs(VdotU)); + VdotUM2 *= invNoonFactor * sunFactor * (0.8 + 0.2 * VdotS); + finalSky = mix(finalSky, sunsetDownSkyColorP * (shadowTime * 0.6 + 0.2), VdotUM2 * invRainFactor); + // + + // Sky Ground + finalSky *= pow2(pow2(1.0 + min(VdotU, 0.0))); + + // Apply Underwater Fog + if (isEyeInWater == 1) + finalSky = mix(finalSky, waterFogColor, VdotUmax0M); + + // Sun/Moon Glare + finalSky *= 1.0 + mix(nightFactor, 0.5 + 0.7 * noonFactor, VdotS * 0.5 + 0.5) * pow2(pow2(pow2(VdotS))); + + #ifdef CAVE_FOG + // Apply Cave Fog + finalSky = mix(finalSky, caveFogColor, GetCaveFactor() * VdotUmax0M); + #endif + + return finalSky; +} + +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/stars.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/stars.glsl new file mode 100644 index 0000000..34eb26c --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/stars.glsl @@ -0,0 +1,47 @@ +#include "/spookylib/colors/skyColors.glsl" + +float GetStarNoise(vec2 pos) { + return fract(sin(dot(pos, vec2(12.9898, 4.1414))) * 43758.54953); +} + +vec2 GetStarCoord(vec3 viewPos, float sphereness) { + vec3 wpos = normalize((gbufferModelViewInverse * vec4(viewPos * 1000.0, 1.0)).xyz); + vec3 starCoord = wpos / (wpos.y + length(wpos.xz) * sphereness); + vec3 moonPos = vec3(gbufferModelViewInverse * vec4(- sunVec * 70.0, 1.0)); + vec3 moonCoord = moonPos / (moonPos.y + length(moonPos.xz) * sphereness); + return starCoord.xz - moonCoord.xz; +} + +vec3 GetStars(vec2 starCoord, float VdotU, float VdotS) { + if (VdotU < 0.0) return vec3(0.0); + + starCoord *= 0.4; + float starFactor = 1024.0; + starCoord = floor(starCoord * starFactor) / starFactor; + + float star = 1.0; + star *= GetStarNoise(starCoord.xy); + star *= GetStarNoise(starCoord.xy+0.1); + star *= GetStarNoise(starCoord.xy+0.23); + + #if NIGHT_STAR_AMOUNT == 2 + star -= 0.5; + star *= 0.55; + #else + star -= 0.6; + star *= 0.65; + #endif + star = max0(star); + star *= star; + + float starFogFactor = min1(VdotU * 3.0); + star *= starFogFactor * (1.0 - sunVisibility); + star *= max0(1.0 - pow(abs(VdotS) * 1.002, 100.0)); + + vec3 stars = 40.0 * star * vec3(0.38, 0.4, 0.5) * 2.0; + stars *= mix(1.0, invRainFactor, heightRelativeToCloud); + + stars *= clamp(abs(texture2D(noisetex, starCoord + frameTimeCounter * 0.004).r - 0.5) * 10, 0.5, 1.0); + + return stars; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/volumetricLight.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/volumetricLight.glsl new file mode 100644 index 0000000..9108c80 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/atmospherics/volumetricLight.glsl @@ -0,0 +1,262 @@ +// Volumetric tracing from Robobo1221, highly modified + +#include "/spookylib/colors/lightAndAmbientColors.glsl" + +float GetDepth(float depth) { + return 2.0 * near * far / (far + near - (2.0 * depth - 1.0) * (far - near)); +} + +float GetDistX(float dist) { + return (far * (dist - near)) / (dist * (far - near)); +} + +vec4 DistortShadow(vec4 shadowpos, float distortFactor) { + shadowpos.xy *= 1.0 / distortFactor; + shadowpos.z = shadowpos.z * 0.2; + shadowpos = shadowpos * 0.5 + 0.5; + + return shadowpos; +} + +vec4 GetVolumetricLight(inout vec3 color, inout float vlFactor, vec3 translucentMult, float lViewPos, vec3 nViewPos, float VdotL, float VdotU, vec2 texCoord, float z0, float z1, float dither) { + if (max(blindness, darknessFactor) > 0.1) return vec4(0.0); + vec4 volumetricLight = vec4(0.0); + + // For some reason Optifine doesn't provide correct shadowMapResolution if Shadow Quality isn't 1x + vec2 shadowMapResolutionM = textureSize(shadowtex0, 0); + + #ifdef OVERWORLD + vec3 vlColor = lightColor; + vec3 vlColorReducer = vec3(1.0); + float vlSceneIntensity = isEyeInWater != 1 ? vlFactor : 1.0; + float vlMult = 1.0; + + if (sunVisibility < 0.5) { + vlSceneIntensity = 0.0; + vlMult = 0.6 + 0.4 * max0(far - lViewPos) / far; + vlColor = normalize(pow(vlColor, vec3(1.0 - max0(1.0 - 1.5 * nightFactor)))); + vlColor *= 0.0766 + 0.0766 * vsBrightness; + } else { + vlColorReducer = 1.0 / sqrt(vlColor); + } + + float rainyNight = (1.0 - sunVisibility) * rainFactor; + float VdotLM = max((VdotL + 1.0) / 2.0, 0.0); + float VdotUmax0 = max(VdotU, 0.0); + float VdotUM = mix(pow2(1.0 - VdotUmax0), 1.0, 0.5 * vlSceneIntensity); + VdotUM = smoothstep1(VdotUM); + VdotUM = pow(VdotUM, min(lViewPos / far, 1.0) * (3.0 - 2.0 * vlSceneIntensity)); + vlMult *= mix(VdotUM * VdotLM, 1.0, 0.4 * rainyNight) * vlTime; + vlMult *= mix(invNoonFactor2 * 0.875 + 0.125, 1.0, max(vlSceneIntensity, rainFactor2)); + + #if LIGHTSHAFT_QUALI == 4 + int sampleCount = vlSceneIntensity < 0.5 ? 30 : 50; + #elif LIGHTSHAFT_QUALI == 3 + int sampleCount = vlSceneIntensity < 0.5 ? 15 : 30; + #elif LIGHTSHAFT_QUALI == 2 + int sampleCount = vlSceneIntensity < 0.5 ? 10 : 20; + #elif LIGHTSHAFT_QUALI == 1 + int sampleCount = vlSceneIntensity < 0.5 ? 6 : 12; + #endif + #ifndef TAA + //sampleCount *= 2; + #endif + #else + translucentMult = sqrt(translucentMult); // Because we pow2() the vl result in composite for the End dimension + + float vlSceneIntensity = 0.0; + + #ifndef LOW_QUALITY_ENDER_NEBULA + int sampleCount = 16; + #else + int sampleCount = 10; + #endif + #endif + + float addition = 1.0; + float maxDist = mix(max(far, 96.0) * 0.55, 80.0, vlSceneIntensity); + + #if WATER_FOG_MULT != 100 + if (isEyeInWater == 1) { + #define WATER_FOG_MULT_M WATER_FOG_MULT * 0.01; + maxDist /= WATER_FOG_MULT_M; + } + #endif + + float distMult = maxDist / (sampleCount + addition); + float sampleMultIntense = isEyeInWater != 1 ? 1.0 : 0.85; + + float viewFactor = 1.0 - 0.7 * pow2(dot(nViewPos.xy, nViewPos.xy)); + + float depth0 = GetDepth(z0); + float depth1 = GetDepth(z1); + #ifdef END + if (z0 == 1.0) depth0 = 1000.0; + if (z1 == 1.0) depth1 = 1000.0; + #endif + + // Fast but inaccurate perspective distortion approximation + maxDist *= viewFactor; + distMult *= viewFactor; + + #ifdef OVERWORLD + float maxCurrentDist = min(depth1, maxDist); + #else + float maxCurrentDist = min(depth1, far); + #endif + + for (int i = 0; i < sampleCount; i++) { + float currentDist = (i + dither) * distMult + addition; + + if (currentDist > maxCurrentDist) break; + + vec4 viewPos = gbufferProjectionInverse * (vec4(texCoord, GetDistX(currentDist), 1.0) * 2.0 - 1.0); + viewPos /= viewPos.w; + vec4 wpos = gbufferModelViewInverse * viewPos; + vec3 playerPos = wpos.xyz / wpos.w; + #ifdef END + vec4 enderBeamSample = vec4(DrawEnderBeams(VdotU, playerPos), 1.0); + enderBeamSample /= sampleCount; + #endif + + float shadowSample = 1.0; + vec3 vlSample = vec3(1.0); + #ifdef REALTIME_SHADOWS + wpos = shadowModelView * wpos; + wpos = shadowProjection * wpos; + wpos /= wpos.w; + float distb = sqrt(wpos.x * wpos.x + wpos.y * wpos.y); + float distortFactor = 1.0 - shadowMapBias + distb * shadowMapBias; + vec4 shadowPosition = DistortShadow(wpos,distortFactor); + //shadowPosition.z += 0.0001; + + #ifdef OVERWORLD + float percentComplete = currentDist / maxDist; + float sampleMult = mix(percentComplete * 3.0, sampleMultIntense, max(rainFactor, vlSceneIntensity)); + if (currentDist < 5.0) sampleMult *= smoothstep1(clamp(currentDist / 5.0, 0.0, 1.0)); + sampleMult /= sampleCount; + #endif + + if (length(shadowPosition.xy * 2.0 - 1.0) < 1.0) { + // 28A3DK6 We need to use texelFetch here or a lot of Nvidia GPUs can't get a valid value + shadowSample = texelFetch(shadowtex0, ivec2(shadowPosition.xy * shadowMapResolutionM), 0).x; + shadowSample = clamp((shadowSample-shadowPosition.z)*65536.0,0.0,1.0); + vlSample = vec3(shadowSample); + + #if SHADOW_QUALITY >= 1 + if (shadowSample == 0.0) { + float testsample = shadow2D(shadowtex1, shadowPosition.xyz).z; + if (testsample == 1.0) { + vec3 colsample = texture2D(shadowcolor1, shadowPosition.xy).rgb * 4.0; + colsample *= colsample; + vlSample = colsample * (1.0 - vlSample) + vlSample; + #ifdef OVERWORLD + vlSample *= vlColorReducer; + #endif + } + } else { + #ifdef OVERWORLD + // For water-tinting the water surface when observed from below the surface + if (translucentMult != vec3(1.0) && currentDist > depth0) { + if (isEyeInWater == 1) { + vec3 translucentMultM = translucentMult * 2.8; + vlSample *= pow(translucentMultM, vec3(sunVisibility * 3.0 * clamp01(playerPos.y * 0.03))); + } else { + vlSample *= 0.1 + 0.9 * pow2(pow2(translucentMult * 1.7)); + } + } + #endif + + if (isEyeInWater == 1 && translucentMult == vec3(1.0)) vlSample = vec3(0.0); + } + #endif + } + #endif + + if (currentDist > depth0) vlSample *= translucentMult; + + #ifdef OVERWORLD + volumetricLight += vec4(vlSample, shadowSample) * sampleMult; + #else + volumetricLight += vec4(vlSample, shadowSample) * enderBeamSample; + #endif + } + + #if defined OVERWORLD && LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 + if (viewWidth + viewHeight - gl_FragCoord.x - gl_FragCoord.y < 1.5) { + if (frameCounter % int(0.06666 / frameTimeSmooth + 0.5) == 0) { // Change speed is not too different above 10 fps + int salsX = 5; + int salsY = 5; + float heightThreshold = 6.0; + + vec2 viewM = 1.0 / vec2(salsX, salsY); + float salsSampleSum = 0.0; + int salsSampleCount = 0; + for (float i = 0.25; i < salsX; i++) { + for (float h = 0.45; h < salsY; h++) { + vec2 coord = 0.3 + 0.4 * viewM * vec2(i, h); + ivec2 icoord = ivec2(coord * shadowMapResolutionM); + float salsSample = texelFetch(shadowtex0, icoord, 0).x; // read 28A3DK6 + if (salsSample < 0.55) { + float sampledHeight = max0(texture2D(shadowcolor1, coord).a - 0.25) / 0.05; // consistencyMEJHRI7DG + salsSampleSum += sampledHeight; + salsSampleCount++; + } + } + } + + float salsCheck = salsSampleSum / salsSampleCount; + int reduceAmount = 2; + + int skyCheck = 0; + for (float i = 0.1; i < 1.0; i += 0.2) { + skyCheck += int(texelFetch(depthtex0, ivec2(view.x * i, view.y * 0.9), 0).x == 1.0); + } + if (skyCheck >= 4) { + salsCheck = 0.0; + reduceAmount = 3; + } + + if (salsCheck > heightThreshold) { + vlFactor = min(vlFactor + OSIEBCA, 1.0); + } else { + vlFactor = max(vlFactor - OSIEBCA * reduceAmount, 0.0); + } + } + } else vlFactor = 0.0; + //if (gl_FragCoord.y < 50) color.rgb = vec3(1,0,1) * float(salsCheck / heightThreshold > gl_FragCoord.x / 1920.0); + + /*for (float i = 0.25; i < salsX; i++) { + for (float h = 0.45; h < salsY; h++) { + if (length(texCoord - (0.3 + 0.4 * viewM * vec2(i, h))) < 0.01) return vec4(1,0,1,1); + } + }*/ + #endif + + #ifdef OVERWORLD + vlColor = pow(vlColor, vec3(0.5 + 0.5 * invNoonFactor * invRainFactor + 0.3 * rainFactor)); + vlColor *= 1.0 - (0.3 + 0.3 * noonFactor) * rainFactor - 0.5 * rainyNight; + + #if LIGHTSHAFT_DAY_I != 100 || LIGHTSHAFT_NIGHT_I != 100 + #define LIGHTSHAFT_DAY_IM LIGHTSHAFT_DAY_I * 0.01 + #define LIGHTSHAFT_NIGHT_IM LIGHTSHAFT_NIGHT_I * 0.01 + vlColor.rgb *= mix(LIGHTSHAFT_NIGHT_IM, LIGHTSHAFT_DAY_IM, sunVisibility); + #endif + + #if LIGHTSHAFT_RAIN_I != 100 + #define LIGHTSHAFT_RAIN_IM LIGHTSHAFT_RAIN_I * 0.01 + vlColor.rgb *= mix(1.0, LIGHTSHAFT_RAIN_IM, rainFactor); + #endif + + volumetricLight.rgb *= vlMult * vlColor; + #endif + + volumetricLight = max(volumetricLight, vec4(0.0)); + volumetricLight.a = min(volumetricLight.a, 1.0); + + float spookyVolLight = 0.2; + + if (isEyeInWater == 1) volumetricLight *= 0.2; + + return volumetricLight * 0.35; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/cloudColors.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/cloudColors.glsl new file mode 100644 index 0000000..4fbc74b --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/cloudColors.glsl @@ -0,0 +1,3 @@ +vec3 cloudRainColor = mix(nightMiddleSkyColor, dayMiddleSkyColor, sunFactor); +vec3 cloudAmbientColor = mix(ambientColor * (sunVisibility2 * (0.55 + 0.1 * noonFactor) + 0.35), cloudRainColor * 0.5, rainFactor); +vec3 cloudLightColor = mix(lightColor * (0.9 + 0.2 * noonFactor), cloudRainColor * 0.25, noonFactor * rainFactor); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/colorMultipliers.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/colorMultipliers.glsl new file mode 100644 index 0000000..adfeb16 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/colorMultipliers.glsl @@ -0,0 +1,57 @@ +#ifndef INCLUDE_LIGHT_AND_AMBIENT_MULTIPLIERS +#define INCLUDE_LIGHT_AND_AMBIENT_MULTIPLIERS + +vec3 GetLightColorMult() { + vec3 lightColorMult; + + #ifdef OVERWORLD + vec3 morningLightMult = vec3(LIGHT_MORNING_R, LIGHT_MORNING_G, LIGHT_MORNING_B) * LIGHT_MORNING_I; + vec3 noonLightMult = vec3(LIGHT_NOON_R, LIGHT_NOON_G, LIGHT_NOON_B) * LIGHT_NOON_I; + vec3 nightLightMult = vec3(LIGHT_NIGHT_R, LIGHT_NIGHT_G, LIGHT_NIGHT_B) * LIGHT_NIGHT_I; + vec3 rainLightMult = vec3(LIGHT_RAIN_R, LIGHT_RAIN_G, LIGHT_RAIN_B) * LIGHT_RAIN_I; + + lightColorMult = mix(noonLightMult, morningLightMult, invNoonFactor2); + lightColorMult = mix(nightLightMult, lightColorMult, sunVisibility2); + lightColorMult *= mix(vec3(1.0), rainLightMult, rainFactor); + #elif defined NETHER + vec3 netherLightMult = vec3(LIGHT_NETHER_R, LIGHT_NETHER_G, LIGHT_NETHER_B) * LIGHT_NETHER_I; + + lightColorMult = netherLightMult; + #elif defined END + vec3 endLightMult = vec3(LIGHT_END_R, LIGHT_END_G, LIGHT_END_B) * LIGHT_END_I; + + lightColorMult = endLightMult; + #endif + + return lightColorMult; +} + +vec3 GetAtmColorMult() { + vec3 atmColorMult; + + #ifdef OVERWORLD + vec3 morningAtmMult = vec3(ATM_MORNING_R, ATM_MORNING_G, ATM_MORNING_B) * ATM_MORNING_I; + vec3 noonAtmMult = vec3(ATM_NOON_R, ATM_NOON_G, ATM_NOON_B) * ATM_NOON_I; + vec3 nightAtmMult = vec3(ATM_NIGHT_R, ATM_NIGHT_G, ATM_NIGHT_B) * ATM_NIGHT_I * 0.5; + vec3 rainAtmMult = vec3(ATM_RAIN_R, ATM_RAIN_G, ATM_RAIN_B) * ATM_RAIN_I * 0.75; + + atmColorMult = mix(noonAtmMult, morningAtmMult, invNoonFactor2); + atmColorMult = mix(nightAtmMult, atmColorMult, sunVisibility2); + atmColorMult *= mix(vec3(1.0), rainAtmMult, rainFactor); + #elif defined NETHER + vec3 netherAtmMult = vec3(ATM_NETHER_R, ATM_NETHER_G, ATM_NETHER_B) * ATM_NETHER_I * 0.3; + + atmColorMult = netherAtmMult; + #elif defined END + vec3 endAtmMult = vec3(ATM_END_R, ATM_END_G, ATM_END_B) * ATM_END_I * 0.5; + + atmColorMult = endAtmMult; + #endif + + return atmColorMult; +} + +vec3 lightColorMult; +vec3 atmColorMult; + +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/lightAndAmbientColors.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/lightAndAmbientColors.glsl new file mode 100644 index 0000000..e9f9af4 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/lightAndAmbientColors.glsl @@ -0,0 +1,60 @@ +#ifndef INCLUDE_LIGHT_AND_AMBIENT_COLORS +#define INCLUDE_LIGHT_AND_AMBIENT_COLORS + +#if defined OVERWORLD + #ifndef COMPOSITE + vec3 noonClearLightColor = vec3(0.7, 0.55, 0.4) * 1.9; //ground and cloud color + #else + vec3 noonClearLightColor = vec3(0.4, 0.7, 1.4); //light shaft color + #endif + vec3 noonClearAmbientColor = pow(skyColor, vec3(0.65)) * 0.85; + + #ifndef COMPOSITE + vec3 sunsetClearLightColor = pow(vec3(0.64, 0.45, 0.3), vec3(1.5 + invNoonFactor)) * 5.0; //ground and cloud color + #else + vec3 sunsetClearLightColor = pow(vec3(0.62, 0.39, 0.24), vec3(1.5 + invNoonFactor)) * 6.8; //light shaft color + #endif + vec3 sunsetClearAmbientColor = noonClearAmbientColor * vec3(1.21, 0.92, 0.76) * 0.95; + + #if !defined COMPOSITE && !defined DEFERRED1 + vec3 nightClearLightColor = vec3(0.15, 0.14, 0.20) * (0.4 + vsBrightness * 0.4); //ground color + #elif defined DEFERRED1 + vec3 nightClearLightColor = vec3(0.11, 0.14, 0.20); //cloud color + #else + vec3 nightClearLightColor = vec3(0.07, 0.12, 0.27); //light shaft color + #endif + vec3 nightClearAmbientColor = vec3(0.09, 0.12, 0.17) * (1.55 + vsBrightness * 0.77); + + vec3 dayRainLightColor = vec3(0.21, 0.16, 0.13) * 0.85; + vec3 dayRainAmbientColor = vec3(0.2, 0.2, 0.25) * 2.3; + + vec3 nightRainLightColor = vec3(0.03, 0.035, 0.05) * (0.5 + 0.5 * vsBrightness); + vec3 nightRainAmbientColor = vec3(0.16, 0.20, 0.3) * (0.75 + 0.6 * vsBrightness); + + #ifndef COMPOSITE + float noonFactorDM = noonFactor; //ground and cloud factor + #else + float noonFactorDM = noonFactor * noonFactor; //light shaft factor + #endif + vec3 dayLightColor = mix(sunsetClearLightColor, noonClearLightColor, noonFactorDM); + vec3 dayAmbientColor = mix(sunsetClearAmbientColor, noonClearAmbientColor, noonFactorDM); + + vec3 clearLightColor = mix(nightClearLightColor, dayLightColor, sunVisibility2); + vec3 clearAmbientColor = mix(nightClearAmbientColor, dayAmbientColor, sunVisibility2); + + vec3 rainLightColor = mix(nightRainLightColor, dayRainLightColor, sunVisibility2) * 2.5; + vec3 rainAmbientColor = mix(nightRainAmbientColor, dayRainAmbientColor, sunVisibility2); + + vec3 lightColor = mix(clearLightColor, rainLightColor, rainFactor) * 0.4; + vec3 ambientColor = mix(clearAmbientColor, rainAmbientColor, rainFactor) * 0.4; +#elif defined NETHER + vec3 lightColor = vec3(0.0); + vec3 ambientColor = (netherColor + 0.5 * lavaLightColor) * (0.9 + 0.45 * vsBrightness) * 0.4; +#elif defined END + vec3 endLightColor = vec3(0.68, 0.51, 1.07); + float endLightBalancer = 0.2 * vsBrightness; + vec3 lightColor = endLightColor * (0.35 - endLightBalancer) * 0.4; + vec3 ambientColor = endLightColor * (0.2 + endLightBalancer) * 0.4; +#endif + +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/moonPhaseInfluence.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/moonPhaseInfluence.glsl new file mode 100644 index 0000000..61fcde2 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/moonPhaseInfluence.glsl @@ -0,0 +1,7 @@ + + +float moonPhaseInfluence = mix( + 1.0, + moonPhase == 0 ? MOON_PHASE_FULL : moonPhase != 4 ? MOON_PHASE_PARTIAL : MOON_PHASE_DARK, + 1.0 - sunVisibility2 +); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/skyColors.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/skyColors.glsl new file mode 100644 index 0000000..da0b6bf --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/colors/skyColors.glsl @@ -0,0 +1,30 @@ +#ifndef INCLUDE_SKY_COLORS +#define INCLUDE_SKY_COLORS + +#ifdef OVERWORLD + uniform vec3 skyColorSmooth; + vec3 skyColorM = (skyColor / (length(clamp(skyColorSmooth, skyColor * 0.9, skyColor * 1.1)) + 0.0001)) * vec3(0.949, 0.7725, 0.5569); + vec3 skyColorNoon = skyColorM * mix(1.28, 1.28 - 0.47 * rainFactor, heightRelativeToCloud); + vec3 skyColorSunset = skyColorM * mix(1.18, 1.18 - 0.44 * rainFactor, heightRelativeToCloud) * invNightFactor * invNightFactor; + + vec3 skyColorSqrt = sqrt(skyColorNoon); + vec3 noonUpSkyColor = pow(skyColorSqrt, vec3(2.9)); + vec3 noonMiddleSkyColor = skyColorSqrt * mix(vec3(1.15), vec3(1.15) - vec3(0.1, 0.4, 0.6) * rainFactor, heightRelativeToCloud) + noonUpSkyColor * 0.6; + vec3 noonDownSkyColor = skyColorSqrt * mix(vec3(0.9), vec3(0.9) - vec3(0.15, 0.3, 0.42) * rainFactor, heightRelativeToCloud) + noonUpSkyColor * 0.25; + + vec3 sunsetUpSkyColor = skyColorSunset * mix(vec3(0.8, 0.58, 0.58), vec3(0.8, 0.58, 0.58) + vec3(0.1, 0.2, 0.35) * rainFactor2, heightRelativeToCloud); + vec3 sunsetMiddleSkyColor = skyColorSunset * mix(vec3(1.8, 1.3, 1.2), vec3(1.8, 1.3, 1.2) + vec3(0.15, 0.25, -0.05) * rainFactor2, heightRelativeToCloud); + vec3 sunsetDownSkyColorP = mix(vec3(1.45, 0.86, 0.5), vec3(1.45, 0.86, 0.5) - vec3(0.8, 0.3, 0.0) * rainFactor, heightRelativeToCloud); + vec3 sunsetDownSkyColor = sunsetDownSkyColorP * 0.5 + 0.25 * sunsetMiddleSkyColor; + + vec3 dayUpSkyColor = mix(noonUpSkyColor, sunsetUpSkyColor, invNoonFactor2); + vec3 dayMiddleSkyColor = mix(noonMiddleSkyColor, sunsetMiddleSkyColor, invNoonFactor2); + vec3 dayDownSkyColor = mix(noonDownSkyColor, sunsetDownSkyColor, invNoonFactor2); + + vec3 nightColFactor = vec3(0.07, 0.14, 0.24) * mix(1.0, 1.0 - 0.5 * rainFactor, heightRelativeToCloud) + skyColor; + vec3 nightUpSkyColor = pow(nightColFactor, vec3(0.90)) * 0.4; + vec3 nightMiddleSkyColor = sqrt(nightUpSkyColor) * 0.68; + vec3 nightDownSkyColor = nightMiddleSkyColor * vec3(0.82, 0.82, 0.88); +#endif + +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/common.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/common.glsl new file mode 100644 index 0000000..5af9e51 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/common.glsl @@ -0,0 +1,670 @@ +/*--------------------------------------------------------------------- + ___ __ __ ____ ___ ____ _____ _ _ _ _____ + |_ _| \/ | _ \ / _ \| _ \_ _|/ \ | \ | |_ _| + | || |\/| | |_) | | | | |_) || | / _ \ | \| | | | + | || | | | __/| |_| | _ < | |/ ___ \| |\ | | | + |___|_| |_|_| \___/|_| \_\|_/_/ \_\_| \_| |_| + . + -> -> -> EDITING THIS FILE HAS A HIGH CHANCE TO BREAK THE SHADER PACK + -> -> -> DO NOT CHANGE ANYTHING UNLESS YOU KNOW WHAT YOU ARE DOING + -> -> -> DO NOT EXPECT SUPPORT AFTER MODIFYING SHADER FILES +---------------------------------------------------------------------*/ +uniform float frameTimeCounter; +uniform vec4 lightningBoltPosition; +uniform float lightningFlashOptifine; +uniform float lightning; +uniform int moonPhase; +uniform sampler2D noisetex; + +//User Settings// + #define SHADER_STYLE 4 //[1 4] + + #define RP_MODE 1 //[1 0 3 2] + #if RP_MODE == 1 + #define IPBR + //#define GENERATED_NORMALS + //#define COATED_TEXTURES + //#define FANCY_GLASS + //#define GREEN_SCREEN_LIME + #endif + #if RP_MODE >= 2 + #define CUSTOM_PBR + #define POM + #endif + + #define REALTIME_SHADOWS + #define SHADOW_QUALITY 2 //[0 1 2 3 4 5] + const float shadowDistance = 192.0; //[64.0 80.0 96.0 112.0 128.0 160.0 192.0 224.0 256.0 320.0 384.0 512.0 768.0 1024.0] + //#define ENTITY_SHADOWS + #define SSAO_QUALI_DEFINE 2 //[0 2 3] + #define FXAA + #define DETAIL_QUALITY 2 //[0 2 3] + #define CLOUD_QUALITY 2 //[0 1 2 3] + #define LIGHTSHAFT_QUALI_DEFINE 2 //[0 1 2 3 4] + #define WATER_QUALITY 2 //[1 2 3] + #define WATER_REFLECT_QUALITY 2 //[0 1 2] + #define BLOCK_REFLECT_QUALITY 3 //[0 1 2 3] + + #define WATER_STYLE_DEFINE -1 //[-1 1 2 3] + #define WATER_CAUSTIC_STYLE_DEFINE -1 //[-1 1 3] + #define WATER_REFRACTION_INTENSITY 2.0 //[1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0] + #define WATER_FOAM_I 100 //[0 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150] + #define WATER_ALPHA_MULT 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300 325 350 375 400 425 450 475 500 550 600 650 700 750 800 850 900] + #define WATER_FOG_MULT 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300 325 350 375 400 425 450 475 500 550 600 650 700 750 800 850 900] + #define WATERCOLOR_MODE 3 //[3 2 0] + #define BRIGHT_CAVE_WATER + #define WATERCOLOR_R 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + #define WATERCOLOR_G 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + #define WATERCOLOR_B 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + #define UNDERWATERCOLOR_R 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150] + #define UNDERWATERCOLOR_G 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150] + #define UNDERWATERCOLOR_B 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150] + #define WATER_BUMPINESS 1.25 //[0.05 0.10 0.15 0.20 0.25 0.30 0.40 0.50 0.65 0.80 1.00 1.25 1.50 2.00 2.50] + #define WATER_BUMP_SMALL 0.75 //[0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + #define WATER_BUMP_MED 1.70 //[0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + #define WATER_BUMP_BIG 2.00 //[0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + #define WATER_SPEED_MULT 1.10 //[0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + #define WATER_SIZE_MULT 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + + #define PIXEL_SHADOW 0 //[0 8 16 32 64 128] + #define RAIN_PUDDLES 1 //[0 1 2 3 4] + #define SSAO_I 100 //[0 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + #define VANILLAAO_I 100 //[0 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + + #define AURORA_STYLE_DEFINE -1 //[-1 0 1 2] + #define AURORA_CONDITION 3 //[0 1 2 3 4] + //#define NIGHT_NEBULA + #define NIGHT_NEBULA_I 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + #define WEATHER_TEX_OPACITY 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300 325 350 375 400 425 450 475 500 550 600 650 700 750 800 850 900] + #define SUN_MOON_STYLE_DEFINE -1 //[-1 1 2 3] + #define SUN_MOON_HORIZON + #define NIGHT_STAR_AMOUNT 2 //[2 3] + #define CLOUD_STYLE_DEFINE -1 //[-1 0 1 3 50] + //#define CLOUD_SHADOWS + #define CLOUD_CLOSED_AREA_CHECK + #define CLOUD_ALT1 192 //[-96 -92 -88 -84 -80 -76 -72 -68 -64 -60 -56 -52 -48 -44 -40 -36 -32 -28 -24 -20 -16 -10 -8 -4 0 4 8 12 16 20 22 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128 132 136 140 144 148 152 156 160 164 168 172 176 180 184 188 192 196 200 204 208 212 216 220 224 228 232 236 240 244 248 252 256 260 264 268 272 276 280 284 288 292 296 300 304 308 312 316 320 324 328 332 336 340 344 348 352 356 360 364 368 372 376 380 384 388 392 396 400 404 408 412 416 420 424 428 432 436 440 444 448 452 456 460 464 468 472 476 480 484 488 492 496 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800] + #define CLOUD_SPEED_MULT 100 //[0 5 7 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300 325 350 375 400 425 450 475 500 550 600 650 700 750 800 850 900] + + #define CLOUD_UNBOUND_AMOUNT 1.00 //[0.70 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00 1.02 1.04 1.06 1.08 1.10 1.12 1.14 1.16 1.18 1.20 1.22 1.24 1.26 1.28 1.30 1.32 1.34 1.36 1.38 1.40 1.42 1.44 1.46 1.48 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00 2.10 2.20 2.30 2.40 2.50 2.60 2.70 2.80 2.90 3.00] + #define CLOUD_UNBOUND_SIZE_MULT 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + + //#define DOUBLE_REIM_CLOUDS + #define CLOUD_ALT2 288 //[-96 -92 -88 -84 -80 -76 -72 -68 -64 -60 -56 -52 -48 -44 -40 -36 -32 -28 -24 -20 -16 -10 -8 -4 0 4 8 12 16 20 22 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128 132 136 140 144 148 152 156 160 164 168 172 176 180 184 188 192 196 200 204 208 212 216 220 224 228 232 236 240 244 248 252 256 260 264 268 272 276 280 284 288 292 296 300 304 308 312 316 320 324 328 332 336 340 344 348 352 356 360 364 368 372 376 380 384 388 392 396 400 404 408 412 416 420 424 428 432 436 440 444 448 452 456 460 464 468 472 476 480 484 488 492 496 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800] + + #define NETHER_COLOR_MODE 3 //[3 2 0] + #define NETHER_STORM + #define NETHER_STORM_LOWER_ALT 28 //[-296 -292 -288 -284 -280 -276 -272 -268 -264 -260 -256 -252 -248 -244 -240 -236 -232 -228 -224 -220 -216 -212 -208 -204 -200 -196 -192 -188 -184 -180 -176 -172 -168 -164 -160 -156 -152 -148 -144 -140 -136 -132 -128 -124 -120 -116 -112 -108 -104 -100 -96 -92 -88 -84 -80 -76 -72 -68 -64 -60 -56 -52 -48 -44 -40 -36 -32 -28 -24 -20 -16 -12 -8 -4 0 4 8 12 16 20 22 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128 132 136 140 144 148 152 156 160 164 168 172 176 180 184 188 192 196 200 204 208 212 216 220 224 228 232 236 240 244 248 252 256 260 264 268 272 276 280 284 288 292 296 300] + #define NETHER_STORM_HEIGHT 200 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300 325 350 375 400 425 450 475 500 550 600 650 700 750 800 850 900] + #define NETHER_STORM_I 0.40 //[0.05 0.06 0.07 0.08 0.09 0.10 0.12 0.14 0.16 0.18 0.22 0.26 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50] + + #define BORDER_FOG + #define ATM_FOG_MULT 0.95 //[0.50 0.65 0.80 0.95] + #define ATM_FOG_DISTANCE 100 //[10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200 220 240 260 280 300] + #define ATM_FOG_ALTITUDE 63 //[0 5 10 15 20 25 30 35 40 45 50 52 54 56 58 60 61 62 63 64 65 66 67 68 69 70 72 74 76 78 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 210 220 230 240 250 260 270 280 290 300] + #define CAVE_FOG + #define LIGHTSHAFT_BEHAVIOUR 1 //[0 1 2 3] + #define LIGHTSHAFT_DAY_I 100 //[1 3 5 7 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200] + #define LIGHTSHAFT_NIGHT_I 100 //[1 3 5 7 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200] + #define LIGHTSHAFT_RAIN_I 100 //[1 3 5 7 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200] + + #define BLOOM + #define BLOOM_STRENGTH 0.12 //[0.027 0.036 0.045 0.054 0.063 0.072 0.081 0.09 0.10 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.21 0.23 0.25 0.28 0.32 10.00] + #define IMAGE_SHARPENING 3 //[0 1 2 3 4 5 6 7 8 9 10] + //#define MOTION_BLURRING + #define MOTION_BLURRING_STRENGTH 1.00 //[0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00] + #define VIGNETTE_R + #define CHROMA_ABERRATION 0 //[0 1 2 3 4 5 6 7 8] + #define UNDERWATER_DISTORTION + //#define LENSFLARE + #define LENSFLARE_I 1.00 //[0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + + #define WORLD_BLUR 0 //[0 1 2] + //#define WB_FOV_SCALED + //#define WB_CHROMATIC + //#define WB_ANAMORPHIC + #define WB_DOF_I 64.0 //[1.0 1.5 2.0 3.0 4.5 6.0 9.0 12.0 18.0 24.0 32.0 48.0 64.0 96.0 128.0 192.0 256.0 384.0 512.0 768.0 1024.0 1536.0 2048.0 3072.0 4096.0] + #define WB_DOF_FOCUS 0 //[-1 0 1 2 3 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 65 67 69 72 74 76 79 81 83 86 88 91 94 96 99 102 104 107 110 113 115 118 121 124 127 130 133 136 140 143 146 149 153 156 160 163 167 170 174 178 182 185 189 193 197 201 206 210 214 219 223 227 232 237 242 246 251 256 261 267 272 277 283 288 294 300 306 312 318 324 330 337 344 350 357 364 371 379 386 394 402 410 418 427 435 444 453 462 472 481 491 501 512 530 550 575 600 625 650 675 700 725 750 800 850 900] + #define WB_DB_DAY_I 64.0 //[1.0 1.5 2.0 3.0 4.5 6.0 9.0 12.0 18.0 24.0 32.0 48.0 64.0 96.0 128.0 192.0 256.0 384.0 512.0 768.0 1024.0 1536.0 2048.0 3072.0 4096.0] + #define WB_DB_NIGHT_I 64.0 //[1.0 1.5 2.0 3.0 4.5 6.0 9.0 12.0 18.0 24.0 32.0 48.0 64.0 96.0 128.0 192.0 256.0 384.0 512.0 768.0 1024.0 1536.0 2048.0 3072.0 4096.0] + #define WB_DB_RAIN_I 64.0 //[1.0 1.5 2.0 3.0 4.5 6.0 9.0 12.0 18.0 24.0 32.0 48.0 64.0 96.0 128.0 192.0 256.0 384.0 512.0 768.0 1024.0 1536.0 2048.0 3072.0 4096.0] + #define WB_DB_WATER_I 64.0 //[1.0 1.5 2.0 3.0 4.5 6.0 9.0 12.0 18.0 24.0 32.0 48.0 64.0 96.0 128.0 192.0 256.0 384.0 512.0 768.0 1024.0 1536.0 2048.0 3072.0 4096.0] + #define WB_DB_NETHER_I 64.0 //[1.0 1.5 2.0 3.0 4.5 6.0 9.0 12.0 18.0 24.0 32.0 48.0 64.0 96.0 128.0 192.0 256.0 384.0 512.0 768.0 1024.0 1536.0 2048.0 3072.0 4096.0] + #define WB_DB_END_I 64.0 //[1.0 1.5 2.0 3.0 4.5 6.0 9.0 12.0 18.0 24.0 32.0 48.0 64.0 96.0 128.0 192.0 256.0 384.0 512.0 768.0 1024.0 1536.0 2048.0 3072.0 4096.0] + + #define ENTITY_GN_AND_CT + #define GENERATED_NORMAL_MULT 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200] + #define COATED_TEXTURE_MULT 100 //[25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200] + + #define GLOWING_ORE_MASTER 0 //[0 1 2] + #define GLOWING_ORE_MULT 1.00 //[0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #if GLOWING_ORE_MASTER == 2 || SHADER_STYLE == 4 && GLOWING_ORE_MASTER == 1 + #define GLOWING_ORE_IRON + #define GLOWING_ORE_GOLD + #define GLOWING_ORE_COPPER + #define GLOWING_ORE_REDSTONE + #define GLOWING_ORE_LAPIS + #define GLOWING_ORE_EMERALD + #define GLOWING_ORE_DIAMOND + #define GLOWING_ORE_NETHERQUARTZ + #define GLOWING_ORE_NETHERGOLD + #define GLOWING_ORE_GILDEDBLACKSTONE + #define GLOWING_ORE_ANCIENTDEBRIS + #define GLOWING_ORE_MODDED + #endif + + #define GLOWING_AMETHYST 1 //[0 1 2] + #define GLOWING_LICHEN 1 //[0 1 2] + //#define EMISSIVE_REDSTONE_BLOCK + //#define EMISSIVE_LAPIS_BLOCK + //#define GLOWING_ARMOR_TRIM + + #define NORMAL_MAP_STRENGTH 100 //[0 10 15 20 30 40 60 80 100 120 140 160 180 200] + #define CUSTOM_EMISSION_INTENSITY 100 //[0 5 7 10 15 20 25 30 35 40 45 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 225 250] + #define POM_DEPTH 0.80 //[0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00] + #define POM_QUALITY 128 //[16 32 64 128 256 512] + #define POM_DISTANCE 32 //[16 24 32 48 64 128 256 512 1024] + #define POM_LIGHTING_MODE 2 //[1 2] + //#define POM_ALLOW_CUTOUT + #define DIRECTIONAL_BLOCKLIGHT 0 //[0 3 7 11] + + #define MINIMUM_LIGHT_MODE 2 //[0 1 2 3 4] + #define HELD_LIGHTING_MODE 2 //[0 1 2] + #define AMBIENT_MULT 100 //[50 55 60 65 70 75 80 85 90 95 100 110 120 130 140 150 160 170 180 190 200] + + #define WAVING_SPEED 1.00 //[0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + #define WAVING_I 1.00 //[0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 50.0] + #define NO_WAVING_INDOORS + #define WAVING_FOLIAGE + #define WAVING_LEAVES + #define WAVING_LAVA + #define WAVING_WATER_VERTEX + #define WAVING_RAIN + + #define SUN_ANGLE -1 //[-1 0 -20 -30 -40 -50 -60 60 50 40 30 20] + + #define SELECT_OUTLINE 1 //[0 1 3 4 2] + #define SELECT_OUTLINE_I 1.00 //[0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + #define SELECT_OUTLINE_R 1.35 //[0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00] + #define SELECT_OUTLINE_G 0.35 //[0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00] + #define SELECT_OUTLINE_B 1.75 //[0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00] + + //#define WORLD_OUTLINE + #define WORLD_OUTLINE_THICKNESS 1 //[1 2 3 4] + #define WORLD_OUTLINE_I 1.50 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00] + //#define DARK_OUTLINE + #define DARK_OUTLINE_THICKNESS 1 //[1 2] + + #define HAND_SWAYING 0 //[0 1 2 3] + #define SHOW_LIGHT_LEVEL 0 //[0 1 2 3] + //#define REDUCE_CLOSE_PARTICLES + //#define LESS_LAVA_FOG + //#define SNOWY_WORLD + //#define COLOR_CODED_PROGRAMS + + //#define MOON_PHASE_INF_LIGHT + #define MOON_PHASE_INF_REFLECTION + #define MOON_PHASE_FULL 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define MOON_PHASE_PARTIAL 0.85 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define MOON_PHASE_DARK 0.60 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + + #define T_EXPOSURE 1.40 //[0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00 2.10 2.20 2.30 2.40 2.50 2.60 2.70 2.80] + #define TM_WHITE_CURVE 2.0 //[1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0] + #define T_LOWER_CURVE 1.20 //[0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00] + #define T_UPPER_CURVE 1.30 //[0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00] + #define T_SATURATION 1.00 //[0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00] + #define T_VIBRANCE 1.00 //[0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.80 1.85 1.90 1.95 2.00] + //#define COLORGRADING + #define GR_RR 100 //[0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 108 116 124 132 140 148 156 164 172 180 188 196 200 212 224 236 248 260 272 284 296 300 316 332 348 364 380 396 400 424 448 472 496 500] + #define GR_RG 0 //[0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 108 116 124 132 140 148 156 164 172 180 188 196 200 212 224 236 248 260 272 284 296 300 316 332 348 364 380 396 400 424 448 472 496 500] + #define GR_RB 0 //[0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 108 116 124 132 140 148 156 164 172 180 188 196 200 212 224 236 248 260 272 284 296 300 316 332 348 364 380 396 400 424 448 472 496 500] + #define GR_RC 1.00 //[0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + #define GR_GR 0 //[0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 108 116 124 132 140 148 156 164 172 180 188 196 200 212 224 236 248 260 272 284 296 300 316 332 348 364 380 396 400 424 448 472 496 500] + #define GR_GG 100 //[0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 108 116 124 132 140 148 156 164 172 180 188 196 200 212 224 236 248 260 272 284 296 300 316 332 348 364 380 396 400 424 448 472 496 500] + #define GR_GB 0 //[0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 108 116 124 132 140 148 156 164 172 180 188 196 200 212 224 236 248 260 272 284 296 300 316 332 348 364 380 396 400 424 448 472 496 500] + #define GR_GC 1.00 //[0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + #define GR_BR 0 //[0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 108 116 124 132 140 148 156 164 172 180 188 196 200 212 224 236 248 260 272 284 296 300 316 332 348 364 380 396 400 424 448 472 496 500] + #define GR_BG 0 //[0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 108 116 124 132 140 148 156 164 172 180 188 196 200 212 224 236 248 260 272 284 296 300 316 332 348 364 380 396 400 424 448 472 496 500] + #define GR_BB 100 //[0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 108 116 124 132 140 148 156 164 172 180 188 196 200 212 224 236 248 260 272 284 296 300 316 332 348 364 380 396 400 424 448 472 496 500] + #define GR_BC 1.00 //[0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 2.20 2.40 2.60 2.80 3.00 3.25 3.50 3.75 4.00 4.50 5.00] + + //#define LIGHT_COLOR_MULTS + //#define ATM_COLOR_MULTS + #define LIGHT_MORNING_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_MORNING_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_MORNING_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_MORNING_I 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_MORNING_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_MORNING_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_MORNING_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_MORNING_I 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NOON_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NOON_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NOON_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NOON_I 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NOON_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NOON_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NOON_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NOON_I 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NIGHT_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NIGHT_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NIGHT_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NIGHT_I 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NIGHT_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NIGHT_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NIGHT_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NIGHT_I 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_RAIN_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_RAIN_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_RAIN_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_RAIN_I 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_RAIN_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_RAIN_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_RAIN_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_RAIN_I 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NETHER_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NETHER_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NETHER_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_NETHER_I 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NETHER_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NETHER_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NETHER_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_NETHER_I 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_END_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_END_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_END_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define LIGHT_END_I 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_END_R 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_END_G 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_END_B 1.00 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define ATM_END_I 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + + #define XLIGHT_R 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define XLIGHT_G 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + #define XLIGHT_B 1.00 //[0.01 0.03 0.05 0.07 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00] + + //#define LIGHT_COLORING + + #define EYES + #define EYE_FREQUENCY 1.0 //[0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5] + #define EYE_SPEED 1.0 //[0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0] + #define EYE_RED_PROBABILITY 0.07 //[0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00] + #define BLOOD_MOON 1 //[0 1 2] Off, Full Moon, Every Moon + #define EMISSIVE_BLOOD_MOON_FLOWERS + +//Internal Settings// + #define SIDE_SHADOWING + #define SHADOW_FILTERING + + #define GLASS_OPACITY 0.25 + #define FANCY_NETHERPORTAL + + #define DIRECTIONAL_SHADING + + #define ATMOSPHERIC_FOG + #define BLOOM_FOG + + #define GLOWING_ENTITY_FIX + #define FLICKERING_FIX + //#define SAFER_GENERATED_NORMALS + +//Extensions// + #extension GL_ARB_shader_image_load_store : enable + +//Information// + #define info0 0 //[0] + #define info1 0 //[0] + #define info2 0 //[0] + #define info3 0 //[0] + #define info4 0 //[0] + #define info5 0 //[0] + #define info6 0 //[0] + #define info7 0 //[0] + #define info8 0 //[0] + #define info9 0 //[0] + #define info10 0 //[0] + +//Visual Style and Performance Setting Handling// + #if SHADER_STYLE == 1 + #define WATER_STYLE_DEFAULT 1 + //#define WATER_CAUSTIC_STYLE_DEFAULT 1 + #define AURORA_STYLE_DEFAULT 1 + #define SUN_MOON_STYLE_DEFAULT 1 + #define CLOUD_STYLE_DEFAULT 1 + #elif SHADER_STYLE == 4 + #define WATER_STYLE_DEFAULT 3 + //#define WATER_CAUSTIC_STYLE_DEFAULT 3 + #define AURORA_STYLE_DEFAULT 2 + #define SUN_MOON_STYLE_DEFAULT 3 + #define CLOUD_STYLE_DEFAULT 3 + #endif + #if WATER_STYLE_DEFINE == -1 + #define WATER_STYLE WATER_STYLE_DEFAULT + #else + #define WATER_STYLE WATER_STYLE_DEFINE + #endif + #if WATER_CAUSTIC_STYLE_DEFINE == -1 + #define WATER_CAUSTIC_STYLE WATER_STYLE + #else + #define WATER_CAUSTIC_STYLE WATER_CAUSTIC_STYLE_DEFINE + #endif + #if AURORA_STYLE_DEFINE == -1 + #define AURORA_STYLE AURORA_STYLE_DEFAULT + #else + #define AURORA_STYLE AURORA_STYLE_DEFINE + #endif + #if SUN_MOON_STYLE_DEFINE == -1 + #define SUN_MOON_STYLE SUN_MOON_STYLE_DEFAULT + #else + #define SUN_MOON_STYLE SUN_MOON_STYLE_DEFINE + #endif + #if CLOUD_STYLE_DEFINE == -1 + #define CLOUD_STYLE CLOUD_STYLE_DEFAULT + #else + #define CLOUD_STYLE CLOUD_STYLE_DEFINE + #endif + // Thanks to SpacEagle17 and isuewo for the sun angle handling + #if SUN_ANGLE == -1 + #if SHADER_STYLE == 1 + const float sunPathRotation = 0.0; + #define PERPENDICULAR_TWEAKS + #elif SHADER_STYLE == 4 + const float sunPathRotation = -40.0; + #endif + #elif SUN_ANGLE == 0 + const float sunPathRotation = 0.0; + #define PERPENDICULAR_TWEAKS + #elif SUN_ANGLE == 20 + const float sunPathRotation = 20.0; + #elif SUN_ANGLE == 30 + const float sunPathRotation = 30.0; + #elif SUN_ANGLE == 40 + const float sunPathRotation = 40.0; + #elif SUN_ANGLE == 50 + const float sunPathRotation = 50.0; + #elif SUN_ANGLE == 60 + const float sunPathRotation = 60.0; + #elif SUN_ANGLE == -20 + const float sunPathRotation = -20.0; + #elif SUN_ANGLE == -30 + const float sunPathRotation = -30.0; + #elif SUN_ANGLE == -40 + const float sunPathRotation = -40.0; + #elif SUN_ANGLE == -50 + const float sunPathRotation = -50.0; + #elif SUN_ANGLE == -60 + const float sunPathRotation = -60.0; + #endif + + #if SHADOW_QUALITY >= 1 + const int shadowMapResolution = 2048; + #else + const int shadowMapResolution = 1024; + #endif + + #if SSAO_I > 0 + #define SSAO_QUALI SSAO_QUALI_DEFINE + #else + #define SSAO_QUALI 0 + #endif + #if LIGHTSHAFT_BEHAVIOUR > 0 + #define LIGHTSHAFT_QUALI LIGHTSHAFT_QUALI_DEFINE + #else + #define LIGHTSHAFT_QUALI 0 + #endif + + #if BLOCK_REFLECT_QUALITY >= 1 + #define LIGHT_HIGHLIGHT + #endif + #if BLOCK_REFLECT_QUALITY >= 2 && RP_MODE >= 1 + #define PBR_REFLECTIONS + #endif + #if BLOCK_REFLECT_QUALITY >= 3 + #define TEMPORAL_FILTER + #endif + + #if DETAIL_QUALITY == 0 + #undef PERPENDICULAR_TWEAKS + #define LOW_QUALITY_NETHER_STORM + #define LOW_QUALITY_ENDER_NEBULA + #endif + #if DETAIL_QUALITY >= 1 + #define TAA + #endif + #if DETAIL_QUALITY >= 2 + + #endif + #if DETAIL_QUALITY >= 3 + #define HQ_NIGHT_NEBULA + #endif + +//Define Handling// + #ifdef OVERWORLD + #if CLOUD_STYLE > 0 && CLOUD_STYLE != 50 && CLOUD_QUALITY > 0 + #define VL_CLOUDS_ACTIVE + #if CLOUD_STYLE == 1 + #define CLOUDS_REIMAGINED + #endif + #if CLOUD_STYLE == 3 + #define CLOUDS_UNBOUND + #endif + #endif + #else + #undef LIGHT_HIGHLIGHT + #undef CAVE_FOG + #undef CLOUD_SHADOWS + #undef SNOWY_WORLD + #undef LENSFLARE + #endif + #ifdef NETHER + #undef ATMOSPHERIC_FOG + #else + #undef NETHER_STORM + #endif + #ifdef END + #undef BLOOM_FOG + #endif + + #ifndef BLOOM + #undef BLOOM_FOG + #endif + + #ifdef BLOOM_FOG + #if WORLD_BLUR > 0 + #define BLOOM_FOG_COMPOSITE3 + #elif defined MOTION_BLURRING + #define BLOOM_FOG_COMPOSITE2 + #else + #define BLOOM_FOG_COMPOSITE + #endif + #endif + + #if defined GBUFFERS_HAND || defined GBUFFERS_ENTITIES + #undef SNOWY_WORLD + #endif + #if defined GBUFFERS_TEXTURED || defined GBUFFERS_BASIC + #undef LIGHT_HIGHLIGHT + #undef DIRECTIONAL_SHADING + #undef SIDE_SHADOWING + #endif + #ifdef GBUFFERS_WATER + #undef LIGHT_HIGHLIGHT + #endif + + #ifndef GLOWING_ENTITY_FIX + #undef GBUFFERS_ENTITIES_GLOWING + #endif + + #if LIGHTSHAFT_QUALI > 0 && defined OVERWORLD && defined REALTIME_SHADOWS || defined END + #define LIGHTSHAFTS_ACTIVE + #endif + + #if defined WAVING_FOLIAGE || defined WAVING_LEAVES || defined WAVING_LAVA + #define WAVING_ANYTHING_TERRAIN + #endif + + #ifdef IS_IRIS + #undef FANCY_GLASS + #endif + + #if WATERCOLOR_R != 100 || WATERCOLOR_G != 100 || WATERCOLOR_B != 100 + #define WATERCOLOR_RM WATERCOLOR_R * 0.01 + #define WATERCOLOR_GM WATERCOLOR_G * 0.01 + #define WATERCOLOR_BM WATERCOLOR_B * 0.01 + #define WATERCOLOR_CHANGED + #endif + + #if UNDERWATERCOLOR_R != 100 || UNDERWATERCOLOR_G != 100 || UNDERWATERCOLOR_B != 100 + #define UNDERWATERCOLOR_RM UNDERWATERCOLOR_R * 0.01 + #define UNDERWATERCOLOR_GM UNDERWATERCOLOR_G * 0.01 + #define UNDERWATERCOLOR_BM UNDERWATERCOLOR_B * 0.01 + #define UNDERWATERCOLOR_CHANGED + #endif + +//Activate Settings// + #ifdef ENTITY_SHADOWS + #endif + #ifdef POM_ALLOW_CUTOUT + #endif + #ifdef CLOUD_CLOSED_AREA_CHECK + #endif + #ifdef BRIGHT_CAVE_WATER + #endif + +//Very Common Uniforms// + uniform int worldTime; + uniform int worldDay; + + uniform float rainFactor; + uniform float screenBrightness; + uniform float eyeBrightnessM; + + uniform vec3 fogColor; + + #if NETHER_COLOR_MODE == 3 + uniform float inNetherWastes; + uniform float inCrimsonForest; + uniform float inWarpedForest; + uniform float inBasaltDeltas; + uniform float inSoulValley; + #endif + + #ifdef VERTEX_SHADER + uniform mat4 gbufferModelView; + #endif + +//Very Common Variables// + const float OSIEBCA = 1.0 / 255.0; // One Step In Eight Bit Color Attachment + /* materialMask steps + IntegratedPBR: + OSIEBCA * 1.0 = Intense Fresnel + OSIEBCA * 2.0 = Copper Fresnel + OSIEBCA * 3.0 = Gold Fresnel + OSIEBCA * 4.0 = + OSIEBCA * 5.0 = Redstone Fresnel + . + OSIEBCA * 240.0 = Green Screen Lime Blocks + PBR Independant: (Limited to 241 and above) + OSIEBCA * 241.0 = Water + . + OSIEBCA * 252.0 = Versatile Selection Outline + OSIEBCA * 253.0 = Reduced Edge TAA + OSIEBCA * 254.0 = No SSAO, No TAA + OSIEBCA * 255.0 = *Unused as 1.0 is the clear color* + */ + + float cloudMaxAdd = 5.0; + uniform float cloudHeight = 192.0; + uniform float eyeAltitude; + #if defined DOUBLE_REIM_CLOUDS && defined CLOUDS_REIMAGINED + float maximumCloudsHeight = max(CLOUD_ALT1, CLOUD_ALT2) + cloudMaxAdd; + #elif CLOUD_STYLE_DEFINE == 50 + float maximumCloudsHeight = cloudHeight + cloudMaxAdd; + #else + float maximumCloudsHeight = CLOUD_ALT1 + cloudMaxAdd; + #endif + float cloudGradientLength = 30.0; // in blocks, probably... + float heightRelativeToCloud = clamp(1.0 - (eyeAltitude - maximumCloudsHeight) / cloudGradientLength, 0.0, 1.0); + + const float shadowMapBias = 1.0 - 25.6 / shadowDistance; + float timeAngle = worldTime / 24000.0; + float noonFactor = sqrt(max(sin(timeAngle*6.28318530718),0.0)); + float nightFactor = max(sin(timeAngle*(-6.28318530718)),0.0); + float invNightFactor = 1.0 - nightFactor; + float rainFactor2 = rainFactor * rainFactor; + float invRainFactor = 1.0 - rainFactor; + float invRainFactorSqrt = 1.0 - rainFactor * rainFactor; + float invNoonFactor = 1.0 - noonFactor; + float invNoonFactor2 = invNoonFactor * invNoonFactor; + + float vsBrightness = clamp(screenBrightness, 0.0, 1.0); + + int modifiedWorldDay = int(mod(worldDay, 100) + 5.0); + float syncedTime = (worldTime + modifiedWorldDay * 24000) * 0.05; + + const float pi = 3.14159265359; + + const float oceanAltitude = 61.9; + + const vec3 blocklightCol = vec3(0.2, 0.1098, 0.0431) * vec3(XLIGHT_R, XLIGHT_G, XLIGHT_B); + + const vec3 caveFogColorRaw = vec3(0.13, 0.13, 0.15); + #if MINIMUM_LIGHT_MODE <= 1 + vec3 caveFogColor = caveFogColorRaw * 0.7; + #elif MINIMUM_LIGHT_MODE == 2 + vec3 caveFogColor = caveFogColorRaw * (0.7 + 0.3 * vsBrightness); // Default + #elif MINIMUM_LIGHT_MODE >= 3 + vec3 caveFogColor = caveFogColorRaw; + #endif + + #if WATERCOLOR_MODE >= 2 + vec3 underwaterColorM1 = pow(fogColor, vec3(0.33, 0.21, 0.26)); + #else + vec3 underwaterColorM1 = vec3(0.46, 0.62, 1.0); + #endif + #ifndef UNDERWATERCOLOR_CHANGED + vec3 underwaterColorM2 = underwaterColorM1; + #else + vec3 underwaterColorM2 = underwaterColorM1 * vec3(UNDERWATERCOLOR_RM, UNDERWATERCOLOR_GM, UNDERWATERCOLOR_BM); + #endif + vec3 waterFogColor = underwaterColorM2 * vec3(0.2 + 0.1 * vsBrightness); + + #if NETHER_COLOR_MODE == 3 && defined FRAGMENT_SHADER + float netherColorMixer = inNetherWastes + inCrimsonForest + inWarpedForest + inBasaltDeltas + inSoulValley; + vec3 netherColor = mix( + fogColor * 0.6 + 0.2 * normalize(fogColor + 0.0001), + ( + inNetherWastes * vec3(0.38, 0.15, 0.05) + inCrimsonForest * vec3(0.33, 0.07, 0.04) + + inWarpedForest * vec3(0.18, 0.1, 0.25) + inBasaltDeltas * vec3(0.25, 0.235, 0.23) + + inSoulValley * vec3(0.1, vec2(0.24)) + ), + netherColorMixer + ); + #elif NETHER_COLOR_MODE == 2 + vec3 netherColor = fogColor * 0.6 + 0.2 * normalize(fogColor + 0.0001); + #elif NETHER_COLOR_MODE == 0 + vec3 netherColor = vec3(0.7, 0.26, 0.08) * 0.6; + #endif + vec3 lavaLightColor = vec3(0.15, 0.06, 0.01); + + const vec3 endSkyColor = vec3(0.095, 0.07, 0.15) * 1.5; + + #if WEATHER_TEX_OPACITY == 100 + const float rainTexOpacity = 0.35; + const float snowTexOpacity = 0.5; + #else + #define WEATHER_TEX_OPACITY_M 100.0 / WEATHER_TEX_OPACITY + const float rainTexOpacity = pow(0.35, WEATHER_TEX_OPACITY_M); + const float snowTexOpacity = pow(0.5, WEATHER_TEX_OPACITY_M); + #endif + + #ifdef FRAGMENT_SHADER + ivec2 texelCoord = ivec2(gl_FragCoord.xy); + #endif + + const int cloudAlt1i = int(CLOUD_ALT1); // Old setting files can send float values + const int cloudAlt2i = int(CLOUD_ALT2); + +//Very Common Functions// +#include "/spookylib/util/commonFunctions.glsl" + +// 62 75 74 20 74 68 4F 73 65 20 77 68 6F 20 68 6F 70 65 20 69 6E 20 74 68 65 20 6C 69 6D 69 4E 61 6C 0A 77 69 6C 6C 20 72 65 6E 65 77 20 74 68 65 69 72 20 73 54 72 65 6E 67 74 48 2E 0A 74 68 65 79 20 77 69 6C 6C 20 73 6F 41 72 20 6F 6E 20 65 6C 79 54 72 61 73 20 6C 69 6B 65 20 70 68 61 6E 74 6F 6D 73 3B 0A 74 68 65 79 20 77 69 6C 6C 20 72 75 6E 20 61 6E 44 20 6E 6F 74 20 67 72 6F 77 20 77 65 41 72 79 2C 0A 74 68 65 59 20 77 69 6C 6C 20 77 61 6C 6B 20 61 6E 64 20 6E 6F 74 20 62 65 20 66 61 69 6E 74 2E \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/lighting/ggx.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/lighting/ggx.glsl new file mode 100644 index 0000000..680453f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/lighting/ggx.glsl @@ -0,0 +1,60 @@ +// GGX area light approximation from Horizon Zero Dawn +float GetNoHSquared(float radiusTan, float NoL, float NoV, float VoL) { + float radiusCos = 1.0 / sqrt(1.0 + radiusTan * radiusTan); + + float RoL = 2.0 * NoL * NoV - VoL; + if (RoL >= radiusCos) + return 1.0; + + float rOverLengthT = radiusCos * radiusTan / sqrt(1.0 - RoL * RoL); + float NoTr = rOverLengthT * (NoV - RoL * NoL); + float VoTr = rOverLengthT * (2.0 * NoV * NoV - 1.0 - RoL * VoL); + + float triple = sqrt(clamp(1.0 - NoL * NoL - NoV * NoV - VoL * VoL + 2.0 * NoL * NoV * VoL, 0.0, 1.0)); + + float NoBr = rOverLengthT * triple, VoBr = rOverLengthT * (2.0 * triple * NoV); + float NoLVTr = NoL * radiusCos + NoV + NoTr, VoLVTr = VoL * radiusCos + 1.0 + VoTr; + float p = NoBr * VoLVTr, q = NoLVTr * VoLVTr, s = VoBr * NoLVTr; + float xNum = q * (-0.5 * p + 0.25 * VoBr * NoLVTr); + float xDenom = p * p + s * ((s - 2.0 * p)) + NoLVTr * ((NoL * radiusCos + NoV) * VoLVTr * VoLVTr + + q * (-0.5 * (VoLVTr + VoL * radiusCos) - 0.5)); + float twoX1 = 2.0 * xNum / (xDenom * xDenom + xNum * xNum); + float sinTheta = twoX1 * xDenom; + float cosTheta = 1.0 - twoX1 * xNum; + NoTr = cosTheta * NoTr + sinTheta * NoBr; + VoTr = cosTheta * VoTr + sinTheta * VoBr; + + float newNoL = NoL * radiusCos + NoTr; + float newVoL = VoL * radiusCos + VoTr; + float NoH = NoV + newNoL; + float HoH = 2.0 * newVoL + 2.0; + return clamp(NoH * NoH / HoH, 0.0, 1.0); +} + +float GGX(vec3 normalM, vec3 viewPos, vec3 lightVec, float NdotLmax0, float smoothnessG) { + smoothnessG = sqrt1(smoothnessG * 0.9 + 0.1); + float roughnessP = (1.35 - smoothnessG); + float roughness = pow2(pow2(roughnessP)); + + vec3 halfVec = normalize(lightVec - viewPos); + + float dotLH = clamp(dot(halfVec, lightVec), 0.0, 1.0); + float dotNV = dot(normalM, -viewPos); + + #if WATER_REFLECT_QUALITY >= 2 + float dotNH = GetNoHSquared(0.01, NdotLmax0, dotNV, dot(-viewPos, lightVec)); + #else + float dotNH = pow2(min1(2.0 * NdotLmax0 * dotNV * length(halfVec) - dot(-viewPos, lightVec))); + #endif + + float denom = dotNH * roughness - dotNH + 1.0; + float D = roughness / (3.141592653589793 * pow2(denom)); + float f0 = 0.05; + float F = exp2((-5.55473 * dotLH - 6.98316) * dotLH) * (1.0 - f0) + f0; + + float NdotLmax0M = sqrt3(NdotLmax0 * max0(dot(normal, lightVec))); + float specular = max0(NdotLmax0M * D * F / pow2(dotLH)); + specular = specular / (0.125 * specular + 1.0); + + return specular; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/lighting/mainLighting.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/lighting/mainLighting.glsl new file mode 100644 index 0000000..2d85a51 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/lighting/mainLighting.glsl @@ -0,0 +1,502 @@ +//Lighting Uniforms// +uniform float darknessLightFactor; + +#if HELD_LIGHTING_MODE >= 1 + uniform int heldBlockLightValue; + uniform int heldBlockLightValue2; +#endif + +//Lighting Includes// +#include "/spookylib/colors/lightAndAmbientColors.glsl" +#include "/spookylib/lighting/ggx.glsl" + +#if defined REALTIME_SHADOWS && (defined OVERWORLD || defined END) + #include "/spookylib/lighting/shadowSampling.glsl" +#endif + +#if defined CLOUDS_REIMAGINED && defined CLOUD_SHADOWS + #if !defined GBUFFERS_WATER || WATER_STYLE == 1 + uniform sampler2D gaux4; + #endif + + #include "/spookylib/atmospherics/clouds/cloudCoord.glsl" +#endif + +#ifdef LIGHT_COLOR_MULTS + #include "/spookylib/colors/colorMultipliers.glsl" +#endif + +#if defined MOON_PHASE_INF_LIGHT || defined MOON_PHASE_INF_REFLECTION + #include "/spookylib/colors/moonPhaseInfluence.glsl" +#endif + +// +vec3 highlightColor = normalize(pow(lightColor, vec3(0.37))) * (0.3 + 1.5 * sunVisibility2) * (1.0 - 0.85 * rainFactor); + +//Lighting// +void DoLighting(inout vec4 color, inout vec3 shadowMult, vec3 playerPos, vec3 viewPos, float lViewPos, vec3 normalM, vec2 lightmap, + bool noSmoothLighting, bool noDirectionalShading, bool noVanillaAO, bool centerShadowBias, + int subsurfaceMode, float smoothnessG, float highlightMult, float emission) { + lightmap.x *= 0.85; + float lightmapY2 = pow2(lightmap.y); + float lightmapYM = smoothstep1(lightmap.y); + float subsurfaceHighlight = 0.0; + float ambientMult = 1.0; + vec3 lightColorM = lightColor; + vec3 ambientColorM = ambientColor; + vec3 nViewPos = normalize(viewPos); + + #if defined LIGHT_COLOR_MULTS && !defined GBUFFERS_WATER // lightColorMult is defined early in gbuffers_water + lightColorMult = GetLightColorMult(); + #endif + + vec3 normalLighting = ViewToPlayer(normal); + #ifdef IS_IRIS + vec2 lightningAdd = lightningFlashEffect(playerPos, lightningBoltPosition.xyz, normalLighting, 450.0) * lightningBoltPosition.w * 5.0; + ambientColorM += lightningAdd.x; + #else + vec2 lightningAdd = lightningFlashEffect(playerPos, vec3(0.0), normalLighting, 450.0) * lightningFlashOptifine * 5.0; + ambientColorM += lightningAdd.x; + #endif + + #ifdef OVERWORLD + float skyLightShadowMult = pow2(pow2(lightmapY2)); + #else + float skyLightShadowMult = 1.0; + #endif + + #if defined SIDE_SHADOWING || defined DIRECTIONAL_SHADING + float NdotN = dot(normalM, northVec); + float absNdotN = abs(NdotN); + #endif + + #if defined CUSTOM_PBR || defined GENERATED_NORMALS + float NPdotU = abs(dot(normal, upVec)); + #endif + + // Shadows + #if defined OVERWORLD || defined END + float NdotL = dot(normalM, lightVec); + #ifdef GBUFFERS_WATER + //NdotL = mix(NdotL, 1.0, 1.0 - color.a); + #endif + #ifdef CUSTOM_PBR + float geoNdotLM = dot(normal, lightVec); + if (geoNdotLM > 0.0) geoNdotLM *= 10.0; + NdotL = min(geoNdotLM, NdotL); + + NdotL *= 1.0 - 0.7 * (1.0 - pow2(pow2(NdotUmax0))) * NPdotU; + #endif + #if !defined REALTIME_SHADOWS && defined GBUFFERS_TERRAIN + if (subsurfaceMode == 1) { + NdotU = 1.0; + NdotUmax0 = 1.0; + NdotL = dot(upVec, lightVec); + } else if (subsurfaceMode == 2) { + highlightMult *= NdotL; + NdotL = mix(NdotL, 1.0, 0.35); + } + + subsurfaceMode = 0; + #endif + float NdotLmax0 = max0(NdotL); + float NdotLM = NdotLmax0 * 0.9999; + + #ifndef GBUFFERS_TEXTURED + #if defined GBUFFERS_TERRAIN + if (subsurfaceMode != 0) NdotLM = 1.0; + #ifdef SIDE_SHADOWING + else + #endif + #endif + #ifdef SIDE_SHADOWING + NdotLM = max0(NdotL + 0.4) * 0.714; + + #ifdef END + NdotLM = sqrt3(NdotLM); + #endif + #endif + #else + NdotLM = 1.0; + #endif + + #if !defined ENTITY_SHADOWS && (defined GBUFFERS_ENTITIES || defined GBUFFERS_BLOCK) + lightColorM = mix(lightColorM * 0.75, ambientColorM, 0.5 * pow2(pow2(1.0 - NdotLM))); + NdotLM = NdotLM * 0.75 + 0.25; + #endif + + if (shadowMult.r > 0.00001) { + #ifdef REALTIME_SHADOWS + if (NdotLM > 0.0001) { + vec3 shadowMultBeforeLighting = shadowMult; + float shadowLength = shadowDistance * 0.9166667 - length(vec4(playerPos.x, playerPos.y, playerPos.y, playerPos.z)); + + if (shadowLength > 0.000001) { + float offset = 0.0009765; + + vec3 playerPosM = playerPos; + + #if PIXEL_SHADOW > 0 && !defined GBUFFERS_HAND + playerPosM = floor((playerPosM + cameraPosition) * PIXEL_SHADOW + 0.001) / PIXEL_SHADOW - cameraPosition + 0.5 / PIXEL_SHADOW; + #endif + + #ifndef GBUFFERS_TEXTURED + // Shadow bias without peter-panning + vec3 worldNormal = normalize(ViewToPlayer(normal*1000.0)); + float distanceBias = pow(dot(playerPos, playerPos), 0.75); + distanceBias = 0.12 + 0.0008 * distanceBias; + vec3 bias = worldNormal * distanceBias * (2.0 - 0.95 * NdotLmax0); // 0.95 fixes pink petals noon shadows + + #ifdef GBUFFERS_TERRAIN + if (subsurfaceMode == 2) { + bias *= vec3(0.0, 0.0, -0.75); + } else if (subsurfaceMode == 1) { + bias *= 1.0 - lightmapYM; + } + #endif + + // Fix light leaking in caves + if (lightmapYM < 0.999) { + #ifdef GBUFFERS_HAND + playerPosM = mix(vec3(0.0), playerPosM, 0.2 + 0.8 * lightmapYM); + #else + if (centerShadowBias) { + #ifdef OVERWORLD + vec3 centerPos = floor(playerPosM + cameraPosition) - cameraPosition + 0.5; + playerPosM = mix(centerPos, playerPosM, 0.5 + 0.5 * lightmapYM); + #endif + } else { + vec3 edgeFactor = 0.2 * (0.5 - fract(playerPosM + cameraPosition + worldNormal * 0.01)); + + #ifdef GBUFFERS_WATER + bias *= 0.7; + playerPosM += (1.0 - lightmapYM) * edgeFactor; + #endif + + playerPosM += (1.0 - pow2(pow2(max(glColor.a, lightmapYM)))) * edgeFactor; + } + #endif + } + + playerPosM += bias; + #else + vec3 centerplayerPos = floor(playerPosM + cameraPosition) - cameraPosition + 0.5; + playerPosM = mix(centerplayerPos, playerPosM + vec3(0.0, 0.02, 0.0), lightmapYM); + #endif + + vec3 shadowPos = GetShadowPos(playerPosM); + + bool leaves = false; + #ifdef GBUFFERS_TERRAIN + if (subsurfaceMode == 0) { + #if defined PERPENDICULAR_TWEAKS && defined SIDE_SHADOWING + offset *= 1.0 + pow2(absNdotN); + #endif + } else { + float VdotL = dot(nViewPos, lightVec); + float lightFactor = pow(max(VdotL, 0.0), 10.0) * float(isEyeInWater == 0); + if (subsurfaceMode == 1) { + offset = 0.0010235 * lightmapYM + 0.0009765; + shadowPos.z -= max(NdotL * 0.0001, 0.0) * lightmapYM; + subsurfaceHighlight = lightFactor * 0.8; + #ifndef SHADOW_FILTERING + shadowPos.z -= 0.0002; + #endif + } else { + leaves = true; + offset = 0.0005235 * lightmapYM + 0.0009765; + shadowPos.z -= 0.000175 * lightmapYM; + subsurfaceHighlight = lightFactor * 0.6; + #ifndef SHADOW_FILTERING + NdotLM = mix(NdotL, NdotLM, 0.5); + #endif + } + } + #endif + + shadowMult *= GetShadow(shadowPos, lViewPos, lightmap.y, offset, leaves); + } + + float shadowSmooth = 16.0; + if (shadowLength < shadowSmooth) { + float shadowMixer = max0(shadowLength / shadowSmooth); + + #ifdef GBUFFERS_TERRAIN + if (subsurfaceMode != 0) { + float shadowMixerM = pow2(shadowMixer); + + if (subsurfaceMode == 1) skyLightShadowMult *= mix(0.6 + 0.3 * pow2(noonFactor), 1.0, shadowMixerM); + else skyLightShadowMult *= mix(NdotL * 0.4999 + 0.5, 1.0, shadowMixerM); + + subsurfaceHighlight *= shadowMixer; + } + #endif + + shadowMult = mix(vec3(skyLightShadowMult * shadowMultBeforeLighting), shadowMult, shadowMixer); + } + + #ifdef CLOUD_SHADOWS + if (shadowMult.r > 0.0001) { + vec3 worldPos = playerPos + cameraPosition; + + #ifdef CLOUDS_REIMAGINED + float EdotL = dot(eastVec, lightVec); + float EdotLM = tan(acos(EdotL)); + + #if SUN_ANGLE != 0 + float NVdotLM = tan(acos(dot(northVec, lightVec))); + #endif + + float distToCloudLayer1 = cloudAlt1i - worldPos.y; + vec3 cloudOffset1 = vec3(distToCloudLayer1 / EdotLM, 0.0, 0.0); + #if SUN_ANGLE != 0 + cloudOffset1.z += distToCloudLayer1 / NVdotLM; + #endif + vec2 cloudPos1 = GetRoundedCloudCoord(ModifyTracePos(worldPos + cloudOffset1, cloudAlt1i).xz); + float cloudSample = texture2D(gaux4, cloudPos1).b; + cloudSample *= clamp(distToCloudLayer1 * 0.1, 0.0, 1.0); + + #ifdef DOUBLE_REIM_CLOUDS + float distToCloudLayer2 = cloudAlt2i - worldPos.y; + vec3 cloudOffset2 = vec3(distToCloudLayer2 / EdotLM, 0.0, 0.0); + #if SUN_ANGLE != 0 + cloudOffset2.z += distToCloudLayer2 / NVdotLM; + #endif + vec2 cloudPos2 = GetRoundedCloudCoord(ModifyTracePos(worldPos + cloudOffset2, cloudAlt2i).xz); + float cloudSample2 = texture2D(gaux4, cloudPos2).b; + cloudSample2 *= clamp(distToCloudLayer2 * 0.1, 0.0, 1.0); + + cloudSample = max(cloudSample, cloudSample2); + #endif + + cloudSample *= sqrt3(1.0 - abs(EdotL)); + shadowMult *= 1.0 - 0.85 * cloudSample; + #else + vec2 csPos = worldPos.xz + worldPos.y * 0.25; + csPos.x += syncedTime; + csPos *= 0.0002; + + vec2 shadowoffsets[8] = vec2[8]( + vec2( 0.0 , 1.0 ), + vec2( 0.7071, 0.7071), + vec2( 1.0 , 0.0 ), + vec2( 0.7071,-0.7071), + vec2( 0.0 ,-1.0 ), + vec2(-0.7071,-0.7071), + vec2(-1.0 , 0.0 ), + vec2(-0.7071, 0.7071)); + float cloudSample = 0.0; + for (int i = 0; i < 8; i++) { + cloudSample += texture2D(noisetex, csPos + 0.005 * shadowoffsets[i]).b; + } + + shadowMult *= smoothstep1(pow2(min1(cloudSample * 0.2))); + #endif + } + #endif + } + #else + shadowMult *= skyLightShadowMult; + #endif + + shadowMult *= max(NdotLM * shadowTime, 0.0); + } + #ifdef GBUFFERS_WATER + else { // Low Quality Water + shadowMult = vec3(pow2(lightmapY2) * max(NdotLM * shadowTime, 0.0)); + } + #endif + #endif + + // Blocklight + #if HELD_LIGHTING_MODE >= 1 + float heldLight = max(heldBlockLightValue, heldBlockLightValue2); + float lViewPosL = lViewPos; + heldLight *= 1.1; + lViewPosL *= 2.5; + lightmap.x = max(lightmap.x, (heldLight - lViewPosL) * 0.066666); + #endif + float lightmapXM; + if (!noSmoothLighting) { + float lightmapXMSteep = pow2(pow2(lightmap.x * lightmap.x)) * (3.8 - 0.6 * vsBrightness); + float lightmapXMCalm = (lightmap.x) * (1.8 + 0.6 * vsBrightness); + lightmapXM = pow(lightmapXMSteep + lightmapXMCalm, 2.25); + } else lightmapXM = pow2(lightmap.x) * lightmap.x * 10.0; + + vec2 flickerNoise = texture2D(noisetex, vec2(frameTimeCounter * 0.06)).rb; + lightmapXM *= mix(1.0, min1(max(flickerNoise.r, flickerNoise.g) * 1.7), 0.7); + + // Minimum Light + float fadeDistance = max(1.0 - length(playerPos) / 80, 0.0); + fadeDistance = exp((1.0 - fadeDistance) * -15.0) * (1.0 - nightVision) + nightVision; + + #if !defined END && MINIMUM_LIGHT_MODE > 0 + #if MINIMUM_LIGHT_MODE == 1 + vec3 minLighting = vec3(0.0036) * fadeDistance; + #elif MINIMUM_LIGHT_MODE == 2 + vec3 minLighting = vec3(0.005625 + vsBrightness * 0.043) * fadeDistance; + #elif MINIMUM_LIGHT_MODE == 3 + vec3 minLighting = vec3(0.0625) * fadeDistance; + #elif MINIMUM_LIGHT_MODE == 4 + vec3 minLighting = vec3(0.25) * fadeDistance; + #endif + + minLighting *= 1.0 - lightmapYM; //AAA + #else + vec3 minLighting = vec3(0.0); + #endif + + minLighting += nightVision * vec3(0.5, 0.5, 0.75); + + // Lighting Tweaks + #ifdef OVERWORLD + ambientMult = mix(lightmapYM, pow2(lightmapYM) * lightmapYM, rainFactor); + + #ifndef REALTIME_SHADOWS + float tweakFactor = 1.0 + 0.6 * (1.0 - pow2(pow2(pow2(noonFactor)))); + lightColorM /= tweakFactor; + ambientMult *= mix(tweakFactor, 1.0, 0.5 * NdotUmax0); + #endif + + #if AMBIENT_MULT != 100 + #define AMBIENT_MULT_M (AMBIENT_MULT - 100) * 0.006 + vec3 shadowMultP = shadowMult / (0.1 + 0.9 * sqrt2(max0(NdotLM))); + ambientMult *= 1.0 + pow2(pow2(max0(1.0 - dot(shadowMultP, shadowMultP)))) * AMBIENT_MULT * + (0.5 + 0.2 * sunFactor + 0.8 * noonFactor) * (1.0 - rainFactor * 0.5); + #endif + + if (isEyeInWater != 1) { + float lxFactor = (sunVisibility2 * 0.4 + (0.6 - 0.6 * pow2(invNoonFactor))) * (6.0 - 5.0 * rainFactor); + lxFactor *= lightmapY2 + lightmapY2 * 2.0 * pow2(shadowMult.r); + lxFactor = max0(lxFactor - emission * 1000000.0); + lightmapXM *= pow(max(lightmap.x, 0.001), lxFactor); + + // Less light in the distance / more light closer to the camera during rain or night to simulate thicker fog + float rainLF = 0.1 * rainFactor; + float lightFogTweaks = 1.0 + max0(96.0 - lViewPos) * (0.002 * (1.0 - sunVisibility2) + 0.0104 * rainLF) - rainLF; + ambientMult *= lightFogTweaks; + lightColorM *= lightFogTweaks; + } + #endif + + #ifdef GBUFFERS_HAND + ambientMult *= 1.3; // To improve held map visibility + #endif + + // Directional Shading + float directionShade = 1.0; + #ifdef DIRECTIONAL_SHADING + if (!noDirectionalShading) { + float NdotE = dot(normalM, eastVec); + float absNdotE = abs(NdotE); + float absNdotE2 = pow2(absNdotE); + + #if !defined NETHER + float NdotUM = 0.75 + NdotU * 0.25; + #else + float NdotUM = 0.75 + abs(NdotU + 0.5) * 0.16666; + #endif + float NdotNM = 1.0 + 0.075 * absNdotN; + float NdotEM = 1.0 - 0.1 * absNdotE2; + directionShade = NdotUM * NdotEM * NdotNM; + + #ifdef OVERWORLD + lightColorM *= 1.0 + absNdotE2 * 0.75; + #elif defined NETHER + directionShade *= directionShade; + ambientColorM += lavaLightColor * pow2(absNdotN * 0.5 + max0(-NdotU)) * (0.7 + 0.35 * vsBrightness); + #endif + + #if defined CUSTOM_PBR || defined GENERATED_NORMALS + float cpbrAmbFactor = NdotN * NPdotU; + cpbrAmbFactor = 1.0 - 0.3 * cpbrAmbFactor; + ambientColorM *= cpbrAmbFactor; + minLighting *= cpbrAmbFactor; + #endif + + #if defined OVERWORLD && defined PERPENDICULAR_TWEAKS && defined SIDE_SHADOWING + // Fake bounced light + ambientColorM = mix(ambientColorM, lightColorM, (0.05 + 0.03 * subsurfaceMode) * absNdotN * lightmapY2); + + // Get a bit more natural looking lighting during noon + lightColorM *= 1.0 + max0(1.0 - subsurfaceMode) * pow(noonFactor, 20.0) * (pow2(absNdotN) - absNdotE2 * 0.1); + #endif + } + #endif + + // Combine Lighting + vec3 blockLighting = lightmapXM * blocklightCol; + vec3 sceneLighting = lightColorM * shadowMult + ambientColorM * ambientMult; + float dotSceneLighting = dot(sceneLighting, sceneLighting); + + #ifdef LIGHT_COLOR_MULTS + sceneLighting *= lightColorMult; + #endif + #ifdef MOON_PHASE_INF_LIGHT + sceneLighting *= moonPhaseInfluence; + #endif + + // Vanilla Ambient Occlusion + float vanillaAO = 1.0; + #if VANILLAAO_I > 0 + if (subsurfaceMode != 0) vanillaAO = min1(glColor.a * 1.15); + else if (!noVanillaAO) { + #ifdef GBUFFERS_TERRAIN + vanillaAO = min1(glColor.a + 0.08); + #ifdef OVERWORLD + vanillaAO = pow( + pow1_5(vanillaAO), + 1.0 + dotSceneLighting * 0.02 + NdotUmax0 * (0.15 + 0.25 * pow2(noonFactor * pow2(lightmapY2))) + ); + #elif defined NETHER + vanillaAO = pow( + pow1_5(vanillaAO), + 1.0 + NdotUmax0 * 0.5 + ); + #else + vanillaAO = pow( + vanillaAO, + 0.75 + NdotUmax0 * 0.25 + ); + #endif + #else + vanillaAO = glColor.a; + #endif + vanillaAO = vanillaAO * 0.9 + 0.1; + + #if VANILLAAO_I != 100 + #define VANILLAAO_IM VANILLAAO_I * 0.01 + vanillaAO = pow(vanillaAO, VANILLAAO_IM); + #endif + } + #endif + + // Light Highlight + vec3 lightHighlight = vec3(0.0); + #ifdef LIGHT_HIGHLIGHT + float specularHighlight = GGX(normalM, nViewPos, lightVec, NdotLmax0, smoothnessG); + + specularHighlight *= highlightMult; + + lightHighlight = isEyeInWater != 1 ? shadowMult : pow(shadowMult, vec3(0.25)) * 0.35; + lightHighlight *= (subsurfaceHighlight + specularHighlight) * highlightColor; + + #ifdef LIGHT_COLOR_MULTS + lightHighlight *= lightColorMult; + #endif + #ifdef MOON_PHASE_INF_REFLECTION + lightHighlight *= pow2(moonPhaseInfluence); + #endif + + lightHighlight *= 0.3; + #endif + + // Mix Colors + vec3 finalDiffuse = pow2(directionShade * vanillaAO) * (blockLighting + pow2(sceneLighting) + minLighting) + pow2(emission); + finalDiffuse = sqrt(max(finalDiffuse, vec3(0.0))); // sqrt() for a bit more realistic light mix, max() to prevent NaNs + + // Apply Lighting + color.rgb *= finalDiffuse; + color.rgb += lightHighlight; + color.rgb *= pow2(1.0 - darknessLightFactor); +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/lighting/shadowSampling.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/lighting/shadowSampling.glsl new file mode 100644 index 0000000..87d9169 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/lighting/shadowSampling.glsl @@ -0,0 +1,122 @@ +uniform sampler2D shadowcolor0; +uniform sampler2DShadow shadowtex0; +uniform sampler2DShadow shadowtex1; + +vec3 GetShadowPos(vec3 playerPos) { + vec3 shadowPos = PlayerToShadow(playerPos); + float distb = sqrt(shadowPos.x * shadowPos.x + shadowPos.y * shadowPos.y); + float distortFactor = distb * shadowMapBias + (1.0 - shadowMapBias); + shadowPos.xy /= distortFactor; + shadowPos.z *= 0.2; + return shadowPos * 0.5 + 0.5; +} + +vec3 SampleShadow(vec3 shadowPos, float colorMult, float colorPow) { + float shadow0 = shadow2D(shadowtex0, vec3(shadowPos.st, shadowPos.z)).x; + + vec3 shadowcol = vec3(0.0); + if (shadow0 < 1.0) { + float shadow1 = shadow2D(shadowtex1, vec3(shadowPos.st, shadowPos.z)).x; + if (shadow1 > 0.9999) { + shadowcol = texture2D(shadowcolor0, shadowPos.st).rgb * shadow1; + + shadowcol *= colorMult; + shadowcol = pow(shadowcol, vec3(colorPow)); + } + } + + return shadowcol * (1.0 - shadow0) + shadow0; +} + +float InterleavedGradientNoise() { + float n = 52.9829189 * fract(0.06711056 * gl_FragCoord.x + 0.00583715 * gl_FragCoord.y); + #if !defined GBUFFERS_ENTITIES && !defined GBUFFERS_HAND && !defined GBUFFERS_TEXTURED + return fract(n + 1.61803398875 * mod(float(frameCounter), 3600.0)); + #else + return fract(n); + #endif +} + +vec2 offsetDist(float x, int s) { + float n = fract(x * 2.427) * 3.1415; + return vec2(cos(n), sin(n)) * 1.4 * x / s; +} + +vec3 SampleTAAFilteredShadow(vec3 shadowPos, float lViewPos, float offset, bool leaves, float colorMult, float colorPow) { + vec3 shadow = vec3(0.0); + float gradientNoise = InterleavedGradientNoise(); + + #if SHADOW_QUALITY == 0 + int shadowSamples = 0; // We don't use SampleTAAFilteredShadow on Shadow Quality 0 + #elif SHADOW_QUALITY == 1 + int shadowSamples = 1; + #elif SHADOW_QUALITY == 2 || SHADOW_QUALITY == 3 + int shadowSamples = 2; + #elif SHADOW_QUALITY == 4 + int shadowSamples = 2; + if (lViewPos < 10.0) shadowSamples = 6; + #elif SHADOW_QUALITY == 5 + int shadowSamples = 6; + if (lViewPos < 10.0) shadowSamples = 12; + #endif + + #if !defined GBUFFERS_ENTITIES && !defined GBUFFERS_HAND && !defined GBUFFERS_TEXTURED + offset *= 1.3875; + #else + shadowSamples *= 2; + offset *= 0.69375; + #endif + + float shadowPosZM = shadowPos.z; + for (int i = 0; i < shadowSamples; i++) { + vec2 offset2 = offsetDist(gradientNoise + i, shadowSamples) * offset; + if (leaves) shadowPosZM = shadowPos.z - 0.12 * offset * (gradientNoise + i) / shadowSamples; + shadow += SampleShadow(vec3(shadowPos.st + offset2, shadowPosZM), colorMult, colorPow); + shadow += SampleShadow(vec3(shadowPos.st - offset2, shadowPosZM), colorMult, colorPow); + } + + shadow /= shadowSamples * 2.0; + + return shadow; +} + +vec2 shadowOffsets[4] = vec2[4]( + vec2( 1.0, 0.0), + vec2( 0.0, 1.0), + vec2(-1.0, 0.0), + vec2( 0.0,-1.0)); + +vec3 SampleBasicFilteredShadow(vec3 shadowPos, float offset) { + float shadow = 0.0; + + for (int i = 0; i < 4; i++) { + shadow += shadow2D(shadowtex0, vec3(offset * shadowOffsets[i] + shadowPos.st, shadowPos.z)).x; + } + + return vec3(shadow * 0.25); +} + +vec3 GetShadow(vec3 shadowPos, float lViewPos, float lightmapY, float offset, bool leaves) { + #if SHADOW_QUALITY > 0 + #if !defined ENTITY_SHADOWS && defined GBUFFERS_BLOCK + offset *= 4.0; + #else + #ifdef OVERWORLD + offset *= 1.0 + rainFactor2 * 2.0; + #else + offset *= 3.0; + #endif + #endif + #endif + + float colorMult = 1.2 + 3.8 * lightmapY; // Natural strength is 5.0 + float colorPow = 1.1 - 0.6 * pow2(pow2(pow2(lightmapY))); + + #if SHADOW_QUALITY >= 1 + vec3 shadow = SampleTAAFilteredShadow(shadowPos, lViewPos, offset, leaves, colorMult, colorPow); + #else + vec3 shadow = SampleBasicFilteredShadow(shadowPos, offset); + #endif + + return shadow; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/blockEntityMaterials.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/blockEntityMaterials.glsl new file mode 100644 index 0000000..8c31022 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/blockEntityMaterials.glsl @@ -0,0 +1,105 @@ +if (blockEntityId < 60028) { + if (blockEntityId < 60012) { + if (blockEntityId < 60004) { + if (blockEntityId == 10548) { // Enchanting Table:Book + smoothnessG = pow2(color.g) * 0.35; + + if (color.b < 0.0001 && color.r > color.g) { + emission = color.g * 4.0; + } + } else if (blockEntityId == 60000) { // + + } + } else { + if (blockEntityId == 60004) { // Signs + noSmoothLighting = true; + + if (glColor.r + glColor.g + glColor.b <= 2.99 || lmCoord.x > 0.999) { // Sign Text + #include "/spookylib/materials/specificMaterials/others/signText.glsl" + } + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } else /*if (blockEntityId == 60008)*/ { // Chest + noSmoothLighting = true; + + smoothnessG = pow2(color.g); + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + } + } else { + if (blockEntityId < 60020) { + if (blockEntityId == 60012) { // Ender Chest + noSmoothLighting = true; + + float factor = min(pow2(color.g), 0.25); + smoothnessG = factor * 2.0; + + if (color.g > color.r || color.b > color.g) + emission = pow2(factor) * 20.0; + emission += 0.35; + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } else /*if (blockEntityId == 60016)*/ { // Shulker Box+, Banner+, Head+, Bed+ + noSmoothLighting = true; + #ifdef COATED_TEXTURES + noiseFactor = 0.2; + #endif + } + } else { + if (blockEntityId == 60020) { // Conduit + noSmoothLighting = true; + lmCoordM.x = 0.9; + + if (color.b > color.r) { // Conduit:Wind, Conduit:Blue Pixels of The Eye + emission = color.r * 16.0; + } else if (color.r > color.b * 2.5) { // Conduit:Red Pixels of The Eye + emission = 20.0; + color.rgb *= vec3(1.0, 0.25, 0.1); + } + } else /*if (blockEntityId == 60024)*/ { // End Portal + #include "/spookylib/materials/specificMaterials/others/endPortalEffect.glsl" + } + } + } +} else { + if (blockEntityId < 60044) { + if (blockEntityId < 60036) { + if (blockEntityId == 60028) { // End Gateway + #include "/spookylib/materials/specificMaterials/others/endPortalEffect.glsl" + } else /*if (blockEntityId == 60032)*/ { // Bell + if (color.r + color.g > color.b + 0.5) { // Bell:Golden Part + #include "/spookylib/materials/specificMaterials/terrain/goldBlock.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + } + } else { + if (blockEntityId == 60036) { // + + } else /*if (blockEntityId == 60040)*/ { // + + } + } + } else { + if (blockEntityId < 60052) { + if (blockEntityId == 60044) { // + + } else /*if (blockEntityId == 60048)*/ { // + + } + } else { + if (blockEntityId == 60052) { // + + } else if (blockEntityId == 60056) { // + + } + } + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/customMaterials.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/customMaterials.glsl new file mode 100644 index 0000000..7f60bb0 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/customMaterials.glsl @@ -0,0 +1,136 @@ +#ifdef POM + #include "/spookylib/materials/materialMethods/pomEffects.glsl" +#endif + +void GetCustomMaterials(inout vec4 color, inout vec3 normalM, inout vec2 lmCoordM, inout float NdotU, inout vec3 shadowMult, inout float smoothnessG, inout float smoothnessD, inout float highlightMult, inout float emission, inout float materialMask, vec3 viewPos, float lViewPos) { + vec2 texCoordM = texCoord; + + #ifdef POM + texCoordM = vTexCoord.xy * vTexCoordAM.zw + vTexCoordAM.xy; + + float parallaxFade = pow2(lViewPos / POM_DISTANCE); // Still enabled to test: Lava, Painting + #ifdef GBUFFERS_ENTITIES + if (entityId == 50008) parallaxFade = 1.1; // Item Frame, Glow Item Frame + #endif + #ifdef GBUFFERS_BLOCK + if (blockEntityId == 60004) parallaxFade = 1.1; // Signs + #endif + #ifdef GBUFFERS_HAND + if (heldItemId == 40004 || heldItemId2 == 40004) parallaxFade = 1.1; // Filled Map + #endif + + vec3 parallaxTraceCoordDepth = vec3(texCoordM, 1.0); + float parallaxTexDepth = 1.0; + vec2 parallaxLocalCoord = vTexCoord.st; + + vec4 normalMap = ReadNormal(vTexCoord.st); + parallaxFade += pow(normalMap.a, 64.0); + + if (parallaxFade < 1.0) { + parallaxLocalCoord = GetParallaxCoord(parallaxFade, texCoordM, parallaxTexDepth, parallaxTraceCoordDepth); + + normalMap = textureGrad(normals, texCoordM, dcdx, dcdy); + color = textureGrad(tex, texCoordM, dcdx, dcdy); + #if !defined GBUFFERS_ENTITIES && !defined GBUFFERS_BLOCK + color.rgb *= glColor.rgb; + #else + color *= glColor; + #endif + + shadowMult *= GetParallaxShadow(parallaxFade, normalMap.a, parallaxLocalCoord, lightVec, tbnMatrix); + } + #endif + + // Normal Map + #if NORMAL_MAP_STRENGTH != 0 + #ifndef POM + vec4 normalMap = texture2D(normals, texCoordM); + #endif + + normalM = normalMap.xyz; + normalM += vec3(0.5, 0.5, 0.0); + normalM = pow(normalM, vec3(NORMAL_MAP_STRENGTH * 0.007)); // 70% strength by default + normalM -= vec3(0.5, 0.5, 0.0); + normalM = normalM * 2.0 - 1.0; + + #if RP_MODE == 3 // labPBR + if (normalM.x + normalM.y > -1.999) { + if (length(normalM.xy) > 1.0) normalM.xy = normalize(normalM.xy); + normalM.z = sqrt(1.0 - dot(normalM.xy, normalM.xy)); + normalM.xyz = normalize(clamp(normalM.xyz, vec3(-1.0), vec3(1.0))); + } else normalM = vec3(0.0, 0.0, 1.0); + #endif + + #if defined POM && POM_QUALITY >= 128 && POM_LIGHTING_MODE == 2 + float slopeThreshold = max(1.0 / POM_QUALITY, 1.0/255.0); + if (parallaxTexDepth - parallaxTraceCoordDepth.z > slopeThreshold) { + vec3 slopeNormal = GetParallaxSlopeNormal(parallaxLocalCoord, parallaxTraceCoordDepth.z, viewVector); + normalM = mix(normalM, slopeNormal, 0.5 * pow2(max0(1.0 - parallaxFade * 2.0))); + } + #endif + + normalM = clamp(normalize(normalM * tbnMatrix), vec3(-1.0), vec3(1.0)); + + NdotU = dot(normalM, upVec); + NdotUmax0 = max0(NdotU); + #endif + + #if DIRECTIONAL_BLOCKLIGHT > 0 + mat3 lightmapTBN = mat3(normalize(dFdx(viewPos)), normalize(dFdy(viewPos)), vec3(0.0)); + lightmapTBN[2] = cross(lightmapTBN[0], lightmapTBN[1]); + + float lmCoordXDir = lmCoordM.x; + vec2 deriv = vec2(dFdx(lmCoordXDir), dFdy(lmCoordXDir)) * 256.0; + vec3 dir = normalize(vec3(deriv.x * lightmapTBN[0] + + 0.0005 * lightmapTBN[2] + + deriv.y * lightmapTBN[1])); + + float pwr = clamp(dot(normalM, dir), -1.0, 1.0); + float absPwr = abs(pwr); + if (absPwr > 0.0) pwr = pow(absPwr, 9.0 / DIRECTIONAL_BLOCKLIGHT) * sign(pwr) * lmCoordXDir; + if (length(deriv) > 0.001) lmCoordXDir = pow(max(lmCoordXDir, 0.00001), 1.0 - pwr); + + lmCoordM.x = mix(lmCoordM.x, lmCoordXDir, 0.01 * max0(100.0 - pow2(lViewPos))); + #endif + + // Specular Map + vec4 specularMap = texture2D(specular, texCoordM); + + float smoothnessM = pow2(specularMap.r); + smoothnessG = smoothnessM; + smoothnessD = smoothnessM; + highlightMult = 1.0 + 2.5 * specularMap.r; + + #if RP_MODE == 3 // labPBR + highlightMult *= 0.5 + 0.5 * specularMap.g; + #endif + + #if CUSTOM_EMISSION_INTENSITY > 0 + #if RP_MODE == 2 // seuspbr + emission = specularMap.b; + #elif RP_MODE == 3 // labPBR + emission = specularMap.a < 1.0 ? specularMap.a : 0.0; + + vec4 specularMapL0 = texture2DLod(specular, texCoordM, 0); + float emissionL0 = specularMapL0.a < 1.0 ? specularMapL0.a : 0.0; + emission = min(emission, emissionL0); // Fixes issues caused by mipmaps + #endif + emission *= 0.03 * CUSTOM_EMISSION_INTENSITY; + #endif + + #ifndef GBUFFERS_WATER + #ifdef GBUFFERS_ENTITIES + if (materialMask > OSIEBCA * 240.1) return; + #endif + + #if RP_MODE == 2 // seuspbr + materialMask = specularMap.g * OSIEBCA * 240.0; + #elif RP_MODE == 3 // labPBR + if (specularMap.g < OSIEBCA * 229.1) { + materialMask = specularMap.g * OSIEBCA * 214.0; + } else { + materialMask = specularMap.g - OSIEBCA * 15.0; + } + #endif + #endif +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/deferredMaterials.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/deferredMaterials.glsl new file mode 100644 index 0000000..4e3404d --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/deferredMaterials.glsl @@ -0,0 +1,66 @@ +if (materialMaskInt != 0) { + if (materialMaskInt < 9) { + if (materialMaskInt < 5) { + if (materialMaskInt < 3) { + if (materialMaskInt == 1) { // Intense Fresnel + intenseFresnel = 1.0; + } else /*if (materialMaskInt == 2)*/ { // Copper Fresnel + intenseFresnel = 1.0; + reflectColor = mix(vec3(0.5, 0.75, 0.5), vec3(1.0, 0.45, 0.3), sqrt1(smoothnessD)); + } + } else { + if (materialMaskInt == 3) { // Gold Fresnel + intenseFresnel = 1.0; + reflectColor = vec3(1.0, 0.8, 0.5); + } else /*if (materialMaskInt == 4)*/ { // End Portal + + } + } + } else { + if (materialMaskInt < 7) { + if (materialMaskInt == 5) { // Redstone Fresnel + intenseFresnel = 1.0; + reflectColor = vec3(1.0, 0.3, 0.2); + } else /*if (materialMaskInt == 6)*/ { // + + } + } else { + if (materialMaskInt == 7) { // + + } else /*if (materialMaskInt == 8)*/ { // + + } + } + } + } else { + if (materialMaskInt < 13) { + if (materialMaskInt < 11) { + if (materialMaskInt == 9) { // + + } else /*if (materialMaskInt == 10)*/ { // + + } + } else { + if (materialMaskInt == 11) { // + + } else /*if (materialMaskInt == 12)*/ { // + + } + } + } else { + if (materialMaskInt < 15) { + if (materialMaskInt == 13) { // + + } else /*if (materialMaskInt == 14)*/ { // + + } + } else { + if (materialMaskInt == 254) { // No SSAO, No TAA + ssao = 1.0; + } else /*if (materialMaskInt == "15 to 255 except 254")*/ { // + + } + } + } + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/entityMaterials.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/entityMaterials.glsl new file mode 100644 index 0000000..37ec2fa --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/entityMaterials.glsl @@ -0,0 +1,183 @@ +if (entityId < 50064) { + if (entityId < 50032) { + if (entityId < 50016) { + if (entityId < 50008) { + if (entityId == 50000) { // End Crystal + lmCoordM.x *= 0.7; + + if (color.g * 1.2 < color.r) { + emission = 12.0 * color.g; + color.r *= 1.1; + } + } else if (entityId == 50004) { // Lightning Bolt + #include "/spookylib/materials/specificMaterials/entities/lightningBolt.glsl" + } + } else { + if (entityId == 50008) { // Item Frame, Glow Item Frame + noSmoothLighting = true; + } else /*if (entityId == 50012)*/ { // + + } + } + } else { + if (entityId < 50024) { + if (entityId == 50016) { // Player + if (entityColor.a < 0.001) { + #ifdef COATED_TEXTURES + noiseFactor = 0.5; + #endif + + if (CheckForColor(texelFetch(tex, ivec2(0, 0), 0).rgb, vec3(23, 46, 92))) { + for (int i = 63; i >= 56; i--) { + vec3 dif = color.rgb - texelFetch(tex, ivec2(i, 0), 0).rgb; + if (dif == clamp(dif, vec3(-0.001), vec3(0.001))) { + emission = 2.0 * texelFetch(tex, ivec2(i, 1), 0).r; + } + } + } + } + } else /*if (entityId == 50020)*/ { // Blaze + lmCoordM = vec2(0.9, 0.0); + emission = min(color.r, 0.7) * 1.4; + + float dotColor = dot(color.rgb, color.rgb); + if (abs(dotColor - 1.5) > 1.4) { + emission = 5.0; + } + } + } else { + if (entityId == 50024) { // Creeper + emission = max0(color.b - color.g - color.r) * 10.0; + } else /*if (entityId == 50028)*/ { // Drowned + if (atlasSize.x < 900) { + if (CheckForColor(color.rgb, vec3(143, 241, 215)) || + CheckForColor(color.rgb, vec3( 49, 173, 183)) || + CheckForColor(color.rgb, vec3(101, 224, 221))) emission = 3.0; + } + } + } + } + } else { + if (entityId < 50048) { + if (entityId < 50040) { + if (entityId == 50032) { // Guardian + vec3 absDif = abs(vec3(color.r - color.g, color.g - color.b, color.r - color.b)); + float maxDif = max(absDif.r, max(absDif.g, absDif.b)); + if (maxDif < 0.1 && color.b > 0.5 && color.b < 0.88) { + emission = pow2(pow1_5(color.b)) * 5.0; + color.rgb *= color.rgb; + } + } else /*if (entityId == 50036)*/ { // Elder Guardian + if (CheckForColor(color.rgb, vec3(203, 177, 165)) || + CheckForColor(color.rgb, vec3(214, 155, 126))) { + emission = pow2(pow1_5(color.b)) * 10.0; + color.r *= 1.2; + } + } + } else { + if (entityId == 50040) { // Endermite + if (CheckForColor(color.rgb, vec3(87, 23, 50))) { + emission = 8.0; + color.rgb *= color.rgb; + } + } else /*if (entityId == 50044)*/ { // Ghast + if (entityColor.a < 0.001) + emission = max0(color.r - color.g - color.b) * 6.0; + } + } + } else { + if (entityId < 50056) { + if (entityId == 50048) { // Glow Squid + lmCoordM.x = 0.0; + float dotColor = dot(color.rgb, color.rgb); + emission = pow2(pow2(min(dotColor * 0.65, 1.5))) + 0.45; + } else /*if (entityId == 50052)*/ { // Magma Cube + emission = color.g * 6.0; + } + } else { + if (entityId == 50056) { // Stray + if (CheckForColor(color.rgb, vec3(230, 242, 246)) && texCoord.y > 0.35) + emission = 3.7; + } else /*if (entityId == 50060)*/ { // Vex + lmCoordM = vec2(0.0); + emission = pow2(pow2(color.r)) * 3.5 + 0.5; + color.a *= color.a; + } + } + } + } +} else { + if (entityId < 50096) { + if (entityId < 50080) { + if (entityId < 50072) { + if (entityId == 50064) { // Witch + emission = 2.0 * color.g * float(color.g * 1.5 > color.b + color.r); + } else /*if (entityId == 50068)*/ { // Wither, Wither Skull + lmCoordM.x = 0.9; + emission = 3.0 * float(dot(color.rgb, color.rgb) > 1.0); + } + } else { + if (entityId == 50072) { // Experience Orb + emission = 7.5; + + color.rgb *= color.rgb; + } else /*if (entityId == 50076)*/ { // Boat + //playerPos.y += 0.18; // to avoid water shadow + playerPos.y += 0.38; // to also avoid the black inner shadow bug + } + } + } else { + if (entityId < 50088) { + if (entityId == 50080) { // Allay + if (atlasSize.x < 900) { + lmCoordM = vec2(0.0); + emission = float(color.r > 0.9 && color.b > 0.9) * 5.0 + color.g; + } else { + lmCoordM.x = 0.8; + } + } else /*if (entityId == 50084)*/ { // Slime + //only slime code is in Vertex Shader for now + } + } else { + if (entityId == 50088) { // Entity Flame (Iris Feature) + emission = 1.3; + } else /*if (entityId == 50092)*/ { // Trident Entity + #ifdef IS_IRIS + // Only on Iris, because otherwise it would be inconsistent with the Trident item + #include "/spookylib/materials/specificMaterials/others/trident.glsl" + #endif + } + } + } + } else { + if (entityId < 50112) { + if (entityId < 50104) { + if (entityId == 50096) { // + + } else /*if (entityId == 50100)*/ { // + + } + } else { + if (entityId == 50104) { // + + } else /*if (entityId == 50108)*/ { // + + } + } + } else { + if (entityId < 50120) { + if (entityId == 50112) { // + + } else /*if (entityId == 50116)*/ { // + + } + } else { + if (entityId == 50120) { // + + } else /*if (entityId == 50124)*/ { // + + } + } + } + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/irisMaterials.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/irisMaterials.glsl new file mode 100644 index 0000000..dcf3fa4 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/irisMaterials.glsl @@ -0,0 +1,221 @@ +int mat = currentRenderedItemId; + +#ifdef GBUFFERS_HAND + float lViewPos = 0.0; +#endif + +int subsurfaceMode; +bool noDirectionalShading, noVanillaAO, centerShadowBias; +float noPuddles; + +if (currentRenderedItemId < 45000) { + #include "/spookylib/materials/materialHandling/terrainMaterials.glsl" +} else + +if (currentRenderedItemId < 45064) { + if (currentRenderedItemId < 45032) { + if (currentRenderedItemId < 45016) { + if (currentRenderedItemId < 45008) { + if (currentRenderedItemId == 45000) { // Armor Trims + smoothnessG = 0.5; + highlightMult = 2.0; + smoothnessD = 0.5; + + #ifdef GLOWING_ARMOR_TRIM + emission = 2.0; + #endif + } else if (currentRenderedItemId == 45004) { // Wooden Tools, Bow, Fishing Rod + #include "/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl" + smoothnessG = min(smoothnessG, 0.4); + smoothnessD = smoothnessG; + } + } else { + if (currentRenderedItemId == 45008) { // Stone Tools + if (CheckForStick(color.rgb)) { + #include "/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + } else /*if (currentRenderedItemId == 45012)*/ { // Iron Tools, Iron Armor, Iron Ingot, Iron Nugget, Iron Horse Armor, Flint and Steel, Flint, Spyglass, Shears + if (CheckForStick(color.rgb)) { + #include "/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/ironBlock.glsl" + } + } + } + } else { + if (currentRenderedItemId < 45024) { + if (currentRenderedItemId == 45016) { // Golden Tools, Golden Armor, Gold Ingot, Gold Nugget, Golden Apple, Enchanted Golden Apple, Golden Carrot, Golden Horse Armor, Copper Ingot + if (CheckForStick(color.rgb)) { + #include "/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/goldBlock.glsl" + } + } else /*if (currentRenderedItemId == 45020)*/ { // Diamond Tools, Diamond Armor, Diamond, Diamond Horse Armor, Emerald + if (CheckForStick(color.rgb)) { + #include "/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/diamondBlock.glsl" + } + } + } else { + if (currentRenderedItemId == 45024) { // Netherite Tools, Netherite Armor, Netherite Ingot + smoothnessG = color.r * 2.0; + smoothnessG = min1(smoothnessG); + highlightMult = smoothnessG * 2.0; + smoothnessD = smoothnessG * 0.5 + 0.5; + + #ifdef COATED_TEXTURES + noiseFactor = 0.33; + #endif + } else /*if (currentRenderedItemId == 45028)*/ { // Trident Item + #include "/spookylib/materials/specificMaterials/others/trident.glsl" + } + } + } + } else { + if (currentRenderedItemId < 45048) { + if (currentRenderedItemId < 45040) { + if (currentRenderedItemId == 45032) { // Lava Bucket + if (color.r + color.g > color.b * 2.0) { + emission = color.r + color.g - color.b * 1.5; + emission *= 1.8; + color.rg += color.b * vec2(0.4, 0.15); + color.b *= 0.8; + } else { + #include "/spookylib/materials/specificMaterials/terrain/ironBlock.glsl" + } + } else /*if (currentRenderedItemId == 45036)*/ { // Bucket++ + if (GetMaxColorDif(color.rgb) < 0.01) { + #include "/spookylib/materials/specificMaterials/terrain/ironBlock.glsl" + } else { + float factor = color.b; + smoothnessG = factor; + highlightMult = factor * 2.0; + smoothnessD = factor; + } + } + } else { + if (currentRenderedItemId == 45040) { // Blaze Rod, Blaze Powder + noSmoothLighting = false; + lmCoordM.x = 0.85; + emission = color.g; + color.rgb = sqrt1(color.rgb); + } else /*if (currentRenderedItemId == 45044)*/ { // Bottle o' Enchanting, Glow Inc Sac + emission = color.b * 2.0; + } + } + } else { + if (currentRenderedItemId < 45056) { + if (currentRenderedItemId == 45048) { // Fire Charge + emission = max0(color.r + color.g - color.b * 0.5); + } else /*if (currentRenderedItemId == 45052)*/ { // Chorus Fruit + emission = max0(color.b * 2.0 - color.r) * 1.5; + } + } else { + if (currentRenderedItemId == 45056) { // Amethyst Shard + materialMask = OSIEBCA; // Intense Fresnel + float factor = pow2(color.r); + smoothnessG = 0.8 - factor * 0.3; + highlightMult = factor * 3.0; + smoothnessD = factor; + } else /*if (currentRenderedItemId == 45060)*/ { // Shield + float factor = min(color.r * color.g * color.b * 4.0, 0.7); + smoothnessG = factor; + highlightMult = factor * 3.0; + smoothnessD = factor; + } + } + } + } +} else { + if (currentRenderedItemId < 45096) { + if (currentRenderedItemId < 45080) { + if (currentRenderedItemId < 45072) { + if (currentRenderedItemId == 45064) { // Turtle Shell + float factor = color.g * 0.7; + smoothnessG = factor; + highlightMult = factor * 3.0; + smoothnessD = factor; + } else /*if (currentRenderedItemId == 45068)*/ { // Ender Pearl + smoothnessG = 1.0; + highlightMult = 2.0; + smoothnessD = 1.0; + } + } else { + if (currentRenderedItemId == 45072) { // Eye of Ender + smoothnessG = 1.0; + highlightMult = 2.0; + smoothnessD = 1.0; + emission = max0(color.g - color.b * 0.25); + color.rgb = pow(color.rgb, vec3(1.0 - 0.75 * emission)); + } else /*if (currentRenderedItemId == 45076)*/ { // Clock + if ( + CheckForColor(color.rgb, vec3(255, 255, 0)) || + CheckForColor(color.rgb, vec3(204, 204, 0)) || + CheckForColor(color.rgb, vec3(73, 104, 216)) || + CheckForColor(color.rgb, vec3(58, 83, 172)) || + CheckForColor(color.rgb, vec3(108, 108, 137)) || + CheckForColor(color.rgb, vec3(86, 86, 109)) + ) { + emission = 1.0; + color.rgb += vec3(0.1); + } + + #include "/spookylib/materials/specificMaterials/terrain/goldBlock.glsl" + } + } + } else { + if (currentRenderedItemId < 45088) { + if (currentRenderedItemId == 45080) { // Compass + if (color.r - 0.1 > color.b + color.g) { + emission = color.r * 1.5; + } + + #include "/spookylib/materials/specificMaterials/terrain/ironBlock.glsl" + } else /*if (currentRenderedItemId == 45084)*/ { // Echo Shard, Recovery Compass, Music Disc 5 + emission = max0(color.b + color.g - color.r * 2.0); + + #include "/spookylib/materials/specificMaterials/terrain/ironBlock.glsl" + } + } else { + if (currentRenderedItemId == 45088) { // Nether Star + emission = pow2(color.r + color.g) * 0.5; + } else /*if (currentRenderedItemId == 45092)*/ { // + + } + } + } + } else { + if (currentRenderedItemId < 45112) { + if (currentRenderedItemId < 45104) { + if (currentRenderedItemId == 45096) { // + + } else /*if (currentRenderedItemId == 45100)*/ { // + + } + } else { + if (currentRenderedItemId == 45104) { // + + } else /*if (currentRenderedItemId == 45108)*/ { // + + } + } + } else { + if (currentRenderedItemId < 45120) { + if (currentRenderedItemId == 45112) { // + + } else /*if (currentRenderedItemId == 45116)*/ { // + + } + } else { + if (currentRenderedItemId == 45120) { // + + } else /*if (currentRenderedItemId == 45124)*/ { // + + } + } + } + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/terrainMaterials.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/terrainMaterials.glsl new file mode 100644 index 0000000..5af6111 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/terrainMaterials.glsl @@ -0,0 +1,2487 @@ +if (mat < 10512) { + if (mat < 10256) { + if (mat < 10128) { + if (mat < 10064) { + if (mat < 10032) { + if (mat < 10016) { + if (mat < 10008) { + if (mat == 10000) { // No directional shading + noDirectionalShading = true; + } + else if (mat == 10003 || mat == 10004) { // Grounded Waving Foliage + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + + #ifdef GBUFFERS_TERRAIN + DoFoliageColorTweaks(color.rgb, shadowMult, snowMinNdotU, lViewPos); + #endif + + #ifndef REALTIME_SHADOWS + shadowMult *= 1.0 - 0.3 * (signMidCoordPos.y + 1.0) * (1.0 - abs(signMidCoordPos.x)) + + 0.5 * (1.0 - signMidCoordPos.y) * invNoonFactor; // consistency357381 + #endif + + #ifdef EMISSIVE_BLOOD_MOON_FLOWERS + if (mat == 10003) { // Flowers+ + if (color.b > color.g || color.r * 1.3 > color.g) { + float flowerEmissionMult = 0.0; + if (color.r > max(color.b * 1.15, color.g * 2.5) * 0.95) flowerEmissionMult = 1.0; + emission = 2.0 * flowerEmissionMult; + emission *= skyLightCheck * getBloodMoon(moonPhase, sunVisibility); + } + } + #endif + } + } else { + if (mat == 10008) { // Leaves + #include "/spookylib/materials/specificMaterials/terrain/leaves.glsl" + } + else /*if (mat == 10012)*/ { // Vine + shadowMult = vec3(1.7); + centerShadowBias = true; + } + } + } else { + if (mat < 10024) { + if (mat == 10016) { // Non-waving Foliage + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + } + else /*if (mat == 10020 || mat == 10021)*/ { // Upper Waving Foliage + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + + #ifdef GBUFFERS_TERRAIN + DoFoliageColorTweaks(color.rgb, shadowMult, snowMinNdotU, lViewPos); + #endif + + #ifndef REALTIME_SHADOWS + shadowMult *= 1.0 + invNoonFactor; // consistency357381 + #endif + #ifdef EMISSIVE_BLOOD_MOON_FLOWERS + if (mat == 10021) { + if (color.b > color.g || color.r * 1.3 > color.g) { + float flowerEmissionMult = 0.0; + if (color.r > max(color.b * 1.15, color.g * 2.5) * 0.95) flowerEmissionMult = 1.0; + emission = 2.0 * flowerEmissionMult; + emission *= skyLightCheck * getBloodMoon(moonPhase, sunVisibility); + } + } + #endif + } + } else { + if (mat == 10024) { // Modded Ores + #ifdef GLOWING_ORE_MODDED + vec3 avgBorderColor = vec3(0.0); + avgBorderColor += texture2D(tex, midCoord + vec2( absMidCoordPos.x, absMidCoordPos.y)).rgb; + avgBorderColor += texture2D(tex, midCoord + vec2(-absMidCoordPos.x, absMidCoordPos.y)).rgb; + avgBorderColor += texture2D(tex, midCoord + vec2( absMidCoordPos.x,-absMidCoordPos.y)).rgb; + avgBorderColor += texture2D(tex, midCoord + vec2(-absMidCoordPos.x,-absMidCoordPos.y)).rgb; + avgBorderColor += texture2D(tex, midCoord + vec2(0.00001, absMidCoordPos.y)).rgb; + avgBorderColor += texture2D(tex, midCoord + vec2(0.00001,-absMidCoordPos.y)).rgb; + avgBorderColor += texture2D(tex, midCoord + vec2( absMidCoordPos.x, 0.00001)).rgb; + avgBorderColor += texture2D(tex, midCoord + vec2(-absMidCoordPos.x, 0.00001)).rgb; + avgBorderColor *= 0.125; + + vec3 colorDif = abs(avgBorderColor - color.rgb); + emission = max(colorDif.r, max(colorDif.g, colorDif.b)); + emission = pow2(emission * 2.5 - 0.15); + + emission *= GLOWING_ORE_MULT; + //color.rgb = avgBorderColor; + #endif + } + else /*if (mat == 10028)*/ { // Hay Block + smoothnessG = pow2(color.r) * 0.5; + highlightMult *= 1.5; + smoothnessD = float(color.r > color.g * 2.0) * 0.3; + } + } + } + } else { + if (mat < 10048) { + if (mat < 10040) { + if (mat == 10032) { // Stone Bricks++ + smoothnessG = pow2(pow2(color.g)) * 2.0; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + else /*if (mat == 10036)*/ { // Anvil+ + #include "/spookylib/materials/specificMaterials/terrain/anvil.glsl" + } + } else { + if (mat == 10040) { // Rails + color = texture2DLod(tex, texCoord, 0); + + noSmoothLighting = true; + if (color.r > 0.1 && color.g + color.b < 0.1) { // Redstone Parts + noSmoothLighting = true; noDirectionalShading = true; + lmCoordM.x = min(lmCoordM.x * 0.9, 0.77); + + if (color.r > 0.5) { + color.rgb *= color.rgb; + emission = 8.0 * color.r; + } else if (color.r > color.g * 2.0) { + materialMask = OSIEBCA * 5.0; // Redstone Fresnel + + float factor = pow2(color.r); + smoothnessG = 0.4; + highlightMult = factor + 0.4; + + smoothnessD = factor * 0.7 + 0.3; + } + } else if (abs(color.r - color.b) < 0.15) { // Iron Parts + #include "/spookylib/materials/specificMaterials/terrain/ironBlock.glsl" + } else if (color.g > color.b * 2.0) { // Gold Parts + #include "/spookylib/materials/specificMaterials/terrain/goldBlock.glsl" + } else { // Wood Parts + #include "/spookylib/materials/specificMaterials/planks/oakPlanks.glsl" + } + } + else /*if (mat == 10044)*/ { // Empty Cauldron, Hopper + noSmoothLighting = true; + lmCoordM.x = min(lmCoordM.x, 0.9333); + + #include "/spookylib/materials/specificMaterials/terrain/anvil.glsl" + } + } + } else { + if (mat < 10056) { + if (mat == 10048) { // Water Cauldron + noSmoothLighting = true; + lmCoordM.x = min(lmCoordM.x, 0.9333); + + vec3 worldPos = playerPos + cameraPosition; + vec3 fractPos = fract(worldPos.xyz); + vec2 coordM = abs(fractPos.xz - 0.5); + if (max(coordM.x, coordM.y) < 0.375 && fractPos.y > 0.3 && NdotU > 0.9) { + #if WATER_STYLE < 3 + vec3 colorP = color.rgb / glColor.rgb; + smoothnessG = min(pow2(pow2(dot(colorP.rgb, colorP.rgb) * 0.4)), 1.0); + highlightMult = 3.25; + smoothnessD = 0.8; + #else + smoothnessG = 0.3; + smoothnessD = 1.0; + #endif + + #include "/spookylib/materials/specificMaterials/translucents/water.glsl" + + #ifdef COATED_TEXTURES + noiseFactor = 0.0; + #endif + } else { + #include "/spookylib/materials/specificMaterials/terrain/anvil.glsl" + } + } + else /*if (mat == 10052)*/ { // Powder Snow Cauldron + noSmoothLighting = true; + lmCoordM.x = min(lmCoordM.x, 0.9333); + + vec3 worldPos = playerPos + cameraPosition; + vec3 fractPos = fract(worldPos.xyz); + vec2 coordM = abs(fractPos.xz - 0.5); + if (max(coordM.x, coordM.y) < 0.375 && + fractPos.y > 0.3 && + NdotU > 0.9) { + + #include "/spookylib/materials/specificMaterials/terrain/snow.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/anvil.glsl" + } + } + } else { + if (mat == 10056) { // Lava Cauldron + noSmoothLighting = true; + lmCoordM.x = min(lmCoordM.x, 0.9333); + + vec3 worldPos = playerPos + cameraPosition; + vec3 fractPos = fract(worldPos.xyz); + vec2 coordM = abs(fractPos.xz - 0.5); + if (max(coordM.x, coordM.y) < 0.375 && + fractPos.y > 0.3 && + NdotU > 0.9) { + + #include "/spookylib/materials/specificMaterials/terrain/lava.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/anvil.glsl" + } + } + else /*if (mat == 10060)*/ { // Lever + if (color.r > color.g + color.b) { + color.rgb *= color.rgb; + emission = 4.0; + } else { + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + } + } + } + } + } + } else { + if (mat < 10096) { + if (mat < 10080) { + if (mat < 10072) { + if (mat == 10064) { // Lectern + #include "/spookylib/materials/specificMaterials/planks/oakPlanks.glsl" + } + else /*if (mat == 10068 || mat == 10069)*/ { // Lava + #include "/spookylib/materials/specificMaterials/terrain/lava.glsl" + } + } else { + if (mat == 10072) { // Fire + noSmoothLighting = true, noDirectionalShading = true; + emission = 2.35; + color.rgb *= sqrt1(GetLuminance(color.rgb)); + } + else /*if (mat == 10076)*/ { // Soul Fire + noSmoothLighting = true, noDirectionalShading = true; + emission = 1.5; + color.rgb = pow1_5(color.rgb); + } + } + } else { + if (mat < 10088) { + if (mat == 10080) { // Stone+, Coal Ore, Smooth Stone+, Grindstone, Stonecutter + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + else /*if (mat == 10084)*/ { // Granite+ + smoothnessG = pow2(pow2(color.r)) * 0.5; + smoothnessD = smoothnessG; + } + } else { + if (mat == 10088) { // Diorite+ + smoothnessG = pow2(color.g) * 0.5; + smoothnessD = smoothnessG; + + #ifdef GBUFFERS_TERRAIN + DoBrightBlockTweaks(color.rgb, 0.75, shadowMult, highlightMult); + #endif + } + else /*if (mat == 10092)*/ { // Andesite+ + smoothnessG = pow2(pow2(color.g)); + smoothnessD = smoothnessG; + } + } + } + } else { + if (mat < 10112) { + if (mat < 10104) { + if (mat == 10096) { // Polished Granite+ + smoothnessG = 0.1 + color.r * 0.4; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + else /*if (mat == 10100)*/ { // Polished Diorite+ + smoothnessG = pow2(color.g) * 0.7; + smoothnessD = smoothnessG; + + #ifdef GBUFFERS_TERRAIN + DoBrightBlockTweaks(color.rgb, 0.75, shadowMult, highlightMult); + #endif + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + } else { + if (mat == 10104) { // Polished Andesite+, Packed Mud, Mud Bricks+, Bricks+ + smoothnessG = pow2(color.g); + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + else /*if (mat == 10108)*/ { // Deepslate:Non-polished Variants, Deepslate Coal Ore + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } + } + } else { + if (mat < 10120) { + if (mat == 10112) { // Deepslate:Polished Variants, Mud, Mangrove Roots, Muddy Mangrove Roots + smoothnessG = pow2(color.g) * 2.0; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + else /*if (mat == 10116)*/ { // Calcite + highlightMult = pow2(color.g) + 1.0; + smoothnessG = 1.0 - color.g * 0.5; + smoothnessD = smoothnessG; + + #ifdef GBUFFERS_TERRAIN + DoBrightBlockTweaks(color.rgb, 0.75, shadowMult, highlightMult); + #endif + } + } else { + if (mat == 10120) { // Dripstone+, Daylight Detector + smoothnessG = color.r * 0.35 + 0.2; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + else /*if (mat == 10124)*/ { // Snowy Variants of Grass Block, Podzol, Mycelium + float dotColor = dot(color.rgb, color.rgb); + if (dotColor > 1.5) { // Snowy Variants:Snowy Part + #include "/spookylib/materials/specificMaterials/terrain/snow.glsl" + } else { // Snowy Variants:Dirt Part + #include "/spookylib/materials/specificMaterials/terrain/dirt.glsl" + } + } + } + } + } + } + } else { + if (mat < 10192) { + if (mat < 10160) { + if (mat < 10144) { + if (mat < 10136) { + if (mat == 10128) { // Dirt, Coarse Dirt, Rooted Dirt, Podzol:Normal, Mycelium:Normal, Farmland:Dry + #include "/spookylib/materials/specificMaterials/terrain/dirt.glsl" + } + else /*if (mat == 10132)*/ { // Grass Block:Normal + if (glColor.b < 0.999) { // Grass Block:Normal:Grass Part + smoothnessG = pow2(color.g); + + #ifdef SNOWY_WORLD + snowMinNdotU = min(pow2(pow2(color.g)) * 1.9, 0.1); + color.rgb = color.rgb * 0.5 + 0.5 * (color.rgb / glColor.rgb); + #endif + } else { //Grass Block:Normal:Dirt Part + #include "/spookylib/materials/specificMaterials/terrain/dirt.glsl" + } + } + } else { + if (mat == 10136) { // Farmland:Wet + if (NdotU > 0.99) { // Farmland:Wet:Top Part + #if MC_VERSION >= 11300 + smoothnessG = clamp(pow2(pow2(1.0 - color.r)) * 2.5, 0.5, 1.0); + highlightMult = 0.5 + smoothnessG * smoothnessG * 2.0; + smoothnessD = smoothnessG * 0.75; + #else + smoothnessG = 0.5 * (1.0 + abs(color.r - color.b) + color.b); + smoothnessD = smoothnessG * 0.5; + #endif + } else { // Farmland:Wet:Dirt Part + #include "/spookylib/materials/specificMaterials/terrain/dirt.glsl" + } + } + else /*if (mat == 10140)*/ { // Netherrack + #include "/spookylib/materials/specificMaterials/terrain/netherrack.glsl" + } + } + } else { + if (mat < 10152) { + if (mat == 10144) { // Warped Nylium, Warped Wart Block + if (color.g == color.b && color.g > 0.0001) { // Warped Nylium:Netherrack Part + #include "/spookylib/materials/specificMaterials/terrain/netherrack.glsl" + } else { // Warped Nylium:Nylium Part, Warped Wart Block + smoothnessG = color.g * 0.5; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + } + else /*if (mat == 10148)*/ { // Crimson Nylium, Nether Wart Block + if (color.g == color.b && color.g > 0.0001 && color.r < 0.522) { // Crimson Nylium:Netherrack Part + #include "/spookylib/materials/specificMaterials/terrain/netherrack.glsl" + } else { // Crimson Nylium:Nylium Part, Nether Wart Block + smoothnessG = color.r * 0.5; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + } + } else { + if (mat == 10152) { // Cobblestone+, Mossy Cobblestone+, Furnace:Unlit, Smoker:Unlit, Blast Furnace:Unlit, Moss Block+, Lodestone, Piston, Sticky Piston, Dispenser, Dropper + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + } + else /*if (mat == 10156)*/ { // Oak Planks++:Clean Variants, Bookshelf, Crafting Table, Tripwire Hook + #include "/spookylib/materials/specificMaterials/planks/oakPlanks.glsl" + } + } + } + } else { + if (mat < 10176) { + if (mat < 10168) { + if (mat == 10160) { // Oak Log, Oak Wood + if (color.g > 0.48 || + CheckForColor(color.rgb, vec3(126, 98, 55)) || + CheckForColor(color.rgb, vec3(150, 116, 65))) { // Oak Log:Clean Part + #include "/spookylib/materials/specificMaterials/planks/oakPlanks.glsl" + } else { // Oak Log:Wood Part, Oak Wood + #include "/spookylib/materials/specificMaterials/terrain/oakWood.glsl" + } + } + else /*if (mat == 10164)*/ { // Spruce Planks++:Clean Variants + #include "/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl" + } + } else { + if (mat == 10168) { // Spruce Log, Spruce Wood + if (color.g > 0.25) { // Spruce Log:Clean Part + #include "/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl" + } else { // Spruce Log:Wood Part, Spruce Wood + smoothnessG = pow2(color.g) * 2.5; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG; + } + } + else /*if (mat == 10172)*/ { // Birch Planks++:Clean Variants, Scaffolding, Loom + #include "/spookylib/materials/specificMaterials/planks/birchPlanks.glsl" + } + } + } else { + if (mat < 10184) { + if (mat == 10176) { // Birch Log, Birch Wood + if (color.r - color.b > 0.15) { // Birch Log:Clean Part + #include "/spookylib/materials/specificMaterials/planks/birchPlanks.glsl" + } else { // Birch Log:Wood Part, Birch Wood + smoothnessG = pow2(color.g) * 0.25; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 1.25; + #endif + } + } + else /*if (mat == 10180)*/ { // Jungle Planks++:Clean Variants, Composter + #include "/spookylib/materials/specificMaterials/planks/junglePlanks.glsl" + } + } else { + if (mat == 10184) { // Jungle Log, Jungle Wood + if (color.g > 0.405) { // Jungle Log:Clean Part + #include "/spookylib/materials/specificMaterials/planks/junglePlanks.glsl" + } else { // Jungle Log:Wood Part, Jungle Wood + smoothnessG = pow2(pow2(color.g)) * 5.0; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + } + else /*if (mat == 10188)*/ { // Acacia Planks++:Clean Variants + #include "/spookylib/materials/specificMaterials/planks/acaciaPlanks.glsl" + } + } + } + } + } else { + if (mat < 10224) { + if (mat < 10208) { + if (mat < 10200) { + if (mat == 10192) { // Acacia Log, Acacia Wood + if (color.r - color.b > 0.2) { // Acacia Log:Clean Part + #include "/spookylib/materials/specificMaterials/planks/acaciaPlanks.glsl" + } else { // Acacia Log:Wood Part, Acacia Wood + smoothnessG = pow2(color.b) * 1.3; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + } + else /*if (mat == 10196)*/ { // Dark Oak Planks++:Clean Variants + #include "/spookylib/materials/specificMaterials/planks/darkOakPlanks.glsl" + } + } else { + if (mat == 10200) { // Dark Oak Log, Dark Oak Wood + if (color.r - color.g > 0.08 || + CheckForColor(color.rgb, vec3(48, 30, 14))) { // Dark Oak Log:Clean Part + #include "/spookylib/materials/specificMaterials/planks/darkOakPlanks.glsl" + } else { // Dark Oak Log:Wood Part, Dark Oak Wood + smoothnessG = color.r * 0.4; + smoothnessD = smoothnessG; + } + } + else /*if (mat == 10204)*/ { // Mangrove Planks++:Clean Variants + #include "/spookylib/materials/specificMaterials/planks/mangrovePlanks.glsl" + } + } + } else { + if (mat < 10216) { + if (mat == 10208) { // Mangrove Log, Mangrove Wood + if (color.r - color.g > 0.2) { // Mangrove Log:Clean Part + #include "/spookylib/materials/specificMaterials/planks/mangrovePlanks.glsl" + } else { // Mangrove Log:Wood Part, Mangrove Wood + smoothnessG = pow2(color.r) * 0.6; + smoothnessD = smoothnessG; + } + } + else /*if (mat == 10212)*/ { // Crimson Planks++:Clean Variants + #include "/spookylib/materials/specificMaterials/planks/crimsonPlanks.glsl" + } + } else { + if (mat == 10216) { // Crimson Stem, Crimson Hyphae + if (color.r / color.b > 2.5) { // Emissive Part + emission = pow2(color.r) * 6.5; + color.gb *= 0.5; + } else { // Flat Part + #include "/spookylib/materials/specificMaterials/planks/crimsonPlanks.glsl" + } + } + else /*if (mat == 10220)*/ { // Warped Planks++:Clean Variants + #include "/spookylib/materials/specificMaterials/planks/warpedPlanks.glsl" + } + } + } + } else { + if (mat < 10240) { + if (mat < 10232) { + if (mat == 10224) { // Warped Stem, Warped Hyphae + //if (color.r < 0.12 || color.r + color.g * 3.0 < 3.4 * color.b) { // Emissive Part + if (color.r < 0.37 * color.b || color.r + color.g * 3.0 < 3.4 * color.b) { // Emissive Part + emission = pow2(color.g + 0.2 * color.b) * 4.5 + 0.15; + } else { // Flat Part + #include "/spookylib/materials/specificMaterials/planks/warpedPlanks.glsl" + } + } + else /*if (mat == 10228)*/ { // Bedrock + smoothnessG = color.b * 0.2 + 0.1; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 1.5; + #endif + } + } else { + if (mat == 10232) { // Sand, Suspicious Sand + smoothnessG = pow(color.g, 16.0) * 2.0; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG * 0.7; + highlightMult = 2.0; + + #ifdef GBUFFERS_TERRAIN + DoBrightBlockTweaks(color.rgb, 0.5, shadowMult, highlightMult); + + DoOceanBlockTweaks(smoothnessD); + #endif + + #if RAIN_PUDDLES >= 1 + noPuddles = 1.0; + #endif + } + else /*if (mat == 10236)*/ { // Red Sand + smoothnessG = pow(color.r * 1.08, 16.0) * 2.0; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG * 0.7; + highlightMult = 2.0; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + + #if RAIN_PUDDLES >= 1 + noPuddles = 1.0; + #endif + } + } + } else { + if (mat < 10248) { + if (mat == 10240) { // Sandstone+ + highlightMult = 2.0; + smoothnessG = pow2(pow2(color.g)) * 0.5; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG * 0.7; + + #ifdef GBUFFERS_TERRAIN + DoBrightBlockTweaks(color.rgb, 0.5, shadowMult, highlightMult); + #endif + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + else /*if (mat == 10244)*/ { // Red Sandstone+ + highlightMult = 2.0; + smoothnessG = pow2(pow2(color.r * 1.05)) * 0.5; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG * 0.7; + + #ifdef COATED_TEXTURES + noiseFactor = 0.5; + #endif + } + } else { + if (mat == 10248) { // Netherite Block + #include "/spookylib/materials/specificMaterials/terrain/netheriteBlock.glsl" + } + else /*if (mat == 10252)*/ { // Ancient Debris + smoothnessG = pow2(color.r); + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 1.5; + #endif + + #ifdef GLOWING_ORE_ANCIENTDEBRIS + emission = min(pow2(color.g * 6.0), 8.0); + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + #endif + } + } + } + } + } + } + } else { + if (mat < 10384) { + if (mat < 10320) { + if (mat < 10288) { + if (mat < 10272) { + if (mat < 10264) { + if (mat == 10256) { // Iron Bars + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/terrain/ironBlock.glsl" + } + else /*if (mat == 10260)*/ { // Iron Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/terrain/ironBlock.glsl" + } + } else { + if (mat == 10264) { // Iron Block, Iron Trapdoor, Heavy Weighted Pressure Plate + #include "/spookylib/materials/specificMaterials/terrain/ironBlock.glsl" + color.rgb *= max(color.r, 0.85) * 0.9; + } + else /*if (mat == 10268)*/ { // Raw Iron Block + #include "/spookylib/materials/specificMaterials/terrain/rawIronBlock.glsl" + } + } + } else { + if (mat < 10280) { + if (mat == 10272) { // Iron Ore + if (color.r != color.g) { // Iron Ore:Raw Iron Part + #include "/spookylib/materials/specificMaterials/terrain/rawIronBlock.glsl" + #ifdef GLOWING_ORE_IRON + if (color.r - color.b > 0.15) { + emission = pow1_5(color.r) * 1.5; + color.rgb *= pow(color.rgb, vec3(0.5 * min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + } + #endif + } else { // Iron Ore:Stone Part + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + } + else /*if (mat == 10276)*/ { // Deepslate Iron Ore + if (color.r != color.g) { // Deepslate Iron Ore:Raw Iron Part + #include "/spookylib/materials/specificMaterials/terrain/rawIronBlock.glsl" + #ifdef GLOWING_ORE_IRON + if (color.r - color.b > 0.15) { + emission = pow1_5(color.r) * 1.5; + color.rgb *= pow(color.rgb, vec3(0.5 * min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + } + #endif + } else { // Deepslate Iron Ore:Deepslate Part + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } + } + } else { + if (mat == 10280) { // Raw Copper Block + #include "/spookylib/materials/specificMaterials/terrain/rawCopperBlock.glsl" + } + else /*if (mat == 10284)*/ { // Copper Ore + if (color.r != color.g) { // Copper Ore:Raw Copper Part + #include "/spookylib/materials/specificMaterials/terrain/rawCopperBlock.glsl" + #ifdef GLOWING_ORE_COPPER + if (max(color.r * 0.5, color.g) - color.b > 0.05) { + emission = color.r * 2.0 + 0.7; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + } + #endif + } else { // Copper Ore:Stone Part + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + } + } + } + } else { + if (mat < 10304) { + if (mat < 10296) { + if (mat == 10288) { // Deepslate Copper Ore + if (color.r != color.g) { // Deepslate Copper Ore:Raw Copper Part + #include "/spookylib/materials/specificMaterials/terrain/rawCopperBlock.glsl" + #ifdef GLOWING_ORE_COPPER + if (max(color.r * 0.5, color.g) - color.b > 0.05) { + emission = color.r * 2.0 + 0.7; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + } + #endif + } else { // Deepslate Copper Ore:Deepslate Part + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } + } + else /*if (mat == 10292)*/ { // Copper Block++:All Non-raw Variants + materialMask = OSIEBCA * 2.0; // Copper Fresnel + smoothnessG = pow2(pow2(color.r)) + pow2(max0(color.g - color.r * 0.5)) * 0.3; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG; + + color.rgb *= 0.6 + 0.7 * GetLuminance(color.rgb); + + #ifdef COATED_TEXTURES + noiseFactor = 0.5; + #endif + } + } else { + if (mat == 10296) { // Raw Gold Block + #include "/spookylib/materials/specificMaterials/terrain/rawGoldBlock.glsl" + } + else /*if (mat == 10300)*/ { // Gold Ore + if (color.r != color.g || color.r > 0.99) { // Gold Ore:Raw Gold Part + #include "/spookylib/materials/specificMaterials/terrain/rawGoldBlock.glsl" + #ifdef GLOWING_ORE_GOLD + if (color.g - color.b > 0.15) { + emission = color.r + 1.0; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + } + #endif + } else { // Gold Ore:Stone Part + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + } + } + } else { + if (mat < 10312) { + if (mat == 10304) { // Deepslate Gold Ore + if (color.r != color.g || color.r > 0.99) { // Deepslate Gold Ore:Raw Gold Part + #include "/spookylib/materials/specificMaterials/terrain/rawGoldBlock.glsl" + #ifdef GLOWING_ORE_GOLD + if (color.g - color.b > 0.15) { + emission = color.r + 1.0; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + } + #endif + } else { // Deepslate Gold Ore:Deepslate Part + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } + } + else /*if (mat == 10308)*/ { // Nether Gold Ore + if (color.g != color.b) { // Nether Gold Ore:Raw Gold Part + #include "/spookylib/materials/specificMaterials/terrain/rawGoldBlock.glsl" + #ifdef GLOWING_ORE_NETHERGOLD + emission = color.g * 1.5; + emission *= GLOWING_ORE_MULT; + #endif + } else { // Nether Gold Ore:Netherrack Part + #include "/spookylib/materials/specificMaterials/terrain/netherrack.glsl" + } + } + } else { + if (mat == 10312) { // Gold Block, Light Weighted Pressure Plate + #include "/spookylib/materials/specificMaterials/terrain/goldBlock.glsl" + } + else /*if (mat == 10316)*/ { // Diamond Block + #include "/spookylib/materials/specificMaterials/terrain/diamondBlock.glsl" + } + } + } + } + } else { + if (mat < 10352) { + if (mat < 10336) { + if (mat < 10328) { + if (mat == 10320) { // Diamond Ore + if (color.b / color.r > 1.5 || color.b > 0.8) { // Diamond Ore:Diamond Part + #include "/spookylib/materials/specificMaterials/terrain/diamondBlock.glsl" + #ifdef GLOWING_ORE_DIAMOND + emission = color.g + 1.5; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + #endif + } else { // Diamond Ore:Stone Part, Diamond Ore:StoneToDiamond part + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + } + else /*if (mat == 10324)*/ { // Deepslate Diamond Ore + if (color.b / color.r > 1.5 || color.b > 0.8) { // Diamond Ore:Diamond Part + #include "/spookylib/materials/specificMaterials/terrain/diamondBlock.glsl" + #ifdef GLOWING_ORE_DIAMOND + emission = color.g + 1.5; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + #endif + } else { // Diamond Ore:Stone Part, Diamond Ore:StoneToDiamond part + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } + } + } else { + if (mat == 10328) { // Amethyst Block, Budding Amethyst + materialMask = OSIEBCA; // Intense Fresnel + float factor = pow2(color.r); + smoothnessG = 0.8 - factor * 0.3; + highlightMult = factor * 3.0; + smoothnessD = factor; + + #if GLOWING_AMETHYST >= 2 + emission = dot(color.rgb, color.rgb) * 0.3; + #endif + + color.rgb *= 0.7 + 0.3 * GetLuminance(color.rgb); + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + else /*if (mat == 10332)*/ { // Amethyst Cluster, Amethyst Buds + materialMask = OSIEBCA; // Intense Fresnel + float factor = pow2(color.r); + smoothnessG = 0.8 - factor * 0.3; + highlightMult = factor * 3.0; + smoothnessD = factor; + + noSmoothLighting = true; + lmCoordM.x *= 0.85; + + #if GLOWING_AMETHYST >= 1 && defined GBUFFERS_TERRAIN + vec3 worldPos = playerPos.xyz + cameraPosition.xyz; + vec3 blockPos = abs(fract(worldPos) - vec3(0.5)); + float maxBlockPos = max(blockPos.x, max(blockPos.y, blockPos.z)); + emission = pow2(max0(1.0 - maxBlockPos * 1.85) * color.g) * 7.0; + + if (CheckForColor(color.rgb, vec3(254, 203, 230))) + emission = pow(emission, max0(1.0 - 0.2 * max0(emission - 1.0))); + + color.g *= 1.0 - emission * 0.07; + + emission *= 1.3; + #endif + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + } + } else { + if (mat < 10344) { + if (mat == 10336) { // Emerald Block + #include "/spookylib/materials/specificMaterials/terrain/emeraldBlock.glsl" + } + else /*if (mat == 10340)*/ { // Emerald Ore + float dif = GetMaxColorDif(color.rgb); + if (dif > 0.4 || color.b > 0.85) { // Emerald Ore:Emerald Part + #include "/spookylib/materials/specificMaterials/terrain/emeraldBlock.glsl" + #ifdef GLOWING_ORE_EMERALD + emission = 2.0; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + #endif + } else { // Emerald Ore:Stone Part + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + } + } else { + if (mat == 10344) { // Deepslate Emerald Ore + float dif = GetMaxColorDif(color.rgb); + if (dif > 0.4 || color.b > 0.85) { // Deepslate Emerald Ore:Emerald Part + #include "/spookylib/materials/specificMaterials/terrain/emeraldBlock.glsl" + #ifdef GLOWING_ORE_EMERALD + emission = 2.0; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + #endif + } else { // Deepslate Emerald Ore:Deepslate Part + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } + } + else /*if (mat == 10348)*/ { // Azalea, Flowering Azalea + subsurfaceMode = 2; + shadowMult = vec3(0.85); + } + } + } + } else { + if (mat < 10368) { + if (mat < 10360) { + if (mat == 10352) { // Lapis Block + #include "/spookylib/materials/specificMaterials/terrain/lapisBlock.glsl" + + #ifdef EMISSIVE_LAPIS_BLOCK + emission = pow2(dot(color.rgb, color.rgb)) * 10.0; + #endif + } + else /*if (mat == 10356)*/ { // Lapis Ore + if (color.r != color.g) { // Lapis Ore:Lapis Part + #include "/spookylib/materials/specificMaterials/terrain/lapisBlock.glsl" + smoothnessG *= 0.5; + smoothnessD *= 0.5; + #ifdef GLOWING_ORE_LAPIS + if (color.b - color.r > 0.2) { + emission = 2.0; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + } + #endif + } else { // Lapis Ore:Stone Part + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + } + } else { + if (mat == 10360) { // Deepslate Lapis Ore + if (color.r != color.g) { // Deepslate Lapis Ore:Lapis Part + #include "/spookylib/materials/specificMaterials/terrain/lapisBlock.glsl" + smoothnessG *= 0.5; + smoothnessD *= 0.5; + #ifdef GLOWING_ORE_LAPIS + if (color.b - color.r > 0.2) { + emission = 2.0; + color.rgb *= pow(color.rgb, vec3(min1(GLOWING_ORE_MULT))); + emission *= GLOWING_ORE_MULT; + } + #endif + } else { // Deepslate Lapis Ore:Deepslate Part + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } + } + else /*if (mat == 10364)*/ { // Quartz Block++ + #include "/spookylib/materials/specificMaterials/terrain/quartzBlock.glsl" + } + } + } else { + if (mat < 10376) { + if (mat == 10368) { // Nether Quartz Ore + if (color.g != color.b) { // Nether Quartz Ore:Quartz Part + #include "/spookylib/materials/specificMaterials/terrain/quartzBlock.glsl" + #ifdef GLOWING_ORE_NETHERQUARTZ + emission = pow2(color.b * 1.6); + emission *= GLOWING_ORE_MULT; + #endif + } else { // Nether Quartz Ore:Netherrack Part + #include "/spookylib/materials/specificMaterials/terrain/netherrack.glsl" + } + } + else /*if (mat == 10372)*/ { // Obsidian + #include "/spookylib/materials/specificMaterials/terrain/obsidian.glsl" + } + } else { + if (mat == 10376) { // Purpur Block+ + highlightMult = 2.0; + smoothnessG = pow2(color.r) * 0.6; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.5; + #endif + } + else /*if (mat == 10380)*/ { // Snow, Snow Block, Powder Snow + #include "/spookylib/materials/specificMaterials/terrain/snow.glsl" + } + } + } + } + } + } else { + if (mat < 10448) { + if (mat < 10416) { + if (mat < 10400) { + if (mat < 10392) { + if (mat == 10384) { // Packed Ice + materialMask = OSIEBCA; // Intense Fresnel + float factor = pow2(color.g); + float factor2 = pow2(factor); + smoothnessG = 1.0 - 0.5 * factor; + highlightMult = factor2 * 3.5; + smoothnessD = factor; + + #ifdef COATED_TEXTURES + noiseFactor = 0.33; + #endif + } + else /*if (mat == 10388)*/ { // Blue Ice + materialMask = OSIEBCA; // Intense Fresnel + float factor = min1(pow2(color.g) * 1.38); + float factor2 = pow2(factor); + smoothnessG = 1.0 - 0.5 * factor; + highlightMult = factor2 * 3.5; + smoothnessD = pow1_5(color.g); + + #ifdef COATED_TEXTURES + noiseFactor = 0.33; + #endif + } + } else { + if (mat == 10392) { // Pumpkin, Carved Pumpkin + #include "/spookylib/materials/specificMaterials/terrain/pumpkin.glsl" + } + else /*if (mat == 10396)*/ { // Jack o'Lantern + #include "/spookylib/materials/specificMaterials/terrain/pumpkin.glsl" + noSmoothLighting = true, noDirectionalShading = true; + lmCoordM.y = 0.0; + + #if MC_VERSION >= 11300 + if (color.b > 0.28 && color.r > 0.9) { + float factor = pow2(color.g); + emission = pow2(factor) * factor * 5.0; + } + #else + if (color.b < 0.4) + emission = clamp01(color.g * 1.3 - color.r) * 5.0; + #endif + + float noiseAdd = 0.0; + #ifdef GBUFFERS_TERRAIN + noiseAdd = hash13(mod(floor(worldPos + atMidBlock / 64) + frameTimeCounter * 0.000001, vec3(100))); + #endif + emission *= mix(0.0, 1.0, smoothstep(0.2, 0.9, texture2D(noisetex, vec2(frameTimeCounter * 0.025 + noiseAdd)).r)); + } + } + } else { + if (mat < 10408) { + if (mat == 10400) { // Sea Pickle + noSmoothLighting = true; + if (color.b > 0.5) { // Sea Pickle:Emissive Part + #ifdef GBUFFERS_TERRAIN + color.g *= 1.1; + emission = 5.0; + #endif + } + } + else /*if (mat == 10404)*/ { // Soul Sand, Soul Soil + smoothnessG = color.r * 0.4; + smoothnessD = color.r * 0.25; + } + } else { + if (mat == 10408) { // Basalt+ + smoothnessG = color.r * 0.35; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + else /*if (mat == 10412)*/ { // Glowstone + noSmoothLighting = true; noDirectionalShading = true; + lmCoordM = vec2(0.9, 0.0); + + emission = max0(color.g - 0.3) * 4.6; + color.rg += emission * vec2(0.15, 0.05); + } + } + } + } else { + if (mat < 10432) { + if (mat < 10424) { + if (mat == 10416) { // Nether Bricks+ + float factor = smoothstep1(min1(color.r * 1.5)); + factor = factor > 0.12 ? factor : factor * 0.5; + smoothnessG = factor; + smoothnessD = factor; + } + else /*if (mat == 10420)*/ { // Red Nether Bricks+ + float factor = color.r * 0.9; + factor = color.r > 0.215 ? factor : factor * 0.25; + smoothnessG = factor; + smoothnessD = factor; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + } else { + if (mat == 10424) { // Melon + smoothnessG = color.r * 0.75; + smoothnessD = color.r * 0.5; + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + else /*if (mat == 10428)*/ { // End Stone++, + #include "/spookylib/materials/specificMaterials/terrain/endStone.glsl" + } + } + } else { + if (mat < 10440) { + if (mat == 10432) { // Terracotta+ + smoothnessG = 0.25; + highlightMult = 1.5; + smoothnessD = 0.17; + + #ifdef COATED_TEXTURES + noiseFactor = 0.33; + #endif + } + else /*if (mat == 10436)*/ { // Glazed Terracotta+ + smoothnessG = 0.75; + smoothnessD = 0.35; + + #ifdef COATED_TEXTURES + noiseFactor = 0.5; + #endif + } + } else { + if (mat == 10440) { // Prismarine+, Prismarine Bricks+ + smoothnessG = pow2(color.g) * 0.8; + highlightMult = 1.5; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + else /*if (mat == 10444)*/ { // Dark Prismarine+ + smoothnessG = min1(pow2(color.g) * 2.0); + highlightMult = 1.5; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + } + } + } + } else { + if (mat < 10480) { + if (mat < 10464) { + if (mat < 10456) { + if (mat == 10448) { // Sea Lantern + noSmoothLighting = true; noDirectionalShading = true; + lmCoordM.x = 0.85; + + smoothnessD = min1(max0(0.5 - color.r) * 2.0); + smoothnessG = color.g; + + float blockRes = absMidCoordPos.x * atlasSize.x; + vec2 signMidCoordPosM = (floor((signMidCoordPos + 1.0) * blockRes) + 0.5) / blockRes - 1.0; + float dotsignMidCoordPos = dot(signMidCoordPosM, signMidCoordPosM); + float lBlockPosM = pow2(max0(1.0 - 1.7 * pow2(pow2(dotsignMidCoordPos)))); + emission = pow2(color.b) * 1.6 + 2.2 * lBlockPosM; + + emission *= 0.4 + max0(0.6 - 0.006 * lViewPos); + + color.rb *= vec2(1.13, 1.1); + + #ifdef COATED_TEXTURES + noiseFactor = 0.5; + #endif + } + else /*if (mat == 10452)*/ { // Magma Block + noSmoothLighting = true; noDirectionalShading = true; + lmCoordM = vec2(0.75, 0.0); + + if (color.g > 0.22) { // Emissive Part + emission = pow2(pow2(color.r)) * 4.0; + + #if RAIN_PUDDLES >= 1 + noPuddles = color.g * 4.0; + #endif + + color.gb *= max(2.0 - 11.0 * pow2(color.g), 0.5); + + maRecolor = vec3(emission * 0.075); + } else { // Netherrack Part + #include "/spookylib/materials/specificMaterials/terrain/netherrack.glsl" + + emission = 0.2; + } + + } + } else { + if (mat == 10456) { // Command Block+ + color = texture2DLod(tex, texCoord, 0); + + vec2 coord = signMidCoordPos; + float blockRes = absMidCoordPos.x * atlasSize.x; + vec2 absCoord = abs(coord); + float maxCoord = max(absCoord.x, absCoord.y); + + float dif = GetMaxColorDif(color.rgb); + + if ( // This mess exists because Iris' midCoord is slightly inaccurate + dif > 0.1 && maxCoord < 0.375 && + !CheckForColor(color.rgb, vec3(111, 73, 43)) && + !CheckForColor(color.rgb, vec3(207, 166, 139)) && + !CheckForColor(color.rgb, vec3(155, 139, 207)) && + !CheckForColor(color.rgb, vec3(161, 195, 180)) && + !CheckForColor(color.rgb, vec3(201, 143, 107)) && + !CheckForColor(color.rgb, vec3(135, 121, 181)) && + !CheckForColor(color.rgb, vec3(131, 181, 145)) + ) { + emission = 6.0; + color.rgb *= color.rgb; + highlightMult = 2.0; + maRecolor = vec3(0.5); + } else { + smoothnessG = dot(color.rgb, color.rgb) * 0.33; + smoothnessD = smoothnessG; + } + } + else /*if (mat == 10460)*/ { // Concrete+ except Lime + smoothnessG = 0.4; + highlightMult = 1.5; + smoothnessD = 0.3; + + #ifdef COATED_TEXTURES + noiseFactor = 0.2; + #endif + } + } + } else { + if (mat < 10472) { + if (mat == 10464) { // Concrete Powder+ + smoothnessG = 0.2; + smoothnessD = 0.1; + + #ifdef COATED_TEXTURES + noiseFactor = 0.5; + #endif + } + else /*if (mat == 10468)*/ { // Coral Block+ + #include "/spookylib/materials/specificMaterials/terrain/coral.glsl" + } + } else { + if (mat == 10472) { // Coral Fan+, Coral+ + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/terrain/coral.glsl" + } + else /*if (mat == 10476)*/ { // Crying Obsidian + #include "/spookylib/materials/specificMaterials/terrain/cryingObsidian.glsl" + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + } + } + } else { + if (mat < 10496) { + if (mat < 10488) { + if (mat == 10480) { // Blackstone++ + #include "/spookylib/materials/specificMaterials/terrain/blackstone.glsl" + } + else /*if (mat == 10484)*/ { // Gilded Blackstone + if (color.r > color.b * 3.0) { // Gilded Blackstone:Gilded Part + #include "/spookylib/materials/specificMaterials/terrain/rawGoldBlock.glsl" + #ifdef GLOWING_ORE_GILDEDBLACKSTONE + emission = color.g * 1.5; + emission *= GLOWING_ORE_MULT; + #endif + } else { // Gilded Blackstone:Blackstone Part + #include "/spookylib/materials/specificMaterials/terrain/blackstone.glsl" + } + + } + } else { + if (mat == 10488) { // Lily Pad + noSmoothLighting = true; + subsurfaceMode = 2; + + #ifdef IPBR + float factor = min1(color.g * 2.0); + smoothnessG = factor * 0.5; + highlightMult = factor; + #endif + } + else /*if (mat == 10492)*/ { // Dirt Path + #include "/spookylib/materials/specificMaterials/terrain/dirt.glsl" + #ifdef GBUFFERS_TERRAIN + glColor.a = sqrt(glColor.a); + #endif + } + } + } else { + if (mat < 10504) { + if (mat == 10496) { // Torch + noDirectionalShading = true; + + if (color.r > 0.95) { + noSmoothLighting = true; + lmCoordM.x = 1.0; + emission = GetLuminance(color.rgb) * 4.1; + color.r *= 1.4; + color.b *= 0.5; + } else + #ifdef GBUFFERS_TERRAIN + if (abs(NdotU) < 0.5) { + lmCoordM.x = min1(0.7 + 0.3 * pow2(1.0 - signMidCoordPos.y)); + } + #else + noSmoothLighting = false; + lmCoordM.x = 0.9; + #endif + + emission += 0.0001; // No light reducing during noon + } + else /*if (mat == 10500)*/ { // End Rod + noDirectionalShading = true; + + #ifdef GBUFFERS_TERRAIN + vec3 fractPos = abs(fract(playerPos + cameraPosition) - 0.5); + float maxCoord = max(fractPos.x, max(fractPos.y, fractPos.z)); + lmCoordM.x = maxCoord < 0.4376 ? 0.97 : 0.8; + #else + lmCoordM.x = 0.9; + #endif + + float dotColor = dot(color.rgb, color.rgb); + if (dotColor > 2.0) { + emission = 2.8; + emission *= 0.4 + max0(0.6 - 0.006 * lViewPos); + + color.rgb = pow2(color.rgb); + color.g *= 0.95; + } + } + } else { + if (mat == 10504) { // Chorus Plant + + } + else /*if (mat == 10508)*/ { // Chorus Flower:Alive + float dotColor = dot(color.rgb, color.rgb); + if (dotColor > 1.0) + emission = pow2(pow2(pow2(dotColor * 0.33))) + 0.2 * dotColor; + } + } + } + } + } + } + } +} else { + if (mat < 10768) { + if (mat < 10640) { + if (mat < 10576) { + if (mat < 10544) { + if (mat < 10528) { + if (mat < 10520) { + if (mat == 10512) { // Chorus Flower:Dead + if (color.b < color.g) { + emission = 10.7; + color.rgb *= color.rgb * dot(color.rgb, color.rgb) * vec3(0.4, 0.35, 0.4); + } + } + else /*if (mat == 10516)*/ { // Furnace:Lit + lmCoordM.x *= 0.95; + + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + + float dotColor = dot(color.rgb, color.rgb); + emission = 2.5 * dotColor * max0(pow2(pow2(pow2(color.r))) - color.b) + pow(dotColor * 0.35, 32.0); + color.r *= 1.0 + 0.1 * emission; + } + } else { + if (mat == 10520) { // Cactus + float factor = sqrt1(color.r); + smoothnessG = factor * 0.5; + highlightMult = factor; + } + else /*if (mat == 10524)*/ { // Note Block, Jukebox + float factor = color.r * 0.5; + smoothnessG = factor; + smoothnessD = factor; + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + } + } else { + if (mat < 10536) { + if (mat == 10528) { // Soul Torch + noSmoothLighting = true; noDirectionalShading = true; + lmCoordM.x = min(lmCoordM.x * 0.9, 0.77); + + if (color.b > 0.6) { + emission = 2.7; + color.rgb = pow1_5(color.rgb); + color.r = min1(color.r + 0.1); + } + emission += 0.0001; // No light reducing during noon + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + else /*if (mat == 10532)*/ { // Brown Mushroom Block + if (color.r > color.g && color.g > color.b && color.b > 0.37) { + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + } else { + float factor = pow2(color.r) * color.r * 0.8; + highlightMult = 1.5; + smoothnessG = factor; + smoothnessD = factor * 0.9; + + #ifdef COATED_TEXTURES + noiseFactor = 0.33; + #endif + } + } + } else { + if (mat == 10536) { // Red Mushroom Block + if (color.r > color.g && color.g > color.b && color.b > 0.37) { + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + } else { + float factor = min1(pow2(color.g) + 0.25); + highlightMult = 1.5; + smoothnessG = factor; + smoothnessD = factor * 0.7; + + #ifdef COATED_TEXTURES + noiseFactor = 0.33; + #endif + } + } + else /*if (mat == 10540)*/ { // Mushroom Stem, + if (color.r > color.g && color.g > color.b && color.b < 0.6) { + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + } else { + float factor = pow2(pow2(color.g)); + highlightMult = 1.5; + smoothnessG = factor; + smoothnessD = factor * 0.5; + + #ifdef COATED_TEXTURES + noiseFactor = 0.33; + #endif + } + } + } + } + } else { + if (mat < 10560) { + if (mat < 10552) { + if (mat == 10544) { // Glow Lichen + noSmoothLighting = true; + + #if GLOWING_LICHEN > 0 + float dotColor = dot(color.rgb, color.rgb); + emission = min(pow2(pow2(dotColor) * dotColor) * 1.4 + dotColor * 0.9, 6.0); + + #if GLOWING_LICHEN == 1 + float skyLightFactor = pow2(1.0 - min1(lmCoord.y * 2.9)); + emission *= skyLightFactor; + #endif + #endif + } + else /*if (mat == 10548)*/ { // Enchanting Table:Base + float dotColor = dot(color.rgb, color.rgb); + if (dotColor < 0.19 && color.r < color.b) { + #include "/spookylib/materials/specificMaterials/terrain/obsidian.glsl" + } else if (color.g >= color.r) { + #include "/spookylib/materials/specificMaterials/terrain/diamondBlock.glsl" + } else { + smoothnessG = color.r * 0.3 + 0.1; + } + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + } else { + if (mat == 10552) { // End Portal Frame:Inactive + noSmoothLighting = true; + + if (abs(color.r - color.g - 0.05) < 0.10) { + #include "/spookylib/materials/specificMaterials/terrain/endStone.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/endPortalFrame.glsl" + } + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + else /*if (mat == 10556)*/ { // End Portal Frame:Active + noSmoothLighting = true; + + if (abs(color.r - color.g - 0.05) < 0.10) { + #include "/spookylib/materials/specificMaterials/terrain/endStone.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/endPortalFrame.glsl" + + vec2 absCoord = abs(fract(playerPos.xz + cameraPosition.xz) - 0.5); + float maxCoord = max(absCoord.x, absCoord.y); + if (maxCoord < 0.2505) { // End Portal Frame:Eye of Ender + smoothnessG = 0.5; + smoothnessD = 0.5; + emission = pow2(min(color.g, 0.25)) * 170.0 * (0.28 - maxCoord); + } else { + float minCoord = min(absCoord.x, absCoord.y); + if (CheckForColor(color.rgb, vec3(153, 198, 147)) + && minCoord > 0.25) { // End Portal Frame:Emissive Corner Bits + emission = 1.4; + color.rgb = vec3(0.45, 1.0, 0.6); + } + } + } + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + } + } else { + if (mat < 10568) { + if (mat == 10560) { // Lantern + noSmoothLighting = true; + lmCoordM.x = 0.77; + + #include "/spookylib/materials/specificMaterials/terrain/lanternMetal.glsl" + + emission = 4.3 * max0(color.r - color.b); + emission += min(pow2(pow2(0.75 * dot(color.rgb, color.rgb))), 5.0); + color.gb *= pow(vec2(0.8, 0.7), vec2(sqrt(emission) * 0.5)); + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + else /*if (mat == 10564)*/ { // Soul Lantern + noSmoothLighting = true; + lmCoordM.x = min(lmCoordM.x, 0.77); // consistency748523 + + #include "/spookylib/materials/specificMaterials/terrain/lanternMetal.glsl" + + emission = 1.45 * max0(color.g - color.r * 2.0); + emission += 1.17 * min(pow2(pow2(0.55 * dot(color.rgb, color.rgb))), 3.5); + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + } else { + if (mat == 10568) { // Turtle Egg, Sniffer Egg + smoothnessG = (color.r + color.g) * 0.35; + smoothnessD = (color.r + color.g) * 0.25; + } + else /*if (mat == 10572)*/ { // Dragon Egg + emission = float(color.b > 0.1) * 10.0 + 1.25; + } + } + } + } + } else { + if (mat < 10608) { + if (mat < 10592) { + if (mat < 10584) { + if (mat == 10576) { // Smoker:Lit + lmCoordM.x *= 0.95; + + float dotColor = dot(color.rgb, color.rgb); + if (color.r > color.b * 2.0 && dotColor > 0.7) { + emission = 2.5 * dotColor; + color.r *= 1.5; + } else { + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + } + } + else /*if (mat == 10580)*/ { // Blast Furnace:Lit + lmCoordM.x *= 0.95; + + float dotColor = dot(color.rgb, color.rgb); + if (color.r > color.b * 2.0 && dotColor > 0.7) { + emission = pow2(color.g) * (20.0 - 13.7 * float(color.b > 0.25)); + color.r *= 1.5; + } else { + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + } + } + } else { + if (mat == 10584) { // Candle++:Lit + noSmoothLighting = true; + + color.rgb *= 1.0 + pow2(max(-signMidCoordPos.y, float(NdotU > 0.9) * 1.2)); + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + else /*if (mat == 10588)*/ { // Respawn Anchor:Unlit + noSmoothLighting = true; + + #include "/spookylib/materials/specificMaterials/terrain/cryingObsidian.glsl" + emission += 0.2; + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + } + } else { + if (mat < 10600) { + if (mat == 10592) { // Respawn Anchor:Lit + noSmoothLighting = true; + + #include "/spookylib/materials/specificMaterials/terrain/cryingObsidian.glsl" + + vec2 absCoord = abs(signMidCoordPos); + if (NdotU > 0.9 && max(absCoord.x, absCoord.y) < 0.754) { // Portal + highlightMult = 0.0; + smoothnessD = 0.0; + emission = pow2(color.r) * color.r * 16.0; + maRecolor = vec3(0.0); + } else if (color.r + color.g > 1.3) { // Respawn Anchor:Glowstone Part + emission = 4.5 * sqrt3(max0(color.r + color.g - 1.3)); + } + + emission += 0.3; + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + else /*if (mat == 10596)*/ { // Redstone Wire:Lit + #include "/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl" + + emission = pow2(min(color.r, 0.9)) * 4.0; + color.gb *= 0.25; + } + } else { + if (mat == 10600) { // Redstone Wire:Unlit + #include "/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl" + } + else /*if (mat == 10604)*/ { // Redstone Torch + #include "/spookylib/materials/specificMaterials/terrain/redstoneTorch.glsl" + emission += 0.0001; // No light reducing during noon + } + } + } + } else { + if (mat < 10624) { + if (mat < 10616) { + if (mat == 10608) { // Redstone Block + #include "/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl" + #ifdef EMISSIVE_REDSTONE_BLOCK + emission = 0.75 + 3.0 * pow2(pow2(color.r)); + color.gb *= 0.65; + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + #endif + } + else /*if (mat == 10612)*/ { // Redstone Ore:Unlit + if (color.r - color.g > 0.2) { // Redstone Ore:Unlit:Redstone Part + #include "/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl" + #ifdef GLOWING_ORE_REDSTONE + emission = color.r * pow1_5(color.r) * 4.0; + color.gb *= 1.0 - 0.9 * min1(GLOWING_ORE_MULT); + emission *= GLOWING_ORE_MULT; + #endif + } else { // Redstone Ore:Unlit:Stone Part + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + } + } else { + if (mat == 10616) { // Redstone Ore:Lit + if (color.r - color.g > 0.2) { // Redstone Ore:Lit:Redstone Part + #include "/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl" + emission = pow2(color.r) * color.r * 5.5; + color.gb *= 0.1; + } else { // Redstone Ore:Lit:Stone Part + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + } + noSmoothLighting = true; + } + else /*if (mat == 10620)*/ { // Deepslate Redstone Ore:Unlit + if (color.r - color.g > 0.2) { // Deepslate Redstone Ore:Unlit:Redstone Part + #include "/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl" + #ifdef GLOWING_ORE_REDSTONE + emission = color.r * pow1_5(color.r) * 4.0; + color.gb *= 1.0 - 0.9 * min1(GLOWING_ORE_MULT); + emission *= GLOWING_ORE_MULT; + #endif + } else { // Deepslate Redstone Ore:Unlit:Deepslate Part + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } + } + } + } else { + if (mat < 10632) { + if (mat == 10624) { // Deepslate Redstone Ore:Lit + if (color.r - color.g > 0.2) { // Deepslate Redstone Ore:Lit:Redstone Part + #include "/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl" + emission = pow2(color.r) * color.r * 6.0; + color.gb *= 0.05; + } else { // Deepslate Redstone Ore:Lit:Deepslate Part + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } + noSmoothLighting = true; + } + else /*if (mat == 10628)*/ { // Cave Vines:No Berries + subsurfaceMode = 1; + lmCoordM.x *= 0.875; + } + } else { + if (mat == 10632) { // Cave Vines:With Berries + subsurfaceMode = 1; + lmCoordM.x *= 0.875; + + if (color.r > 0.64) { + emission = color.r < 0.75 ? 2.5 : 8.0; + color.rgb = color.rgb * vec3(1.0, 0.8, 0.6); + } + } + else /*if (mat == 10636)*/ { // Redstone Lamp:Unlit + materialMask = OSIEBCA; // Intense Fresnel + smoothnessG = color.r * 0.5 + 0.2; + float factor = pow2(smoothnessG); + highlightMult = factor * 2.0 + 1.0; + smoothnessD = min1(factor * 2.0); + } + } + } + } + } + } else { + if (mat < 10704) { + if (mat < 10672) { + if (mat < 10656) { + if (mat < 10648) { + if (mat == 10640) { // Redstone Lamp:Lit + noDirectionalShading = true; + lmCoordM.x = 0.89; + + materialMask = OSIEBCA; // Intense Fresnel + smoothnessG = color.r * 0.35 + 0.2; + float factor = pow2(smoothnessG); + highlightMult = factor * 2.0 + 1.0; + smoothnessD = min1(factor * 2.0); + + if (color.b > 0.1) { + float dotColor = dot(color.rgb, color.rgb); + #if MC_VERSION >= 11300 + emission = pow2(dotColor) * 1.0; + #else + emission = dotColor * 1.2; + #endif + color.rgb = pow1_5(color.rgb); + maRecolor = vec3(emission * 0.2); + } + } + else /*if (mat == 10644)*/ { // Repeater, Comparator + vec3 absDif = abs(vec3(color.r - color.g, color.g - color.b, color.r - color.b)); + float maxDif = max(absDif.r, max(absDif.g, absDif.b)); + if (maxDif > 0.125 || color.b > 0.99) { // Redstone Parts + if (color.r < 0.999 && color.b > 0.4) color.gb *= 0.5; // Comparator:Emissive Wire + + #include "/spookylib/materials/specificMaterials/terrain/redstoneTorch.glsl" + } else { // Quartz Base + float factor = pow2(color.g) * 0.6; + + smoothnessG = factor; + highlightMult = 1.0 + 2.5 * factor; + smoothnessD = factor; + } + } + } else { + if (mat == 10648) { // Shroomlight + noSmoothLighting = true; noDirectionalShading = true; + lmCoordM = vec2(1.0, 0.0); + + float dotColor = dot(color.rgb, color.rgb); + emission = min(pow2(pow2(pow2(dotColor * 0.6))), 6.0) * 0.8 + 0.5; + } + else /*if (mat == 10652)*/ { // Campfire:Lit + #ifdef GBUFFERS_TERRAIN + vec3 fractPos = fract(playerPos + cameraPosition) - 0.5; + lmCoordM.x = pow2(pow2(smoothstep1(1.0 - 0.4 * dot(fractPos.xz, fractPos.xz)))); + #endif + + float dotColor = dot(color.rgb, color.rgb); + if (color.r > color.b && color.r - color.g < 0.15 && dotColor < 1.4) { + #include "/spookylib/materials/specificMaterials/terrain/oakWood.glsl" + } else if (color.r > color.b || dotColor > 2.9) { + noDirectionalShading = true; + emission = 3.5; + color.rgb *= sqrt1(GetLuminance(color.rgb)); + } + } + } + } else { + if (mat < 10664) { + if (mat == 10656) { // Soul Campfire:Lit + noSmoothLighting = true; + + float dotColor = dot(color.rgb, color.rgb); + if (color.r > color.b) { + #include "/spookylib/materials/specificMaterials/terrain/oakWood.glsl" + } else if (color.g - color.r > 0.1 || dotColor > 2.9) { + noDirectionalShading = true; + emission = 2.1; + color.rgb *= sqrt1(GetLuminance(color.rgb)); + } + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + else /*if (mat == 10660)*/ { // Campfire:Unlit, Soul Campfire:Unlit + noSmoothLighting = true; + + if (color.r > color.b) { + #include "/spookylib/materials/specificMaterials/terrain/oakWood.glsl" + } + } + } else { + if (mat == 10664) { // Observer + if (color.r > 0.1 && color.g + color.b < 0.1) { + #include "/spookylib/materials/specificMaterials/terrain/redstoneTorch.glsl" + } else { + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + } + } + else /*if (mat == 10668)*/ { // Wool+, Carpet+ except Lime + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + } + } + } else { + if (mat < 10688) { + if (mat < 10680) { + if (mat == 10672) { // Bone Block + smoothnessG = color.r * 0.2; + smoothnessD = smoothnessG; + + #ifdef GBUFFERS_TERRAIN + DoBrightBlockTweaks(color.rgb, 0.5, shadowMult, highlightMult); + #endif + + #ifdef COATED_TEXTURES + noiseFactor = 0.33; + #endif + } + else /*if (mat == 10676)*/ { // Barrel, Beehive, Bee Nest, Honeycomb Block + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } + } else { + if (mat == 10680) { // Ochre Froglight + float frogPow = 8.0; + #include "/spookylib/materials/specificMaterials/terrain/froglights.glsl" + } + else /*if (mat == 10684)*/ { // Verdant Froglight + float frogPow = 16.0; + #include "/spookylib/materials/specificMaterials/terrain/froglights.glsl" + } + } + } else { + if (mat < 10696) { + if (mat == 10688) { // Pearlescent Froglight + float frogPow = 24.0; + #include "/spookylib/materials/specificMaterials/terrain/froglights.glsl" + } + else /*if (mat == 10692)*/ { // Reinforced Deepslate + if (abs(color.r - color.g) < 0.01) { // Reinforced Deepslate:Deepslate Part + #include "/spookylib/materials/specificMaterials/terrain/deepslate.glsl" + } else { // Reinforced Deepslate:Sculk + float boneFactor = max0(color.r * 1.25 - color.b); + + if (boneFactor < 0.0001) emission = 0.15; + + smoothnessG = min1(boneFactor * 1.7); + smoothnessD = smoothnessG; + } + } + } else { + if (mat == 10696) { // Sculk, Sculk Catalyst, Sculk Vein, Sculk Sensor:Unlit + float boneFactor = max0(color.r * 1.25 - color.b); + + if (boneFactor < 0.0001) emission = pow2(max0(color.g - color.r)) * 1.7; + + smoothnessG = min1(boneFactor * 1.7); + smoothnessD = smoothnessG; + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + else /*if (mat == 10700)*/ { // Sculk Shrieker + float boneFactor = max0(color.r * 1.25 - color.b); + + if (boneFactor < 0.0001) { + emission = pow2(max0(color.g - color.r)) * 2.0; + + #ifdef GBUFFERS_TERRAIN + vec2 coordFactor = abs(fract(playerPos.xz + cameraPosition.xz) - 0.5); + float coordFactorM = max(coordFactor.x, coordFactor.y); + if (coordFactorM < 0.43) emission += color.g * 7.0; + #endif + } + + smoothnessG = min1(boneFactor * 1.7); + smoothnessD = smoothnessG; + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + } + } + } + } else { + if (mat < 10736) { + if (mat < 10720) { + if (mat < 10712) { + if (mat == 10704) { // Sculk Sensor:Lit + lmCoordM = vec2(0.0, 0.0); + emission = pow2(max0(color.g - color.r)) * 7.0 + 0.7; + } + else /*if (mat == 10708)*/ { // Spawner + smoothnessG = color.b + 0.2; + smoothnessD = smoothnessG; + + emission = 7.0 * float(CheckForColor(color.rgb, vec3(110, 4, 83))); + } + } else { + if (mat == 10712) { // Tuff + smoothnessG = color.r * 0.2; + smoothnessD = smoothnessG; + } + else /*if (mat == 10716)*/ { // Clay + highlightMult = 2.0; + smoothnessG = pow2(pow2(color.g)) * 0.5; + smoothnessG = min1(smoothnessG); + smoothnessD = smoothnessG * 0.7; + + #ifdef GBUFFERS_TERRAIN + DoOceanBlockTweaks(smoothnessD); + #endif + + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + } + } + } else { + if (mat < 10728) { + if (mat == 10720) { // Ladder + noSmoothLighting = true; + } + else /*if (mat == 10724)*/ { // Gravel, Suspicious Gravel + #include "/spookylib/materials/specificMaterials/terrain/stone.glsl" + + #ifdef GBUFFERS_TERRAIN + DoOceanBlockTweaks(smoothnessD); + #endif + + #ifdef COATED_TEXTURES + noiseFactor = 1.25; + #endif + } + } else { + if (mat == 10728) { // Flower Pot, Potted Stuff:Without Subsurface + noSmoothLighting = true; + } + else /*if (mat == 10732 || mat == 10733)*/ { // Potted Stuff:With Subsurface + noSmoothLighting = true; + + float NdotE = dot(normalM, eastVec); + if (abs(abs(NdotE) - 0.5) < 0.4) { + subsurfaceMode = 1, noDirectionalShading = true; + } + #if defined EMISSIVE_BLOOD_MOON_FLOWERS && defined GBUFFERS_TERRAIN + if (mat == 10733) { + if ((color.b > color.g || color.r * 1.3 > color.g) && blockUV.y > 0.4) { + float flowerEmissionMult = 0.0; + if (color.r > max(color.b * 1.15, color.g * 2.5) * 0.95) flowerEmissionMult = 1.0; + emission = 2.0 * flowerEmissionMult; + emission *= skyLightCheck * getBloodMoon(moonPhase, sunVisibility); + } + } + #endif + } + } + } + } else { + if (mat < 10752) { + if (mat < 10744) { + if (mat == 10736) { // Structure Block, Jigsaw Block + float blockRes = absMidCoordPos.x * atlasSize.x; + vec2 signMidCoordPosM = (floor((signMidCoordPos + 1.0) * blockRes) + 0.5) / blockRes - 1.0; + float dotsignMidCoordPos = dot(signMidCoordPosM, signMidCoordPosM); + float lBlockPosM = pow2(max0(1.0 - 1.125 * pow2(dotsignMidCoordPos))); + + emission = 4.5 * lBlockPosM; + color.rgb = pow2(color.rgb); + } + else /*if (mat == 10740)*/ { // Chain + noSmoothLighting = true; + lmCoordM.x = min(lmCoordM.x, 0.77); // consistency748523 + + #include "/spookylib/materials/specificMaterials/terrain/lanternMetal.glsl" + } + } else { + if (mat == 10744) { // Cobweb + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + centerShadowBias = true; + } + else /*if (mat == 10748)*/ { // Dried Kelp Block + smoothnessG = pow2(color.b) * 0.8; + smoothnessD = smoothnessG; + + #ifdef COATED_TEXTURES + noiseFactor = 0.5; + #endif + } + } + } else { + if (mat < 10760) { + if (mat == 10752) { // Bamboo + if (absMidCoordPos.x > 0.005) + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + // No further material properties as bamboo jungles are already slow + } + else /*if (mat == 10756)*/ { // Block of Bamboo, Bamboo Planks++ + #include "/spookylib/materials/specificMaterials/planks/bambooPlanks.glsl" + } + } else { + if (mat == 10760) { // Cherry Planks++ + #include "/spookylib/materials/specificMaterials/planks/cherryPlanks.glsl" + } + else /*if (mat == 10764)*/ { // Cherry Log, Cherry Wood + if (color.g > 0.33) { // Cherry Log:Clean Part + #include "/spookylib/materials/specificMaterials/planks/cherryPlanks.glsl" + } else { // Cherry Log:Wood Part, Cherry Wood + smoothnessG = pow2(color.r); + smoothnessD = smoothnessG; + } + } + } + } + } + } + } + } else { + if (mat < 10896) { + if (mat < 10832) { + if (mat < 10800) { + if (mat < 10784) { + if (mat < 10776) { + if (mat == 10768) { // Torchflower + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + + #ifdef GBUFFERS_TERRAIN + DoFoliageColorTweaks(color.rgb, shadowMult, snowMinNdotU, lViewPos); + + emission = (1.0 - abs(signMidCoordPos.x)) * max0(0.7 - abs(signMidCoordPos.y + 0.7)); + emission = pow1_5(emission) * 2.5; + #endif + + #ifndef REALTIME_SHADOWS + shadowMult *= 1.0 - 0.3 * (signMidCoordPos.y + 1.0) * (1.0 - abs(signMidCoordPos.x)) + + 0.5 * (1.0 - signMidCoordPos.y) * invNoonFactor; // consistency357381 + #endif + } + else /*if (mat == 10772)*/ { // Potted Torchflower + noSmoothLighting = true; + + float NdotE = dot(normalM, eastVec); + if (abs(abs(NdotE) - 0.5) < 0.4) { + subsurfaceMode = 1, noDirectionalShading = true; + + #ifdef GBUFFERS_TERRAIN + emission = (1.0 - abs(signMidCoordPos.x)) * max0(0.7 - abs(signMidCoordPos.y + 0.7)); + emission = pow1_5(emission) * 2.5; + #endif + } + } + } else { + if (mat == 10776) { // Weeping Vines, Twisting Vines, Crimson Fungus, Warped Fungus + noSmoothLighting = true; + + if (color.r > 0.91) { + emission = 3.0 * color.g; + color.r *= 1.2; + maRecolor = vec3(0.1); + } + } + else /*if (mat == 10780)*/ { // Potted Crimson Fungus, Potted Warped Fungus + noSmoothLighting = true; + + float NdotE = dot(normalM, eastVec); + if (abs(abs(NdotE) - 0.5) < 0.4) { + if (color.r > 0.91) { + emission = 3.0 * color.g; + color.r *= 1.2; + maRecolor = vec3(0.1); + } + } + } + } + } else { + if (mat < 10792) { + if (mat == 10784) { // Calibrated Sculk Sensor:Unlit + if (color.r + color.b > color.g * 2.2 || color.r > 0.99) { // Amethyst Part + #if GLOWING_AMETHYST >= 1 && defined GBUFFERS_TERRAIN + vec2 absCoord = abs(signMidCoordPos); + float maxBlockPos = max(absCoord.x, absCoord.y); + emission = pow2(max0(1.0 - maxBlockPos) * color.g) * 5.4 + 1.2 * color.g; + + color.g *= 1.0 - emission * 0.07; + color.rgb *= color.g; + #endif + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } else { // Sculk Part + float boneFactor = max0(color.r * 1.25 - color.b); + + if (boneFactor < 0.0001) emission = pow2(max0(color.g - color.r)); + + smoothnessG = min1(boneFactor * 1.7); + smoothnessD = smoothnessG; + } + + #ifdef SNOWY_WORLD + snowFactor = 0.0; + #endif + } + else /*if (mat == 10788)*/ { // Calibrated Sculk Sensor:Lit + lmCoordM = vec2(0.0, 0.0); + + if (color.r + color.b > color.g * 2.2 || color.r > 0.99) { // Amethyst Part + lmCoordM.x = 1.0; + + #if GLOWING_AMETHYST >= 1 && defined GBUFFERS_TERRAIN + vec2 absCoord = abs(signMidCoordPos); + float maxBlockPos = max(absCoord.x, absCoord.y); + emission = pow2(max0(1.0 - maxBlockPos) * color.g) * 5.4 + 1.2 * color.g; + + color.g *= 1.0 - emission * 0.07; + color.rgb *= color.g; + #endif + + #ifdef COATED_TEXTURES + noiseFactor = 0.66; + #endif + } else { // Sculk Part + emission = pow2(max0(color.g - color.r)) * 7.0 + 0.7; + } + } + } else { + if (mat == 10792) { // Oak Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/oakPlanks.glsl" + } + else /*if (mat == 10796)*/ { // Spruce Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl" + } + } + } + } else { + if (mat < 10816) { + if (mat < 10808) { + if (mat == 10800) { // Birch Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/birchPlanks.glsl" + } + else /*if (mat == 10804)*/ { // Jungle Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/junglePlanks.glsl" + } + } else { + if (mat == 10808) { // Acacia Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/acaciaPlanks.glsl" + } + else /*if (mat == 10812)*/ { // Dark Oak Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/darkOakPlanks.glsl" + } + } + } else { + if (mat < 10824) { + if (mat == 10816) { // Mangrove Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/mangrovePlanks.glsl" + } + else /*if (mat == 10820)*/ { // Crimson Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/crimsonPlanks.glsl" + } + } else { + if (mat == 10824) { // Warped Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/warpedPlanks.glsl" + } + else /*if (mat == 10828)*/ { // Bamboo Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/bambooPlanks.glsl" + } + } + } + } + } else { + if (mat < 10864) { + if (mat < 10848) { + if (mat < 10840) { + if (mat == 10832) { // Cherry Door + noSmoothLighting = true; + #include "/spookylib/materials/specificMaterials/planks/cherryPlanks.glsl" + } + else /*if (mat == 10836)*/ { // Brewing Stand + #ifdef GBUFFERS_TERRAIN + vec3 worldPos = playerPos + cameraPosition; + vec3 fractPos = fract(worldPos.xyz); + vec3 coordM = abs(fractPos.xyz - 0.5); + float cLength = dot(coordM, coordM) * 1.3333333; + cLength = pow2(1.0 - cLength); + + if (color.r + color.g > color.b * 3.0 && max(coordM.x, coordM.z) < 0.07) { + emission = 2.5 * pow1_5(cLength); + } else { + lmCoordM.x = max(lmCoordM.x * 0.9, cLength); + + #include "/spookylib/materials/specificMaterials/terrain/cobblestone.glsl" + } + #else + emission = max0(color.r + color.g - color.b * 1.8 - 0.3) * 2.2; + #endif + } + } else { + if (mat == 10840) { // Lime Concrete + smoothnessG = 0.4; + highlightMult = 1.5; + smoothnessD = 0.3; + + #ifdef COATED_TEXTURES + noiseFactor = 0.2; + #endif + + #ifdef GREEN_SCREEN_LIME + materialMask = OSIEBCA * 240.0; // Green Screen Lime Blocks + #endif + } + else /*if (mat == 10844)*/ { // Lime Carpet, Lime Wool + #ifdef COATED_TEXTURES + noiseFactor = 0.77; + #endif + + #ifdef GREEN_SCREEN_LIME + materialMask = OSIEBCA * 240.0; // Green Screen Lime Blocks + #endif + } + } + } else { + if (mat < 10856) { + if (mat == 10848) { // + + } + else /*if (mat == 10852)*/ { // + + } + } else { + if (mat == 10856) { // + + } + else /*if (mat == 10860)*/ { // + + } + } + } + } else { + if (mat < 10880) { + if (mat < 10872) { + if (mat == 10864) { // + + } + else /*if (mat == 10868)*/ { // + + } + } else { + if (mat == 10872) { // + + } + else /*if (mat == 10876)*/ { // + + } + } + } else { + if (mat < 10888) { + if (mat == 10880) { // + + } + else /*if (mat == 10884)*/ { // + + } + } else { + if (mat == 10888) { // + + } + else /*if (mat == 10892)*/ { // + + } + } + } + } + } + } else { + if (mat < 10960) { + if (mat < 10928) { + if (mat < 10912) { + if (mat < 10904) { + if (mat == 10896) { // + + } + else /*if (mat == 10900)*/ { // + + } + } else { + if (mat == 10904) { // + + } + else /*if (mat == 10908)*/ { // + + } + } + } else { + if (mat < 10920) { + if (mat == 10912) { // + + } + else /*if (mat == 10916)*/ { // + + } + } else { + if (mat == 10920) { // + + } + else /*if (mat == 10924)*/ { // + + } + } + } + } else { + if (mat < 10944) { + if (mat < 10936) { + if (mat == 10928) { // + + } + else /*if (mat == 10932)*/ { // + + } + } else { + if (mat == 10936) { // + + } + else /*if (mat == 10940)*/ { // + + } + } + } else { + if (mat < 10952) { + if (mat == 10944) { // + + } + else /*if (mat == 10948)*/ { // + + } + } else { + if (mat == 10952) { // + + } + else /*if (mat == 10956)*/ { // + + } + } + } + } + } else { + if (mat < 10992) { + if (mat < 10976) { + if (mat < 10968) { + if (mat == 10960) { // + + } + else /*if (mat == 10964)*/ { // + + } + } else { + if (mat == 10968) { // + + } + else /*if (mat == 10972)*/ { // + + } + } + } else { + if (mat < 10984) { + if (mat == 10976) { // + + } + else /*if (mat == 10980)*/ { // + + } + } else { + if (mat == 10984) { // + + } + else /*if (mat == 10988)*/ { // + + } + } + } + } else { + if (mat < 11008) { + if (mat < 11000) { + if (mat == 10992) { // + + } + else /*if (mat == 10996)*/ { // + + } + } else { + if (mat == 11000) { // + + } + else /*if (mat == 11004)*/ { // + + } + } + } else { + if (mat < 11016) { + if (mat == 11008) { // + + } + else /*if (mat == 11012)*/ { // + + } + } else { + if (mat == 11016) { // + + } + else /*if (mat == 11020)*/ { // + + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/translucentMaterials.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/translucentMaterials.glsl new file mode 100644 index 0000000..af4f693 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialHandling/translucentMaterials.glsl @@ -0,0 +1,107 @@ +if (mat < 31008) { + if (mat < 30016) { + if (mat < 30008) { + if (mat == 30000) { // Stained Glass + #include "/spookylib/materials/specificMaterials/translucents/stainedGlass.glsl" + } else if (mat == 30004) { // Stained Glass Pane + #include "/spookylib/materials/specificMaterials/translucents/stainedGlass.glsl" + noSmoothLighting = true; + } + } else { + if (mat == 30008) { // Tinted Glass + color.a = pow(color.a, 1.0 - fresnel * 0.65); + reflectMult = 0.75; + } else /*if (mat == 30012)*/ { // Slime Block + translucentMultCalculated = true; + reflectMult = 0.7; + translucentMult.rgb = pow2(color.rgb) * 0.2; + + smoothnessG = color.g * 0.7; + highlightMult = 2.5; + } + } + } else { + if (mat < 31000) { + if (mat == 30016) { // Honey Block + translucentMultCalculated = true; + reflectMult = 1.0; + translucentMult.rgb = pow2(color.rgb) * 0.2; + + smoothnessG = color.r * 0.7; + highlightMult = 2.5; + } else /*if (mat == 30020)*/ { // Nether Portal + #ifdef FANCY_NETHERPORTAL + #include "/spookylib/materials/specificMaterials/translucents/netherPortal.glsl" + #endif + } + } else { + if (mat == 31000) { // Water + #include "/spookylib/materials/specificMaterials/translucents/water.glsl" + } else /*if (mat == 31004)*/ { // Ice + smoothnessG = pow2(color.g) * color.g; + highlightMult = pow2(min1(pow2(color.g) * 1.5)) * 3.5; + + reflectMult = 0.7; + } + } + } +} else { + if (mat < 31024) { + if (mat < 31016) { + if (mat == 31008) { // Glass + #include "/spookylib/materials/specificMaterials/translucents/glass.glsl" + } else /*if (mat == 31012)*/ { // Glass Pane + if (color.a < 0.001 && abs(NdotU) > 0.95) discard; // Fixing artifacts on connected glass panes + #include "/spookylib/materials/specificMaterials/translucents/glass.glsl" + noSmoothLighting = true; + } + } else { + if (mat == 31016) { // Beacon + lmCoordM.x = 0.88; + + translucentMultCalculated = true; + translucentMult = vec4(0.0, 0.0, 0.0, 1.0); + + if (color.b > 0.5) { + if (color.g - color.b < 0.01 && color.g < 0.99) { + #include "/spookylib/materials/specificMaterials/translucents/glass.glsl" + } else { // Beacon:Center + lmCoordM = vec2(0.0); + noDirectionalShading = true; + + float lColor = length(color.rgb); + vec3 baseColor = vec3(0.1, 1.0, 0.92); + if (lColor > 1.5) color.rgb = baseColor + 0.22; + else if (lColor > 1.3) color.rgb = baseColor + 0.15; + else if (lColor > 1.15) color.rgb = baseColor + 0.09; + else color.rgb = baseColor + 0.05; + emission = 4.0; + } + } else { // Beacon:Obsidian + float factor = color.r * 1.5; + + smoothnessG = factor; + highlightMult = 2.0 + min1(smoothnessG * 2.0) * 1.5; + smoothnessG = min1(smoothnessG); + } + + } else /*if (mat == 31020)*/ { // + + } + } + } else { + if (mat < 31032) { + if (mat == 31024) { // + + } else /*if (mat == 31028)*/ { // + + } + } else { + if (mat == 31032) { // + + } else /*if (mat == 31036)*/ { // + + } + } + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/coatedTextures.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/coatedTextures.glsl new file mode 100644 index 0000000..cda5c37 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/coatedTextures.glsl @@ -0,0 +1,30 @@ +const float packSizeNT = 64.0; + +void CoatTextures(inout vec3 color, float noiseFactor, vec3 playerPos) { + #ifndef ENTITY_GN_AND_CT + #if defined GBUFFERS_ENTITIES || defined GBUFFERS_HAND + return; + #endif + #endif + + #ifndef SAFER_GENERATED_NORMALS + vec2 noiseCoord = floor(midCoordPos / 16.0 * packSizeNT * atlasSizeM) / packSizeNT / 3.0; + #else + vec2 offsetR = max(absMidCoordPos.x, absMidCoordPos.y) * vec2(float(atlasSizeM.y) / float(atlasSizeM.x), 1.0); + vec2 noiseCoord = floor(midCoordPos / 2.0 * packSizeNT / offsetR) / packSizeNT / 3.0; + #endif + + #if !defined GBUFFERS_ENTITIES && !defined GBUFFERS_HAND + vec3 floorWorldPos = floor(playerPos + cameraPosition + 0.001); + noiseCoord += 0.84 * (floorWorldPos.xz + floorWorldPos.y); + #endif + + float noiseTexture = texture2D(noisetex, noiseCoord).r; + noiseTexture = noiseTexture + 0.6; + float colorBrightness = dot(color, color) * 0.3; + #define COATED_TEXTURE_MULT_M COATED_TEXTURE_MULT * 0.0027 + noiseFactor *= COATED_TEXTURE_MULT_M * max0(1.0 - colorBrightness); + noiseFactor *= max(1.0 - miplevel * 0.25, 0.0); + noiseTexture = pow(noiseTexture, noiseFactor); + color.rgb *= noiseTexture; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/generatedNormals.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/generatedNormals.glsl new file mode 100644 index 0000000..3e30f60 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/generatedNormals.glsl @@ -0,0 +1,85 @@ +const float normalThreshold = 0.05; +const float normalClamp = 0.2; +const float packSizeGN = 128.0; + +#ifndef GBUFFERS_HAND + const float normalMult = GENERATED_NORMAL_MULT * 0.025; +#else + const float normalMult = GENERATED_NORMAL_MULT * 0.015; +#endif + +float GetDif(float lOriginalAlbedo, vec2 offsetCoord) { + #ifndef GBUFFERS_WATER + float lNearbyAlbedo = length(texture2D(tex, offsetCoord).rgb); + #else + vec4 textureSample = texture2D(tex, offsetCoord); + float lNearbyAlbedo = length(textureSample.rgb * textureSample.a * 1.5); + #endif + + #ifdef GBUFFERS_ENTITIES + lOriginalAlbedo = abs(lOriginalAlbedo - 1.0); + lNearbyAlbedo = abs(lNearbyAlbedo - 1.0); + #endif + + float dif = lOriginalAlbedo - lNearbyAlbedo; + + #ifdef GBUFFERS_ENTITIES + dif = -dif; + #endif + + #ifndef GBUFFERS_WATER + if (dif > 0.0) dif = max(dif - normalThreshold, 0.0); + else dif = min(dif + normalThreshold, 0.0); + #endif + + return clamp(dif, -normalClamp, normalClamp); +} + +void GenerateNormals(inout vec3 normalM, vec3 color) { + #ifndef ENTITY_GN_AND_CT + #if defined GBUFFERS_ENTITIES || defined GBUFFERS_HAND + return; + #endif + #endif + + vec2 absMidCoordPos2 = absMidCoordPos * 2.0; + float lOriginalAlbedo = length(color.rgb); + + float normalMult = max0(1.0 - mipDelta) * normalMult; + + #ifndef SAFER_GENERATED_NORMALS + vec2 offsetR = 16.0 / atlasSizeM; + #else + vec2 offsetR = max(absMidCoordPos2.x, absMidCoordPos2.y) * vec2(float(atlasSizeM.y) / float(atlasSizeM.x), 1.0); + #endif + offsetR /= packSizeGN; + + vec2 midCoord = texCoord - midCoordPos; + vec2 maxOffsetCoord = midCoord + absMidCoordPos; + vec2 minOffsetCoord = midCoord - absMidCoordPos; + if (normalMult > 0.0) { + vec3 normalMap = vec3(0.0, 0.0, 1.0); + + vec2 offsetCoord = texCoord + vec2( 0.0, offsetR.y); + if (offsetCoord.y < maxOffsetCoord.y) + normalMap.y += GetDif(lOriginalAlbedo, offsetCoord); + + offsetCoord = texCoord + vec2( offsetR.x, 0.0); + if (offsetCoord.x < maxOffsetCoord.x) + normalMap.x += GetDif(lOriginalAlbedo, offsetCoord); + + offsetCoord = texCoord + vec2( 0.0,-offsetR.y); + if (offsetCoord.y > minOffsetCoord.y) + normalMap.y -= GetDif(lOriginalAlbedo, offsetCoord); + + offsetCoord = texCoord + vec2(-offsetR.x, 0.0); + if (offsetCoord.x > minOffsetCoord.x) + normalMap.x -= GetDif(lOriginalAlbedo, offsetCoord); + + normalMap.xy *= normalMult; + normalMap.xy = clamp(normalMap.xy, vec2(-1.0), vec2(1.0)); + + if (normalMap.xy != vec2(0.0, 0.0)) + normalM = clamp(normalize(normalMap * tbnMatrix), vec3(-1.0), vec3(1.0)); + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/pomEffects.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/pomEffects.glsl new file mode 100644 index 0000000..5e2d405 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/pomEffects.glsl @@ -0,0 +1,127 @@ +#include "/spookylib/util/dither.glsl" + +vec2 vTexCoord = signMidCoordPos * 0.5 + 0.5; + +#include "/spookylib/util/dFdxdFdy.glsl" + +vec4 ReadNormal(vec2 coord) { + coord = fract(coord) * vTexCoordAM.pq + vTexCoordAM.st; + return textureGrad(normals, coord, dcdx, dcdy); +} + +vec2 GetParallaxCoord(float parallaxFade, inout vec2 newCoord, inout float texDepth, inout vec3 traceCoordDepth) { + float invParallaxQuality = 1.0 / POM_QUALITY; + vec4 normalMap = ReadNormal(vTexCoord.st); + vec2 normalMapM = normalMap.xy * 2.0 - 1.0; + float normalCheck = normalMapM.x + normalMapM.y; + float minHeight = 1.0 - invParallaxQuality; + + if (viewVector.z >= 0.0 || normalMap.a >= minHeight || normalCheck <= -1.999) return vTexCoord.st; + + vec2 interval = viewVector.xy * 0.25 * (1.0 - parallaxFade) * POM_DEPTH / (-viewVector.z * POM_QUALITY); + + float i = 0.0; + vec2 localCoord; + #if defined GBUFFERS_TERRAIN || defined GBUFFERS_BLOCK + float dither = Bayer64(gl_FragCoord.xy); + #ifdef TAA + dither = fract(dither + 1.61803398875 * mod(float(frameCounter), 3600.0)); + #endif + + if (texDepth <= 1.0 - i * invParallaxQuality) { + localCoord = vTexCoord.st + i * interval; + texDepth = ReadNormal(localCoord).a; + i = dither; + } + #endif + + for (; i < POM_QUALITY && texDepth <= 1.0 - i * invParallaxQuality; i++) { + localCoord = vTexCoord.st + i * interval; + texDepth = ReadNormal(localCoord).a; + } + + float pI = float(max(i - 1, 0)); + traceCoordDepth.xy -= pI * interval; + traceCoordDepth.z -= pI * invParallaxQuality; + + localCoord = fract(vTexCoord.st + pI * interval); + newCoord = localCoord * vTexCoordAM.pq + vTexCoordAM.st; + return localCoord; +} + +float GetParallaxShadow(float parallaxFade, float height, vec2 coord, vec3 lightVec, mat3 tbn) { + float parallaxshadow = 1.0; + + vec3 parallaxdir = tbn * lightVec; + parallaxdir.xy *= 1.0 * POM_DEPTH; // Angle + float stepL = 1.0 / 32.0; + + for(int i = 0; i < 4 && parallaxshadow >= 0.01; i++) { + float stepLC = stepL * i; + + float currentHeight = height + parallaxdir.z * stepLC; + + vec2 parallaxCoord = fract(coord + parallaxdir.xy * stepLC) * vTexCoordAM.pq + vTexCoordAM.st; + float offsetHeight = textureGrad(normals, parallaxCoord, dcdx, dcdy).a; + + parallaxshadow *= clamp(1.0 - (offsetHeight - currentHeight) * 4.0, 0.0, 1.0); + } + + return mix(parallaxshadow, 1.0, parallaxFade); +} + +// Big thanks to null511 for slope normals +vec3 GetParallaxSlopeNormal(vec2 texCoord, float traceDepth, vec3 viewDir) { + vec2 atlasPixelSize = 1.0 / atlasSize; + float atlasAspect = atlasSize.x / atlasSize.y; + vec2 atlasCoord = fract(texCoord) * vTexCoordAM.pq + vTexCoordAM.st; + + vec2 tileSize = atlasSize * vTexCoordAM.pq; + vec2 tilePixelSize = 1.0 / tileSize; + + vec2 tex_snapped = floor(atlasCoord * atlasSize) * atlasPixelSize; + vec2 tex_offset = atlasCoord - (tex_snapped + 0.5 * atlasPixelSize); + + vec2 stepSign = sign(tex_offset); + vec2 viewSign = sign(viewDir.xy); + + bool dir = abs(tex_offset.x * atlasAspect) < abs(tex_offset.y); + vec2 tex_x, tex_y; + + if (dir) { + tex_x = texCoord - vec2(tilePixelSize.x * viewSign.x, 0.0); + tex_y = texCoord + vec2(0.0, stepSign.y * tilePixelSize.y); + } + else { + tex_x = texCoord + vec2(tilePixelSize.x * stepSign.x, 0.0); + tex_y = texCoord - vec2(0.0, viewSign.y * tilePixelSize.y); + } + + float height_x = ReadNormal(tex_x).a; + float height_y = ReadNormal(tex_y).a; + + if (dir) { + if (!(traceDepth > height_y && viewSign.y != stepSign.y)) { + if (traceDepth > height_x) return vec3(-viewSign.x, 0.0, 0.0); + + if (abs(viewDir.y) > abs(viewDir.x)) + return vec3(0.0, -viewSign.y, 0.0); + else + return vec3(-viewSign.x, 0.0, 0.0); + } + + return vec3(0.0, -viewSign.y, 0.0); + } + else { + if (!(traceDepth > height_x && viewSign.x != stepSign.x)) { + if (traceDepth > height_y) return vec3(0.0, -viewSign.y, 0.0); + + if (abs(viewDir.y) > abs(viewDir.x)) + return vec3(0.0, -viewSign.y, 0.0); + else + return vec3(-viewSign.x, 0.0, 0.0); + } + + return vec3(-viewSign.x, 0.0, 0.0); + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/reflections.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/reflections.glsl new file mode 100644 index 0000000..4b437db --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/reflections.glsl @@ -0,0 +1,135 @@ +#ifdef OVERWORLD + #include "/spookylib/atmospherics/sky.glsl" +#endif +#if defined END && defined DEFERRED1 + #include "/spookylib/atmospherics/enderBeams.glsl" +#endif + +vec3 nvec3(vec4 pos) { + return pos.xyz/pos.w; +} + +vec3 refPos = vec3(0.0); + +vec4 GetReflection(vec3 normalM, vec3 viewPos, vec3 nViewPos, vec3 playerPos, float lViewPos, float z0, + sampler2D depthtex, float dither, float skyLightFactor, float fresnel, + float smoothness, vec3 geoNormal, vec3 color, vec3 shadowMult, float highlightMult) { + vec3 rfragpos = vec3(0.0); + float dist = 0.0; + int sr = 0; + vec2 rEdge = vec2(0.6, 0.53); + vec3 normalMR = normalM; + + #if defined GBUFFERS_WATER && defined GENERATED_NORMALS && WATER_STYLE == 1 + normalMR = mix(geoNormal, normalM, 0.05); + #endif + + vec3 nViewPosR = reflect(nViewPos, normalMR); + float RVdotU = dot(normalize(nViewPosR), upVec); + float RVdotS = dot(normalize(nViewPosR), sunVec); + + vec3 start = viewPos + normalMR * (lViewPos * 0.025 * (1.0 - fresnel) + 0.05); + vec3 vector = reflect(nViewPos, normalize(normalMR)); + vector *= 0.5; + vec3 viewPosRT = viewPos + vector; + vec3 tvector = vector; + + for(int i = 0; i < 30; i++) { + refPos = nvec3(gbufferProjection * vec4(viewPosRT, 1.0)) * 0.5 + 0.5; + if (abs(refPos.x - 0.5) > rEdge.x || abs(refPos.y - 0.5) > rEdge.y) break; + + rfragpos = vec3(refPos.xy, texture2D(depthtex, refPos.xy).r); + rfragpos = nvec3(gbufferProjectionInverse * vec4(rfragpos * 2.0 - 1.0, 1.0)); + dist = length(start - rfragpos); + + float err = length(viewPosRT - rfragpos); + + if (err < length(vector) * 3.0) { + sr++; + if (sr >= 6) break; + tvector -= vector; + vector *= 0.1; + } + vector *= 2.0; + tvector += vector * (0.95 + 0.1 * dither); + viewPosRT = start + tvector; + } + + vec2 absPos = abs(refPos.xy - 0.5); + vec2 cdist = absPos / rEdge; + float border = clamp(1.0 - pow(max(cdist.x, cdist.y), 50.0), 0.0, 1.0); + + vec4 reflection = vec4(0.0); + if (refPos.z < 0.99997) { + reflection.a = border; + + float lViewPosRT = length(rfragpos); + + if (reflection.a > 0.001) { + vec2 edgeFactor = pow2(pow2(pow2(cdist))); + refPos.y += (dither - 0.5) * (0.05 * (edgeFactor.x + edgeFactor.y)); + + #ifdef DEFERRED1 + float smoothnessDM = pow2(smoothness); + float lodFactor = 1.0 - exp(-0.125 * (1.0 - smoothnessDM) * dist); + float lod = log2(viewHeight / 8.0 * (1.0 - smoothnessDM) * lodFactor) * 0.45; + #ifdef CUSTOM_PBR + if (z0 <= 0.56) lod *= 2.22; + #endif + lod = max(lod - 1.0, 0.0); + + reflection.rgb = texture2DLod(colortex0, refPos.xy, lod).rgb; + #else + reflection = texture2D(gaux2, refPos.xy); + reflection.rgb = pow2(reflection.rgb + 1.0); + #endif + + /**/ + float skyFade = 0.0; + DoFog(reflection.rgb, skyFade, lViewPosRT, ViewToPlayer(rfragpos.xyz), RVdotU, RVdotS, dither); + + edgeFactor.x = pow2(edgeFactor.x); + edgeFactor = 1.0 - edgeFactor; + reflection.a *= pow(edgeFactor.x * edgeFactor.y, 2.0 + 3.0 * GetLuminance(reflection.rgb)); + } + + float posDif = lViewPosRT - lViewPos; + reflection.a *= clamp(posDif + 3.0, 0.0, 1.0); + } + #if defined DEFERRED1 && defined TEMPORAL_FILTER + else refPos.z = 1.0; + #endif + + if (reflection.a < 1.0) { + #ifdef OVERWORLD + vec3 skyReflection = GetSky(RVdotU, RVdotS, dither, true, true); + + //skyReflection += pow(lightColor, vec3(0.8)) * 0.6 * rainFactor2; // Add approximate light shaft color + + skyReflection *= atmColorMult; + + #ifdef DEFERRED1 + skyReflection *= skyLightFactor; + #else + skyReflection = mix(color * 0.5, skyReflection, skyLightFactor); + + float specularHighlight = GGX(normalM, nViewPos, lightVec, max(dot(normalM, lightVec), 0.0), smoothness); + skyReflection += specularHighlight * highlightColor * shadowMult * highlightMult * invRainFactor; + #endif + #elif defined END + #ifdef DEFERRED1 + vec3 skyReflection = (endSkyColor + 0.4 * DrawEnderBeams(RVdotU, playerPos)) * skyLightFactor; + #else + vec3 skyReflection = endSkyColor * shadowMult; + #endif + + skyReflection *= atmColorMult; + #else + vec3 skyReflection = vec3(0.0); + #endif + + reflection.rgb = mix(skyReflection, reflection.rgb, reflection.a); + } + + return reflection; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/refraction.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/refraction.glsl new file mode 100644 index 0000000..6462173 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/refraction.glsl @@ -0,0 +1,42 @@ +float GetApproxDistance(float depth) { + return near * far / (far - depth * far); +} + +void DoRefraction(inout vec3 color, inout float z0, inout float z1, vec3 viewPos, float lViewPos) { + // Prep + if (int(texelFetch(colortex1, texelCoord, 0).g * 255.1) != 241) return; + + float fovScale = gbufferProjection[1][1]; + + vec3 playerPos = ViewToPlayer(viewPos.xyz); + vec3 worldPos = playerPos.xyz + cameraPosition.xyz; + vec2 worldPosRM = worldPos.xz * 0.02 + worldPos.y * 0.01 + 0.01 * frameTimeCounter; + + vec2 refractNoise = texture2D(noisetex, worldPosRM).rb - vec2(0.5); + refractNoise *= WATER_REFRACTION_INTENSITY * fovScale / (3.0 + lViewPos); + + #if WATER_STYLE < 3 + refractNoise *= 0.015; + #else + refractNoise *= 0.02; + #endif + + // Check + float approxDif = GetApproxDistance(z1) - GetApproxDistance(z0); + refractNoise *= clamp(approxDif, 0.0, 1.0); + + vec2 refractCoord = texCoord.xy + refractNoise; + + if (int(texture2D(colortex1, refractCoord).g * 255.1) != 241) return; + + float z0check = texture2D(depthtex0, refractCoord).r; + float z1check = texture2D(depthtex1, refractCoord).r; + float approxDifCheck = GetApproxDistance(z1check) - GetApproxDistance(z0check); + refractNoise *= clamp(approxDifCheck, 0.0, 1.0); + + // Sample + refractCoord = texCoord.xy + refractNoise; + color = texture2D(colortex0, refractCoord).rgb; + z0 = texture2D(depthtex0, refractCoord).r; + z1 = texture2D(depthtex1, refractCoord).r; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/wavingBlocks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/wavingBlocks.glsl new file mode 100644 index 0000000..6ab5051 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/materialMethods/wavingBlocks.glsl @@ -0,0 +1,131 @@ +vec3 GetWave(in vec3 pos, float waveSpeed) { + float wind = frameTimeCounter * waveSpeed * WAVING_SPEED; + + float magnitude = sin(wind * 0.0027 + pos.z + pos.y) * 0.04 + 0.04; + magnitude *= mix(1.0, 2.5, rainFactor); + float d0 = sin(wind * 0.0127); + float d1 = sin(wind * 0.0089); + float d2 = sin(wind * 0.0114); + vec3 wave; + wave.x = sin(wind*0.0063 + d0 + d1 - pos.x + pos.z + pos.y) * magnitude; + wave.z = sin(wind*0.0224 + d1 + d2 + pos.x - pos.z + pos.y) * magnitude; + wave.y = sin(wind*0.0015 + d2 + d0 + pos.z + pos.y - pos.y) * magnitude; + + #ifdef NO_WAVING_INDOORS + wave *= clamp(lmCoord.y - 0.87, 0.0, 0.1); + #else + wave *= 0.1; + #endif + + return wave * WAVING_I; +} + +void DoWave_Foliage(inout vec3 playerPos, vec3 worldPos) { + worldPos.y *= 0.5; + + vec3 wave = GetWave(worldPos, 170.0); + wave.x = wave.x * 8.0 + wave.y * 4.0; + wave.y = 0.0; + wave.z = wave.z * 3.0; + + playerPos.xyz += wave; +} + +void DoWave_GroundedFoliage(inout vec3 playerPos, vec3 worldPos) { + if (gl_MultiTexCoord0.t < mc_midTexCoord.t || fract(worldPos.y + 0.21) > 0.26) { + DoWave_Foliage(playerPos, worldPos); + } +} + +void DoWave_Leaves(inout vec3 playerPos, vec3 worldPos, float waveMult) { + worldPos *= vec3(0.5, 0.25, 0.5); + + vec3 wave = GetWave(worldPos, 170.0); + wave *= vec3(8.0, 3.0, 4.0); + + playerPos.xyz += wave * waveMult; +} + +void DoWave_Water(inout vec3 playerPos, vec3 worldPos) { + if (fract(worldPos.y + 0.005) > 0.06) { + float waterWaveTime = frameTimeCounter * 6.0 * WAVING_SPEED; + worldPos.xz *= 18.0; + + float wave = sin(waterWaveTime * 0.7 + worldPos.x * 0.14 + worldPos.z * 0.07); + wave += sin(waterWaveTime * 0.5 + worldPos.x * 0.10 + worldPos.z * 0.05); + + #ifdef NO_WAVING_INDOORS + wave *= clamp(lmCoord.y - 0.87, 0.0, 0.1); + #else + wave *= 0.1; + #endif + + playerPos.y += wave * 0.125 - 0.05; + } +} + +void DoWave_Lava(inout vec3 playerPos, vec3 worldPos) { + if (fract(worldPos.y + 0.005) > 0.06) { + float lavaWaveTime = frameTimeCounter * 3.0 * WAVING_SPEED; + worldPos.xz *= 14.0; + + float wave = sin(lavaWaveTime * 0.7 + worldPos.x * 0.14 + worldPos.z * 0.07); + wave += sin(lavaWaveTime * 0.5 + worldPos.x * 0.05 + worldPos.z * 0.10); + + playerPos.y += wave * 0.0125; + } +} + +void DoWave(inout vec3 playerPos, int mat) { + vec3 worldPos = playerPos.xyz + cameraPosition.xyz; + + #if defined GBUFFERS_TERRAIN || defined SHADOW + #ifdef WAVING_FOLIAGE + if (mat == 10003 || mat == 10004) { // Grounded Waving Foliage + DoWave_GroundedFoliage(playerPos.xyz, worldPos); + } else if (mat == 10020 || mat == 10021) { // Upper Layer Waving Foliage + DoWave_Foliage(playerPos.xyz, worldPos); + } + + #if defined WAVING_LEAVES || defined WAVING_LAVA + else + #endif + #endif + + #ifdef WAVING_LEAVES + if (mat == 10008) { // Leaves + DoWave_Leaves(playerPos.xyz, worldPos, 1.0); + } else if (mat == 10012) { // Vine + // Reduced waving on vines to prevent clipping through blocks + DoWave_Leaves(playerPos.xyz, worldPos, 0.75); + } + + #ifdef WAVING_LAVA + else + #endif + #endif + + #ifdef WAVING_LAVA + if (mat == 10068 || mat == 10069) { // Lava + DoWave_Lava(playerPos.xyz, worldPos); + + #ifdef GBUFFERS_TERRAIN + // G8FL735 Fixes Optifine-Iris parity. Optifine has 0.9 gl_Color.rgb on a lot of versions + glColorRaw.rgb = min(glColorRaw.rgb, vec3(0.9)); + #endif + } + #endif + #endif + + #if defined GBUFFERS_WATER || defined SHADOW + #ifdef WAVING_WATER_VERTEX + #if defined WAVING_ANYTHING_TERRAIN && defined SHADOW + else + #endif + + if (mat == 31000) { // Water + DoWave_Water(playerPos.xyz, worldPos); + } + #endif + #endif +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/entities/glowItemFrame.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/entities/glowItemFrame.glsl new file mode 100644 index 0000000..0d55b48 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/entities/glowItemFrame.glsl @@ -0,0 +1 @@ +#include "/spookylib/materials/specificMaterials/entities/itemFrame.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/entities/itemFrame.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/entities/itemFrame.glsl new file mode 100644 index 0000000..9e61797 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/entities/itemFrame.glsl @@ -0,0 +1 @@ +noSmoothLighting = true; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/entities/lightningBolt.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/entities/lightningBolt.glsl new file mode 100644 index 0000000..9c7c440 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/entities/lightningBolt.glsl @@ -0,0 +1 @@ +color = vec4(1.0, 1.25, 1.875, 1.0); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/others/endPortalEffect.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/others/endPortalEffect.glsl new file mode 100644 index 0000000..9f32381 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/others/endPortalEffect.glsl @@ -0,0 +1,65 @@ +// End Portal fix by fayer3#2332 (Modified) +vec3[8] colors = vec3[]( + vec3(0.3472479, 0.6559956, 0.7387838) * 1.5, + vec3(0.6010780, 0.7153565, 1.060625 ), + vec3(0.4221090, 0.8135094, 0.9026056), + vec3(0.3492291, 1.0241201, 1.8612821), + vec3(0.7543085, 0.8238697, 0.6803233), + vec3(0.4144472, 0.5648165, 0.8037 ), + vec3(0.508905 , 0.6719649, 0.9982805), + vec3(0.5361914, 0.4476583, 0.8008522)); +color.rgb = vec3(0.4214321, 0.4722309, 1.9922364) * 0.08; + +float dither = Bayer64(gl_FragCoord.xy); +#ifdef TAA + dither = fract(dither + 1.61803398875 * mod(float(frameCounter), 3600.0)); + int repeat = 4; +#else + int repeat = 8; +#endif +float dismult = 0.5; +for (int j = 0; j < repeat; j++) { + float add = float(j + dither) * 0.0625 / float(repeat); + for (int i = 1; i <= 8; i++) { + float colormult = 0.9/(30.0+i); + float rotation = (i - 0.1 * i + 0.71 * i - 11 * i + 21) * 0.01 + i * 0.01; + float Cos = cos(radians(rotation)); + float Sin = sin(radians(rotation)); + vec2 offset = vec2(0.0, 1.0/(3600.0/24.0)) * pow(16.0 - i, 2.0) * 0.004; + + vec3 wpos = normalize((gbufferModelViewInverse * vec4(viewPos * (i * dismult + 1), 1.0)).xyz); + if (abs(NdotU) > 0.9) { + wpos.xz /= wpos.y; + wpos.xz *= 0.06 * sign(- playerPos.y); + wpos.xz *= abs(playerPos.y) + i * dismult + add; + wpos.xz -= cameraPosition.xz * 0.05; + } else { + vec3 absPos = abs(playerPos); + if (abs(dot(normal, eastVec)) > 0.9) { + wpos.xz = wpos.yz / wpos.x; + wpos.xz *= 0.06 * sign(- playerPos.x); + wpos.xz *= abs(playerPos.x) + i * dismult + add; + wpos.xz -= cameraPosition.yz * 0.05; + } else { + wpos.xz = wpos.yx / wpos.z; + wpos.xz *= 0.06 * sign(- playerPos.z); + wpos.xz *= abs(playerPos.z) + i * dismult + add; + wpos.xz -= cameraPosition.yx * 0.05; + } + } + vec2 pos = wpos.xz; + + vec2 wind = fract((frameTimeCounter + 984.0) * (i + 8) * 0.125 * offset); + vec2 coord = mat2(Cos, Sin, -Sin, Cos) * pos + wind; + if (mod(float(i), 4) < 1.5) coord = coord.yx + vec2(-1.0, 1.0) * wind.y; + + vec3 psample = pow(texture2D(tex, coord).rgb, vec3(0.85)) * colors[i-1] * colormult; + color.rgb += psample * length(psample.rgb) * (3000.0 / repeat); + } +} +color.rgb *= 0.4; +noDirectionalShading = true; + +#ifdef COATED_TEXTURES + noiseFactor = 0.0; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/others/signText.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/others/signText.glsl new file mode 100644 index 0000000..c196c54 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/others/signText.glsl @@ -0,0 +1,15 @@ +normalM = upVec; + +highlightMult = 0.0; +shadowMult = vec3(0.0); + +#if MC_VERSION >= 11700 + if (lmCoord.x > 0.99) { // Glowing Sign Text + lmCoordM = vec2(0.0); + + emission = 1.0; + + color.rgb *= length(color.rgb) + 0.5; + } else // Normal Sign Text +#endif +color.rgb *= 5.0; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/others/trident.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/others/trident.glsl new file mode 100644 index 0000000..daeea3a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/others/trident.glsl @@ -0,0 +1,4 @@ +smoothnessG = color.g; +smoothnessD = color.g; + +emission = min(max0(dot(color.rgb, color.rgb) - 1.0) * 6.0, 1.0); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/acaciaPlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/acaciaPlanks.glsl new file mode 100644 index 0000000..8ea0ab5 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/acaciaPlanks.glsl @@ -0,0 +1,6 @@ +smoothnessG = pow2(pow2(color.r)) * 0.65; +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.5; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/bambooPlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/bambooPlanks.glsl new file mode 100644 index 0000000..2b0a45e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/bambooPlanks.glsl @@ -0,0 +1,3 @@ +smoothnessG = color.r * 0.4; + +smoothnessD = color.r * 0.3; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/birchPlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/birchPlanks.glsl new file mode 100644 index 0000000..6ed814d --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/birchPlanks.glsl @@ -0,0 +1,6 @@ +smoothnessG = pow2(pow2(color.g)) * 0.75; +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.66; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/cherryPlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/cherryPlanks.glsl new file mode 100644 index 0000000..80ef5a9 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/cherryPlanks.glsl @@ -0,0 +1,6 @@ +smoothnessG = pow2(pow2(color.g)) * 0.7; +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.66; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/crimsonPlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/crimsonPlanks.glsl new file mode 100644 index 0000000..2506ad2 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/crimsonPlanks.glsl @@ -0,0 +1,6 @@ +smoothnessG = pow2(color.r) * 0.7; +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.77; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/darkOakPlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/darkOakPlanks.glsl new file mode 100644 index 0000000..7b61730 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/darkOakPlanks.glsl @@ -0,0 +1,6 @@ +smoothnessG = color.r * 0.7; +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.66; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/junglePlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/junglePlanks.glsl new file mode 100644 index 0000000..68e61b6 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/junglePlanks.glsl @@ -0,0 +1,7 @@ +smoothnessG = pow2(pow2(pow2(color.g))) * 12.0; +smoothnessG = min1(smoothnessG); +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.66; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/mangrovePlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/mangrovePlanks.glsl new file mode 100644 index 0000000..cc5f933 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/mangrovePlanks.glsl @@ -0,0 +1,3 @@ +smoothnessG = pow2(color.r) * 0.7; +smoothnessG = min1(smoothnessG); +smoothnessD = smoothnessG; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/oakPlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/oakPlanks.glsl new file mode 100644 index 0000000..56e3772 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/oakPlanks.glsl @@ -0,0 +1,7 @@ +smoothnessG = pow2(pow2(pow2(color.g))) * 12.0; +smoothnessG = min1(smoothnessG); +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.77; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl new file mode 100644 index 0000000..6d37644 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/sprucePlanks.glsl @@ -0,0 +1,7 @@ +smoothnessG = pow2(pow2(color.g)) * 8.0; +smoothnessG = min1(smoothnessG); +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.66; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/warpedPlanks.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/warpedPlanks.glsl new file mode 100644 index 0000000..434288d --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/planks/warpedPlanks.glsl @@ -0,0 +1,6 @@ +smoothnessG = pow2(color.g) * 0.7; +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.77; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/anvil.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/anvil.glsl new file mode 100644 index 0000000..f55110b --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/anvil.glsl @@ -0,0 +1,6 @@ +smoothnessG = color.r; +smoothnessD = color.r; + +#ifdef COATED_TEXTURES + noiseFactor = 0.33; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/blackstone.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/blackstone.glsl new file mode 100644 index 0000000..cd04345 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/blackstone.glsl @@ -0,0 +1,2 @@ +smoothnessG = color.r; +smoothnessD = color.r * 0.65; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/cobblestone.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/cobblestone.glsl new file mode 100644 index 0000000..6aa428e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/cobblestone.glsl @@ -0,0 +1,3 @@ +smoothnessG = pow2(pow2(color.g)); +smoothnessD = smoothnessG; +smoothnessG = max(smoothnessG, 0.3 * color.g * float(color.g > color.b * 1.5)); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/coral.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/coral.glsl new file mode 100644 index 0000000..77d5d72 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/coral.glsl @@ -0,0 +1,7 @@ +float lColor = length(color.rgb); +smoothnessG = lColor * 0.2; +smoothnessD = lColor * 0.15; + +#ifdef COATED_TEXTURES + noiseFactor = 0.66; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/cryingObsidian.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/cryingObsidian.glsl new file mode 100644 index 0000000..b32b28a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/cryingObsidian.glsl @@ -0,0 +1,11 @@ +#include "/spookylib/materials/specificMaterials/terrain/obsidian.glsl" + +highlightMult *= 0.5; + +float factor0 = sqrt2(max0(color.b - color.g * 6.0)); +float factor1 = pow2(color.b); +emission = 1.35 + pow2(pow2(factor1)) * 7.5; +emission *= factor0; +color.r *= 1.15; + +maRecolor = vec3(factor0 * min(max0(factor1 * 0.7 - 0.1) * 1.3, 0.5)); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/deepslate.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/deepslate.glsl new file mode 100644 index 0000000..648073f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/deepslate.glsl @@ -0,0 +1,3 @@ +smoothnessG = pow2(pow2(color.g)) * 4.0; +smoothnessG = min1(smoothnessG); +smoothnessD = smoothnessG; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/diamondBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/diamondBlock.glsl new file mode 100644 index 0000000..f59184b --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/diamondBlock.glsl @@ -0,0 +1,25 @@ +materialMask = OSIEBCA; // Intense Fresnel + +float factor = max(color.g, 0.8); +float factor2 = pow2(factor); +#ifdef GBUFFERS_TERRAIN + float factor4 = pow2(factor2); +#else + float factor4 = factor2; +#endif + +smoothnessG = factor - pow2(pow2(color.g)) * 0.4; +highlightMult = 3.0 * max(pow2(factor4), 0.2); + +smoothnessD = factor4 * 0.75; + +#if MC_VERSION < 11300 + highlightMult *= 2.0; + smoothnessD /= 0.75; +#endif + +color.rgb *= 0.7 + 0.4 * GetLuminance(color.rgb); + +#ifdef COATED_TEXTURES + noiseFactor = 0.5; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/dirt.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/dirt.glsl new file mode 100644 index 0000000..342053e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/dirt.glsl @@ -0,0 +1 @@ +smoothnessG = color.r * 0.1 + 0.1; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/emeraldBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/emeraldBlock.glsl new file mode 100644 index 0000000..dc8e2f9 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/emeraldBlock.glsl @@ -0,0 +1,14 @@ +materialMask = OSIEBCA; // Intense Fresnel + +float factor = color.g; +float factor2 = pow2(factor); +float factor4 = pow2(factor2); + +smoothnessG = factor - factor4 * 0.4; +highlightMult = 1.5 + 1.5 * factor4; + +smoothnessD = factor4 * 0.75; + +#ifdef COATED_TEXTURES + noiseFactor = 0.5; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/endPortalFrame.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/endPortalFrame.glsl new file mode 100644 index 0000000..65dba9f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/endPortalFrame.glsl @@ -0,0 +1,3 @@ +// End Portal Frame:Green Parts +smoothnessG = 0.25; +smoothnessD = 0.45; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/endStone.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/endStone.glsl new file mode 100644 index 0000000..d34805f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/endStone.glsl @@ -0,0 +1,7 @@ +float factor = pow2(pow2(color.r)); +smoothnessG = factor * 0.65; +smoothnessD = smoothnessG * 0.6; + +#ifdef COATED_TEXTURES + noiseFactor = 0.66; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/froglights.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/froglights.glsl new file mode 100644 index 0000000..95432de --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/froglights.glsl @@ -0,0 +1,10 @@ +noSmoothLighting = true; noDirectionalShading = true; +lmCoordM = vec2(1.0, 0.0); + +float blockRes = absMidCoordPos.x * atlasSize.x; +vec2 signMidCoordPosM = abs((floor((signMidCoordPos + 1.0) * blockRes) + 0.5) / blockRes - 1.0); +float value = 1.0 - max(signMidCoordPosM.x, signMidCoordPosM.y); +emission = 0.3 + value + pow(dot(color.rgb, color.rgb) * 0.33, frogPow); +emission *= 1.7; + +color.rgb = pow2(color.rgb); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/goldBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/goldBlock.glsl new file mode 100644 index 0000000..44e1532 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/goldBlock.glsl @@ -0,0 +1,20 @@ +materialMask = OSIEBCA * 3.0; // Gold Fresnel + +#ifdef GBUFFERS_TERRAIN + float colorG2 = pow2(color.g); +#else + float colorG2 = color.g; +#endif +float colorG4 = pow2(colorG2); +float factor = max(color.g, 0.8); + +smoothnessG = min1(factor - colorG4 * 0.5); +highlightMult = 3.5 * max(colorG4, 0.2); + +smoothnessD = colorG4; + +color.rgb *= 0.5 + 0.4 * GetLuminance(color.rgb); + +#ifdef COATED_TEXTURES + noiseFactor = 0.33; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/ironBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/ironBlock.glsl new file mode 100644 index 0000000..824e57b --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/ironBlock.glsl @@ -0,0 +1,14 @@ +#ifdef GBUFFERS_TERRAIN + smoothnessG = pow2(pow2(color.r)); +#else + smoothnessG = pow2(color.r); +#endif +highlightMult = smoothnessG * 3.0; +smoothnessD = smoothnessG; +materialMask = OSIEBCA; // Intense Fresnel + +color.rgb *= 0.6 + 0.5 * GetLuminance(color.rgb); + +#ifdef COATED_TEXTURES + noiseFactor = 0.33; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lanternMetal.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lanternMetal.glsl new file mode 100644 index 0000000..374efc7 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lanternMetal.glsl @@ -0,0 +1,6 @@ +smoothnessG = color.b; +smoothnessD = color.b; + +#ifdef COATED_TEXTURES + noiseFactor = 0.66; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lapisBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lapisBlock.glsl new file mode 100644 index 0000000..1b562e0 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lapisBlock.glsl @@ -0,0 +1,6 @@ +smoothnessG = pow2(color.b) * 0.8; +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.5; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lava.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lava.glsl new file mode 100644 index 0000000..465be13 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lava.glsl @@ -0,0 +1,33 @@ +// Tweak to prevent the animation of lava causing brightness pulsing +vec3 avgColor = vec3(0.0); +ivec2 itexCoordC = ivec2(midCoord * atlasSize + 0.0001); +for (int x = -8; x < 8; x += 2) { + for (int y = -8; y < 8; y += 2) { + avgColor += texelFetch(tex, itexCoordC + ivec2(x, y), 0).rgb; + } +} +color.rgb /= max(GetLuminance(avgColor) * 0.0390625, 0.001); +noDirectionalShading = true; +lmCoordM = vec2(0.0); +emission = GetLuminance(color.rgb) * 6.5; + +vec3 worldPos = playerPos + cameraPosition; +vec2 lavaPos = (floor(worldPos.xz * 16.0) + worldPos.y * 32.0) * 0.000666; +vec2 wind = vec2(frameTimeCounter * 0.012, 0.0); + +#ifdef NETHER + float noiseSample = texture2D(noisetex, lavaPos + wind).g; + noiseSample = noiseSample - 0.5; + noiseSample *= 0.1; + color.rgb = pow(color.rgb, vec3(1.0 + noiseSample)); +#endif + +if (mat == 10068 || mat == 10069){ + #include "/spookylib/materials/specificMaterials/terrain/lavaNoise.glsl" +} + +#if RAIN_PUDDLES >= 1 + noPuddles = 1.0; +#endif + +color.rgb = max(color.rgb, 0.023); // so black spots still have some textures and aren't fully black diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lavaNoise.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lavaNoise.glsl new file mode 100644 index 0000000..8ca23d8 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/lavaNoise.glsl @@ -0,0 +1,35 @@ +#ifdef GBUFFERS_TERRAIN + float columnNoise = 0.0; + float noise = 0.0; + vec3 lavaNoiseColor = color.rgb + 0.1; + float lavaNoiseEmission = emission; + if (mat == 10068 || columnNoise == 1.0) { + #ifdef NETHER + if (worldPos.y > 30 && worldPos.y < 32) { + noise += texture2D(noisetex, lavaPos * 0.2 + wind * 0.1).r; + noise += texture2D(noisetex, lavaPos * 0.8 + wind * 0.04).r * 0.5; + noise *= texture2D(noisetex, lavaPos * 0.1 + wind * 0.02).r * 0.5; + lavaNoiseEmission *= 1.6; + lavaNoiseColor *= smoothstep(0.00, 0.50, noise); + lavaNoiseColor.r *= 1.2; + } + else { + noise += texture2D(noisetex, lavaPos * 0.05 + wind * 0.01).r; + noise -= texture2D(noisetex, lavaPos * 1.5 + wind * 0.05).r * 0.3; + noise += texture2D(noisetex, lavaPos * 0.1).r * 0.7; + lavaNoiseColor *= smoothstep(0.00, 0.70, noise); + lavaNoiseColor.r *= 1.5; + } + #else + noise += texture2D(noisetex, lavaPos * 0.2 + wind * 0.01).g; + noise -= texture2D(noisetex, lavaPos * 2.0 + wind * 0.05).g * 0.3; + noise += texture2D(noisetex, lavaPos * 0.1).g * 0.3; + lavaNoiseColor *= smoothstep(0.00, 0.70, noise); + lavaNoiseColor.r *= 1.25; + lavaNoiseEmission *= 1.1; + #endif + } + + color.rgb = mix(color.rgb, lavaNoiseColor, lavaNoiseIntensity); + emission = mix(emission, lavaNoiseEmission, lavaNoiseIntensity); +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/leaves.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/leaves.glsl new file mode 100644 index 0000000..c6a60b2 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/leaves.glsl @@ -0,0 +1,19 @@ +subsurfaceMode = 2; +materialMask = OSIEBCA * 253.0; // Reduced Edge TAA + +#ifdef IPBR + float factor = min1(pow2(color.g - 0.15 * (color.r + color.b)) * 2.5); + smoothnessG = factor * 0.5; + highlightMult = factor * 4.0 + 2.0; + float fresnel = clamp(1.0 + dot(normalM, normalize(viewPos)), 0.0, 1.0); + highlightMult *= 1.0 - pow2(pow2(fresnel)); +#endif + +#ifdef SNOWY_WORLD + snowMinNdotU = min(pow2(pow2(color.g)), 0.1); + color.rgb = color.rgb * 0.5 + 0.5 * (color.rgb / glColor.rgb); +#endif + +#if defined REALTIME_SHADOWS && SHADOW_QUALITY < 3 + shadowMult = vec3(sqrt1(max0(max(lmCoordM.y, min1(lmCoordM.x * 2.0)) - 0.95) * 20.0)); +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/netheriteBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/netheriteBlock.glsl new file mode 100644 index 0000000..88229f9 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/netheriteBlock.glsl @@ -0,0 +1,8 @@ +smoothnessG = pow2(color.r * 2.0); +smoothnessG = min1(smoothnessG); +highlightMult = smoothnessG * 2.0; +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.33; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/netherrack.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/netherrack.glsl new file mode 100644 index 0000000..c5fba0f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/netherrack.glsl @@ -0,0 +1,7 @@ +#if MC_VERSION >= 11300 + smoothnessG = pow2(color.r) * 1.5; + smoothnessG = min1(smoothnessG); +#else + smoothnessG = color.r * 0.4 + 0.2; +#endif +smoothnessD = smoothnessG; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/oakWood.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/oakWood.glsl new file mode 100644 index 0000000..763ba83 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/oakWood.glsl @@ -0,0 +1,3 @@ +smoothnessG = pow2(pow2(color.g)) * 2.5; +smoothnessG = min1(smoothnessG); +smoothnessD = smoothnessG; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/obsidian.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/obsidian.glsl new file mode 100644 index 0000000..a768754 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/obsidian.glsl @@ -0,0 +1,13 @@ +materialMask = OSIEBCA; // Intense Fresnel + +float factor = max0(0.3 - abs(color.r - 0.3)) * 1.5; + +smoothnessG = factor; +highlightMult = 2.0 + min1(smoothnessG * 2.0) * 1.5; +smoothnessG = min1(smoothnessG); + +smoothnessD = min1(factor + 0.07); + +#ifdef COATED_TEXTURES + noiseFactor = 1.25; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/pumpkin.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/pumpkin.glsl new file mode 100644 index 0000000..a5c240c --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/pumpkin.glsl @@ -0,0 +1 @@ +smoothnessG = color.g * 0.25; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/quartzBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/quartzBlock.glsl new file mode 100644 index 0000000..d0c0122 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/quartzBlock.glsl @@ -0,0 +1,19 @@ +materialMask = OSIEBCA; // Intense Fresnel + +float factor = color.g; +float factor2 = pow2(factor); +float factor4 = pow2(factor2); +float factor8 = pow2(factor4); + +smoothnessG = factor - factor8 * 0.5; +highlightMult = 3.5 * factor8; + +smoothnessD = factor8; + +#ifdef GBUFFERS_TERRAIN + DoBrightBlockTweaks(color.rgb, 0.5, shadowMult, highlightMult); +#endif + +#ifdef COATED_TEXTURES + noiseFactor = 0.5; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/rawCopperBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/rawCopperBlock.glsl new file mode 100644 index 0000000..baf471f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/rawCopperBlock.glsl @@ -0,0 +1,4 @@ +materialMask = OSIEBCA * 2.0; // Copper Fresnel +smoothnessG = pow2(color.r + color.g * 0.25) * 0.4; +smoothnessG = min1(smoothnessG); +smoothnessD = min1(smoothnessG * smoothnessG * 2.0); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/rawGoldBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/rawGoldBlock.glsl new file mode 100644 index 0000000..4168ef6 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/rawGoldBlock.glsl @@ -0,0 +1,3 @@ +materialMask = OSIEBCA * 3.0; // Gold Fresnel +smoothnessG = pow2(pow2(color.g)); +smoothnessD = 0.5 * (smoothnessG + color.b); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/rawIronBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/rawIronBlock.glsl new file mode 100644 index 0000000..6ffa82a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/rawIronBlock.glsl @@ -0,0 +1,3 @@ +materialMask = OSIEBCA; // Intense Fresnel +smoothnessG = pow2(pow2(color.r)) * 0.7; +smoothnessD = smoothnessG * 0.6; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl new file mode 100644 index 0000000..7bc1fa0 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/redstoneBlock.glsl @@ -0,0 +1,11 @@ +materialMask = OSIEBCA * 5.0; // Redstone Fresnel + +float factor = pow2(color.r); +smoothnessG = 0.4; +highlightMult = factor + 0.2; + +smoothnessD = factor * 0.5 + 0.1; + +#ifdef COATED_TEXTURES + noiseFactor = 0.77; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/redstoneTorch.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/redstoneTorch.glsl new file mode 100644 index 0000000..ac7d320 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/redstoneTorch.glsl @@ -0,0 +1,15 @@ +noSmoothLighting = true; noDirectionalShading = true; +lmCoordM.x = min(lmCoordM.x * 0.9, 0.77); + +if (color.r > 0.65) { + emission = (3.5 - 2.25 * color.g) * 0.97; + color.rgb *= color.rgb; +} else if (color.r > color.g * 2.0) { + materialMask = OSIEBCA * 5.0; // Redstone Fresnel + + float factor = pow2(color.r); + smoothnessG = 0.4; + highlightMult = factor + 0.4; + + smoothnessD = factor * 0.7 + 0.3; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/snow.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/snow.glsl new file mode 100644 index 0000000..6cc4f52 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/snow.glsl @@ -0,0 +1,12 @@ +smoothnessG = (1.0 - pow(color.g, 64.0) * 0.3) * 0.4; +highlightMult = 2.0; + +smoothnessD = smoothnessG; + +#ifdef GBUFFERS_TERRAIN + DoBrightBlockTweaks(color.rgb, 0.5, shadowMult, highlightMult); +#endif + +#if RAIN_PUDDLES >= 1 + noPuddles = 1.0; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/stone.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/stone.glsl new file mode 100644 index 0000000..47dc809 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/terrain/stone.glsl @@ -0,0 +1,7 @@ +smoothnessG = pow2(pow2(color.g)) * 1.5; +smoothnessG = min1(smoothnessG); +smoothnessD = smoothnessG; + +#ifdef COATED_TEXTURES + noiseFactor = 0.77; +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/glass.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/glass.glsl new file mode 100644 index 0000000..51983c0 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/glass.glsl @@ -0,0 +1,22 @@ +if (color.a > 0.001) { + smoothnessG = 1.0; + highlightMult = 3.5; + reflectMult = 0.5; + + translucentMultCalculated = true; + translucentMult = vec4(0.0, 0.0, 0.0, 1.0); +} else { + #ifdef FANCY_GLASS + smoothnessG = 0.5; + highlightMult = 2.5; + reflectMult = 1.0; + color.rgb = vec3(0.75, 0.8, 0.85); + + translucentMultCalculated = true; + translucentMult.a = 0.0; + + color.a = max(color.a, GLASS_OPACITY); + #else + discard; + #endif +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/netherPortal.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/netherPortal.glsl new file mode 100644 index 0000000..d5ca006 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/netherPortal.glsl @@ -0,0 +1,34 @@ +lmCoordM = vec2(0.0); +color = vec4(0.0); + +int sampleCount = 8; + +float multiplier = 0.4 / (-viewVector.z * sampleCount); +vec2 interval = viewVector.xy * multiplier; +vec2 coord = signMidCoordPos * 0.5 + 0.5; +vec2 absMidCoordPos2 = absMidCoordPos * 2.0; +vec2 midCoord = texCoord - absMidCoordPos * signMidCoordPos; +vec2 minimumMidCoordPos = midCoord - absMidCoordPos; + +for (int i = 0; i < sampleCount; i++) { + float portalStep = (i + dither) / sampleCount; + coord += interval * portalStep; + vec2 sampleCoord = fract(coord) * absMidCoordPos2 + minimumMidCoordPos; + vec4 psample = texture2DLod(tex, sampleCoord, 0); + + float factor = 1.0 - portalStep; + psample *= pow(factor, 0.1); + + emission = max(emission, psample.r); + + color += psample; +} +color /= sampleCount; + +color.rgb *= color.rgb * vec3(1.25, 1.0, 0.65); +color.a = sqrt1(color.a) * 0.8; + +emission *= emission; +emission *= emission; +emission *= emission; +emission = clamp(emission * 120.0, 0.03, 1.2) * 8.0; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/stainedGlass.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/stainedGlass.glsl new file mode 100644 index 0000000..1b89bf7 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/stainedGlass.glsl @@ -0,0 +1,3 @@ +smoothnessG = 0.5; +highlightMult = 1.5; +reflectMult = 1.0; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/water.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/water.glsl new file mode 100644 index 0000000..cfdb92e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/materials/specificMaterials/translucents/water.glsl @@ -0,0 +1,256 @@ +#if MC_VERSION >= 11300 + #if WATERCOLOR_MODE >= 2 + vec3 glColorM = glColor.rgb; + + #if WATERCOLOR_MODE >= 3 + glColorM.g = max(glColorM.g, 0.39); + #endif + + #ifdef GBUFFERS_WATER + translucentMultCalculated = true; + translucentMult.rgb = normalize(sqrt2(glColor.rgb)); + translucentMult.g *= 0.88; + #endif + + glColorM = sqrt1(glColorM) * vec3(1.0, 0.85, 0.8); + #else + vec3 glColorM = vec3(0.43, 0.6, 0.8); + #endif + + #if WATER_STYLE < 3 + vec3 colorPM = pow2(colorP.rgb); + color.rgb = colorPM * glColorM; + #else + vec3 colorPM = vec3(0.25); + color.rgb = 0.375 * glColorM; + #endif +#else + #if WATER_STYLE < 3 + color.rgb = mix(color.rgb, vec3(GetLuminance(color.rgb)), 0.88); + color.rgb = pow2(color.rgb) * vec3(2.3, 3.5, 3.1) * 0.9; + #else + color.rgb = vec3(0.13, 0.2, 0.27); + #endif +#endif + +#ifdef WATERCOLOR_CHANGED + color.rgb *= vec3(WATERCOLOR_RM, WATERCOLOR_GM, WATERCOLOR_BM); +#endif + +#define PHYSICS_OCEAN_INJECTION +#if defined GENERATED_NORMALS && (WATER_STYLE >= 2 || defined PHYSICS_OCEAN) + noGeneratedNormals = true; +#endif + +#ifdef GBUFFERS_WATER + lmCoordM.y = min(lmCoord.y * 1.07, 1.0); // Iris/Sodium skylight inconsistency workaround + + reflectMult = 1.0; + + #if WATER_QUALITY >= 3 + materialMask = OSIEBCA * 241.0; // Water + #endif + + #if WATER_QUALITY >= 2 || WATER_STYLE >= 2 + #define WATER_SPEED_MULT_M WATER_SPEED_MULT * 0.018 + vec2 wind = vec2(frameTimeCounter * WATER_SPEED_MULT_M, 0.0); + vec3 worldPos = playerPos + cameraPosition; + vec2 waterPos = worldPos.xz * 16.0; + #if WATER_STYLE < 3 + waterPos = floor(waterPos); + #endif + waterPos = 0.002 * (waterPos + worldPos.y * 32.0); + #endif + + // Water Normals + #if WATER_STYLE >= 2 || RAIN_PUDDLES >= 1 && WATER_STYLE == 1 && WATER_QUALITY >= 2 + vec3 normalMap = vec3(0.0, 0.0, 1.0); + #if WATER_STYLE >= 2 + vec2 waterPosM = waterPos; + + #if WATER_SIZE_MULT != 100 + #define WATER_SIZE_MULT_M WATER_SIZE_MULT * 0.01 + waterPosM *= WATER_SIZE_MULT_M; + #endif + + #define WATER_BUMPINESS_M WATER_BUMPINESS * 0.8 + + float rainWaterStrength = mix(1.0, 2.5, rainFactor); + + #if WATER_STYLE >= 2 + waterPosM *= 2.5; wind *= 2.5; + + #if WATER_QUALITY >= 2 + vec2 parallaxMult = -0.01 * viewVector.xy / viewVector.z; + for (int i = 0; i < 4; i++) { + waterPosM += parallaxMult * texture2D(gaux4, waterPosM - wind).a; + waterPosM += parallaxMult * texture2D(gaux4, waterPosM * 0.25 - 0.5 * wind).a; + } + #endif + + vec2 normalMed = texture2D(gaux4, waterPosM + wind).rg - 0.5; + vec2 normalSmall = texture2D(gaux4, waterPosM * 4.0 - 2.0 * wind).rg - 0.5; + vec2 normalBig = texture2D(gaux4, waterPosM * 0.25 - 0.5 * wind).rg - 0.5; + normalBig += texture2D(gaux4, waterPosM * 0.05 - 0.05 * wind).rg - 0.5; + + normalMap.xy = normalMed * WATER_BUMP_MED + normalSmall * WATER_BUMP_SMALL + normalBig * WATER_BUMP_BIG; + normalMap.xy *= 12.0 * (1.0 - fresnel) * WATER_BUMPINESS_M * rainWaterStrength; + #endif + + normalMap.xy *= 0.03 * lmCoordM.y + 0.01; + #else + float pNormalMult = 0.02 * rainFactor * inRainy * pow2(lmCoordM.y); + + if (pNormalMult > 0.0005) { + vec2 puddlePos = floor((playerPos.xz + cameraPosition.xz) * 16.0) * 0.00625; + + vec2 puddleWind = vec2(frameTimeCounter) * 0.015; + vec2 pNormalCoord1 = puddlePos + vec2(puddleWind.x, puddleWind.y); + vec2 pNormalCoord2 = puddlePos + vec2(puddleWind.x * -1.5, puddleWind.y * -1.0); + vec3 pNormalNoise1 = texture2D(noisetex, pNormalCoord1).rgb; + vec3 pNormalNoise2 = texture2D(noisetex, pNormalCoord2).rgb; + + normalMap.xy = (pNormalNoise1.xy + pNormalNoise2.xy - vec2(1.0)) * pNormalMult; + #endif + + normalMap.z = sqrt(1.0 - (pow2(normalMap.x) + pow2(normalMap.y))); + normalM = clamp(normalize(normalMap * tbnMatrix), vec3(-1.0), vec3(1.0)); + + #if WATER_STYLE == 1 + } + #endif + + #if WATER_STYLE >= 2 + vec3 vector = reflect(nViewPos, normalize(normalM)); + float norMix = pow2(pow2(pow2(1.0 - max0(dot(normal, vector))))) * 0.5; + normalM = mix(normalM, normal, norMix); // Fixes normals pointing inside water + + float fresnelP = fresnel; + fresnel = clamp(1.0 + dot(normalM, nViewPos), 0.0, 1.0); + #endif + #endif + //// + + float fresnel2 = pow2(fresnel); + float fresnel4 = pow2(fresnel2); + + #if WATER_QUALITY >= 2 + if (isEyeInWater != 1) { + // Noise Coloring + float noise = texture2D(noisetex, (waterPos + wind) * 0.25).g; + noise = noise - 0.5; + noise *= 0.25; + color.rgb = pow(color.rgb, vec3(1.0 + noise)); + + // Water Alpha + float depthT = texelFetch(depthtex1, texelCoord, 0).r; + vec3 screenPosT = vec3(screenCoord, depthT); + #ifdef TAA + vec3 viewPosT = ScreenToView(vec3(TAAJitter(screenPosT.xy, -0.5), screenPosT.z)); + #else + vec3 viewPosT = ScreenToView(screenPosT); + #endif + float lViewPosT = length(viewPosT); + float lViewPosDifM = lViewPos - lViewPosT; + + #if WATER_STYLE < 3 + color.a = sqrt1(color.a); + #else + color.a = 0.98; + #endif + + #if WATER_FOG_MULT != 100 + #define WATER_FOG_MULT_M WATER_FOG_MULT * 0.01; + lViewPosDifM *= WATER_FOG_MULT_M; + #endif + + float waterFog = max0(1.0 - exp(lViewPosDifM * 0.075)); + color.a *= 0.25 + 0.75 * waterFog; + + #if defined BRIGHT_CAVE_WATER && WATER_ALPHA_MULT < 200 + // For better water visibility in caves and some extra color pop outdoors + color.rgb *= 2.5 - sqrt2(waterFog) - 0.5 * lmCoordM.y; + #endif + + #if WATER_ALPHA_MULT != 100 + #define WATER_ALPHA_MULT_M 100.0 / WATER_ALPHA_MULT + color.a = pow(color.a, WATER_ALPHA_MULT_M); + #endif + //// + + // Water Foam + #if WATER_FOAM_I > 0 + if (NdotU > 0.99) { + vec3 matrixM = vec3( + gbufferModelViewInverse[0].y, + gbufferModelViewInverse[1].y, + gbufferModelViewInverse[2].y + ); + float playerPosTY = dot(matrixM, viewPosT) + gbufferModelViewInverse[3].y; + float yPosDif = playerPosTY - playerPos.y; + + #if WATER_STYLE < 3 && MC_VERSION >= 11300 + float dotColorPM = dot(colorPM, colorPM); + float foamThreshold = min(pow2(dotColorPM) * 1.6, 1.2); + #else + float foamThreshold = pow2(texture2D(noisetex, waterPos * 4.0 + wind * 0.5).g) * 1.6; + #endif + float foam = pow2(clamp((foamThreshold + yPosDif) / foamThreshold, 0.0, 1.0)); + #ifndef END + foam *= 0.4 + 0.25 * lmCoord.y; + #else + foam *= 0.6; + #endif + foam *= clamp((fract(worldPos.y) - 0.7) * 10.0, 0.0, 1.0); + + vec4 foamColor = vec4(0.9, 0.95, 1.05, 1.0); + + #define WATER_FOAM_IM WATER_FOAM_I * 0.01 + #if WATER_FOAM_I < 0 + foam *= WATER_FOAM_IM; + #elif WATER_FOAM_I > 100 + foamColor *= WATER_FOAM_IM; + #endif + + color = mix(color, foamColor, foam); + reflectMult = 1.0 - foam; + } + #endif + //// + } else { // Underwater + noDirectionalShading = true; + + reflectMult = 0.5; + + #if MC_VERSION < 11300 && WATER_STYLE >= 3 + color.a = 0.7; + #endif + + #if WATER_STYLE == 1 + translucentMult.rgb *= 1.0 - fresnel4; + #else + translucentMult.rgb *= 1.0 - 0.9 * max(0.5 * sqrt(fresnel4), fresnel4); + #endif + } + #else + shadowMult = vec3(0.0); + #endif + + // Final Tweaks + reflectMult *= 0.5 + 0.5 * NdotUmax0; + + color.a = mix(color.a, 1.0, fresnel4); + + #if WATER_STYLE == 3 || WATER_STYLE == 2 && SUN_MOON_STYLE >= 2 + smoothnessG = 1.0; + + vec3 lightNormal = normalize(vec3(normalMed + 0.5 * normalSmall, 1.0) * tbnMatrix); + highlightMult = dot(lightNormal, lightVec); + highlightMult = max0(highlightMult) / max(dot(normal, lightVec), 0.17); + highlightMult = mix(pow2(pow2(highlightMult * 1.1)), 1.0, min1(sqrt(miplevel) * 0.45)) * 0.3; + #else + smoothnessG = 0.5; + + highlightMult = min(pow2(pow2(dot(colorP.rgb, colorP.rgb) * 0.4)), 0.5) * (16.0 - 15.0 * fresnel2) * (sunVisibility > 0.5 ? 1.0 : 0.5); + #endif +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/colorCodedPrograms.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/colorCodedPrograms.glsl new file mode 100644 index 0000000..ae73612 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/colorCodedPrograms.glsl @@ -0,0 +1,35 @@ +void ColorCodeProgram(inout vec4 color) { + #if defined GBUFFERS_TERRAIN // Green + color.rgb = vec3(0.0, 1.0, 0.0); + #elif defined GBUFFERS_WATER // Dark Blue + color.rgb = vec3(0.0, 0.0, 1.0); + #elif defined GBUFFERS_SKYBASIC // Light Blue + color.rgb = vec3(0.0, 1.0, 2.0); + #elif defined GBUFFERS_WEATHER // Magenta + color.rgb = vec3(3.0, 0.0, 3.0); + #elif defined GBUFFERS_BLOCK // Yellow + color.rgb = vec3(1.5, 1.5, 0.0); + #elif defined GBUFFERS_HAND // Orange + color.rgb = vec3(1.5, 0.7, 0.0); + #elif defined GBUFFERS_ENTITIES // Red + color.rgb = vec3(1.5, 0.0, 0.0); + #elif defined GBUFFERS_BASIC // White + color.rgb = vec3(3.0, 3.0, 3.0); + #elif defined GBUFFERS_SPIDEREYES // Red-Blue Vertical Stripes + color.rgb = mix(vec3(2.0, 0.0, 0.0), vec3(0.0, 0.0, 2.0), mod(gl_FragCoord.x, 20.0) / 20.0); + #elif defined GBUFFERS_TEXTURED // Red-Blue Horizontal Stripes + color.rgb = mix(vec3(2.0, 0.0, 0.0), vec3(0.0, 0.0, 2.0), mod(gl_FragCoord.y, 20.0) / 20.0); + #elif defined GBUFFERS_CLOUDS // Red-Green Vertical Stripes + color.rgb = mix(vec3(2.0, 0.0, 0.0), vec3(0.0, 2.0, 0.0), mod(gl_FragCoord.x, 20.0) / 20.0); + #elif defined GBUFFERS_BEACONBEAM // Red-Green Horizontal Stripes + color.rgb = mix(vec3(2.0, 0.0, 0.0), vec3(0.0, 2.0, 0.0), mod(gl_FragCoord.y, 20.0) / 20.0); + #elif defined GBUFFERS_ARMOR_GLINT // Black-White Vertical Stripes + color.rgb = mix(vec3(0.0, 0.0, 0.0), vec3(1.5, 1.5, 1.5), mod(gl_FragCoord.x, 20.0) / 20.0); + #elif defined GBUFFERS_DAMAGEDBLOCK // Black-White Horizontal Stripes + color.rgb = mix(vec3(0.0, 0.0, 0.0), vec3(1.5, 1.5, 1.5), mod(gl_FragCoord.y, 20.0) / 20.0); + #elif defined GBUFFERS_SKYTEXTURED // Green-Blue Horizontal Stripes + color.rgb = mix(vec3(0.0, 2.0, 0.0), vec3(0.0, 0.0, 2.0), mod(gl_FragCoord.y, 20.0) / 20.0); + #endif + + color.rgb *= 0.75; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/darkOutline.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/darkOutline.glsl new file mode 100644 index 0000000..414f663 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/darkOutline.glsl @@ -0,0 +1,52 @@ +vec2 darkOutlineOffsets[12] = vec2[12]( + vec2( 1.0,0.0), + vec2(-1.0,1.0), + vec2( 0.0,1.0), + vec2( 1.0,1.0), + vec2(-2.0,2.0), + vec2(-1.0,2.0), + vec2( 0.0,2.0), + vec2( 1.0,2.0), + vec2( 2.0,2.0), + vec2(-2.0,1.0), + vec2( 2.0,1.0), + vec2( 2.0,0.0) +); + +void DoDarkOutline(inout vec3 color, inout float skyFade, float z0, float dither) { + vec2 scale = vec2(1.0 / view); + + float outline = 1.0; + float z = GetLinearDepth(z0) * far * 2.0; + float minZ = 1.0, sampleZA = 0.0, sampleZB = 0.0; + + #if DARK_OUTLINE_THICKNESS == 1 + int sampleCount = 4; + #elif DARK_OUTLINE_THICKNESS == 2 + int sampleCount = 12; + #endif + + for(int i = 0; i < sampleCount; i++) { + vec2 offset = scale * darkOutlineOffsets[i]; + sampleZA = texture2D(depthtex0, texCoord + offset).r; + sampleZB = texture2D(depthtex0, texCoord - offset).r; + float sampleZsum = GetLinearDepth(sampleZA) + GetLinearDepth(sampleZB); + outline *= clamp(1.0 - (z - sampleZsum * far), 0.0, 1.0); + minZ = min(minZ, min(sampleZA, sampleZB)); + } + + if (outline < 0.909091) { + vec4 viewPos = gbufferProjectionInverse * (vec4(texCoord, minZ, 1.0) * 2.0 - 1.0); + viewPos /= viewPos.w; + float lViewPos = length(viewPos.xyz); + vec3 playerPos = ViewToPlayer(viewPos.xyz); + vec3 nViewPos = normalize(viewPos.xyz); + float VdotU = dot(nViewPos, upVec); + float VdotS = dot(nViewPos, sunVec); + + vec3 newColor = vec3(0.0); + DoFog(newColor, skyFade, lViewPos, playerPos, VdotU, VdotS, dither); + + color = mix(color, newColor, 1.0 - outline * 1.1); + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/handSway.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/handSway.glsl new file mode 100644 index 0000000..3fc0da5 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/handSway.glsl @@ -0,0 +1,13 @@ +#if HAND_SWAYING == 1 + const float handSwayMult = 0.5; +#elif HAND_SWAYING == 2 + const float handSwayMult = 1.0; +#elif HAND_SWAYING == 3 + const float handSwayMult = 2.0; +#endif +gl_Position.x += handSwayMult * (sin(frameTimeCounter * 0.86)) / 256.0; +gl_Position.y += handSwayMult * (cos(frameTimeCounter * 1.5)) / 64.0; + +//dvd screensaver +//gl_Position.x -= - 0.1 + mod(frameTimeCounter * 0.3, 1.0) * sign(mod(frameTimeCounter * 0.3, 2.0) - 1.0) + float(mod(frameTimeCounter * 0.3, 2.0) < 1.0); +//gl_Position.y += mod(frameTimeCounter * 0.61803398875, 1.0) * sign(mod(frameTimeCounter * 0.61803398875, 2.0) - 1.0) + float(mod(frameTimeCounter * 0.61803398875, 2.0) < 1.0); \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/lensFlare.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/lensFlare.glsl new file mode 100644 index 0000000..168ff69 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/lensFlare.glsl @@ -0,0 +1,107 @@ +float fovmult = gbufferProjection[1][1] / 1.37373871; + +float BaseLens(vec2 lightPos, float size, float dist, float hardness) { + vec2 lensCoord = (texCoord + (lightPos * dist - 0.5)) * vec2(aspectRatio, 1.0); + float lens = clamp(1.0 - length(lensCoord) / (size * fovmult), 0.0, 1.0 / hardness) * hardness; + lens *= lens; lens *= lens; + return lens; +} + +float OverlapLens(vec2 lightPos, float size, float dista, float distb) { + return BaseLens(lightPos, size, dista, 2.0) * BaseLens(lightPos, size, distb, 2.0); +} + +float PointLens(vec2 lightPos, float size, float dist) { + float lens = BaseLens(lightPos, size, dist, 1.5) + BaseLens(lightPos, size * 4.0, dist, 1.0) * 0.5; + return lens * (0.5 + 0.5 * sunFactor); +} + +float RingLensTransform(float lensFlare) { + return pow(1.0 - pow(1.0 - pow(lensFlare, 0.25), 10.0), 5.0); +} +float RingLens(vec2 lightPos, float size, float distA, float distB) { + float lensFlare1 = RingLensTransform(BaseLens(lightPos, size, distA, 1.0)); + float lensFlare2 = RingLensTransform(BaseLens(lightPos, size, distB, 1.0)); + + float lensFlare = clamp(lensFlare2 - lensFlare1, 0.0, 1.0); + lensFlare *= sqrt(lensFlare); + + lensFlare *= 1.0 - length(texCoord - lightPos - 0.5); + return lensFlare; +} + +vec2 lensFlareCheckOffsets[4] = vec2[4]( + vec2( 1.0,0.0), + vec2(-1.0,1.0), + vec2( 0.0,1.0), + vec2( 1.0,1.0) +); + +void DoLensFlare(inout vec3 color, vec3 viewPos, float dither) { + vec4 clipPosSun = gbufferProjection * vec4(sunVec, 1.0); + vec3 lightPos3 = clipPosSun.xyz / clipPosSun.w * 0.5; + vec2 lightPos = lightPos3.xy; + vec3 screenPosSun = lightPos3 + 0.5; + + float flareFactor = 1.0; + vec2 cScale = 40.0 / vec2(viewWidth, viewHeight); + for (int i = 0; i < 4; i++) { + vec2 cOffset = (lensFlareCheckOffsets[i] - dither) * cScale; + vec2 checkCoord1 = screenPosSun.xy + cOffset; + vec2 checkCoord2 = screenPosSun.xy - cOffset; + + float zSample1 = texture2D(depthtex0, checkCoord1).r; + float zSample2 = texture2D(depthtex0, checkCoord2).r; + #ifdef VL_CLOUDS_ACTIVE + float cloudLinearDepth1 = texture2D(colortex4, checkCoord1).r; + float cloudLinearDepth2 = texture2D(colortex4, checkCoord2).r; + zSample1 = min(zSample1, cloudLinearDepth1); + zSample2 = min(zSample2, cloudLinearDepth2); + #endif + + if (zSample1 < 1.0) + flareFactor -= 0.125; + if (zSample2 < 1.0) + flareFactor -= 0.125; + } + + float str = length(lightPos * vec2(aspectRatio, 1.0)); + str = pow(clamp(str * 8.0, 0.0, 1.0), 2.0) - clamp(str * 3.0 - 1.5, 0.0, 1.0); + flareFactor *= str; + + flareFactor *= LENSFLARE_I * (0.65 - 0.4 * rainFactor); + + vec3 flare = ( + BaseLens(lightPos, 0.3, -0.45, 1.0) * vec3(2.2, 1.2, 0.1) * 0.07 + + BaseLens(lightPos, 0.3, 0.10, 1.0) * vec3(2.2, 0.4, 0.1) * 0.03 + + BaseLens(lightPos, 0.3, 0.30, 1.0) * vec3(2.2, 0.2, 0.1) * 0.04 + + BaseLens(lightPos, 0.3, 0.50, 1.0) * vec3(2.2, 0.4, 2.5) * 0.05 + + BaseLens(lightPos, 0.3, 0.70, 1.0) * vec3(1.8, 0.4, 2.5) * 0.06 + + BaseLens(lightPos, 0.3, 0.90, 1.0) * vec3(0.1, 0.2, 2.5) * 0.07 + + + OverlapLens(lightPos, 0.08, -0.28, -0.39) * vec3(2.5, 1.2, 0.1) * 0.015 + + OverlapLens(lightPos, 0.08, -0.20, -0.31) * vec3(2.5, 0.5, 0.1) * 0.010 + + OverlapLens(lightPos, 0.12, 0.06, 0.19) * vec3(2.5, 0.2, 0.1) * 0.020 + + OverlapLens(lightPos, 0.12, 0.15, 0.28) * vec3(1.8, 0.1, 1.2) * 0.015 + + OverlapLens(lightPos, 0.12, 0.24, 0.37) * vec3(1.0, 0.1, 2.5) * 0.010 + + + PointLens(lightPos, 0.03, -0.55) * vec3(2.5, 1.6, 0.0) * 0.06 + + PointLens(lightPos, 0.02, -0.40) * vec3(2.5, 1.0, 0.0) * 0.045 + + PointLens(lightPos, 0.04, 0.43) * vec3(2.5, 0.6, 0.6) * 0.06 + + PointLens(lightPos, 0.02, 0.60) * vec3(0.2, 0.6, 2.5) * 0.045 + + PointLens(lightPos, 0.03, 0.67) * vec3(0.7, 1.1, 3.0) * 0.075 + + + RingLens(lightPos, 0.22, 0.44, 0.46) * vec3(0.10, 0.35, 2.50) * 1.5 + + RingLens(lightPos, 0.15, 0.98, 0.99) * vec3(0.15, 0.40, 2.55) * 2.5 + ); + + if (sunVec.z > 0.0) { + flare = flare * 0.2 + GetLuminance(flare) * vec3(0.3, 0.4, 0.6); + flare *= clamp01(1.0 - (SdotU + 0.1) * 5.0); + } else { + flare *= clamp01((SdotU + 0.1) * 5.0); + } + flare *= flareFactor; + + color = mix(color, vec3(1.0), flare); +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/showLightLevels.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/showLightLevels.glsl new file mode 100644 index 0000000..fdcaf36 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/showLightLevels.glsl @@ -0,0 +1,42 @@ +#if SHOW_LIGHT_LEVEL == 1 + if (heldItemId == 40000 || heldItemId2 == 40000) +#elif SHOW_LIGHT_LEVEL == 2 + if (heldBlockLightValue > 7.4 || heldBlockLightValue2 > 7.4) +#endif + +if (NdotU > 0.99) { + #ifdef OVERWORLD + #if MC_VERSION < 11800 + float lxMin = 0.533334; + #else + float lxMin = 0.000001; + #endif + float lyMin = 0.533334; + #else + float lxMin = 0.8; + float lyMin = 0.533334; + #endif + + bool xDanger = lmCoord.x < lxMin; + #ifndef NETHER + bool yDanger = lmCoord.y < lyMin; + #else + bool yDanger = lmCoord.x < lyMin; + #endif + + if (xDanger) { + vec2 indicatePos = playerPos.xz + cameraPosition.xz; + indicatePos = 1.0 - 2.0 * abs(fract(indicatePos) - 0.5); + float minPos = min(indicatePos.x, indicatePos.y); + + if (minPos > 0.5) { + color.rgb = yDanger ? vec3(0.4, 0.05, 0.05) : vec3(0.3, 0.3, 0.05); + + smoothnessG = 0.5; + highlightMult = 1.0; + smoothnessD = 0.0; + + emission = 3.0; + } + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/worldOutline.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/worldOutline.glsl new file mode 100644 index 0000000..866be2d --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/misc/worldOutline.glsl @@ -0,0 +1,43 @@ +vec2 worldOutlineOffset[4] = vec2[4] ( + vec2(-1.0, 1.0), + vec2( 0, 1.0), + vec2( 1.0, 1.0), + vec2( 1.0, 0) +); + +void DoWorldOutline(inout vec3 color, float linearZ0) { + vec2 scale = vec2(1.0 / view); + + float outlines[2] = float[2] (0.0, 0.0); + float outlined = 1.0; + float z = linearZ0 * far; + float totalz = 0.0; + float maxz = 0.0; + float sampleza = 0.0; + float samplezb = 0.0; + + int sampleCount = WORLD_OUTLINE_THICKNESS * 4; + + for (int i = 0; i < sampleCount; i++) { + vec2 offset = (1.0 + floor(i / 4.0)) * scale * worldOutlineOffset[int(mod(float(i), 4))]; + float depthCheckP = GetLinearDepth(texture2D(depthtex0, texCoord + offset).r) * far; + float depthCheckN = GetLinearDepth(texture2D(depthtex0, texCoord - offset).r) * far; + + outlined *= clamp(1.0 - ((depthCheckP + depthCheckN) - z * 2.0) * 32.0 / z, 0.0, 1.0); + + if (i <= 4) maxz = max(maxz, max(depthCheckP, depthCheckN)); + totalz += depthCheckP + depthCheckN; + } + + float outlinea = 1.0 - clamp((z * 8.0 - totalz) * 64.0 / z, 0.0, 1.0) * clamp(1.0 - ((z * 8.0 - totalz) * 32.0 - 1.0) / z, 0.0, 1.0); + float outlineb = clamp(1.0 + 8.0 * (z - maxz) / z, 0.0, 1.0); + float outlinec = clamp(1.0 + 64.0 * (z - maxz) / z, 0.0, 1.0); + + float outline = (0.35 * (outlinea * outlineb) + 0.65) * (0.75 * (1.0 - outlined) * outlinec + 1.0); + outline -= 1.0; + + outline *= WORLD_OUTLINE_I / WORLD_OUTLINE_THICKNESS; + if (outline < 0.0) outline = -outline * 0.25; + + color += min(color * outline * 2.5, vec3(outline)); +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/pipelineSettings.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/pipelineSettings.glsl new file mode 100644 index 0000000..74198a0 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/pipelineSettings.glsl @@ -0,0 +1,40 @@ +/* +const int colortex0Format = R11F_G11F_B10F; //main color +const int colortex1Format = RGBA8; //smoothnessD & materialMask & skyLightFactor +const int colortex2Format = RGBA16; //taa +const int colortex3Format = RGBA8; //(cloud/water map on deferred) | translucentMult & bloom & final color // can replace colortex8 +const int colortex4Format = R8; //volumetric cloud linear depth & volumetric light factor +const int colortex5Format = RGBA8_SNORM; //normalM & scene image for water reflections + +const int colortex6Format = R16; //previous depth +const int colortex7Format = RGBA16F; //(cloud/water map on gbuffers) | temporal filter + +const int colortex8Format = RGBA8; //light source info but replaces colortex3 to work as colorimg3 +*/ +const bool colortex0Clear = true; +const bool colortex1Clear = true; +const bool colortex2Clear = false; +#ifndef LIGHT_COLORING +const bool colortex3Clear = true; +#else +const bool colortex3Clear = false; +#endif +const bool colortex4Clear = false; +const bool colortex5Clear = false; + +const bool colortex6Clear = false; +const bool colortex7Clear = false; + +const bool colortex8Clear = false; +// + +const int noiseTextureResolution = 128; + +const bool shadowHardwareFiltering = true; +const float shadowDistanceRenderMul = 1.0; +const float entityShadowDistanceMul = 0.125; // Iris feature + +const float drynessHalflife = 300.0; +const float wetnessHalflife = 300.0; + +const float ambientOcclusionLevel = 1.0; \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cloud-water.png b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cloud-water.png new file mode 100644 index 0000000..e40940d --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cloud-water.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e03a26c2a265e0d39b8bed90124cf5dcaa788f8a2f3a1191a485460d7f05ffca +size 104834 diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cloud-water.png.mcmeta b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cloud-water.png.mcmeta new file mode 100644 index 0000000..33f3199 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cloud-water.png.mcmeta @@ -0,0 +1,7 @@ +{ + "texture": + { + "blur": true, + "clamp": false + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cucumber.png b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cucumber.png new file mode 100644 index 0000000..372f5be --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cucumber.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93ee6240e35a9749ea939788618b4028610a8b06c4d42d54e36dbf6468979a80 +size 2952 diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cucumber.png.mcmeta b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cucumber.png.mcmeta new file mode 100644 index 0000000..d909a4f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/cucumber.png.mcmeta @@ -0,0 +1,7 @@ +{ + "liminals": + { + "blur": false, + "clamp": false + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/noise.png b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/noise.png new file mode 100644 index 0000000..ada0f13 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/noise.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c810be7b1154640ec514f34f61cece2882514e6f5887101f20a1c57386cc15a1 +size 48135 diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/noise.png.mcmeta b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/noise.png.mcmeta new file mode 100644 index 0000000..33f3199 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/textures/noise.png.mcmeta @@ -0,0 +1,7 @@ +{ + "texture": + { + "blur": true, + "clamp": false + } +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/commonFunctions.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/commonFunctions.glsl new file mode 100644 index 0000000..e428b61 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/commonFunctions.glsl @@ -0,0 +1,285 @@ +#ifdef VERTEX_SHADER + vec2 GetLightMapCoordinates() { + vec2 lmCoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy; + return clamp((lmCoord - 0.03125) * 1.06667, 0.0, 1.0); + } + vec3 GetSunVector() { + const vec2 sunRotationData = vec2(cos(sunPathRotation * 0.01745329251994), -sin(sunPathRotation * 0.01745329251994)); + #ifdef OVERWORLD + float ang = fract(timeAngle - 0.25); + ang = (ang + (cos(ang * 3.14159265358979) * -0.5 + 0.5 - ang) / 3.0) * 6.28318530717959; + return normalize((gbufferModelView * vec4(vec3(-sin(ang), cos(ang) * sunRotationData) * 2000.0, 1.0)).xyz); + #elif defined END + float ang = 0.0; + return normalize((gbufferModelView * vec4(vec3(0.0, sunRotationData * 2000.0), 1.0)).xyz); + #else + return vec3(0.0); + #endif + } +#endif + +float GetLuminance(vec3 color) { + return dot(color, vec3(0.299, 0.587, 0.114)); +} + +vec3 DoLuminanceCorrection(vec3 color) { + return color / GetLuminance(color); +} + +float GetBiasFactor(float NdotLM) { + float NdotLM2 = NdotLM * NdotLM; + return 1.25 * (1.0 - NdotLM2 * NdotLM2) / NdotLM; +} + +float GetHorizonFactor(float XdotU) { + #ifdef SUN_MOON_HORIZON + float horizon = clamp((XdotU + 0.1) * 10.0, 0.0, 1.0); + horizon *= horizon; + return horizon * horizon * (3.0 - 2.0 * horizon); + #else + float horizon = min(XdotU + 1.0, 1.0); + horizon *= horizon; + horizon *= horizon; + return horizon * horizon; + #endif +} + +bool CheckForColor(vec3 albedo, vec3 check) { // Thanks to Builderb0y + vec3 dif = albedo - check * 0.003921568; + return dif == clamp(dif, vec3(-0.001), vec3(0.001)); +} + +bool CheckForStick(vec3 albedo) { + return CheckForColor(albedo, vec3(40, 30, 11)) || + CheckForColor(albedo, vec3(73, 54, 21)) || + CheckForColor(albedo, vec3(104, 78, 30)) || + CheckForColor(albedo, vec3(137, 103, 39)); +} + +float GetMaxColorDif(vec3 color) { + vec3 dif = abs(vec3(color.r - color.g, color.g - color.b, color.r - color.b)); + return max(dif.r, max(dif.g, dif.b)); +} + +int min1(int x) { + return min(x, 1); +} +float min1(float x) { + return min(x, 1.0); +} +int max0(int x) { + return max(x, 0); +} +float max0(float x) { + return max(x, 0.0); +} +int clamp01(int x) { + return clamp(x, 0, 1); +} +float clamp01(float x) { + return clamp(x, 0.0, 1.0); +} + +int pow2(int x) { + return x * x; +} +float pow2(float x) { + return x * x; +} +vec2 pow2(vec2 x) { + return x * x; +} +vec3 pow2(vec3 x) { + return x * x; +} +vec4 pow2(vec4 x) { + return x * x; +} + +int pow3(int x) { + return pow2(x) * x; +} +float pow3(float x) { + return pow2(x) * x; +} +vec2 pow3(vec2 x) { + return pow2(x) * x; +} +vec3 pow3(vec3 x) { + return pow2(x) * x; +} +vec4 pow3(vec4 x) { + return pow2(x) * x; +} + +float pow1_5(float x) { // Faster pow(x, 1.5) approximation (that isn't accurate at all) if x is between 0 and 1 + return x - x * pow2(1.0 - x); // Thanks to SixthSurge +} +vec2 pow1_5(vec2 x) { + return x - x * pow2(1.0 - x); +} +vec3 pow1_5(vec3 x) { + return x - x * pow2(1.0 - x); +} +vec4 pow1_5(vec4 x) { + return x - x * pow2(1.0 - x); +} + +float sqrt1(float x) { // Faster sqrt() approximation (that isn't accurate at all) if x is between 0 and 1 + return x * (2.0 - x); // Thanks to Builderb0y +} +vec2 sqrt1(vec2 x) { + return x * (2.0 - x); +} +vec3 sqrt1(vec3 x) { + return x * (2.0 - x); +} +vec4 sqrt1(vec4 x) { + return x * (2.0 - x); +} +float sqrt2(float x) { + x = 1.0 - x; + x *= x; + x *= x; + return 1.0 - x; +} +vec2 sqrt2(vec2 x) { + x = 1.0 - x; + x *= x; + x *= x; + return 1.0 - x; +} +vec3 sqrt2(vec3 x) { + x = 1.0 - x; + x *= x; + x *= x; + return 1.0 - x; +} +vec4 sqrt2(vec4 x) { + x = 1.0 - x; + x *= x; + x *= x; + return 1.0 - x; +} +float sqrt3(float x) { + x = 1.0 - x; + x *= x; + x *= x; + x *= x; + return 1.0 - x; +} +vec2 sqrt3(vec2 x) { + x = 1.0 - x; + x *= x; + x *= x; + x *= x; + return 1.0 - x; +} +vec3 sqrt3(vec3 x) { + x = 1.0 - x; + x *= x; + x *= x; + x *= x; + return 1.0 - x; +} +vec4 sqrt3(vec4 x) { + x = 1.0 - x; + x *= x; + x *= x; + x *= x; + return 1.0 - x; +} +float sqrt4(float x) { + x = 1.0 - x; + x *= x; + x *= x; + x *= x; + x *= x; + return 1.0 - x; +} +vec2 sqrt4(vec2 x) { + x = 1.0 - x; + x *= x; + x *= x; + x *= x; + x *= x; + return 1.0 - x; +} +vec3 sqrt4(vec3 x) { + x = 1.0 - x; + x *= x; + x *= x; + x *= x; + x *= x; + return 1.0 - x; +} +vec4 sqrt4(vec4 x) { + x = 1.0 - x; + x *= x; + x *= x; + x *= x; + x *= x; + return 1.0 - x; +} + +float smoothstep1(float x) { + return x * x * (3.0 - 2.0 * x); +} +vec2 smoothstep1(vec2 x) { + return x * x * (3.0 - 2.0 * x); +} +vec3 smoothstep1(vec3 x) { + return x * x * (3.0 - 2.0 * x); +} +vec4 smoothstep1(vec4 x) { + return x * x * (3.0 - 2.0 * x); +} + +vec2 lightningFlashEffect(vec3 playerPos, vec3 lightningBoltPosition, vec3 normal, float lightDistance){ // Thanks to Xonk! + // i like to offset the y of lightningBoltPosition to be ~100 blocks higher to give the effect of the light coming off the entire bolt, not just the point it hits. + vec3 LightningPos = playerPos - vec3(lightningBoltPosition.x, max(playerPos.y, lightningBoltPosition.y), lightningBoltPosition.z); + + // point light, max distance is ~500 blocks (the maximum entity render distance), change lightDistance to change the reach + float lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0); + + // the light above ^^^ is a linear curve. me no likey. here's an exponential one instead. + lightningLight = exp((1.0 - lightningLight) * -15.0); + + // good old NdotL + float NdotL = clamp(dot(LightningPos, -normal), 0.0, 1.0); + + return vec2(lightningLight * NdotL, lightningLight); +} + +float getBloodMoon(int moonPhase, float sunVisibility) { + float visibility = 1.0 - sunVisibility; + #if BLOOD_MOON == 0 + visibility = 0.0; + #elif BLOOD_MOON == 1 + visibility -= moonPhase; + #endif + return clamp(visibility, 0.0, 1.0); +} + +float hash1( uint n ){ + // The MIT License + // Copyright © 2017 Inigo Quilez + // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + // integer hash copied from Hugo Elias + n = (n << 13U) ^ n; + n = n * (n * n * 15731U + 789221U) + 1376312589U; + return float( n & uint(0x7fffffffU))/float(0x7fffffff); +} + +float hash1(const in int p) {return hash1(uint(p));} + +float hash13(vec3 p3){ + // The MIT License + // Copyright (c)2014 David Hoskins. + // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + p3 = fract(p3 * .1031); + p3 += dot(p3, p3.zyx + 31.32); + return fract((p3.x + p3.y) * p3.z); +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/dFdxdFdy.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/dFdxdFdy.glsl new file mode 100644 index 0000000..0509a2d --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/dFdxdFdy.glsl @@ -0,0 +1,7 @@ +#ifndef INCLUDE_DFDX_DFDY +#define INCLUDE_DFDX_DFDY + +vec2 dcdx = dFdx(texCoord.xy); +vec2 dcdy = dFdy(texCoord.xy); + +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/dither.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/dither.glsl new file mode 100644 index 0000000..3b4b683 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/dither.glsl @@ -0,0 +1,14 @@ +#ifndef INCLUDE_DITHER +#define INCLUDE_DITHER + +// Thanks to Jessie for dithering +float Bayer2 (vec2 c) { c = 0.5 * floor(c); return fract(1.5 * fract(c.y) + c.x); } +float Bayer4 (vec2 c) { return 0.25 * Bayer2 (0.5 * c) + Bayer2(c); } +float Bayer8 (vec2 c) { return 0.25 * Bayer4 (0.5 * c) + Bayer2(c); } +float Bayer16 (vec2 c) { return 0.25 * Bayer8 (0.5 * c) + Bayer2(c); } +float Bayer32 (vec2 c) { return 0.25 * Bayer16 (0.5 * c) + Bayer2(c); } +float Bayer64 (vec2 c) { return 0.25 * Bayer32 (0.5 * c) + Bayer2(c); } +float Bayer128(vec2 c) { return 0.25 * Bayer64 (0.5 * c) + Bayer2(c); } +float Bayer256(vec2 c) { return 0.25 * Bayer128(0.5 * c) + Bayer2(c); } + +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/jitter.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/jitter.glsl new file mode 100644 index 0000000..227d2dd --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/jitter.glsl @@ -0,0 +1,20 @@ +// Jitter offset from Chocapic13 +uniform float framemod8; +uniform float velocity; + +vec2 jitterOffsets[8] = vec2[8]( + vec2( 0.125,-0.375), + vec2(-0.125, 0.375), + vec2( 0.625, 0.125), + vec2( 0.375,-0.625), + vec2(-0.625, 0.625), + vec2(-0.875,-0.125), + vec2( 0.375,-0.875), + vec2( 0.875, 0.875) + ); + +vec2 TAAJitter(vec2 coord, float w) { + vec2 offset = jitterOffsets[int(framemod8)] * (w / vec2(viewWidth, viewHeight)); + offset *= max0(1.0 - velocity * 400.0) * 0.125; + return coord + offset; +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/miplevel.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/miplevel.glsl new file mode 100644 index 0000000..165a18c --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/miplevel.glsl @@ -0,0 +1,15 @@ +vec2 midCoordPos = absMidCoordPos * signMidCoordPos; + +#include "/spookylib/util/dFdxdFdy.glsl" + +vec2 mipx = dcdx / absMidCoordPos * 8.0; +vec2 mipy = dcdy / absMidCoordPos * 8.0; + +float mipDelta = max(dot(mipx, mipx), dot(mipy, mipy)); +float miplevel = max(0.5 * log2(mipDelta), 0.0); + +#if !defined GBUFFERS_ENTITIES && !defined GBUFFERS_HAND + vec2 atlasSizeM = atlasSize; +#else + vec2 atlasSizeM = atlasSize.x + atlasSize.y > 0.5 ? atlasSize : textureSize(tex, 0); +#endif \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/spaceConversion.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/spaceConversion.glsl new file mode 100644 index 0000000..d095dd6 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/spaceConversion.glsl @@ -0,0 +1,20 @@ +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +vec3 ScreenToView(vec3 pos) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, + gbufferProjectionInverse[1].y, + gbufferProjectionInverse[2].zw); + vec3 p3 = pos * 2.0 - 1.0; + vec4 viewPos = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return viewPos.xyz / viewPos.w; +} + +vec3 ViewToPlayer(vec3 pos) { + return mat3(gbufferModelViewInverse) * pos + gbufferModelViewInverse[3].xyz; +} + +vec3 PlayerToShadow(vec3 pos) { + vec3 shadowpos = mat3(shadowModelView) * pos + shadowModelView[3].xyz; + return projMAD(shadowProjection, shadowpos); +} \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/textRendering.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/textRendering.glsl new file mode 100644 index 0000000..09a870e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookylib/util/textRendering.glsl @@ -0,0 +1,328 @@ +/* +-------------------------------------------------------------------------------- + + GLSL Debug Text Renderer by SixthSurge (updated 2023-04-08) + + Character set based on Monocraft by IdreesInc + https://github.com/IdreesInc/Monocraft + + With additional characters added by WoMspace + + Usage: + + // Call beginText to initialize the text renderer. You can scale the fragment position to adjust the size of the text + beginText(ivec2(gl_FragCoord.xy), ivec2(0, viewHeight)); + ^ fragment position ^ text box position (upper left corner) + + // You can print various data types + printBool(false); + printFloat(sqrt(-1.0)); // Prints "NaN" + printInt(42); + printVec3(skyColor); + + // ...or arbitrarily long strings + printString((_H, _e, _l, _l, _o, _comma, _space, _w, _o, _r, _l, _d)); + + // To start a new line, use + printLine(); + + // You can also configure the text color on the fly + text.fgCol = vec4(1.0, 0.0, 0.0, 1.0); + text.bgCol = vec4(0.0, 0.0, 0.0, 1.0); + + // ...as well as the number base and number of decimal places to print + text.base = 16; + text.fpPrecision = 4; + + // Finally, call endText to blend the current fragment color with the text + endText(fragColor); + + Important: any variables you display must be the same for all fragments, or + at least all of the fragments that the text covers. Otherwise, different + fragments will try to print different values, resulting in, well, a mess + +-------------------------------------------------------------------------------- +*/ + +#if !defined UTILITY_TEXTRENDERING_INCLUDED +#define UTILITY_TEXTRENDERING_INCLUDED + +// Characters + +const uint _A = 0x747f18c4u; +const uint _B = 0xf47d18f8u; +const uint _C = 0x746108b8u; +const uint _D = 0xf46318f8u; +const uint _E = 0xfc39087cu; +const uint _F = 0xfc390840u; +const uint _G = 0x7c2718b8u; +const uint _H = 0x8c7f18c4u; +const uint _I = 0x71084238u; +const uint _J = 0x084218b8u; +const uint _K = 0x8cb928c4u; +const uint _L = 0x8421087cu; +const uint _M = 0x8eeb18c4u; +const uint _N = 0x8e6b38c4u; +const uint _O = 0x746318b8u; +const uint _P = 0xf47d0840u; +const uint _Q = 0x74631934u; +const uint _R = 0xf47d18c4u; +const uint _S = 0x7c1c18b8u; +const uint _T = 0xf9084210u; +const uint _U = 0x8c6318b8u; +const uint _V = 0x8c62a510u; +const uint _W = 0x8c635dc4u; +const uint _X = 0x8a88a8c4u; +const uint _Y = 0x8a884210u; +const uint _Z = 0xf844447cu; +const uint _a = 0x0382f8bcu; +const uint _b = 0x85b318f8u; +const uint _c = 0x03a308b8u; +const uint _d = 0x0b6718bcu; +const uint _e = 0x03a3f83cu; +const uint _f = 0x323c8420u; +const uint _g = 0x03e2f0f8u; +const uint _h = 0x842d98c4u; +const uint _i = 0x40308418u; +const uint _j = 0x080218b8u; +const uint _k = 0x4254c524u; +const uint _l = 0x6108420cu; +const uint _m = 0x06ab5ac4u; +const uint _n = 0x07a318c4u; +const uint _o = 0x03a318b8u; +const uint _p = 0x05b31f40u; +const uint _q = 0x03671784u; +const uint _r = 0x05b30840u; +const uint _s = 0x03e0e0f8u; +const uint _t = 0x211c420cu; +const uint _u = 0x046318bcu; +const uint _v = 0x04631510u; +const uint _w = 0x04635abcu; +const uint _x = 0x04544544u; +const uint _y = 0x0462f0f8u; +const uint _z = 0x07c4447cu; +const uint _0 = 0x746b58b8u; +const uint _1 = 0x23084238u; +const uint _2 = 0x744c88fcu; +const uint _3 = 0x744c18b8u; +const uint _4 = 0x19531f84u; +const uint _5 = 0xfc3c18b8u; +const uint _6 = 0x3221e8b8u; +const uint _7 = 0xfc422210u; +const uint _8 = 0x745d18b8u; +const uint _9 = 0x745e1130u; +const uint _space = 0x0000000u; +const uint _dot = 0x000010u; +const uint _minus = 0x0000e000u; +const uint _comma = 0x00000220u; +const uint _colon = 0x02000020u; + +// Additional characters added by WoMspace <3 +const uint _under = 0x000007Cu; // _ +const uint _quote = 0x52800000u; // " +const uint _exclm = 0x21084010u; // ! +const uint _gt = 0x02082220u; // > +const uint _lt = 0x00888208u; // < +const uint _opsqr = 0x3908421Cu; // [ +const uint _clsqr = 0xE1084270u; // ] +const uint _opprn = 0x11084208u; // ( +const uint _clprn = 0x41084220u; // ) +const uint _block = 0xFFFFFFFCu; // █ +const uint _copyr = 0x03AB9AB8u; // ©️ + +const int charWidth = 5; +const int charHeight = 6; +const int charSpacing = 1; +const int lineSpacing = 1; + +const ivec2 charSize = ivec2(charWidth, charHeight); +const ivec2 spaceSize = charSize + ivec2(charSpacing, lineSpacing); + +// Text renderer + +struct Text { + vec4 result; // Output color from the text renderer + vec4 fgCol; // Text foreground color + vec4 bgCol; // Text background color + ivec2 fragPos; // The position of the fragment (can be scaled to adjust the size of the text) + ivec2 textPos; // The position of the top-left corner of the text + ivec2 charPos; // The position of the next character in the text + int base; // Number base + int fpPrecision; // Number of decimal places to print +} text; + +// Fills the global text object with default values +void beginText(ivec2 fragPos, ivec2 textPos) { + text.result = vec4(0.0); + text.fgCol = vec4(1.0); + text.bgCol = vec4(0.0, 0.0, 0.0, 0.6); + text.fragPos = fragPos; + text.textPos = textPos; + text.charPos = ivec2(0); + text.base = 10; + text.fpPrecision = 2; +} + +// Applies the rendered text to the fragment +void endText(inout vec3 fragColor) { + fragColor = mix(fragColor.rgb, text.result.rgb, text.result.a); +} + +void printChar(uint character) { + ivec2 pos = text.fragPos - text.textPos - spaceSize * text.charPos * ivec2(1, -1) + ivec2(0, spaceSize.y); + + uint index = uint(charWidth - pos.x + pos.y * charWidth + 1); // Edited + + // Draw background + if (clamp(pos, ivec2(0), spaceSize - 1) == pos) + text.result = mix(text.result, text.bgCol, text.bgCol.a); + + // Draw character + if (clamp(pos, ivec2(0), charSize - 1) == pos) + text.result = mix(text.result, text.fgCol, text.fgCol.a * float(character >> index & 1u)); + + // Advance to next character + text.charPos.x++; +} + +#define printString(string) { \ + uint[] characters = uint[] string; \ + for (int i = 0; i < characters.length(); ++i) printChar(characters[i]); \ +} + +void printUnsignedInt(uint value, int len) { + const uint[36] digits = uint[]( + _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, + _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, + _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, + _u, _v, _w, _x, _y, _z + ); + + // Advance to end of the number + text.charPos.x += len - 1; + + // Write number backwards + for (int i = 0; i < len; ++i) { + printChar(digits[int(value) % text.base]); // Edited + value /= uint(text.base); // Edited + text.charPos.x -= 2; + } + + // Return to end of the number + text.charPos.x += len + 1; +} + +void printUnsignedInt(uint value) { + float logValue = log(float(value)) + 1e-6; + float logBase = log(float(text.base)); + + int len = int(ceil(logValue / logBase)); + len = max(len, 1); + + printUnsignedInt(value, len); +} + +void printInt(int value) { + if (value < 0) printChar(_minus); + printUnsignedInt(uint(abs(value))); +} + +void printFloat(float value) { + if (value < 0.0) printChar(_minus); + + if (isnan(value)) { + printString((_N, _a, _N)); + } else if (isinf(value)) { + printString((_i, _n, _f)); + } else { + float i, f = modf(abs(value), i); + + uint integralPart = uint(i); + uint fractionalPart = uint(f * pow(float(text.base), float(text.fpPrecision)) + 0.5); + + printUnsignedInt(integralPart); + printChar(_dot); + printUnsignedInt(fractionalPart, text.fpPrecision); + } +} + +void printBool(bool value) { + if (value) { + printString((_t, _r, _u, _e)); + } else { + printString((_f, _a, _l, _s, _e)); + } +} + +void printVec2(vec2 value) { + printFloat(value.x); + printString((_comma, _space)); + printFloat(value.y); +} +void printVec3(vec3 value) { + printFloat(value.x); + printString((_comma, _space)); + printFloat(value.y); + printString((_comma, _space)); + printFloat(value.z); +} +void printVec4(vec4 value) { + printFloat(value.x); + printString((_comma, _space)); + printFloat(value.y); + printString((_comma, _space)); + printFloat(value.z); + printString((_comma, _space)); + printFloat(value.w); +} + +void printIvec2(ivec2 value) { + printInt(value.x); + printString((_comma, _space)); + printInt(value.y); +} +void printIvec3(ivec3 value) { + printInt(value.x); + printString((_comma, _space)); + printInt(value.y); + printString((_comma, _space)); + printInt(value.z); +} +void printIvec4(ivec4 value) { + printInt(value.x); + printString((_comma, _space)); + printInt(value.y); + printString((_comma, _space)); + printInt(value.z); + printString((_comma, _space)); + printInt(value.w); +} + +void printUvec2(uvec2 value) { + printUnsignedInt(value.x); + printString((_comma, _space)); + printUnsignedInt(value.y); +} +void printUvec3(uvec3 value) { + printUnsignedInt(value.x); + printString((_comma, _space)); + printUnsignedInt(value.y); + printString((_comma, _space)); + printUnsignedInt(value.z); +} +void printUvec4(uvec4 value) { + printUnsignedInt(value.x); + printString((_comma, _space)); + printUnsignedInt(value.y); + printString((_comma, _space)); + printUnsignedInt(value.z); + printString((_comma, _space)); + printUnsignedInt(value.w); +} + +void printLine() { + text.charPos.x = 0; + ++text.charPos.y; +} + +#endif // UTILITY_TEXTRENDERING_INCLUDED \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite.glsl new file mode 100644 index 0000000..8c17f83 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite.glsl @@ -0,0 +1,292 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +noperspective in vec2 texCoord; + +flat in vec3 upVec, sunVec; + +#ifdef LIGHTSHAFTS_ACTIVE + flat in float vlFactor; +#endif + +//Uniforms// +uniform int isEyeInWater; + +uniform float far, near; +uniform float viewWidth, viewHeight; + +uniform vec3 cameraPosition; + +uniform mat4 gbufferProjectionInverse; + +uniform sampler2D colortex0; +uniform sampler2D depthtex0; +uniform sampler2D depthtex1; + +#if defined LIGHTSHAFTS_ACTIVE || WATER_QUALITY >= 3 || defined NETHER_STORM + + + uniform mat4 gbufferProjection; + uniform mat4 gbufferModelViewInverse; + uniform mat4 shadowModelView; + uniform mat4 shadowProjection; + + +#endif + +#if defined LIGHTSHAFTS_ACTIVE || defined NETHER_STORM + uniform int frameCounter; + + #ifndef LIGHT_COLORING + uniform sampler2D colortex3; + #else + uniform sampler2D colortex8; + #endif +#endif + +#ifdef LIGHTSHAFTS_ACTIVE + //uniform float viewWidth, viewHeight; + uniform float blindness; + uniform float darknessFactor; + uniform float frameTime; + uniform float frameTimeSmooth; + + uniform ivec2 eyeBrightness; + + uniform vec3 skyColor; + + uniform sampler2D shadowtex0; + uniform sampler2DShadow shadowtex1; + uniform sampler2D shadowcolor1; +#endif + +#if WATER_QUALITY >= 3 + uniform sampler2D colortex1; +#endif + +#if defined LIGHTSHAFTS_ACTIVE && defined LENSFLARE + uniform sampler2D colortex4; +#endif + +uniform float wetness; +uniform float inRainy; + +//Pipeline Constants// +//const bool colortex0MipmapEnabled = true; + +//Common Variables// +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; + +vec2 view = vec2(viewWidth, viewHeight); + +#ifdef OVERWORLD + vec3 lightVec = sunVec * ((timeAngle < 0.5325 || timeAngle > 0.9675) ? 1.0 : -1.0); +#else + vec3 lightVec = sunVec; +#endif + +#ifdef LIGHTSHAFTS_ACTIVE + float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; + float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; + float shadowTime = shadowTimeVar2 * shadowTimeVar2; + float vlTime = min(abs(SdotU) - 0.05, 0.15) / 0.15; +#endif + +//Common Functions// + +//Includes// +#include "/spookylib/atmospherics/fog/waterFog.glsl" + +#ifdef BLOOM_FOG_COMPOSITE + #include "/spookylib/atmospherics/fog/bloomFog.glsl" +#endif + +#ifdef LIGHTSHAFTS_ACTIVE + #ifdef END + #include "/spookylib/atmospherics/enderBeams.glsl" + #endif + #include "/spookylib/atmospherics/volumetricLight.glsl" +#endif + +#if WATER_QUALITY >= 3 || defined NETHER_STORM + #include "/spookylib/util/spaceConversion.glsl" +#endif + +#if WATER_QUALITY >= 3 + #include "/spookylib/materials/materialMethods/refraction.glsl" +#endif + +#ifdef NETHER_STORM + #include "/spookylib/atmospherics/netherStorm.glsl" +#endif + +#include "/spookylib/colors/colorMultipliers.glsl" + +//spookyprogram// +void main() { + vec3 color = texelFetch(colortex0, texelCoord, 0).rgb; + float z0 = texelFetch(depthtex0, texelCoord, 0).r; + float z1 = texelFetch(depthtex1, texelCoord, 0).r; + + #if defined LIGHTSHAFTS_ACTIVE || WATER_QUALITY >= 3 || defined BLOOM_FOG_COMPOSITE || defined NETHER_STORM + vec4 screenPos = vec4(texCoord, z0, 1.0); + vec4 viewPos = gbufferProjectionInverse * (screenPos * 2.0 - 1.0); + viewPos /= viewPos.w; + float lViewPos = length(viewPos.xyz); + #endif + + #if WATER_QUALITY >= 3 + DoRefraction(color, z0, z1, viewPos.xyz, lViewPos); + #endif + + vec4 volumetricEffect = vec4(0.0); + + #if defined LIGHTSHAFTS_ACTIVE || defined NETHER_STORM + /* The "1.0 - translucentMult" trick is done because of the default color attachment + value being vec3(0.0). This makes it vec3(1.0) to avoid issues especially on improved glass */ + #ifndef LIGHT_COLORING + vec3 translucentMult = 1.0 - texelFetch(colortex3, texelCoord, 0).rgb; + #else + vec3 translucentMult = 1.0 - texelFetch(colortex8, texelCoord, 0).rgb; + #endif + + float dither = texture2D(noisetex, texCoord * view / 128.0).b; + #ifdef TAA + dither = fract(dither + 1.61803398875 * mod(float(frameCounter), 3600.0)); + #endif + + vec4 screenPos1 = vec4(texCoord, z1, 1.0); + vec4 viewPos1 = gbufferProjectionInverse * (screenPos1 * 2.0 - 1.0); + viewPos1 /= viewPos1.w; + float lViewPos1 = length(viewPos1.xyz); + #endif + + #ifdef LIGHTSHAFTS_ACTIVE + vec3 nViewPos = normalize(viewPos.xyz); + float VdotL = dot(nViewPos, lightVec); + #endif + + #ifdef LIGHTSHAFTS_ACTIVE + float vlFactorM = vlFactor; + + float VdotU = dot(nViewPos, upVec); + + volumetricEffect = GetVolumetricLight(color, vlFactorM, translucentMult, lViewPos1, nViewPos, VdotL, VdotU, texCoord, z0, z1, dither); + #endif + + #ifdef NETHER_STORM + vec3 playerPos = ViewToPlayer(viewPos.xyz); + + volumetricEffect = GetNetherStorm(color, translucentMult, playerPos, viewPos.xyz, lViewPos, lViewPos1, dither); + #endif + + volumetricEffect.rgb *= GetAtmColorMult(); + + #ifdef NETHER_STORM + if (isEyeInWater == 0) color = mix(color, volumetricEffect.rgb, volumetricEffect.a); + #endif + + if (isEyeInWater == 1) { + if (z0 == 1.0) color.rgb = waterFogColor; + + vec3 underwaterMult = vec3(0.80, 0.87, 0.97); + color.rgb *= underwaterMult * 0.85; + volumetricEffect.rgb *= pow2(underwaterMult * 0.71); + } else { + if (isEyeInWater == 2) { + if (z1 == 1.0) color.rgb = fogColor * 5.0; + + volumetricEffect.rgb *= 0.0; + } + } + + color = pow(color, vec3(2.2)); + + #ifdef LIGHTSHAFTS_ACTIVE + #ifdef END + volumetricEffect.rgb *= volumetricEffect.rgb; + #endif + + color += volumetricEffect.rgb; + #endif + + #ifdef BLOOM_FOG_COMPOSITE + color *= GetBloomFog(lViewPos); // Reminder: Bloom Fog can move between composite1-2-3 + #endif + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = vec4(color, 1.0); + + // a.k.a #if defined LIGHTSHAFTS_ACTIVE && (LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 || defined END) + #if LIGHTSHAFT_QUALI_DEFINE > 0 && LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 && defined OVERWORLD && defined REALTIME_SHADOWS || defined END + #ifdef LENSFLARE + if (viewWidth + viewHeight - gl_FragCoord.x - gl_FragCoord.y > 1.5) + vlFactorM = texelFetch(colortex4, texelCoord, 0).r; + #endif + + /* DRAWBUFFERS:04 */ + gl_FragData[1] = vec4(vlFactorM, 0.0, 0.0, 1.0); + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +noperspective out vec2 texCoord; + +flat out vec3 upVec, sunVec; + +#ifdef LIGHTSHAFTS_ACTIVE + flat out float vlFactor; +#endif + +//Uniforms// +#if defined LIGHTSHAFTS_ACTIVE && (LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 || defined END) + uniform float viewWidth, viewHeight; + + uniform sampler2D colortex4; +#endif + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); + + #ifdef LIGHTSHAFTS_ACTIVE + #if LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 || defined END + vlFactor = texelFetch(colortex4, ivec2(viewWidth-1, viewHeight-1), 0).r; + #else + #if LIGHTSHAFT_BEHAVIOUR == 2 + vlFactor = 0.0; + #elif LIGHTSHAFT_BEHAVIOUR == 3 + vlFactor = 1.0; + #endif + #endif + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite2.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite2.glsl new file mode 100644 index 0000000..e49d887 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite2.glsl @@ -0,0 +1,159 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +#ifdef MOTION_BLURRING + noperspective in vec2 texCoord; + + #ifdef BLOOM_FOG_COMPOSITE2 + flat in vec3 upVec, sunVec; + #endif +#endif + +//Uniforms// +uniform sampler2D colortex0; + +#ifdef MOTION_BLURRING + uniform float viewWidth, viewHeight, aspectRatio; + + uniform vec3 cameraPosition, previousCameraPosition; + + uniform mat4 gbufferPreviousProjection, gbufferProjectionInverse; + uniform mat4 gbufferModelView, gbufferPreviousModelView, gbufferModelViewInverse; + + uniform sampler2D depthtex1; + + #ifdef BLOOM_FOG_COMPOSITE2 + uniform int isEyeInWater; + + uniform sampler2D depthtex0; + + #ifdef NETHER + uniform float far; + #endif + #endif +#endif + +//Pipeline Constants// + +//Common Variables// +#if defined MOTION_BLURRING && defined BLOOM_FOG_COMPOSITE2 + float SdotU = dot(sunVec, upVec); + float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +#endif + +//Common Functions// +#ifdef MOTION_BLURRING + vec3 MotionBlur(vec3 color, float z, float dither) { + if (z > 0.56) { + float mbwg = 0.0; + vec2 doublePixel = 2.0 / vec2(viewWidth, viewHeight); + vec3 mblur = vec3(0.0); + + vec4 currentPosition = vec4(texCoord, z, 1.0) * 2.0 - 1.0; + + vec4 viewPos = gbufferProjectionInverse * currentPosition; + viewPos = gbufferModelViewInverse * viewPos; + viewPos /= viewPos.w; + + vec3 cameraOffset = cameraPosition - previousCameraPosition; + + vec4 previousPosition = viewPos + vec4(cameraOffset, 0.0); + previousPosition = gbufferPreviousModelView * previousPosition; + previousPosition = gbufferPreviousProjection * previousPosition; + previousPosition /= previousPosition.w; + + vec2 velocity = (currentPosition - previousPosition).xy; + velocity = velocity / (1.0 + length(velocity)) * MOTION_BLURRING_STRENGTH * 0.02; + + vec2 coord = texCoord - velocity * (3.5 + dither); + for (int i = 0; i < 9; i++, coord += velocity) { + vec2 coordb = clamp(coord, doublePixel, 1.0 - doublePixel); + mblur += texture2DLod(colortex0, coordb, 0).rgb; + mbwg += 1.0; + } + mblur /= mbwg; + + return mblur; + } else return color; + } +#endif + +//Includes// +#ifdef MOTION_BLURRING + #include "/spookylib/util/dither.glsl" + + #ifdef BLOOM_FOG_COMPOSITE2 + #include "/spookylib/atmospherics/fog/bloomFog.glsl" + #endif +#endif + +//spookyprogram// +void main() { + vec3 color = texelFetch(colortex0, texelCoord, 0).rgb; + + #ifdef MOTION_BLURRING + float z = texture2D(depthtex1, texCoord).x; + float dither = Bayer64(gl_FragCoord.xy); + + color = MotionBlur(color, z, dither); + + #ifdef BLOOM_FOG_COMPOSITE2 + float z0 = texelFetch(depthtex0, texelCoord, 0).r; + vec4 screenPos = vec4(texCoord, z0, 1.0); + vec4 viewPos = gbufferProjectionInverse * (screenPos * 2.0 - 1.0); + viewPos /= viewPos.w; + float lViewPos = length(viewPos.xyz); + + color *= GetBloomFog(lViewPos); // Reminder: Bloom Fog can move between composite1-2-3 + #endif + #endif + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = vec4(color, 1.0); +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +#ifdef MOTION_BLURRING + noperspective out vec2 texCoord; + + #ifdef BLOOM_FOG_COMPOSITE2 + flat out vec3 upVec, sunVec; + #endif +#endif + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + #ifdef MOTION_BLURRING + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + #ifdef BLOOM_FOG_COMPOSITE2 + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); + #endif + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite3.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite3.glsl new file mode 100644 index 0000000..c54c6db --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite3.glsl @@ -0,0 +1,204 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +#if WORLD_BLUR > 0 + noperspective in vec2 texCoord; + + flat in vec3 upVec, sunVec; +#endif + +//Uniforms// +uniform float far, near; + +uniform sampler2D colortex0; + +#if WORLD_BLUR > 0 + uniform float viewWidth, viewHeight, aspectRatio; + + uniform mat4 gbufferProjectionInverse; + + uniform sampler2D depthtex0; + uniform sampler2D depthtex1; + + #if WORLD_BLUR == 2 && WB_DOF_FOCUS >= 0 + #if WB_DOF_FOCUS == 0 + uniform float centerDepthSmooth; + #else + float centerDepthSmooth = (far * (WB_DOF_FOCUS - near)) / (WB_DOF_FOCUS * (far - near)); + #endif + #endif + + #ifdef WB_FOV_SCALED + uniform mat4 gbufferProjection; + #endif +#endif + +#if WORLD_BLUR > 0 && defined BLOOM_FOG_COMPOSITE3 + uniform int isEyeInWater; + + uniform vec3 cameraPosition; +#endif + +//Pipeline Constants// +#if WORLD_BLUR > 0 + const bool colortex0MipmapEnabled = true; +#endif + +//Common Variables// +#if WORLD_BLUR > 0 + float SdotU = dot(sunVec, upVec); + float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; + + vec2 dofOffsets[18] = vec2[18]( + vec2( 0.0 , 0.25 ), + vec2(-0.2165 , 0.125 ), + vec2(-0.2165 , -0.125 ), + vec2( 0 , -0.25 ), + vec2( 0.2165 , -0.125 ), + vec2( 0.2165 , 0.125 ), + vec2( 0 , 0.5 ), + vec2(-0.25 , 0.433 ), + vec2(-0.433 , 0.25 ), + vec2(-0.5 , 0 ), + vec2(-0.433 , -0.25 ), + vec2(-0.25 , -0.433 ), + vec2( 0 , -0.5 ), + vec2( 0.25 , -0.433 ), + vec2( 0.433 , -0.2 ), + vec2( 0.5 , 0 ), + vec2( 0.433 , 0.25 ), + vec2( 0.25 , 0.433 ) + ); +#endif + +//Common Functions// +#if WORLD_BLUR > 0 + void DoWorldBlur(inout vec3 color, float z1, float lViewPos0) { + if (z1 < 0.56) return; + vec3 dof = vec3(0.0); + vec2 dofScale = vec2(1.0, aspectRatio); + + #if WORLD_BLUR == 1 // Distance Blur + #ifdef OVERWORLD + float dbMult; + if (isEyeInWater == 0) { + dbMult = mix(WB_DB_NIGHT_I, WB_DB_DAY_I, sunFactor * eyeBrightnessM); + dbMult = mix(dbMult, WB_DB_RAIN_I, rainFactor * eyeBrightnessM); + } else dbMult = WB_DB_WATER_I; + #elif defined NETHER + float dbMult = WB_DB_NETHER_I; + #elif defined END + float dbMult = WB_DB_END_I; + #endif + float coc = clamp(lViewPos0 * 0.001, 0.0, 0.1) * dbMult * 0.03; + #elif WORLD_BLUR == 2 // Depth Of Field + #if WB_DOF_FOCUS >= 0 + float coc = max(abs(z1 - centerDepthSmooth) * 0.125 * WB_DOF_I - 0.0001, 0.0); + #elif WB_DOF_FOCUS == -1 + float coc = clamp(abs(lViewPos0 * 0.005 - pow2(vsBrightness)), 0.0, 0.1) * WB_DOF_I * 0.03; + #endif + #endif + coc = coc / sqrt(coc * coc + 0.1); + + #ifdef WB_FOV_SCALED + coc *= gbufferProjection[1][1] * 0.8; + #endif + #ifdef WB_CHROMATIC + float midDistX = texCoord.x - 0.5; + float midDistY = texCoord.y - 0.5; + vec2 chromaticScale = vec2(midDistX, midDistY); + chromaticScale = sign(chromaticScale) * sqrt(abs(chromaticScale)); + chromaticScale *= vec2(1.0, viewHeight / viewWidth); + vec2 aberration = (15.0 / vec2(viewWidth, viewHeight)) * chromaticScale * coc; + #endif + #ifdef WB_ANAMORPHIC + dofScale *= vec2(0.5, 1.5); + #endif + + if (coc * 0.5 > 1.0 / max(viewWidth, viewHeight)) { + for(int i = 0; i < 18; i++) { + vec2 offset = dofOffsets[i] * coc * 0.0085 * dofScale; + float lod = log2(viewHeight * aspectRatio * coc * 0.75 / 320.0); + #ifndef WB_CHROMATIC + dof += texture2DLod(colortex0, texCoord + offset, lod).rgb; + #else + dof += vec3(texture2DLod(colortex0, texCoord + offset + aberration, lod).r, + texture2DLod(colortex0, texCoord + offset , lod).g, + texture2DLod(colortex0, texCoord + offset - aberration, lod).b); + #endif + } + dof /= 18.0; + color = dof; + } + } +#endif + +//Includes// +#if WORLD_BLUR > 0 && defined BLOOM_FOG_COMPOSITE3 + #include "/spookylib/atmospherics/fog/bloomFog.glsl" +#endif + +//spookyprogram// +void main() { + vec3 color = texelFetch(colortex0, texelCoord, 0).rgb; + + #if WORLD_BLUR > 0 + float z1 = texelFetch(depthtex1, texelCoord, 0).r; + float z0 = texelFetch(depthtex0, texelCoord, 0).r; + + vec4 screenPos0 = vec4(texCoord, z0, 1.0); + vec4 viewPos0 = gbufferProjectionInverse * (screenPos0 * 2.0 - 1.0); + viewPos0 /= viewPos0.w; + float lViewPos0 = length(viewPos0.xyz); + + DoWorldBlur(color, z1, lViewPos0); + + #ifdef BLOOM_FOG_COMPOSITE3 + color *= GetBloomFog(lViewPos0); // Reminder: Bloom Fog can move between composite1-2-3 + #endif + #endif + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = vec4(color, 1.0); +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +#if WORLD_BLUR > 0 + noperspective out vec2 texCoord; + + flat out vec3 upVec, sunVec; +#endif + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + #if WORLD_BLUR > 0 + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite4.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite4.glsl new file mode 100644 index 0000000..891760e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite4.glsl @@ -0,0 +1,105 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//Varyings// +varying vec2 texCoord; + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +//Uniforms// +uniform float viewWidth, viewHeight; + +uniform sampler2D colortex0; + +//Pipeline Constants// +const bool colortex0MipmapEnabled = true; + +//Common Variables// +float weight[7] = float[7](1.0, 6.0, 15.0, 20.0, 15.0, 6.0, 1.0); + +//Common Functions// +vec3 BloomTile(float lod, vec2 offset, vec2 rescale) { + vec3 bloom = vec3(0.0); + float scale = exp2(lod); + vec2 coord = (texCoord - offset) * scale; + float padding = 0.5 + 0.005 * scale; + + if (abs(coord.x - 0.5) < padding && abs(coord.y - 0.5) < padding) { + for (int i = -3; i <= 3; i++) { + for (int j = -3; j <= 3; j++) { + float wg = weight[i + 3] * weight[j + 3]; + vec2 pixelOffset = vec2(i, j) * rescale; + vec2 bloomCoord = (texCoord - offset + pixelOffset) * scale; + bloom += texture2D(colortex0, bloomCoord).rgb * wg; + } + } + bloom /= 4096.0; + } + + return pow(bloom / 128.0, vec3(0.25)); +} + +//Includes// + +//spookyprogram// +void main() { + vec3 blur = vec3(0.0); + + #ifdef BLOOM + vec2 rescale = 1.0 / vec2(1920.0, 1080.0); + + #if defined OVERWORLD || defined END + blur += BloomTile(2.0, vec2(0.0 , 0.0 ), rescale); + blur += BloomTile(3.0, vec2(0.0 , 0.26 ), rescale); + blur += BloomTile(4.0, vec2(0.135 , 0.26 ), rescale); + blur += BloomTile(5.0, vec2(0.2075 , 0.26 ), rescale) * 0.8; + blur += BloomTile(6.0, vec2(0.135 , 0.3325), rescale) * 0.8; + blur += BloomTile(7.0, vec2(0.160625 , 0.3325), rescale) * 0.6; + blur += BloomTile(8.0, vec2(0.1784375, 0.3325), rescale) * 0.4; + #else + blur += BloomTile(2.0, vec2(0.0 , 0.0 ), rescale); + blur += BloomTile(3.0, vec2(0.0 , 0.26 ), rescale); + blur += BloomTile(4.0, vec2(0.135 , 0.26 ), rescale); + blur += BloomTile(5.0, vec2(0.2075 , 0.26 ), rescale); + blur += BloomTile(6.0, vec2(0.135 , 0.3325), rescale); + blur += BloomTile(7.0, vec2(0.160625 , 0.3325), rescale); + blur += BloomTile(8.0, vec2(0.1784375, 0.3325), rescale) * 0.6; + #endif + #endif + + #ifndef LIGHT_COLORING + /* DRAWBUFFERS:3 */ + #else + /* DRAWBUFFERS:8 */ + #endif + gl_FragData[0] = vec4(blur, 1.0); +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + texCoord = gl_MultiTexCoord0.xy; + + gl_Position = ftransform(); +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite5.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite5.glsl new file mode 100644 index 0000000..58256e1 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite5.glsl @@ -0,0 +1,314 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +noperspective in vec2 texCoord; + +#if defined BLOOM_FOG || defined LENSFLARE + flat in vec3 upVec, sunVec; +#endif + +//Uniforms// +uniform int frameCounter; + +uniform float viewWidth, viewHeight; +uniform float darknessFactor; + + + +uniform sampler2D colortex0; + + +#ifdef BLOOM + #ifndef LIGHT_COLORING + uniform sampler2D colortex3; + #else + uniform sampler2D colortex8; + #endif +#endif + +#if defined BLOOM_FOG || defined LENSFLARE + uniform int isEyeInWater; +#endif + +#if defined BLOOM_FOG && defined NETHER + uniform float far; +#endif + +#if defined BLOOM_FOG || defined LENSFLARE + uniform mat4 gbufferProjectionInverse; + + uniform sampler2D depthtex0; +#endif + +#ifdef BLOOM_FOG + uniform vec3 cameraPosition; +#endif + +#ifdef LENSFLARE + uniform float aspectRatio; + uniform mat4 gbufferProjection; + + #ifdef VL_CLOUDS_ACTIVE + uniform sampler2D colortex4; + #endif +#endif + +#if defined GREEN_SCREEN_LIME || SELECT_OUTLINE == 4 + uniform sampler2D colortex1; +#endif + +//Pipeline Constants// + +//Common Variables// +float pw = 1.0 / viewWidth; +float ph = 1.0 / viewHeight; + +#if defined BLOOM_FOG || defined LENSFLARE + float SdotU = dot(sunVec, upVec); + float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +#endif + +//Common Functions// +void DoBSLTonemap(inout vec3 color) { + color = T_EXPOSURE * color; + color = color / pow(pow(color, vec3(TM_WHITE_CURVE)) + 1.0, vec3(1.0 / TM_WHITE_CURVE)); + color = pow(color, mix(vec3(T_LOWER_CURVE), vec3(T_UPPER_CURVE), sqrt(color))); + + color = pow(color, vec3(1.0 / 2.2)); +} + +void linearToRGB(inout vec3 color) { + const vec3 k = vec3(0.055); + color = mix((vec3(1.0) + k) * pow(color, vec3(1.0 / 2.4)) - k, 12.92 * color, lessThan(color, vec3(0.0031308))); +} + +void doColorAdjustments(inout vec3 color) { + color = (T_EXPOSURE - 0.40) * color; + // color = color / pow(pow(color, vec3(TM_WHITE_CURVE * 0.5)) + 1.0, vec3(1.0 / (TM_WHITE_CURVE * 0.5))); + color = pow(color, mix(vec3(T_LOWER_CURVE - 0.20), vec3(T_UPPER_CURVE - 0.30), sqrt(color))); +} + +vec3 LottesTonemap(vec3 color) { + // Lottes 2016, "Advanced Techniques and Optimization of HDR Color Pipelines" + // http://32ipi028l5q82yhj72224m8j.wpengine.netdna-cdn.com/wp-content/uploads/2016/03/GdcVdrLottes.pdf + const vec3 a = vec3(1.3); + const vec3 d = vec3(0.95); + const vec3 hdrMax = vec3(8.0); + const vec3 midIn = vec3(0.25); + const vec3 midOut = vec3(0.25); + + const vec3 a_d = a * d; + const vec3 hdrMaxA = pow(hdrMax, a); + const vec3 hdrMaxAD = pow(hdrMax, a_d); + const vec3 midInA = pow(midIn, a); + const vec3 midInAD = pow(midIn, a_d); + const vec3 HM1 = hdrMaxA * midOut; + const vec3 HM2 = hdrMaxAD - midInAD; + + const vec3 b = (-midInA + HM1) / (HM2 * midOut); + const vec3 c = (hdrMaxAD * midInA - HM1 * midInAD) / (HM2 * midOut); + + color = pow(color, a) / (pow(color, a_d) * b + c); + + doColorAdjustments(color); + + linearToRGB(color); + return color; +} + +void DoBSLColorSaturation(inout vec3 color) { + float grayVibrance = (color.r + color.g + color.b) / 3.0; + float graySaturation = grayVibrance; + if (T_SATURATION < 1.00) graySaturation = dot(color, vec3(0.299, 0.587, 0.114)); + + float mn = min(color.r, min(color.g, color.b)); + float mx = max(color.r, max(color.g, color.b)); + float sat = (1.0 - (mx - mn)) * (1.0 - mx) * grayVibrance * 5.0; + vec3 lightness = vec3((mn + mx) * 0.5); + + color = mix(color, mix(color, lightness, 1.0 - T_VIBRANCE), sat); + color = mix(color, lightness, (1.0 - lightness) * (2.0 - T_VIBRANCE) / 2.0 * abs(T_VIBRANCE - 1.0)); + color = color * T_SATURATION - graySaturation * (T_SATURATION - 1.0); +} + +#ifdef BLOOM + vec3 GetBloomTile(float lod, vec2 coord, vec2 offset, vec2 ditherAdd) { + float scale = exp2(lod); + vec2 bloomCoord = coord / scale + offset; + bloomCoord += ditherAdd; + bloomCoord = clamp(bloomCoord, offset, 1.0 / scale + offset); + + #ifndef LIGHT_COLORING + vec3 bloom = texture2D(colortex3, bloomCoord).rgb; + #else + vec3 bloom = texture2D(colortex8, bloomCoord).rgb; + #endif + bloom *= bloom; + bloom *= bloom; + return bloom * 128.0; + } + + void DoBloom(inout vec3 color, vec2 coord, float dither, float lViewPos) { + vec2 rescale = 1.0 / vec2(1920.0, 1080.0); + vec2 ditherAdd = vec2(0.0); + float ditherM = dither - 0.5; + if (rescale.x > pw) ditherAdd.x += ditherM * pw; + if (rescale.y > ph) ditherAdd.y += ditherM * ph; + + vec3 blur1 = GetBloomTile(2.0, coord, vec2(0.0 , 0.0 ), ditherAdd); + vec3 blur2 = GetBloomTile(3.0, coord, vec2(0.0 , 0.26 ), ditherAdd); + vec3 blur3 = GetBloomTile(4.0, coord, vec2(0.135 , 0.26 ), ditherAdd); + vec3 blur4 = GetBloomTile(5.0, coord, vec2(0.2075 , 0.26 ), ditherAdd); + vec3 blur5 = GetBloomTile(6.0, coord, vec2(0.135 , 0.3325), ditherAdd); + vec3 blur6 = GetBloomTile(7.0, coord, vec2(0.160625 , 0.3325), ditherAdd); + vec3 blur7 = GetBloomTile(8.0, coord, vec2(0.1784375, 0.3325), ditherAdd); + + vec3 blur = (blur1 + blur2 + blur3 + blur4 + blur5 + blur6 + blur7) * 0.14; + + float bloomStrength = BLOOM_STRENGTH + 0.2 * darknessFactor; + + #if defined BLOOM_FOG && defined NETHER && defined BORDER_FOG + float netherBloom = lViewPos / clamp(far, 192.0, 256.0); // consistency9023HFUE85JG + netherBloom *= netherBloom; + netherBloom *= netherBloom; + netherBloom = 1.0 - exp(-8.0 * netherBloom); + bloomStrength = mix(bloomStrength * 0.7, bloomStrength * 1.8, netherBloom); + #endif + + color = mix(color, blur, bloomStrength); + } +#endif + +//Includes// +#ifdef BLOOM_FOG + #include "/spookylib/atmospherics/fog/bloomFog.glsl" +#endif + +#ifdef BLOOM + #include "/spookylib/util/dither.glsl" +#endif + +#ifdef LENSFLARE + #include "/spookylib/misc/lensFlare.glsl" +#endif + +//spookyprogram// +void main() { + vec3 color = texture2D(colortex0, texCoord).rgb; + + #if defined BLOOM_FOG || defined LENSFLARE + float z0 = texture2D(depthtex0, texCoord).r; + + vec4 screenPos = vec4(texCoord, z0, 1.0); + vec4 viewPos = gbufferProjectionInverse * (screenPos * 2.0 - 1.0); + viewPos /= viewPos.w; + float lViewPos = length(viewPos.xyz); + #else + float lViewPos = 0.0; + #endif + + float dither = texture2D(noisetex, texCoord * vec2(viewWidth, viewHeight) / 128.0).b; + #ifdef TAA + dither = fract(dither + 1.61803398875 * mod(float(frameCounter), 3600.0)); + #endif + + #ifdef BLOOM_FOG + color /= GetBloomFog(lViewPos); + #endif + + #ifdef BLOOM + DoBloom(color, texCoord, dither, lViewPos); + #endif + + #ifdef COLORGRADING + color = + pow(color.r, GR_RC) * vec3(GR_RR, GR_RG, GR_RB) + + pow(color.g, GR_GC) * vec3(GR_GR, GR_GG, GR_GB) + + pow(color.b, GR_BC) * vec3(GR_BR, GR_BG, GR_BB); + color *= 0.01; + #endif + + color = LottesTonemap(color); + + #if defined GREEN_SCREEN_LIME || SELECT_OUTLINE == 4 + int materialMaskInt = int(texelFetch(colortex1, texelCoord, 0).g * 255.1); + #endif + + #ifdef GREEN_SCREEN_LIME + if (materialMaskInt == 240) { // Green Screen Lime Blocks + color = vec3(0.0, 1.0, 0.0); + } + #endif + + #if SELECT_OUTLINE == 4 + if (materialMaskInt == 252) { // Versatile Selection Outline + float colorMF = 1.0 - dot(color, vec3(0.25, 0.45, 0.1)); + colorMF = smoothstep1(smoothstep1(smoothstep1(smoothstep1(smoothstep1(colorMF))))); + color = mix(color, 3.0 * (color + 0.2) * vec3(colorMF * SELECT_OUTLINE_I), 0.3); + } + #endif + + #ifdef LENSFLARE + DoLensFlare(color, viewPos.xyz, dither); + #endif + + DoBSLColorSaturation(color); + + #ifdef VIGNETTE_R + vec2 texCoordMin = texCoord.xy - 0.5; + float vignette = 1.0 - dot(texCoordMin, texCoordMin) * (1.0 - GetLuminance(color)); + color *= vignette; + #endif + + float filmGrain = dither; + color += vec3((filmGrain - 0.25) / 128.0); + + #ifndef LIGHT_COLORING + /* DRAWBUFFERS:3 */ + #else + /* DRAWBUFFERS:8 */ + #endif + gl_FragData[0] = vec4(color, 1.0); +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +noperspective out vec2 texCoord; + +#if defined BLOOM_FOG || defined LENSFLARE + flat out vec3 upVec, sunVec; +#endif + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + #if defined BLOOM_FOG || defined LENSFLARE + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite6.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite6.glsl new file mode 100644 index 0000000..bc3bc25 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite6.glsl @@ -0,0 +1,114 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +noperspective in vec2 texCoord; + +//Uniforms// +uniform float viewWidth, viewHeight; +uniform float far, near; + +uniform vec3 cameraPosition, previousCameraPosition; + +uniform mat4 gbufferPreviousProjection, gbufferProjectionInverse; +uniform mat4 gbufferPreviousModelView, gbufferModelViewInverse; + +uniform sampler2D colortex2; +uniform sampler2D colortex1; +uniform sampler2D depthtex1; + +#ifndef LIGHT_COLORING + uniform sampler2D colortex3; +#else + uniform sampler2D colortex8; +#endif + +//Pipeline Constants// +#include "/spookylib/pipelineSettings.glsl" + +#ifndef LIGHT_COLORING + const bool colortex3MipmapEnabled = true; +#else + const bool colortex8MipmapEnabled = true; +#endif + +//Common Variables// + +//Common Functions// +float GetLinearDepth(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); +} + +//Includes// +#ifdef TAA + #include "/spookylib/antialiasing/taa.glsl" +#endif + +//spookyprogram// +void main() { + #ifndef LIGHT_COLORING + vec3 color = texelFetch(colortex3, texelCoord, 0).rgb; + #else + vec3 color = texelFetch(colortex8, texelCoord, 0).rgb; + #endif + + vec3 temp = vec3(0.0); + float depth; + + #ifdef TEMPORAL_FILTER + depth = texelFetch(depthtex1, texelCoord, 0).r; + #endif + + #ifdef TAA + DoTAA(color, temp, depth); + #endif + + #ifndef LIGHT_COLORING + /* DRAWBUFFERS:32 */ + #else + /* DRAWBUFFERS:82 */ + #endif + gl_FragData[0] = vec4(color, 1.0); + gl_FragData[1] = vec4(temp, 1.0); + + #ifdef TEMPORAL_FILTER + #ifndef LIGHT_COLORING + /* DRAWBUFFERS:326 */ + #else + /* DRAWBUFFERS:826 */ + #endif + gl_FragData[2] = vec4(depth, 0.0, 0.0, 1.0); + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +noperspective out vec2 texCoord; + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite7.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite7.glsl new file mode 100644 index 0000000..4c6b0c3 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/composite7.glsl @@ -0,0 +1,77 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +noperspective in vec2 texCoord; + +//Uniforms// +uniform float viewWidth, viewHeight; + +#ifndef LIGHT_COLORING + uniform sampler2D colortex3; +#else + uniform sampler2D colortex8; +#endif + +//Pipeline Constants// + +//Common Variables// + +//Common Functions// + +//Includes// +#ifdef FXAA + #include "/spookylib/antialiasing/fxaa.glsl" +#endif + +//spookyprogram// +void main() { + #ifndef LIGHT_COLORING + vec3 color = texelFetch(colortex3, texelCoord, 0).rgb; + #else + vec3 color = texelFetch(colortex8, texelCoord, 0).rgb; + #endif + + #ifdef FXAA + FXAA311(color); + #endif + + #ifndef LIGHT_COLORING + /* DRAWBUFFERS:3 */ + #else + /* DRAWBUFFERS:8 */ + #endif + gl_FragData[0] = vec4(color, 1.0); +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +noperspective out vec2 texCoord; + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/deferred1.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/deferred1.glsl new file mode 100644 index 0000000..9a46ef1 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/deferred1.glsl @@ -0,0 +1,569 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +noperspective in vec2 texCoord; + +flat in vec3 upVec, sunVec; + +#if defined LIGHTSHAFTS_ACTIVE && (LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 || defined END) + flat in float vlFactor; +#endif + +//Uniforms// +uniform int isEyeInWater; +uniform int frameCounter; + +uniform float far, near; +uniform float viewWidth, viewHeight; +uniform float blindness; +uniform float darknessFactor; + +uniform float aspectRatio; + +uniform vec3 skyColor; +uniform vec3 cameraPosition; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform sampler2D colortex0; +uniform sampler2D colortex1; +uniform sampler2D depthtex0; + + +#if SSAO_QUALI > 0 || defined PBR_REFLECTIONS + uniform mat4 gbufferProjection; +#endif + +#ifdef PBR_REFLECTIONS + uniform mat4 gbufferModelView; + + uniform sampler2D colortex5; +#endif + +#if AURORA_STYLE > 0 + + + uniform float inSnowy; +#endif + +#ifdef VL_CLOUDS_ACTIVE + uniform ivec2 eyeBrightness; + + #ifdef REALTIME_SHADOWS + uniform sampler2DShadow shadowtex0; + #endif + + #ifdef CLOUDS_REIMAGINED + uniform sampler2D colortex3; + #endif +#endif + +#ifdef TEMPORAL_FILTER + uniform vec3 previousCameraPosition; + + uniform mat4 gbufferPreviousProjection; + uniform mat4 gbufferPreviousModelView; + + uniform sampler2D colortex6; + uniform sampler2D colortex7; +#endif + +//Pipeline Constants// +const bool colortex0MipmapEnabled = true; + +//Common Variables// +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; +float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; +float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; +float shadowTime = shadowTimeVar2 * shadowTimeVar2; +float farMinusNear = far - near; + +vec2 view = vec2(viewWidth, viewHeight); + +#ifdef OVERWORLD + vec3 lightVec = sunVec * ((timeAngle < 0.5325 || timeAngle > 0.9675) ? 1.0 : -1.0); +#else + vec3 lightVec = sunVec; +#endif + +#if defined LIGHTSHAFTS_ACTIVE && (LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 || defined END) +#else + float vlFactor = 0.0; +#endif + +//Common Functions// +float GetLinearDepth(float depth) { + return (2.0 * near) / (far + near - depth * farMinusNear); +} + +#if SSAO_QUALI > 0 + vec2 OffsetDist(float x, int s) { + float n = fract(x * 1.414) * 3.1415; + return pow2(vec2(cos(n), sin(n)) * x / s); + } + + float DoAmbientOcclusion(float z0, float linearZ0, float dither) { + if (z0 < 0.56) return 1.0; + float ao = 0.0; + + #if SSAO_QUALI == 2 + int samples = 4; + float scm = 0.4; + #elif SSAO_QUALI == 3 + int samples = 12; + float scm = 0.6; + #endif + + #define SSAO_I_FACTOR 0.004 + + float sampleDepth = 0.0, angle = 0.0, dist = 0.0; + float fovScale = gbufferProjection[1][1]; + float distScale = max(farMinusNear * linearZ0 + near, 3.0); + vec2 scale = vec2(scm / aspectRatio, scm) * fovScale / distScale; + + for (int i = 1; i <= samples; i++) { + vec2 offset = OffsetDist(i + dither, samples) * scale; + if (i % 2 == 0) offset.y = -offset.y; + + vec2 coord1 = texCoord + offset; + vec2 coord2 = texCoord - offset; + + sampleDepth = GetLinearDepth(texture2D(depthtex0, coord1).r); + float aosample = farMinusNear * (linearZ0 - sampleDepth) * 2.0; + angle = clamp(0.5 - aosample, 0.0, 1.0); + dist = clamp(0.5 * aosample - 1.0, 0.0, 1.0); + + sampleDepth = GetLinearDepth(texture2D(depthtex0, coord2).r); + aosample = farMinusNear * (linearZ0 - sampleDepth) * 2.0; + angle += clamp(0.5 - aosample, 0.0, 1.0); + dist += clamp(0.5 * aosample - 1.0, 0.0, 1.0); + + ao += clamp(angle + dist, 0.0, 1.0); + } + ao /= samples; + + #define SSAO_IM SSAO_I * SSAO_I_FACTOR + return pow(ao, SSAO_IM); + } +#endif + +#ifdef TEMPORAL_FILTER + float GetApproxDistance(float depth) { + return near * far / (far - depth * far); + } + + // Previous frame reprojection from Chocapic13 + vec2 Reprojection(vec3 pos, vec3 cameraOffset) { + pos = pos * 2.0 - 1.0; + + vec4 viewPosPrev = gbufferProjectionInverse * vec4(pos, 1.0); + viewPosPrev /= viewPosPrev.w; + viewPosPrev = gbufferModelViewInverse * viewPosPrev; + + vec4 previousPosition = viewPosPrev + vec4(cameraOffset, 0.0); + previousPosition = gbufferPreviousModelView * previousPosition; + previousPosition = gbufferPreviousProjection * previousPosition; + return previousPosition.xy / previousPosition.w * 0.5 + 0.5; + } + + vec3 FHalfReprojection(vec3 pos) { + pos = pos * 2.0 - 1.0; + + vec4 viewPosPrev = gbufferProjectionInverse * vec4(pos, 1.0); + viewPosPrev /= viewPosPrev.w; + viewPosPrev = gbufferModelViewInverse * viewPosPrev; + + return viewPosPrev.xyz; + } + + vec2 SHalfReprojection(vec3 playerPos, vec3 cameraOffset) { + vec4 proPos = vec4(playerPos + cameraOffset, 1.0); + vec4 previousPosition = gbufferPreviousModelView * proPos; + previousPosition = gbufferPreviousProjection * previousPosition; + return previousPosition.xy / previousPosition.w * 0.5 + 0.5; + } +#endif + +//Includes// +#include "/spookylib/util/spaceConversion.glsl" +#include "/spookylib/util/dither.glsl" +#include "/spookylib/atmospherics/fog/mainFog.glsl" +#include "/spookylib/colors/skyColors.glsl" + +#ifdef PBR_REFLECTIONS + #include "/spookylib/materials/materialMethods/reflections.glsl" +#endif + +#if AURORA_STYLE > 0 + #include "/spookylib/atmospherics/auroraBorealis.glsl" +#endif + +#ifdef VL_CLOUDS_ACTIVE + #include "/spookylib/atmospherics/clouds/mainClouds.glsl" +#endif + +#ifdef END + #include "/spookylib/atmospherics/enderStars.glsl" +#endif + +#ifdef WORLD_OUTLINE + #include "/spookylib/misc/worldOutline.glsl" +#endif + +#ifdef DARK_OUTLINE + #include "/spookylib/misc/darkOutline.glsl" +#endif + +#include "/spookylib/colors/colorMultipliers.glsl" + +#ifdef NIGHT_NEBULA + #include "/spookylib/atmospherics/nightNebula.glsl" +#endif + +//spookyprogram// +void main() { + vec3 color = texelFetch(colortex0, texelCoord, 0).rgb; + float z0 = texelFetch(depthtex0, texelCoord, 0).r; + + vec4 screenPos = vec4(texCoord, z0, 1.0); + vec4 viewPos = gbufferProjectionInverse * (screenPos * 2.0 - 1.0); + viewPos /= viewPos.w; + float lViewPos = length(viewPos); + vec3 nViewPos = normalize(viewPos.xyz); + vec3 playerPos = ViewToPlayer(viewPos.xyz); + + float dither = texture2D(noisetex, texCoord * vec2(viewWidth, viewHeight) / 128.0).b; + #ifdef TAA + dither = fract(dither + 1.61803398875 * mod(float(frameCounter), 3600.0)); + #endif + + atmColorMult = GetAtmColorMult(); + + float VdotU = dot(nViewPos, upVec); + float VdotS = dot(nViewPos, sunVec); + float skyFade = 0.0; + vec3 waterRefColor = vec3(0.0); + + #if AURORA_STYLE > 0 + vec3 auroraBorealis = vec3(0.0); + #endif + #ifdef NIGHT_NEBULA + vec3 nightNebula = vec3(0.0); + #endif + + #ifdef TEMPORAL_FILTER + vec4 refToWrite = vec4(0.0); + #endif + + if (z0 < 1.0) { + vec3 texture1 = texelFetch(colortex1, texelCoord, 0).rgb; + + #if SSAO_QUALI > 0 || defined WORLD_OUTLINE || defined TEMPORAL_FILTER + float linearZ0 = GetLinearDepth(z0); + #endif + + #if SSAO_QUALI > 0 + float ssao = DoAmbientOcclusion(z0, linearZ0, dither); + #else + float ssao = 1.0; + #endif + + int materialMaskInt = int(texture1.g * 255.1); + float intenseFresnel = 0.0; + float smoothnessD = texture1.r; + vec3 reflectColor = vec3(1.0); + + #ifdef IPBR + #include "/spookylib/materials/materialHandling/deferredMaterials.glsl" + #else + if (materialMaskInt <= 240) { + #ifdef CUSTOM_PBR + #if RP_MODE == 2 // seuspbr + float metalness = materialMaskInt / 240.0; + + intenseFresnel = metalness; + color.rgb *= 1.0 - 0.25 * metalness; + #elif RP_MODE == 3 // labPBR + float metalness = float(materialMaskInt >= 230); + + intenseFresnel = materialMaskInt / 240.0; + color.rgb *= 1.0 - 0.25 * metalness; + #endif + reflectColor = mix(reflectColor, color.rgb / max(color.r + 0.00001, max(color.g, color.b)), metalness); + #endif + } else { + if (materialMaskInt == 254) // No SSAO, No TAA + ssao = 1.0; + } + #endif + + color.rgb *= ssao; + + #ifdef PBR_REFLECTIONS + float skyLightFactor = texture1.b; + vec3 texture5 = texelFetch(colortex5, texelCoord, 0).rgb; + vec3 normalM = mat3(gbufferModelView) * texture5; + + float fresnel = clamp(1.0 + dot(normalM, nViewPos), 0.0, 1.0); + + float fresnelFactor = (1.0 - smoothnessD) * 0.7; + float fresnelM = max(fresnel - fresnelFactor, 0.0) / (1.0 - fresnelFactor); + #ifdef IPBR + fresnelM = mix(pow2(fresnelM), fresnelM * 0.75 + 0.25, intenseFresnel); + #else + fresnelM = mix(pow2(fresnelM), fresnelM * 0.5 + 0.5, intenseFresnel); + #endif + fresnelM = fresnelM * sqrt1(smoothnessD) - dither * 0.001; + + if (fresnelM > 0.0) { + vec3 roughPos = playerPos + cameraPosition; + roughPos *= 256.0; + vec2 roughCoord = roughPos.xz + roughPos.y; + #ifndef TEMPORAL_FILTER + float noiseMult = 0.3; + #else + float noiseMult = 0.3; + float blendFactor = 1.0; + float writeFactor = 1.0; + roughCoord += fract(frameTimeCounter); + #endif + vec3 roughNoise = vec3(texture2D(noisetex, roughCoord).r, texture2D(noisetex, roughCoord + 0.1).r, texture2D(noisetex, roughCoord + 0.2).r); + roughNoise = noiseMult * (roughNoise - vec3(0.5)); + roughNoise *= pow2(1.0 - smoothnessD); + #if defined CUSTOM_PBR || defined IPBR && defined IS_IRIS + if (z0 < 0.56) { + roughNoise *= 0.1; + #ifdef TEMPORAL_FILTER + blendFactor = 0.0; + writeFactor = 0.0; + #endif + } + #endif + + normalM += roughNoise; + + vec4 reflection = GetReflection(normalM, viewPos.xyz, nViewPos, playerPos, lViewPos, z0, + depthtex0, dither, skyLightFactor, fresnel, + smoothnessD, vec3(0.0), vec3(0.0), vec3(0.0), 0.0); + + vec3 colorAdd = reflection.rgb * reflectColor; + //float colorMultInv = (0.75 - intenseFresnel * 0.5) * max(reflection.a, skyLightFactor); + //float colorMultInv = max(reflection.a, skyLightFactor); + float colorMultInv = 1.0; + + #ifdef IPBR + vec3 colorP = color; + #endif + + #ifndef TEMPORAL_FILTER + color *= 1.0 - colorMultInv * fresnelM; + color += colorAdd * fresnelM; + #else + vec3 cameraOffset = cameraPosition - previousCameraPosition; + vec2 prvCoord = SHalfReprojection(playerPos, cameraOffset); + #if defined IPBR && !defined GENERATED_NORMALS + vec2 prvRefCoord = Reprojection(vec3(texCoord, max(refPos.z, z0)), cameraOffset); + vec4 oldRef = texture2D(colortex7, prvRefCoord); + #else + vec2 prvRefCoord = Reprojection(vec3(texCoord, z0), cameraOffset); + vec2 prvRefCoord2 = Reprojection(vec3(texCoord, max(refPos.z, z0)), cameraOffset); + vec4 oldRef1 = texture2D(colortex7, prvRefCoord); + vec4 oldRef2 = texture2D(colortex7, prvRefCoord2); + vec3 dif1 = colorAdd - oldRef1.rgb; + vec3 dif2 = colorAdd - oldRef2.rgb; + float dotDif1 = dot(dif1, dif1); + float dotDif2 = dot(dif2, dif2); + + float oldRefMixer = clamp01((dotDif1 - dotDif2) * 500.0); + vec4 oldRef = mix(oldRef1, oldRef2, oldRefMixer); + #endif + + vec4 newRef = vec4(colorAdd, colorMultInv); + float lCameraOffset = length(cameraOffset); + ivec2 texelOppositePreCoord = clamp(ivec2((texCoord - 2.0 * (prvCoord - texCoord)) * view), ivec2(0, 0), texelCoord); + + // Reduce blending at speed + blendFactor *= float(prvCoord.x > 0.0 && prvCoord.x < 1.0 && prvCoord.y > 0.0 && prvCoord.y < 1.0); + float velocity = lCameraOffset * max(16.0 - lViewPos / gbufferProjection[1][1], 3.0); + blendFactor *= 0.7 + 0.3 * exp(-velocity); + + // Reduce blending if depth changed + float linearZP = GetLinearDepth(texelFetch(colortex6, texelOppositePreCoord, 0).r); + float linearZP2 = GetLinearDepth(texture2D(colortex6, texCoord + 1.5 * (prvCoord - texCoord)).r); + float linearZDif = max(abs(linearZP - linearZ0), abs(linearZP2 - linearZ0)) * far; + blendFactor *= max0(2.0 - linearZDif) * 0.5; + //color = mix(vec3(1,1,0), color, max0(2.0 - max0(linearZDif - 1.0)) * 0.5); + + // Reduce blending if normal changed + vec3 texture5P = texelFetch(colortex5, texelOppositePreCoord, 0).rgb; + vec3 texture5Dif = abs(texture5 - texture5P); + if (texture5Dif != clamp(texture5Dif, vec3(-0.004), vec3(0.004))) { + blendFactor = 0.0; + //color.rgb = vec3(1,0,1); + } + + blendFactor = max0(blendFactor); // Prevent first frame NaN + newRef = max(newRef, vec4(0.0)); // Prevent random NaNs from persisting + refToWrite = mix(newRef, oldRef, blendFactor * 0.95); + + color.rgb *= 1.0 - refToWrite.a * fresnelM; + color.rgb += refToWrite.rgb * fresnelM; + + refToWrite *= writeFactor; + #endif + + #ifdef IPBR + color = max(colorP * max(intenseFresnel, 1.0 - pow2(smoothnessD)) * 0.9, color); + #endif + + //if (gl_FragCoord.x > 960) color = vec3(5.25,0,5.25); + } + #endif + + #ifdef WORLD_OUTLINE + DoWorldOutline(color, linearZ0); + #endif + + waterRefColor = sqrt(color) - 1.0; + + DoFog(color, skyFade, lViewPos, playerPos, VdotU, VdotS, dither); + } else { // Sky + skyFade = 1.0; + + #ifdef OVERWORLD + #if AURORA_STYLE > 0 + auroraBorealis = GetAuroraBorealis(viewPos.xyz, VdotU, dither); + auroraBorealis *= atmColorMult; + color.rgb += auroraBorealis; + #endif + #ifdef NIGHT_NEBULA + nightNebula += GetNightNebula(viewPos.xyz, VdotU, VdotS); + nightNebula *= atmColorMult; + color.rgb += nightNebula; + #endif + #endif + #ifdef NETHER + color.rgb = netherColor; + + color.rgb *= atmColorMult; + #endif + #ifdef END + color.rgb = endSkyColor; + color.rgb += GetEnderStars(viewPos.xyz, VdotU); + + color.rgb *= atmColorMult; + #endif + } + + float cloudLinearDepth = 1.0; + + #ifdef VL_CLOUDS_ACTIVE + if (z0 > 0.56) { + vec4 clouds = GetClouds(cloudLinearDepth, skyFade, playerPos, viewPos.xyz, lViewPos, VdotS, VdotU, dither); + + clouds.rgb *= atmColorMult; + + #if AURORA_STYLE > 0 + clouds.rgb += auroraBorealis * 0.1; + #endif + #ifdef NIGHT_NEBULA + clouds.rgb += nightNebula * 0.2; + #endif + + color = mix(color, clouds.rgb, clouds.a); + } + #endif + + #if defined LIGHTSHAFTS_ACTIVE && (LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 || defined END) + if (viewWidth + viewHeight - gl_FragCoord.x - gl_FragCoord.y < 1.5) + cloudLinearDepth = vlFactor; + #endif + + #ifdef DARK_OUTLINE + DoDarkOutline(color, skyFade, z0, dither); + #endif + + /*DRAWBUFFERS:054*/ + gl_FragData[0] = vec4(color, 1.0); + gl_FragData[1] = vec4(waterRefColor, 1.0 - skyFade); + gl_FragData[2] = vec4(cloudLinearDepth, 0.0, 0.0, 1.0); + #ifdef TEMPORAL_FILTER + /*DRAWBUFFERS:0547*/ + gl_FragData[3] = refToWrite; + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +noperspective out vec2 texCoord; + +flat out vec3 upVec, sunVec; + +#if defined LIGHTSHAFTS_ACTIVE && (LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 || defined END) + flat out float vlFactor; +#endif + +//Uniforms// +#if defined LIGHTSHAFTS_ACTIVE && (LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 || defined END) + uniform float viewWidth, viewHeight; + + uniform sampler2D colortex4; + + #ifdef END + uniform int frameCounter; + + uniform float frameTimeSmooth; + uniform float far; + + uniform vec3 cameraPosition; + #endif +#endif + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); + + #if defined LIGHTSHAFTS_ACTIVE && (LIGHTSHAFT_BEHAVIOUR == 1 && SHADOW_QUALITY >= 1 || defined END) + vlFactor = texelFetch(colortex4, ivec2(viewWidth-1, viewHeight-1), 0).r; + + #ifdef END + if (frameCounter % int(0.06666 / frameTimeSmooth + 0.5) == 0) { // Change speed is not too different above 10 fps + vec2 absCamPosXZ = abs(cameraPosition.xz); + float maxCamPosXZ = max(absCamPosXZ.x, absCamPosXZ.y); + + if (gl_Fog.start / far > 0.5 || maxCamPosXZ > 350.0) vlFactor = max(vlFactor - OSIEBCA*2, 0.0); + else vlFactor = min(vlFactor + OSIEBCA*2, 1.0); + } + #endif + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/final.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/final.glsl new file mode 100644 index 0000000..350cffc --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/final.glsl @@ -0,0 +1,205 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +noperspective in vec2 texCoord; + +//Uniforms// +uniform float viewWidth, viewHeight; + +#ifndef LIGHT_COLORING + uniform sampler2D colortex3; +#else + uniform sampler2D colortex3; /*test*//*test*//*test*//*test*/ + uniform sampler2D colortex8; +#endif + +#ifdef UNDERWATER_DISTORTION + uniform int isEyeInWater; + + +#endif + +uniform float playerMood; + +//Pipeline Constants// +#include "/spookylib/pipelineSettings.glsl" + +//Common Variables// + +//Common Functions// +#if IMAGE_SHARPENING > 0 + vec2 viewD = 1.0 / vec2(viewWidth, viewHeight); + + vec2 sharpenOffsets[4] = vec2[4]( + vec2( viewD.x, 0.0), + vec2( 0.0, viewD.x), + vec2(-viewD.x, 0.0), + vec2( 0.0, -viewD.x) + ); + + void SharpenImage(inout vec3 color, vec2 texCoordM) { + float mult = 0.0125 * IMAGE_SHARPENING; + color *= 1.0 + 0.05 * IMAGE_SHARPENING; + + for (int i = 0; i < 4; i++) { + #ifndef LIGHT_COLORING + color -= texture2D(colortex3, texCoordM + sharpenOffsets[i]).rgb * mult; + #else + color -= texture2D(colortex8, texCoordM + sharpenOffsets[i]).rgb * mult; + #endif + } + } +#endif + +float retroNoise (vec2 noise){ + return fract(sin(dot(noise.xy,vec2(10.998,98.233)))*12433.14159265359); +} + +//Includes// +#ifdef MC_ANISOTROPIC_FILTERING + #include "/spookylib/util/textRendering.glsl" + + void beginTextM(int textSize, vec2 offset) { + beginText(ivec2(vec2(viewWidth, viewHeight) * texCoord) / textSize, ivec2(0 + offset.x, viewHeight / textSize - offset.y)); + text.bgCol = vec4(0.0); + } +#endif + +//spookyprogram// +void main() { + vec2 texCoordM = texCoord; + + float randomShutterTime = 24000 * hash1(worldDay * 5); // Effect happens randomly throughout the day + int displaceEffect = (int(hash1(worldDay / 2)) % (2 * 24000)) + int(randomShutterTime); + if (worldTime > displaceEffect && worldTime < displaceEffect + 100) { // 100 in ticks - 5s, how long the effect will be on + float scrollSpeed = 2.0; + float stutterSpeed = 0.2; + float scroll = (1.0 - step(retroNoise(vec2(frameTimeCounter * 0.00002, 8.0)), 0.9)) * scrollSpeed; + float stutter = (1.0 - step(retroNoise(vec2(frameTimeCounter * 0.00005, 9.0)), 0.8)) * stutterSpeed; + float stutter2 = (1.0 - step(retroNoise(vec2(frameTimeCounter * 0.00003, 5.0)), 0.7)) * stutterSpeed; + float verticalOffset = sin(frameTimeCounter) * scroll + stutter * stutter2; + texCoordM.y = mod(texCoordM.y + verticalOffset, 1.10); + } + + #ifdef UNDERWATER_DISTORTION + if (isEyeInWater == 1) + texCoordM += WATER_REFRACTION_INTENSITY * 0.00035 * sin((texCoord.x + texCoord.y) * 25.0 + frameTimeCounter * 3.0); + #endif + + #ifndef LIGHT_COLORING + vec3 color = texture2D(colortex3, texCoordM).rgb; + #else + vec3 color = texture2D(colortex8, texCoordM).rgb; + #endif + + vec2 scale = vec2(1.0, viewHeight / viewWidth); + vec2 aberration = (texCoordM - 0.5) * (2.0 / vec2(viewWidth, viewHeight)) * scale * max(CHROMA_ABERRATION, playerMood * 10.0); + #ifndef LIGHT_COLORING + color.rb = vec2(texture2D(colortex3, texCoordM + aberration).r, texture2D(colortex3, texCoordM - aberration).b); + #else + color.rb = vec2(texture2D(colortex8, texCoordM + aberration).r, texture2D(colortex8, texCoordM - aberration).b); + #endif + + #if IMAGE_SHARPENING > 0 + SharpenImage(color, texCoordM); + #endif + + /*ivec2 boxOffsets[8] = ivec2[8]( + ivec2( 1, 0), + ivec2( 0, 1), + ivec2(-1, 0), + ivec2( 0,-1), + ivec2( 1, 1), + ivec2( 1,-1), + ivec2(-1, 1), + ivec2(-1,-1) + ); + + for (int i = 0; i < 8; i++) { + color = max(color, texelFetch(colortex3, texelCoord + boxOffsets[i], 0).rgb); + }*/ + + #ifdef LIGHT_COLORING + if (max(texCoordM.x, texCoordM.y) < 0.25) color = texture2D(colortex3, texCoordM * 4.0).rgb; + #endif + + #ifdef MC_ANISOTROPIC_FILTERING + color.rgb = mix(color.rgb, vec3(0.0), 0.75); + + beginTextM(8, vec2(6, 10)); + text.fgCol = vec4(1.0, 0.0, 0.0, 1.0); + printString((_I, _m, _p, _o, _r, _t, _a, _n, _t, _space, _I, _s, _s, _u, _e, _space)); + endText(color.rgb); + + beginTextM(4, vec2(15, 30)); + printLine(); + text.fgCol = vec4(1.0, 1.0, 1.0, 1.0); + printString(( + _P, _l, _e, _a, _s, _e, _space, _g, _o, _space, _t, _o, _space, + _E, _S, _C, _space, _minus, _space, _O, _p, _t, _i, _o, _n, _s, _space, _minus, _space + )); + printLine(); + printString(( + _V, _i, _d, _e, _o, _space, _S, _e, _t, _t, _i, _n, _g, _s, _space, _minus, _space, + _Q, _u, _a, _l, _i, _t, _y, _space, _minus, _space + )); + printLine(); + printString(( + _a, _n, _d, _space, _d, _i, _s, _a, _b, _l, _e, _space, + _A, _n, _i, _s, _o, _t, _r, _o, _p, _i, _c, _space, _F, _i, _l, _t, _e, _r, _i, _n, _g, _dot + )); + endText(color.rgb); + #endif + + float maxStrength = 0.50; + float minStrength = 0.30; + const float speed = 10.0; + + vec2 fractCoord = fract(texCoord * fract(sin(frameTimeCounter * speed))); + + maxStrength = clamp(sin(frameTimeCounter * 0.5), minStrength, maxStrength); + + vec3 staticColor = vec3(retroNoise(fractCoord)) * maxStrength; + float staticIntensity = 0.0; + if (playerMood > 0.9) staticIntensity = (playerMood * 10.0 - 9.0) * 0.75; + color *= mix(vec3(1.0), color - staticColor, staticIntensity); + + color.rgb = mix(color.rgb, color.rgb * GetLuminance(color), 0.60); + + //if (gl_FragCoord.x < 479 || gl_FragCoord.x > 1441) color = vec3(0.0); + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = vec4(color, 1.0); +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +noperspective out vec2 texCoord; + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_armor_glint.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_armor_glint.glsl new file mode 100644 index 0000000..15a015a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_armor_glint.glsl @@ -0,0 +1,79 @@ +////////////////////////////////// +// Complementary Base by EminGT // +////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +in vec2 texCoord; + +flat in vec4 glColor; + +//Uniforms// +uniform sampler2D tex; + +//Pipeline Constants// + +//Common Variables// + +//Common Functions// + +//Includes// +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + vec4 color = texture2D(tex, texCoord); + color *= glColor; + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = color; +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +out vec2 texCoord; + +flat out vec4 glColor; + +//Uniforms// +#if HAND_SWAYING > 0 + +#endif + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + glColor = gl_Color; + + #if HAND_SWAYING > 0 + if (gl_ProjectionMatrix[2][2] > -0.5) { + #include "/spookylib/misc/handSway.glsl" + } + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_basic.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_basic.glsl new file mode 100644 index 0000000..8cb58ea --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_basic.glsl @@ -0,0 +1,184 @@ +////////////////////////////////// +// Complementary Base by EminGT // +////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +flat in vec2 lmCoord; + +flat in vec3 upVec, sunVec, northVec, eastVec; +in vec3 normal; + +flat in vec4 glColor; + +//Uniforms// +uniform int isEyeInWater; +uniform int frameCounter; + +uniform float viewWidth; +uniform float viewHeight; +uniform float nightVision; + + +uniform vec3 skyColor; +uniform vec3 cameraPosition; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + + + +//Pipeline Constants// + +//Common Variables// +float NdotU = dot(normal, upVec); +float NdotUmax0 = max(NdotU, 0.0); +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; +float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; +float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; +float shadowTime = shadowTimeVar2 * shadowTimeVar2; + +#ifdef OVERWORLD + vec3 lightVec = sunVec * ((timeAngle < 0.5325 || timeAngle > 0.9675) ? 1.0 : -1.0); +#else + vec3 lightVec = sunVec; +#endif + +//Common Functions// + +//Includes// +#include "/spookylib/util/spaceConversion.glsl" +#include "/spookylib/lighting/mainLighting.glsl" + +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + vec4 color = glColor; + + vec3 screenPos = vec3(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z); + #ifdef TAA + vec3 viewPos = ScreenToView(vec3(TAAJitter(screenPos.xy, -0.5), screenPos.z)); + #else + vec3 viewPos = ScreenToView(screenPos); + #endif + float lViewPos = length(viewPos); + vec3 playerPos = ViewToPlayer(viewPos); + + float materialMask = 0.0; + vec3 shadowMult = vec3(1.0); + + #ifndef GBUFFERS_LINE + DoLighting(color, shadowMult, playerPos, viewPos, lViewPos, normal, lmCoord, + false, false, false, false, + 0, 0.0, 0.0, 0.0); + #endif + + #if SELECT_OUTLINE != 1 + if (abs(color.a - 0.4) + dot(color.rgb, color.rgb) < 0.01) { + #if SELECT_OUTLINE == 0 + discard; + #elif SELECT_OUTLINE == 2 // Rainbow + float posFactor = playerPos.x + playerPos.y + playerPos.z + cameraPosition.x + cameraPosition.y + cameraPosition.z; + color.rgb = clamp(abs(mod(fract(frameTimeCounter*0.25 + posFactor*0.2) * 6.0 + vec3(0.0,4.0,2.0), 6.0) - 3.0) - 1.0, + 0.0, 1.0) * vec3(3.0, 2.0, 3.0) * SELECT_OUTLINE_I; + #elif SELECT_OUTLINE == 3 // Select Color + color.rgb = vec3(SELECT_OUTLINE_R, SELECT_OUTLINE_G, SELECT_OUTLINE_B) * SELECT_OUTLINE_I; + #elif SELECT_OUTLINE == 4 // Versatile + color.a = 0.1; + materialMask = OSIEBCA * 252.0; // Versatile Selection Outline + #endif + } + #endif + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:01 */ + gl_FragData[0] = color; + gl_FragData[1] = vec4(0.0, materialMask, 0.0, 1.0); +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +flat out vec2 lmCoord; + +flat out vec3 upVec, sunVec, northVec, eastVec; +out vec3 normal; + +flat out vec4 glColor; + +//Uniforms// +#if defined GBUFFERS_LINE || defined TAA + uniform float viewWidth, viewHeight; +#endif + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +//spookyprogram// +void main() { + #ifndef GBUFFERS_LINE + gl_Position = ftransform(); + #else + float lineWidth = 2.0; + vec2 screenSize = vec2(viewWidth, viewHeight); + const mat4 VIEW_SCALE = mat4(mat3(1.0 - (1.0 / 256.0))); + vec4 linePosStart = projectionMatrix * VIEW_SCALE * modelViewMatrix * vec4(vaPosition, 1.0); + vec4 linePosEnd = projectionMatrix * VIEW_SCALE * modelViewMatrix * (vec4(vaPosition + vaNormal, 1.0)); + vec3 ndc1 = linePosStart.xyz / linePosStart.w; + vec3 ndc2 = linePosEnd.xyz / linePosEnd.w; + vec2 lineScreenDirection = normalize((ndc2.xy - ndc1.xy) * screenSize); + vec2 lineOffset = vec2(-lineScreenDirection.y, lineScreenDirection.x) * lineWidth / screenSize; + if (lineOffset.x < 0.0) + lineOffset *= -1.0; + if (gl_VertexID % 2 == 0) + gl_Position = vec4((ndc1 + vec3(lineOffset, 0.0)) * linePosStart.w, linePosStart.w); + else + gl_Position = vec4((ndc1 - vec3(lineOffset, 0.0)) * linePosStart.w, linePosStart.w); + #endif + + #ifdef TAA + gl_Position.xy = TAAJitter(gl_Position.xy, gl_Position.w); + #endif + + lmCoord = GetLightMapCoordinates(); + + glColor = gl_Color; + + normal = normalize(gl_NormalMatrix * gl_Normal); + + upVec = normalize(gbufferModelView[1].xyz); + eastVec = normalize(gbufferModelView[0].xyz); + northVec = normalize(gbufferModelView[2].xyz); + sunVec = GetSunVector(); +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_beaconbeam.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_beaconbeam.glsl new file mode 100644 index 0000000..421b513 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_beaconbeam.glsl @@ -0,0 +1,118 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +in vec2 texCoord; + +in vec4 glColor; + +//Uniforms// +uniform float viewWidth, viewHeight; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform sampler2D tex; + +//Pipeline Constants// + +//Common Variables// + +//Common Functions// + +//Includes// +#include "/spookylib/util/spaceConversion.glsl" + +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + vec4 color = texture2D(tex, texCoord); + vec3 colorP = color.rgb; + color *= glColor; + + vec3 screenPos = vec3(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z); + #ifdef TAA + vec3 viewPos = ScreenToView(vec3(TAAJitter(screenPos.xy, -0.5), screenPos.z)); + #else + vec3 viewPos = ScreenToView(screenPos); + #endif + float lViewPos = length(viewPos); + + #ifdef IPBR + float emission = dot(colorP, colorP); + + if (color.a < 0.5) { + color.a = 0.101; + emission = pow2(pow2(emission)) * 0.1; + } + + color.rgb *= color.rgb * emission * 1.75; + color.rgb += emission * 0.05; + #else + color.rgb *= color.rgb * 4.0; + #endif + + color.rgb *= 0.5 + 0.5 * exp(- lViewPos * 0.04); + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:01 */ + gl_FragData[0] = color; + gl_FragData[1] = vec4(0.0, 0.0, 0.0, 1.0); +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +out vec2 texCoord; + +out vec4 glColor; + +//Uniforms// +#ifdef TAA + uniform float viewWidth, viewHeight; +#endif + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +//spookyprogram// +void main() { + gl_Position = ftransform(); + #ifdef TAA + gl_Position.xy = TAAJitter(gl_Position.xy, gl_Position.w); + #endif + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + glColor = gl_Color; +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_block.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_block.glsl new file mode 100644 index 0000000..514c05f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_block.glsl @@ -0,0 +1,313 @@ +////////////////////////////////// +// Complementary Base by EminGT // +////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +in vec2 texCoord; +in vec2 lmCoord; + +flat in vec3 upVec, sunVec, northVec, eastVec; +in vec3 normal; + +in vec4 glColor; + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM + in vec2 signMidCoordPos; + flat in vec2 absMidCoordPos; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + flat in vec3 binormal, tangent; +#endif + +#ifdef POM + in vec3 viewVector; + + in vec4 vTexCoordAM; +#endif + +//Uniforms// +uniform int isEyeInWater; +uniform int blockEntityId; +uniform int frameCounter; + +uniform float viewWidth; +uniform float viewHeight; +uniform float nightVision; + + +uniform vec3 skyColor; +uniform vec3 cameraPosition; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform sampler2D tex; + + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM + uniform ivec2 atlasSize; +#endif + +#ifdef CUSTOM_PBR + uniform sampler2D normals; + uniform sampler2D specular; +#endif + +//Pipeline Constants// + +//Common Variables// +float NdotU = dot(normal, upVec); +float NdotUmax0 = max(NdotU, 0.0); +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; +float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; +float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; +float shadowTime = shadowTimeVar2 * shadowTimeVar2; + +#ifdef OVERWORLD + vec3 lightVec = sunVec * ((timeAngle < 0.5325 || timeAngle > 0.9675) ? 1.0 : -1.0); +#else + vec3 lightVec = sunVec; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); +#endif + +//Common Functions// + +//Includes// +#include "/spookylib/util/spaceConversion.glsl" +#include "/spookylib/util/dither.glsl" +#include "/spookylib/lighting/mainLighting.glsl" + +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES + #include "/spookylib/util/miplevel.glsl" +#endif + +#ifdef GENERATED_NORMALS + #include "/spookylib/materials/materialMethods/generatedNormals.glsl" +#endif + +#ifdef COATED_TEXTURES + #include "/spookylib/materials/materialMethods/coatedTextures.glsl" +#endif + +#ifdef CUSTOM_PBR + #include "/spookylib/materials/materialHandling/customMaterials.glsl" +#endif + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + vec4 color = texture2D(tex, texCoord); + #ifdef GENERATED_NORMALS + vec3 colorP = color.rgb; + #endif + color *= glColor; + + vec3 screenPos = vec3(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z); + #ifdef TAA + vec3 viewPos = ScreenToView(vec3(TAAJitter(screenPos.xy, -0.5), screenPos.z)); + #else + vec3 viewPos = ScreenToView(screenPos); + #endif + float lViewPos = length(viewPos); + vec3 playerPos = ViewToPlayer(viewPos); + + bool noSmoothLighting = false, noDirectionalShading = false; + + float smoothnessD = 0.0, skyLightFactor = 0.0, materialMask = 0.0; + float smoothnessG = 0.0, highlightMult = 1.0, emission = 0.0, noiseFactor = 1.0; + vec2 lmCoordM = lmCoord; + vec3 normalM = normal, shadowMult = vec3(1.0); + #ifdef IPBR + #include "/spookylib/materials/materialHandling/blockEntityMaterials.glsl" + #else + #ifdef CUSTOM_PBR + GetCustomMaterials(color, normalM, lmCoordM, NdotU, shadowMult, smoothnessG, smoothnessD, highlightMult, emission, materialMask, viewPos, lViewPos); + #endif + + if (blockEntityId == 60024) { // End Portal + #include "/spookylib/materials/specificMaterials/others/endPortalEffect.glsl" + } else if (blockEntityId == 60004) { // Signs + noSmoothLighting = true; + if (glColor.r + glColor.g + glColor.b <= 2.99 || lmCoord.x > 0.999) { // Sign Text + #include "/spookylib/materials/specificMaterials/others/signText.glsl" + } + } else { + noSmoothLighting = true; + } + #endif + + #ifdef GENERATED_NORMALS + GenerateNormals(normalM, colorP); + #endif + + #ifdef COATED_TEXTURES + CoatTextures(color.rgb, noiseFactor, playerPos); + #endif + #if BLOOD_MOON > 0 + ambientColor *= mix(vec3(1.0), vec3(1.0, 0.0, 0.0) * 3.0, getBloodMoon(moonPhase, sunVisibility)); + #endif + + DoLighting(color, shadowMult, playerPos, viewPos, lViewPos, normalM, lmCoordM, + noSmoothLighting, noDirectionalShading, false, false, + 0, smoothnessG, highlightMult, emission); + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:01 */ + gl_FragData[0] = color; + gl_FragData[1] = vec4(smoothnessD, materialMask, skyLightFactor, 1.0); + + #if BLOCK_REFLECT_QUALITY >= 2 && RP_MODE >= 2 + /* DRAWBUFFERS:015 */ + gl_FragData[2] = vec4(mat3(gbufferModelViewInverse) * normalM, 1.0); + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +out vec2 texCoord; +out vec2 lmCoord; + +flat out vec3 upVec, sunVec, northVec, eastVec; +out vec3 normal; + +out vec4 glColor; + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM + out vec2 signMidCoordPos; + flat out vec2 absMidCoordPos; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + flat out vec3 binormal, tangent; +#endif + +#ifdef POM + out vec3 viewVector; + + out vec4 vTexCoordAM; +#endif + +//Uniforms// +#ifdef TAA + uniform float viewWidth, viewHeight; +#endif + +#if defined IPBR || defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM + uniform int blockEntityId; +#endif + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM + uniform vec3 cameraPosition; + + uniform mat4 gbufferModelViewInverse; +#endif + +//Attributes// +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM + attribute vec4 mc_midTexCoord; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + attribute vec4 at_tangent; +#endif + +//Common Variables// + +//Common Functions// + +//Includes// +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +//spookyprogram// +void main() { + gl_Position = ftransform(); + #ifdef TAA + gl_Position.xy = TAAJitter(gl_Position.xy, gl_Position.w); + #endif + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + lmCoord = GetLightMapCoordinates(); + + glColor = gl_Color; + + normal = normalize(gl_NormalMatrix * gl_Normal); + + upVec = normalize(gbufferModelView[1].xyz); + eastVec = normalize(gbufferModelView[0].xyz); + northVec = normalize(gbufferModelView[2].xyz); + sunVec = GetSunVector(); + + if (normal != normal) normal = -upVec; // Mod Fix: Fixes Better Nether Fireflies + + #ifdef IPBR + if (blockEntityId == 60024) { // End Portal, End Gateway + gl_Position.z -= 0.002; + } + #endif + + #if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM + if (blockEntityId == 60008) { // Chest + float fractWorldPosY = fract((gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex).y + cameraPosition.y); + if (fractWorldPosY > 0.56 && 0.57 > fractWorldPosY) gl_Position.z -= 0.0001; + } + + vec2 midCoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texMinMidCoord = texCoord - midCoord; + signMidCoordPos = sign(texMinMidCoord); + absMidCoordPos = abs(texMinMidCoord); + #endif + + #if defined GENERATED_NORMALS || defined CUSTOM_PBR + binormal = normalize(gl_NormalMatrix * cross(at_tangent.xyz, gl_Normal.xyz) * at_tangent.w); + tangent = normalize(gl_NormalMatrix * at_tangent.xyz); + #endif + + #ifdef POM + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); + + viewVector = tbnMatrix * (gl_ModelViewMatrix * gl_Vertex).xyz; + + vTexCoordAM.zw = abs(texMinMidCoord) * 2; + vTexCoordAM.xy = min(texCoord, midCoord - texMinMidCoord); + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_clouds.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_clouds.glsl new file mode 100644 index 0000000..38122b0 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_clouds.glsl @@ -0,0 +1,173 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +#if CLOUD_STYLE_DEFINE == 50 +// We use CLOUD_STYLE_DEFINE instead of CLOUD_STYLE in this file because Optifine can't use generated defines for pipeline stuff + in vec2 texCoord; + + flat in vec3 upVec, sunVec; + + in vec4 glColor; +#endif + +//Uniforms// +#if CLOUD_STYLE_DEFINE == 50 + uniform vec3 skyColor; + + uniform sampler2D tex; + + #ifdef BORDER_FOG + uniform float viewWidth; + uniform float viewHeight; + + uniform mat4 gbufferProjectionInverse; + uniform mat4 gbufferModelViewInverse; + uniform mat4 shadowModelView; + uniform mat4 shadowProjection; + #endif +#endif + +//Pipeline Constants// + +//Common Variables// +#if CLOUD_STYLE_DEFINE == 50 + float SdotU = dot(sunVec, upVec); + float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; + float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; + float sunVisibility2 = sunVisibility * sunVisibility; +#endif + +//Common Functions// + +//Includes// +#if CLOUD_STYLE_DEFINE == 50 + #include "/spookylib/colors/skyColors.glsl" + #include "/spookylib/util/spaceConversion.glsl" + + #if defined TAA && defined BORDER_FOG + #include "/spookylib/util/jitter.glsl" + #endif + + #include "/spookylib/colors/colorMultipliers.glsl" + + #ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" + #endif +#endif + +//spookyprogram// +void main() { + #if CLOUD_STYLE_DEFINE != 50 + discard; + #else + vec4 color = texture2D(tex, texCoord) * glColor; + + vec4 translucentMult = vec4(mix(vec3(0.666), color.rgb * (1.0 - pow2(pow2(color.a))), color.a), 1.0); + + #ifdef OVERWORLD + vec3 cloudLight = mix(vec3(0.8, 1.6, 1.5) * sqrt1(nightFactor), mix(dayDownSkyColor, dayMiddleSkyColor, 0.1), sunFactor); + #if BLOOD_MOON > 0 + cloudLight *= mix(vec3(1.0), vec3(1.0, 0.0, 0.0) * 3.0, getBloodMoon(moonPhase, sunVisibility)); + #endif + color.rgb *= 0.5; + color.rgb *= sqrt(cloudLight) * (1.2 + 0.4 * noonFactor * invRainFactor); + + atmColorMult = GetAtmColorMult(); + color.rgb *= atmColorMult; + #endif + + #ifdef BORDER_FOG + vec3 screenPos = vec3(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z); + #ifdef TAA + vec3 viewPos = ScreenToView(vec3(TAAJitter(screenPos.xy, -0.5), screenPos.z)); + #else + vec3 viewPos = ScreenToView(screenPos); + #endif + vec3 playerPos = ViewToPlayer(viewPos); + + float xzMaxDistance = max(abs(playerPos.x), abs(playerPos.z)); + float cloudDistance = 375.0; + cloudDistance = clamp((cloudDistance - xzMaxDistance) / cloudDistance, 0.0, 1.0); + color.a *= clamp01(cloudDistance * 3.0); + #endif + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + #ifndef LIGHT_COLORING + /* DRAWBUFFERS:013 */ + #else + /* DRAWBUFFERS:018 */ + #endif + gl_FragData[0] = color; + gl_FragData[1] = vec4(0.0, 0.0, 0.0, 1.0); + gl_FragData[2] = vec4(1.0 - translucentMult.rgb, translucentMult.a); + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +#if CLOUD_STYLE_DEFINE == 50 + out vec2 texCoord; + + flat out vec3 upVec, sunVec; + + out vec4 glColor; +#endif + +//Uniforms// +#if CLOUD_STYLE_DEFINE == 50 + uniform mat4 gbufferModelViewInverse; + + #ifdef TAA + uniform float viewWidth, viewHeight; + #endif +#endif + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// +#if CLOUD_STYLE_DEFINE == 50 + #ifdef TAA + #include "/spookylib/util/jitter.glsl" + #endif +#endif + +//spookyprogram// +void main() { + #if CLOUD_STYLE_DEFINE != 50 + gl_Position = vec4(-1.0); + #else + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + glColor = gl_Color; + + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); + + vec4 position = gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex; + position.xz -= vec2(88.0); + gl_Position = gl_ProjectionMatrix * gbufferModelView * position; + + #ifdef TAA + gl_Position.xy = TAAJitter(gl_Position.xy, gl_Position.w); + #endif + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_damagedblock.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_damagedblock.glsl new file mode 100644 index 0000000..3c93f89 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_damagedblock.glsl @@ -0,0 +1,68 @@ +////////////////////////////////// +// Complementary Base by EminGT // +////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +in vec2 texCoord; + +flat in vec4 glColor; + +//Uniforms// +uniform sampler2D tex; + +//Pipeline Constants// + +//Common Variables// + +//Common Functions// + +//Includes// +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + vec4 color = texture2D(tex, texCoord); + color.rgb *= glColor.rgb; + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = color; +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +out vec2 texCoord; + +flat out vec4 glColor; + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + glColor = gl_Color; +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_entities.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_entities.glsl new file mode 100644 index 0000000..b5339c6 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_entities.glsl @@ -0,0 +1,339 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +in vec2 texCoord; +in vec2 lmCoord; + +flat in vec3 upVec, sunVec, northVec, eastVec; +in vec3 normal; + +in vec4 glColor; + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || defined IPBR && defined IS_IRIS + in vec2 signMidCoordPos; + flat in vec2 absMidCoordPos; + flat in vec2 midCoord; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + flat in vec3 binormal, tangent; +#endif + +#ifdef POM + in vec3 viewVector; + + in vec4 vTexCoordAM; +#endif + +//Uniforms// +uniform int isEyeInWater; +uniform int entityId; +uniform int blockEntityId; +uniform int frameCounter; + +uniform float viewWidth; +uniform float viewHeight; +uniform float nightVision; + + +uniform ivec2 atlasSize; + +uniform vec3 skyColor; +uniform vec3 cameraPosition; + +uniform vec4 entityColor; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform sampler2D tex; + + +#ifdef CUSTOM_PBR + uniform sampler2D normals; + uniform sampler2D specular; +#endif + +#ifdef IS_IRIS + uniform int currentRenderedItemId; +#endif + +//Pipeline Constants// + +//Common Variables// +float NdotU = dot(normal, upVec); +float NdotUmax0 = max(NdotU, 0.0); +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; +float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; +float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; +float shadowTime = shadowTimeVar2 * shadowTimeVar2; +float skyLightCheck = 0.0; + +#ifdef OVERWORLD + vec3 lightVec = sunVec * ((timeAngle < 0.5325 || timeAngle > 0.9675) ? 1.0 : -1.0); +#else + vec3 lightVec = sunVec; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); +#endif + +//Common Functions// + +//Includes// +#include "/spookylib/util/dither.glsl" +#include "/spookylib/util/spaceConversion.glsl" +#include "/spookylib/lighting/mainLighting.glsl" + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES + #include "/spookylib/util/miplevel.glsl" +#endif + +#ifdef GENERATED_NORMALS + #include "/spookylib/materials/materialMethods/generatedNormals.glsl" +#endif + +#ifdef COATED_TEXTURES + #include "/spookylib/materials/materialMethods/coatedTextures.glsl" +#endif + +#ifdef CUSTOM_PBR + #include "/spookylib/materials/materialHandling/customMaterials.glsl" +#endif + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + skyLightCheck = pow2(1.0 - min1(lmCoord.y * 2.9 * sunVisibility)); + vec4 color = texture2D(tex, texCoord); + #ifdef GENERATED_NORMALS + vec3 colorP = color.rgb; + #endif + color *= glColor; + + color.rgb = mix(color.rgb, entityColor.rgb, entityColor.a); + + float smoothnessD = 0.0, skyLightFactor = 0.0, materialMask = OSIEBCA * 254.0; // No SSAO, No TAA + vec3 normalM = normal; + + if (color.a > 0.001) { + vec3 screenPos = vec3(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z); + vec3 viewPos = ScreenToView(screenPos); + vec3 nViewPos = normalize(viewPos); + vec3 playerPos = ViewToPlayer(viewPos); + float lViewPos = length(viewPos); + + bool noSmoothLighting = atlasSize.x < 600.0; // To fix fire looking too dim + bool noGeneratedNormals = false; + float smoothnessG = 0.0, highlightMult = 0.0, emission = 0.0, noiseFactor = 0.75; + vec2 lmCoordM = lmCoord; + vec3 shadowMult = vec3(1.0); + #ifdef IPBR + #include "/spookylib/materials/materialHandling/entityMaterials.glsl" + + #ifdef IS_IRIS + vec3 maRecolor = vec3(0.0); + #include "/spookylib/materials/materialHandling/irisMaterials.glsl" + #endif + + #ifdef GENERATED_NORMALS + if (!noGeneratedNormals) GenerateNormals(normalM, colorP); + #endif + + #ifdef COATED_TEXTURES + CoatTextures(color.rgb, noiseFactor, playerPos); + #endif + #else + #ifdef CUSTOM_PBR + GetCustomMaterials(color, normalM, lmCoordM, NdotU, shadowMult, smoothnessG, smoothnessD, highlightMult, emission, materialMask, viewPos, lViewPos); + #endif + + if (entityId == 50004) { // Lightning Bolt + #include "/spookylib/materials/specificMaterials/entities/lightningBolt.glsl" + } else if (entityId == 50008) { // Item Frame, Glow Item Frame + noSmoothLighting = true; + } + #endif + + normalM = gl_FrontFacing ? normalM : -normalM; // Inverted Normal Workaround + + #if BLOOD_MOON > 0 + ambientColor *= mix(vec3(1.0), vec3(1.0, 0.0, 0.0) * 3.0, getBloodMoon(moonPhase, sunVisibility)); + #endif + + DoLighting(color, shadowMult, playerPos, viewPos, lViewPos, normalM, lmCoordM, + noSmoothLighting, false, false, true, + 0, smoothnessG, highlightMult, emission); + + #if defined IPBR && defined IS_IRIS + color.rgb += maRecolor; + #endif + + #if (defined CUSTOM_PBR || defined IPBR && defined IS_IRIS) && defined PBR_REFLECTIONS + #ifdef OVERWORLD + skyLightFactor = pow2(max(lmCoord.y - 0.7, 0.0) * 3.33333); + #else + skyLightFactor = dot(shadowMult, shadowMult) / 3.0; + #endif + #endif + } + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:01 */ + gl_FragData[0] = color; + gl_FragData[1] = vec4(smoothnessD, materialMask, skyLightFactor, 1.0); + + #if BLOCK_REFLECT_QUALITY >= 2 && (RP_MODE >= 2 || defined IS_IRIS) + /* DRAWBUFFERS:015 */ + gl_FragData[2] = vec4(mat3(gbufferModelViewInverse) * normalM, 1.0); + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +out vec2 texCoord; +out vec2 lmCoord; + +flat out vec3 upVec, sunVec, northVec, eastVec; +out vec3 normal; + +out vec4 glColor; + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || defined IPBR && defined IS_IRIS + out vec2 signMidCoordPos; + flat out vec2 absMidCoordPos; + flat out vec2 midCoord; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + flat out vec3 binormal, tangent; +#endif + +#ifdef POM + out vec3 viewVector; + + out vec4 vTexCoordAM; +#endif + +//Uniforms// +#ifdef FLICKERING_FIX + uniform int entityId; + + uniform vec3 cameraPosition; + + uniform mat4 gbufferModelViewInverse; +#endif + +//Attributes// +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || defined IPBR && defined IS_IRIS + attribute vec4 mc_midTexCoord; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + attribute vec4 at_tangent; +#endif + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + lmCoord = GetLightMapCoordinates(); + + lmCoord.x = min(lmCoord.x, 0.9); + //Fixes some servers/mods making entities insanely bright, while also slightly reducing the max blocklight on a normal entity + + glColor = gl_Color; + + normal = normalize(gl_NormalMatrix * gl_Normal); + + upVec = normalize(gbufferModelView[1].xyz); + eastVec = normalize(gbufferModelView[0].xyz); + northVec = normalize(gbufferModelView[2].xyz); + sunVec = GetSunVector(); + + #if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || defined IPBR && defined IS_IRIS + midCoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texMinMidCoord = texCoord - midCoord; + signMidCoordPos = sign(texMinMidCoord); + absMidCoordPos = abs(texMinMidCoord); + #endif + + #if defined GENERATED_NORMALS || defined CUSTOM_PBR + binormal = normalize(gl_NormalMatrix * cross(at_tangent.xyz, gl_Normal.xyz) * at_tangent.w); + tangent = normalize(gl_NormalMatrix * at_tangent.xyz); + #endif + + #ifdef POM + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); + + viewVector = tbnMatrix * (gl_ModelViewMatrix * gl_Vertex).xyz; + + vTexCoordAM.zw = abs(texMinMidCoord) * 2; + vTexCoordAM.xy = min(texCoord, midCoord - texMinMidCoord); + #endif + + #ifdef GBUFFERS_ENTITIES_GLOWING + if (glColor.a > 0.99) gl_Position.z *= 0.01; + #endif + + #ifdef FLICKERING_FIX + if (entityId == 50008 || entityId == 50012) { // Item Frame, Glow Item Frame + if (dot(normal, upVec) > 0.99) { + vec4 position = gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex; + vec3 comPos = fract(position.xyz + cameraPosition); + comPos = abs(comPos - vec3(0.5)); + if ((comPos.y > 0.437 && comPos.y < 0.438) || (comPos.y > 0.468 && comPos.y < 0.469)) { + gl_Position.z += 0.0001; + } + } + if (gl_Normal.y == 1.0) { // Maps + normal = upVec * 2.0; + } + } else if (entityId == 50084) { // Slime + gl_Position.z -= 0.00015; + } + + #ifndef REALTIME_SHADOWS + if (glColor.a < 0.5) gl_Position.z += 0.0005; + #endif + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_hand.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_hand.glsl new file mode 100644 index 0000000..01df36c --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_hand.glsl @@ -0,0 +1,300 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +in vec2 texCoord; +in vec2 lmCoord; + +flat in vec3 upVec, sunVec, northVec, eastVec; +in vec3 normal; + +in vec4 glColor; + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || defined IPBR && defined IS_IRIS + in vec2 signMidCoordPos; + flat in vec2 absMidCoordPos; + flat in vec2 midCoord; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + flat in vec3 binormal, tangent; +#endif + +#ifdef POM + in vec3 viewVector; + + in vec4 vTexCoordAM; +#endif + +//Uniforms// +uniform int isEyeInWater; +uniform int frameCounter; + +uniform float viewWidth; +uniform float viewHeight; +uniform float nightVision; + + +uniform vec3 skyColor; +uniform vec3 cameraPosition; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform sampler2D tex; + + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || defined IPBR && defined IS_IRIS + uniform ivec2 atlasSize; +#endif + +#ifdef CUSTOM_PBR + uniform sampler2D normals; + uniform sampler2D specular; +#endif + +#ifdef POM + uniform int heldItemId; + uniform int heldItemId2; +#endif + +#ifdef IS_IRIS + uniform int currentRenderedItemId; +#endif + +//Pipeline Constants// + +//Common Variables// +float NdotU = dot(normal, vec3(0.0, 1.0, 0.0)); // NdotU is different here to improve held map visibility +float NdotUmax0 = max(NdotU, 0.0); +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; +float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; +float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; +float shadowTime = shadowTimeVar2 * shadowTimeVar2; +float skyLightCheck = 0.0; + +#ifdef OVERWORLD + vec3 lightVec = sunVec * ((timeAngle < 0.5325 || timeAngle > 0.9675) ? 1.0 : -1.0); +#else + vec3 lightVec = sunVec; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); +#endif + +//Common Functions// + +//Includes// +#include "/spookylib/util/spaceConversion.glsl" +#include "/spookylib/lighting/mainLighting.glsl" + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES + #include "/spookylib/util/miplevel.glsl" +#endif + +#ifdef GENERATED_NORMALS + #include "/spookylib/materials/materialMethods/generatedNormals.glsl" +#endif + +#ifdef COATED_TEXTURES + #include "/spookylib/materials/materialMethods/coatedTextures.glsl" +#endif + +#ifdef CUSTOM_PBR + #include "/spookylib/materials/materialHandling/customMaterials.glsl" +#endif + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + skyLightCheck = pow2(1.0 - min1(lmCoord.y * 2.9 * sunVisibility)); + vec4 color = texture2D(tex, texCoord); + + float smoothnessD = 0.0, skyLightFactor = 0.0, materialMask = OSIEBCA * 254.0; // No SSAO, No TAA + vec3 normalM = normal; + if (color.a > 0.00001) { + #ifdef GENERATED_NORMALS + vec3 colorP = color.rgb; + #endif + color.rgb *= glColor.rgb; + + vec3 screenPos = vec3(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z + 0.38); + vec3 viewPos = ScreenToView(screenPos); + vec3 playerPos = ViewToPlayer(viewPos); + + if (color.a < 0.75) materialMask = 0.0; + + bool noSmoothLighting = true, noGeneratedNormals = false; + float smoothnessG = 0.0, highlightMult = 1.0, emission = 0.0, noiseFactor = 0.6; + vec2 lmCoordM = lmCoord; + vec3 shadowMult = vec3(0.4); + #ifdef IPBR + #ifdef IS_IRIS + vec3 maRecolor = vec3(0.0); + #include "/spookylib/materials/materialHandling/irisMaterials.glsl" + #endif + + #ifdef GENERATED_NORMALS + if (!noGeneratedNormals) GenerateNormals(normalM, colorP); + #endif + + #ifdef COATED_TEXTURES + CoatTextures(color.rgb, noiseFactor, playerPos); + #endif + #else + #ifdef CUSTOM_PBR + GetCustomMaterials(color, normalM, lmCoordM, NdotU, shadowMult, smoothnessG, smoothnessD, highlightMult, emission, materialMask, viewPos, 0.0); + #endif + #endif + + #if BLOOD_MOON > 0 + ambientColor *= mix(vec3(1.0), vec3(1.0, 0.0, 0.0) * 3.0, getBloodMoon(moonPhase, sunVisibility)); + #endif + + DoLighting(color, shadowMult, playerPos, viewPos, 0.0, normalM, lmCoordM, + noSmoothLighting, false, false, false, + 0, smoothnessG, highlightMult, emission); + + #if defined IPBR && defined IS_IRIS + color.rgb += maRecolor; + #endif + + #if (defined CUSTOM_PBR || defined IPBR && defined IS_IRIS) && defined PBR_REFLECTIONS + #ifdef OVERWORLD + skyLightFactor = pow2(max(lmCoord.y - 0.7, 0.0) * 3.33333); + #else + skyLightFactor = dot(shadowMult, shadowMult) / 3.0; + #endif + #endif + } + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:01 */ + gl_FragData[0] = color; + gl_FragData[1] = vec4(smoothnessD, materialMask, skyLightFactor, 1.0); + + #if BLOCK_REFLECT_QUALITY >= 2 && (RP_MODE >= 2 || defined IS_IRIS) + /* DRAWBUFFERS:015 */ + gl_FragData[2] = vec4(mat3(gbufferModelViewInverse) * normalM, 1.0); + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +out vec2 texCoord; +out vec2 lmCoord; + +flat out vec3 upVec, sunVec, northVec, eastVec; +out vec3 normal; + +out vec4 glColor; + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || defined IPBR && defined IS_IRIS + out vec2 signMidCoordPos; + flat out vec2 absMidCoordPos; + flat out vec2 midCoord; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + flat out vec3 binormal, tangent; +#endif + +#ifdef POM + out vec3 viewVector; + + out vec4 vTexCoordAM; +#endif + +//Uniforms// +#if HAND_SWAYING > 0 + +#endif + +//Attributes// +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || defined IPBR && defined IS_IRIS + attribute vec4 mc_midTexCoord; +#endif + +#if defined GENERATED_NORMALS || defined CUSTOM_PBR + attribute vec4 at_tangent; +#endif + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + lmCoord = GetLightMapCoordinates(); + + glColor = gl_Color; + + normal = normalize(gl_NormalMatrix * gl_Normal); + + upVec = normalize(gbufferModelView[1].xyz); + eastVec = normalize(gbufferModelView[0].xyz); + northVec = normalize(gbufferModelView[2].xyz); + sunVec = GetSunVector(); + + #if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || defined IPBR && defined IS_IRIS + midCoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texMinMidCoord = texCoord - midCoord; + signMidCoordPos = sign(texMinMidCoord); + absMidCoordPos = abs(texMinMidCoord); + #endif + + #if defined GENERATED_NORMALS || defined CUSTOM_PBR + binormal = normalize(gl_NormalMatrix * cross(at_tangent.xyz, gl_Normal.xyz) * at_tangent.w); + tangent = normalize(gl_NormalMatrix * at_tangent.xyz); + #endif + + #ifdef POM + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); + + viewVector = tbnMatrix * (gl_ModelViewMatrix * gl_Vertex).xyz; + + vTexCoordAM.zw = abs(texMinMidCoord) * 2; + vTexCoordAM.xy = min(texCoord, midCoord - texMinMidCoord); + #endif + + #if HAND_SWAYING > 0 + #include "/spookylib/misc/handSway.glsl" + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_skybasic.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_skybasic.glsl new file mode 100644 index 0000000..110512e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_skybasic.glsl @@ -0,0 +1,224 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +flat in vec3 upVec, sunVec; + +flat in vec4 glColor; + +#ifdef OVERWORLD + flat in float vanillaStars; +#endif + +//Uniforms// +uniform int isEyeInWater; + +uniform float viewWidth, viewHeight; +uniform float blindness; +uniform float darknessFactor; + +uniform vec3 skyColor; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; + +#ifdef CAVE_FOG + uniform vec3 cameraPosition; +#endif + +#if SUN_MOON_STYLE >= 2 + + + uniform mat4 gbufferModelView; + uniform mat4 shadowModelView; + uniform mat4 shadowProjection; + + +#endif + +//Pipeline Constants// + +//Common Variables// +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; +float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; +float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; +float shadowTime = shadowTimeVar2 * shadowTimeVar2; + +//Common Functions// + +//Includes// +#include "/spookylib/util/dither.glsl" + +#ifdef OVERWORLD + #include "/spookylib/atmospherics/sky.glsl" + #include "/spookylib/atmospherics/stars.glsl" +#endif + +#ifdef CAVE_FOG + #include "/spookylib/atmospherics/fog/caveFactor.glsl" +#endif + +#include "/spookylib/colors/colorMultipliers.glsl" + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +#if SUN_MOON_STYLE >= 2 + #include "/spookylib/util/spaceConversion.glsl" +#endif + +//spookyprogram// +void main() { + vec4 color = vec4(glColor.rgb, 1.0); + + #ifdef OVERWORLD + if (vanillaStars < 0.5) { + vec4 screenPos = vec4(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z, 1.0); + vec4 viewPos = gbufferProjectionInverse * (screenPos * 2.0 - 1.0); + viewPos /= viewPos.w; + vec3 nViewPos = normalize(viewPos.xyz); + + float VdotU = dot(nViewPos, upVec); + float VdotS = dot(nViewPos, sunVec); + float dither = Bayer8(gl_FragCoord.xy); + + color.rgb = GetSky(VdotU, VdotS, dither, true, false); + + vec2 starCoord = GetStarCoord(viewPos.xyz, 0.5); + color.rgb += GetStars(starCoord, VdotU, VdotS); + + #if SUN_MOON_STYLE >= 2 + float absVdotS = abs(VdotS); + #if SUN_MOON_STYLE == 2 + float sunSizeFactor1 = 0.9975; + float sunSizeFactor2 = 400.0; + float moonCrescentOffset = 0.0055; + float moonPhaseFactor1 = 2.45; + float moonPhaseFactor2 = 750.0; + #else + float sunSizeFactor1 = 0.9983; + float sunSizeFactor2 = 588.235; + float moonCrescentOffset = 0.0042; + float moonPhaseFactor1 = 2.2; + float moonPhaseFactor2 = 1000.0; + #endif + if (absVdotS > sunSizeFactor1) { + float sunMoonMixer = sqrt1(sunSizeFactor2 * (absVdotS - sunSizeFactor1)) * (1.0 - 0.4 * rainFactor2); + + if (VdotS > 0.0) { + sunMoonMixer = pow2(sunMoonMixer) * GetHorizonFactor(SdotU); + + #ifdef CAVE_FOG + sunMoonMixer *= 1.0 - 0.65 * GetCaveFactor(); + #endif + + color.rgb = mix(color.rgb, vec3(0.9, 0.5, 0.3) * 7.0, sunMoonMixer); + } else { + float horizonFactor = GetHorizonFactor(-SdotU); + sunMoonMixer = max0(sunMoonMixer - 0.25) * 1.33333 * horizonFactor; + + starCoord = GetStarCoord(viewPos.xyz, 1.0) * 0.5 + 0.617; + float moonNoise = texture2D(noisetex, starCoord).g + + texture2D(noisetex, starCoord * 2.5).g * 0.7 + + texture2D(noisetex, starCoord * 5.0).g * 0.5; + moonNoise = max0(moonNoise - 0.75) * 1.7; + vec3 moonColorSpooky = vec3(0.38, 0.4, 0.5); + float moonNoiseIntensity = 1.0; + #if BLOOD_MOON > 0 + moonNoiseIntensity = mix(1.0, 1.5, getBloodMoon(moonPhase, sunVisibility)); + moonColorSpooky = mix(vec3(0.38, 0.4, 0.5), vec3(1.0, 0.0, 0.0), getBloodMoon(moonPhase, sunVisibility)); + #endif + vec3 moonColor = moonColorSpooky * (1.2 - (0.2 + 0.2 * sqrt1(nightFactor)) * moonNoise * moonNoiseIntensity); + + if (moonPhase >= 1) { + float moonPhaseOffset = 0.0; + if (moonPhase != 4) { + moonPhaseOffset = moonCrescentOffset; + moonColor *= 8.5; + } else moonColor *= 10.0; + if (moonPhase > 4) { + moonPhaseOffset = -moonPhaseOffset; + } + + float ang = fract(timeAngle - (0.25 + moonPhaseOffset)); + ang = (ang + (cos(ang * 3.14159265358979) * -0.5 + 0.5 - ang) / 3.0) * 6.28318530717959; + vec2 sunRotationData2 = vec2(cos(sunPathRotation * 0.01745329251994), -sin(sunPathRotation * 0.01745329251994)); + vec3 rawSunVec2 = (gbufferModelView * vec4(vec3(-sin(ang), cos(ang) * sunRotationData2) * 2000.0, 1.0)).xyz; + + float moonPhaseVdosS = dot(nViewPos, normalize(rawSunVec2.xyz)); + + sunMoonMixer *= pow2(1.0 - min1(pow(abs(moonPhaseVdosS), moonPhaseFactor2) * moonPhaseFactor1)); + } else moonColor *= 4.0; + + #ifdef CAVE_FOG + sunMoonMixer *= 1.0 - 0.5 * GetCaveFactor(); + #endif + + color.rgb = mix(color.rgb, moonColor, sunMoonMixer); + } + } + #endif + } else discard; + #endif + + color.rgb *= GetAtmColorMult(); + + if (max(blindness, darknessFactor) > 0.1) color.rgb = vec3(0.0); + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = color; +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +flat out vec3 upVec, sunVec; + +flat out vec4 glColor; + +#ifdef OVERWORLD + flat out float vanillaStars; +#endif + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + glColor = gl_Color; + + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); + + #ifdef OVERWORLD + //Vanilla Star Dedection by Builderb0y + vanillaStars = float(glColor.r == glColor.g && glColor.g == glColor.b && glColor.r > 0.0 && glColor.r < 0.51); + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_skytextured.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_skytextured.glsl new file mode 100644 index 0000000..1deb5a7 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_skytextured.glsl @@ -0,0 +1,158 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +in vec2 texCoord; + +flat in vec4 glColor; + +#ifdef OVERWORLD + flat in vec3 upVec, sunVec; +#endif + +//Uniforms// +uniform int isEyeInWater; + +uniform float viewWidth, viewHeight; + +uniform vec3 skyColor; + +uniform mat4 gbufferProjectionInverse; + +uniform sampler2D tex; + + + +#ifdef CAVE_FOG + uniform vec3 cameraPosition; +#endif + +//Pipeline Constants// + +//Common Variables// +#ifdef OVERWORLD + float SdotU = dot(sunVec, upVec); + float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; + float sunVisibility2 = sunVisibility * sunVisibility; +#endif + +//Common Functions// + +//Includes// +#include "/spookylib/colors/lightAndAmbientColors.glsl" + +#ifdef CAVE_FOG + #include "/spookylib/atmospherics/fog/caveFactor.glsl" +#endif + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + #ifdef OVERWORLD + vec2 tSize = textureSize(tex, 0); + vec4 color = texture2D(tex, texCoord); + color.rgb *= glColor.rgb; + + vec4 screenPos = vec4(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z, 1.0); + vec4 viewPos = gbufferProjectionInverse * (screenPos * 2.0 - 1.0); + viewPos /= viewPos.w; + vec3 nViewPos = normalize(viewPos.xyz); + + float VdotS = dot(nViewPos, sunVec); + float VdotU = dot(nViewPos, upVec); + + if (abs(tSize.y - 264.0) < 248.5) { //tSize.y must range from 16 to 512 + #if SUN_MOON_STYLE >= 2 + discard; + #endif + + if (VdotS > 0.0) { // Sun + color.rgb *= dot(color.rgb, color.rgb) * normalize(lightColor) * 0.5; + color.rgb *= 0.25 + (0.75 - 0.25 * rainFactor) * sunVisibility2; + } else { // Moon + color.rgb *= smoothstep1(min1(length(color.rgb))) * 1.3; + #if BLOOD_MOON > 0 + color.rgb = mix(color.rgb, GetLuminance(color.rgb) * vec3(1.0, 0.0, 0.0) * 1.5, getBloodMoon(moonPhase, sunVisibility)); + #endif + } + + color.rgb *= GetHorizonFactor(VdotU); + + #ifdef CAVE_FOG + color.rgb *= 1.0 - 0.75 * GetCaveFactor(); + #endif + } else { // Custom Sky + #if MC_VERSION >= 11300 + color.rgb *= color.rgb * smoothstep1(sqrt1(max0(VdotU))); + #else + discard; + // Old mc custom skyboxes are weirdly broken, so we discard. + #endif + } + + if (isEyeInWater == 1) color.rgb *= 0.25; + color.a *= mix(1.0, 1.0 - 0.8 * rainFactor, heightRelativeToCloud); + #endif + + #ifdef NETHER + vec4 color = vec4(0.0); + #endif + + #ifdef END + vec4 color = vec4(endSkyColor, 1.0); + #endif + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = color; +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +out vec2 texCoord; + +flat out vec4 glColor; + +#ifdef OVERWORLD + flat out vec3 upVec, sunVec; +#endif + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + glColor = gl_Color; + + #ifdef OVERWORLD + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_spidereyes.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_spidereyes.glsl new file mode 100644 index 0000000..31781ea --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_spidereyes.glsl @@ -0,0 +1,78 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +in vec2 texCoord; + +in vec4 glColor; + +//Uniforms// +uniform sampler2D tex; + +//Pipeline Constants// + +//Common Variables// + +//Common Functions// + +//Includes// +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + vec4 color = texture2D(tex, texCoord) * glColor; + + #ifdef IPBR + if (CheckForColor(color.rgb, vec3(224, 121, 250))) { // Enderman Eye Edges + color.rgb = vec3(0.8, 0.25, 0.8); + } + #endif + + color.rgb = pow1_5(color.rgb); + color.rgb *= pow2(1.0 + color.b + 0.5 * color.g) * 1.5; + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = color; +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +out vec2 texCoord; + +out vec4 glColor; + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + glColor = gl_Color; +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_terrain.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_terrain.glsl new file mode 100644 index 0000000..63e8d05 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_terrain.glsl @@ -0,0 +1,577 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +flat in int mat; + +in vec2 texCoord; +in vec2 lmCoord; +in vec2 signMidCoordPos; +flat in vec2 absMidCoordPos; +flat in vec2 midCoord; +in vec3 blockUV; +in vec3 atMidBlock; + +flat in vec3 upVec, sunVec, northVec, eastVec; +in vec3 normal; + +in vec4 glColorRaw; + +#if RAIN_PUDDLES >= 1 || defined GENERATED_NORMALS || defined CUSTOM_PBR + flat in vec3 binormal, tangent; +#endif + +#ifdef POM + in vec3 viewVector; + + in vec4 vTexCoordAM; +#endif + +//Uniforms// +uniform int isEyeInWater; +uniform int frameCounter; + +uniform float viewWidth; +uniform float viewHeight; +uniform float nightVision; + + +uniform vec3 skyColor; +uniform vec3 cameraPosition; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform sampler2D tex; + + +#if defined IPBR || defined POM + uniform ivec2 atlasSize; +#endif + +#if RAIN_PUDDLES >= 1 + #if RAIN_PUDDLES < 3 + uniform float wetness; + uniform float inRainy; + #else + float wetness = 1.0; + float inRainy = 1.0; + #endif +#endif + +#if SHOW_LIGHT_LEVEL == 1 + uniform int heldItemId; + uniform int heldItemId2; +#endif + +#if HELD_LIGHTING_MODE == 0 && SHOW_LIGHT_LEVEL == 2 + uniform int heldBlockLightValue; + uniform int heldBlockLightValue2; +#endif + +#ifdef CUSTOM_PBR + uniform sampler2D normals; + uniform sampler2D specular; +#endif + +#ifdef LIGHT_COLORING + layout (rgba8) uniform image2D colorimg3; +#endif + +//Pipeline Constants// + +//Common Variables// +float NdotU = dot(normal, upVec); +float NdotUmax0 = max(NdotU, 0.0); +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; +float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; +float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; +float shadowTime = shadowTimeVar2 * shadowTimeVar2; +float skyLightCheck = 0.0; + +vec4 glColor = glColorRaw; + +#ifdef OVERWORLD + vec3 lightVec = sunVec * ((timeAngle < 0.5325 || timeAngle > 0.9675) ? 1.0 : -1.0); +#else + vec3 lightVec = sunVec; +#endif + +#if RAIN_PUDDLES >= 1 || defined GENERATED_NORMALS || defined CUSTOM_PBR + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); +#endif + +//Common Functions// +void DoFoliageColorTweaks(inout vec3 color, inout vec3 shadowMult, inout float snowMinNdotU, float lViewPos) { + float factor = max(80.0 - lViewPos, 0.0); + shadowMult *= 1.0 + 0.004 * noonFactor * factor; + + if (signMidCoordPos.x < 0.0) color.rgb *= 1.08; + else color.rgb *= 0.93; + + #ifdef SNOWY_WORLD + if (glColor.g - glColor.b > 0.01) + snowMinNdotU = min(pow2(pow2(max0(color.g * 2.0 - color.r - color.b))) * 5.0, 0.1); + else + snowMinNdotU = min(pow2(pow2(max0(color.g * 2.0 - color.r - color.b))) * 3.0, 0.1) * 0.25; + #endif +} + +void DoBrightBlockTweaks(vec3 color, float minLight, inout vec3 shadowMult, inout float highlightMult) { + float factor = mix(minLight, 1.0, pow2(pow2(color.r))); + shadowMult = vec3(factor); + highlightMult /= factor; +} + +void DoOceanBlockTweaks(inout float smoothnessD) { + smoothnessD *= max0(lmCoord.y - 0.95) * 20.0; +} + +//Includes// +#include "/spookylib/util/spaceConversion.glsl" +#include "/spookylib/lighting/mainLighting.glsl" + +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES + #include "/spookylib/util/miplevel.glsl" +#endif + +#ifdef GENERATED_NORMALS + #include "/spookylib/materials/materialMethods/generatedNormals.glsl" +#endif + +#ifdef COATED_TEXTURES + #include "/spookylib/materials/materialMethods/coatedTextures.glsl" +#endif + +#ifdef CUSTOM_PBR + #include "/spookylib/materials/materialHandling/customMaterials.glsl" +#endif + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + skyLightCheck = pow2(1.0 - min1(lmCoord.y * 2.9 * sunVisibility)); + vec4 color = texture2D(tex, texCoord); + + float smoothnessD = 0.0, materialMask = 0.0, skyLightFactor = 0.0; + vec3 normalM = normal; + + #if !defined POM || !defined POM_ALLOW_CUTOUT + if (color.a <= 0.00001) discard; + #endif + + vec3 colorP = color.rgb; + color.rgb *= glColor.rgb; + + vec3 screenPos = vec3(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z); + #ifdef TAA + vec3 viewPos = ScreenToView(vec3(TAAJitter(screenPos.xy, -0.5), screenPos.z)); + #else + vec3 viewPos = ScreenToView(screenPos); + #endif + float lViewPos = length(viewPos); + vec3 playerPos = ViewToPlayer(viewPos); + + vec3 worldPos = playerPos + cameraPosition; + + int subsurfaceMode = 0; + bool noSmoothLighting = false, noDirectionalShading = false, noVanillaAO = false, centerShadowBias = false, noGeneratedNormals = false; + float smoothnessG = 0.0, highlightMult = 1.0, emission = 0.0, noiseFactor = 1.0, snowMinNdotU = 0.0, snowFactor = 1.0, noPuddles = 0.0; + vec2 lmCoordM = lmCoord; + vec3 shadowMult = vec3(1.0); + + float lavaNoiseIntensity = 1.0; + + #ifdef EYES + vec3 eyes1 = vec3(0.0); + vec3 eyes2 = vec3(0.0); + float sideRandom = hash13(mod(floor(worldPos + atMidBlock / 64) + frameTimeCounter * 0.00001, vec3(100))); + vec3 blockUVM = blockUV; + if(step(0.5, sideRandom) > 0.0) { // Randomly make eyes visible only on either the x or z axis + blockUVM.x = 0.0; + } else { + blockUVM.z = 0.0; + } + float spookyEyesFrequency = EYE_FREQUENCY; + float spookyEyesSpeed = EYE_SPEED; + + float randomEyesTime = 24000 * hash1(worldDay * 3); // Effect happens randomly throughout the day + int moreEyesEffect = (int(hash1(worldDay / 2)) % (2 * 24000)) + int(randomEyesTime); + if (worldTime > moreEyesEffect && worldTime < moreEyesEffect + 30) { // 30 in ticks - 1.5s, how long the effect will be on + spookyEyesFrequency = 20.0; // make eyes appear everywhere + } + if((blockUVM.x > 0.15 && blockUVM.x < 0.43 || blockUVM.x < 0.85 && blockUVM.x > 0.57 || blockUVM.z > 0.15 && blockUVM.z < 0.43 || blockUVM.z < 0.85 && blockUVM.z > 0.57) && blockUVM.y > 0.42 && blockUVM.y < 0.58 && abs(clamp01(dot(normal, upVec))) < 0.99) eyes1 = vec3(1.0); // Eye Shape 1 Horizontal + if((blockUVM.x > 0.65 && blockUVM.x < 0.8 || blockUVM.x < 0.35 && blockUVM.x > 0.2 || blockUVM.z > 0.65 && blockUVM.z < 0.8 || blockUVM.z < 0.35 && blockUVM.z > 0.2) && blockUVM.y > 0.3 && blockUVM.y < 0.7 && abs(clamp01(dot(normal, upVec))) < 0.99) eyes2 = vec3(1.0); // Eye Shape 2 Vertical + vec3 spookyEyes = mix(eyes1, eyes2, step(0.75, hash13(mod(floor(worldPos + atMidBlock / 64) + frameTimeCounter * 0.00005, vec3(100))))); // have either eye shape 1 or 2 randomly, the horizontal ones have a 0.75 to 0.25 higher probability of appearing + spookyEyes *= vec3(step(1.0075 - spookyEyesFrequency * 0.01, hash13(mod(floor(worldPos + atMidBlock / 64) + frameTimeCounter * 0.0000005 * spookyEyesSpeed, vec3(100))))); // Make them appear randomly and much less + #endif + + #ifdef IPBR + vec3 maRecolor = vec3(0.0); + #include "/spookylib/materials/materialHandling/terrainMaterials.glsl" + + #ifdef GENERATED_NORMALS + if (!noGeneratedNormals) GenerateNormals(normalM, colorP); + #endif + + #ifdef COATED_TEXTURES + CoatTextures(color.rgb, noiseFactor, playerPos); + #endif + #else + #ifdef CUSTOM_PBR + GetCustomMaterials(color, normalM, lmCoordM, NdotU, shadowMult, smoothnessG, smoothnessD, highlightMult, emission, materialMask, viewPos, lViewPos); + #endif + + if (mat == 10000) { // No directional shading + noDirectionalShading = true; + } else if (mat == 10003 || mat == 10004) { // Grounded Waving Foliage + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + DoFoliageColorTweaks(color.rgb, shadowMult, snowMinNdotU, lViewPos); + #ifdef EMISSIVE_BLOOD_MOON_FLOWERS + if (mat == 10003) { // Flowers+ + if (color.b > color.g || color.r * 1.3 > color.g) { + float flowerEmissionMult = 0.0; + if (color.r > max(color.b * 1.15, color.g * 2.5) * 0.95) flowerEmissionMult = 1.0; + emission = 2.0 * flowerEmissionMult; + emission *= skyLightCheck * getBloodMoon(moonPhase, sunVisibility); + } + } + #endif + } else if (mat == 10008) { // Leaves + #include "/spookylib/materials/specificMaterials/terrain/leaves.glsl" + } else if (mat == 10012) { // Vine + shadowMult = vec3(1.7); + centerShadowBias = true; + } else if (mat == 10016) { // Non-waving Foliage + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + } else if (mat == 10020 || mat == 10021) { // Upper Waving Foliage + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + DoFoliageColorTweaks(color.rgb, shadowMult, snowMinNdotU, lViewPos); + #ifdef EMISSIVE_BLOOD_MOON_FLOWERS + if (mat == 10021) { // Flowers Upper+ + if (color.b > color.g || color.r * 1.3 > color.g) { + float flowerEmissionMult = 0.0; + if (color.r > max(color.b * 1.15, color.g * 2.5) * 0.95) flowerEmissionMult = 1.0; + emission = 2.0 * flowerEmissionMult; + emission *= skyLightCheck * getBloodMoon(moonPhase, sunVisibility); + } + } + #endif + } else if (mat == 10744) { // Cobweb + subsurfaceMode = 1, noSmoothLighting = true, noDirectionalShading = true; + centerShadowBias = true; + } else if (mat == 10396){ // Jack o'Lantern + float noiseAdd = hash13(mod(floor(worldPos + atMidBlock / 64) + frameTimeCounter * 0.000001, vec3(100))); + emission *= mix(0.0, 1.0, smoothstep(0.2, 0.9, texture2D(noisetex, vec2(frameTimeCounter * 0.025 + noiseAdd)).r)); + } else if (mat == 10068 || mat == 10069){ // Lava + vec2 lavaPos = (floor(worldPos.xz * 16.0) + worldPos.y * 32.0) * 0.000666; + vec2 wind = vec2(frameTimeCounter * 0.012, 0.0); + lavaNoiseIntensity *= 0.95; + #include "/spookylib/materials/specificMaterials/terrain/lavaNoise.glsl" + color.rgb = max(color.rgb, 0.023); // so black spots still have some textures and aren't fully black, currently not working well, texture still 100% black blob + } + + #ifdef SNOWY_WORLD + else if (mat == 10132) { // Grass Block:Normal + if (glColor.b < 0.999) { // Grass Block:Normal:Grass Part + snowMinNdotU = min(pow2(pow2(color.g)) * 1.9, 0.1); + color.rgb = color.rgb * 0.5 + 0.5 * (color.rgb / glColor.rgb); + } + } + #endif + + #ifdef EMISSIVE_BLOOD_MOON_FLOWERS + else if (mat == 10733) { + if ((color.b > color.g || color.r * 1.3 > color.g) && blockUV.y > 0.4) { + float flowerEmissionMult = 0.0; + if (color.r > max(color.b * 1.15, color.g * 2.5) * 0.95) flowerEmissionMult = 1.0; + emission = 2.0 * flowerEmissionMult; + emission *= skyLightCheck * getBloodMoon(moonPhase, sunVisibility); + } + } + #endif + + else if (lmCoord.x > 0.99999) lmCoordM.x = 0.95; + #endif + + #ifdef SNOWY_WORLD + snowFactor *= 1000.0 * max(NdotU - 0.9, snowMinNdotU) * max0(lmCoord.y - 0.9) * (0.9 - clamp(lmCoord.x, 0.8, 0.9)); + if (snowFactor > 0.0001) { + const float packSizeSW = 16.0; + vec3 worldPos = playerPos + cameraPosition; + vec2 noiseCoord = floor(packSizeSW * worldPos.xz + 0.001) / packSizeSW; + noiseCoord += floor(packSizeSW * worldPos.y + 0.001) / packSizeSW; + float noiseTexture = dot(vec2(0.25, 0.75), texture2D(noisetex, noiseCoord * 0.45).rg); + vec3 snowColor = mix(vec3(0.65, 0.8, 0.85), vec3(1.0, 1.0, 1.0), noiseTexture * 0.75 + 0.125); + + color.rgb = mix(color.rgb, snowColor + color.rgb * emission * 0.2, snowFactor); + smoothnessG = mix(smoothnessG, 0.25 + 0.25 * noiseTexture, snowFactor); + highlightMult = mix(highlightMult, 2.0 - subsurfaceMode * 0.666, snowFactor); + smoothnessD = mix(smoothnessD, 0.0, snowFactor); + emission *= 1.0 - snowFactor * 0.85; + } + #endif + + #if RAIN_PUDDLES >= 1 + float puddleLightFactor = max0(lmCoord.y * 32.0 - 31.0) * clamp((1.0 - 1.15 * lmCoord.x) * 10.0, 0.0, 1.0); + float puddleNormalFactor = pow2(max0(NdotUmax0 - 0.5) * 2.0); + puddleNormalFactor *= mix(0.0, 1.0, heightRelativeToCloud); + float puddleMixer = puddleLightFactor * inRainy * puddleNormalFactor; + if (pow2(pow2(wetness)) * puddleMixer - noPuddles > 0.00001) { + vec2 worldPosXZ = playerPos.xz + cameraPosition.xz; + vec2 puddleWind = vec2(frameTimeCounter) * 0.03; + #if WATER_STYLE == 1 + vec2 puddlePosNormal = floor(worldPosXZ * 16.0) * 0.0625; + #else + vec2 puddlePosNormal = worldPosXZ; + #endif + + puddlePosNormal *= 0.1; + vec2 pNormalCoord1 = puddlePosNormal + vec2(puddleWind.x, puddleWind.y); + vec2 pNormalCoord2 = puddlePosNormal + vec2(puddleWind.x * -1.5, puddleWind.y * -1.0); + vec3 pNormalNoise1 = texture2D(noisetex, pNormalCoord1).rgb; + vec3 pNormalNoise2 = texture2D(noisetex, pNormalCoord2).rgb; + float pNormalMult = 0.03; + + vec3 puddleNormal = vec3((pNormalNoise1.xy + pNormalNoise2.xy - vec2(1.0)) * pNormalMult, 1.0); + puddleNormal = clamp(normalize(puddleNormal * tbnMatrix), vec3(-1.0), vec3(1.0)); + + #if RAIN_PUDDLES == 1 || RAIN_PUDDLES == 3 + vec2 puddlePosForm = puddlePosNormal * 0.05; + float pFormNoise = texture2D(noisetex, puddlePosForm).b * 3.0; + pFormNoise += texture2D(noisetex, puddlePosForm * 0.5).b * 5.0; + pFormNoise += texture2D(noisetex, puddlePosForm * 0.25).b * 8.0; + pFormNoise *= sqrt1(wetness) * 0.5625 + 0.4375; + pFormNoise = clamp(pFormNoise - 7.0, 0.0, 1.0); + #else + float pFormNoise = wetness; + #endif + puddleMixer *= pFormNoise; + + float puddleSmoothnessG = 0.7 - rainFactor * 0.3; + float puddleHighlight = (1.5 - subsurfaceMode * 0.6 * invNoonFactor); + smoothnessG = mix(smoothnessG, puddleSmoothnessG, puddleMixer); + highlightMult = mix(highlightMult, puddleHighlight, puddleMixer); + smoothnessD = mix(smoothnessD, 1.0, sqrt1(puddleMixer)); + normalM = mix(normalM, puddleNormal, puddleMixer * rainFactor); + } + #endif + + #if SHOW_LIGHT_LEVEL > 0 + #include "/spookylib/misc/showLightLevels.glsl" + #endif + + #if BLOOD_MOON > 0 + ambientColor *= mix(vec3(1.0), vec3(1.0, 0.0, 0.0) * 3.0, getBloodMoon(moonPhase, sunVisibility)); + #endif + + if (mat != 10068 && mat != 10069) { // Lava + float noiseAdd = hash13(mod(floor(worldPos + atMidBlock / 64) + frameTimeCounter * 0.000001, vec3(100))); + emission *= mix(clamp(noiseAdd * 1.5, 0.1, 2.0), 1.0, smoothstep(0.1, 0.11, texture2D(noisetex, vec2(frameTimeCounter * 0.008 + noiseAdd)).r)); + } + + DoLighting(color, shadowMult, playerPos, viewPos, lViewPos, normalM, lmCoordM, + noSmoothLighting, noDirectionalShading, noVanillaAO, centerShadowBias, + subsurfaceMode, smoothnessG, highlightMult, emission); + + #ifdef IPBR + color.rgb += maRecolor; + #endif + + #ifdef EYES + vec2 flickerEyeNoise = texture2D(noisetex, vec2(frameTimeCounter * 0.025 + hash13(mod(floor(worldPos + atMidBlock / 64) + frameTimeCounter * 0.000001, vec3(100))))).rb; + if (length(playerPos) > 8.0) { + vec3 eyesColor = mix(vec3(1.0), vec3(3.0, 0.0, 0.0), vec3(step(1.0 - EYE_RED_PROBABILITY * mix(1.0, 2.0, getBloodMoon(moonPhase, sunVisibility)), hash13(mod(floor(worldPos + atMidBlock / 64) + frameTimeCounter * 0.0000002, vec3(500)))))); // Make Red eyes appear rarely, 7% chance + color.rgb += spookyEyes * 3.0 * skyLightCheck * min1(max(flickerEyeNoise.r, flickerEyeNoise.g)) * clamp((1.0 - 1.15 * lmCoord.x) * 10.0, 0.0, 1.0) * eyesColor; + } + #endif + + #ifdef PBR_REFLECTIONS + #ifdef OVERWORLD + skyLightFactor = pow2(max(lmCoord.y - 0.7, 0.0) * 3.33333); + #else + skyLightFactor = dot(shadowMult, shadowMult) / 3.0; + #endif + #endif + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + int seed = worldDay / 2; // Thanks to Bálint + int currTime = (worldDay % 2) * 24000 + worldTime; // Effect happens every 2 minecraft days + float randomTime = 24000 * hash1(worldDay * 5); // Effect happens randomly throughout the day + int timeWhenItHappens = (int(hash1(seed)) % (2 * 24000)) + int(randomTime); + if (currTime > timeWhenItHappens && currTime < timeWhenItHappens + 100) { // 100 in ticks - 5s, how long the effect will be on, aka leaves are gone + if (mat == 10008) discard; // disable leaves + } + + /* DRAWBUFFERS:01 */ + gl_FragData[0] = color; + gl_FragData[1] = vec4(smoothnessD, materialMask, skyLightFactor, 1.0); + + #if BLOCK_REFLECT_QUALITY >= 2 && RP_MODE != 0 + /* DRAWBUFFERS:015 */ + gl_FragData[2] = vec4(mat3(gbufferModelViewInverse) * normalM, 1.0); + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +flat out int mat; + +out vec2 texCoord; +out vec2 lmCoord; +out vec2 signMidCoordPos; +flat out vec2 absMidCoordPos; +flat out vec2 midCoord; +out vec3 blockUV; // useful to hardcode something to a specific pixel coordinate of a block +out vec3 atMidBlock; + +flat out vec3 upVec, sunVec, northVec, eastVec; +out vec3 normal; + +out vec4 glColorRaw; + +#if RAIN_PUDDLES >= 1 || defined GENERATED_NORMALS || defined CUSTOM_PBR + flat out vec3 binormal, tangent; +#endif + +#ifdef POM + out vec3 viewVector; + + out vec4 vTexCoordAM; +#endif + +//Uniforms// +#ifdef TAA + uniform float viewWidth, viewHeight; +#endif + +#ifdef WAVING_ANYTHING_TERRAIN + + + uniform vec3 cameraPosition; + + uniform mat4 gbufferModelViewInverse; +#endif + +//Attributes// +attribute vec4 mc_Entity; +attribute vec4 mc_midTexCoord; +attribute vec3 at_midBlock; + +#if RAIN_PUDDLES >= 1 || defined GENERATED_NORMALS || defined CUSTOM_PBR + attribute vec4 at_tangent; +#endif + +//Common Variables// +vec4 glColor = vec4(1.0); + +//Common Functions// + +//Includes// +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +#ifdef WAVING_ANYTHING_TERRAIN + #include "/spookylib/materials/materialMethods/wavingBlocks.glsl" +#endif + +//spookyprogram// +void main() { + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + lmCoord = GetLightMapCoordinates(); + blockUV = 0.5 - at_midBlock / 64.0; + atMidBlock = at_midBlock; + + glColorRaw = gl_Color; + if (glColorRaw.a < 0.1) glColorRaw.a = 1.0; + glColor = glColorRaw; + + normal = normalize(gl_NormalMatrix * gl_Normal); + upVec = normalize(gbufferModelView[1].xyz); + eastVec = normalize(gbufferModelView[0].xyz); + northVec = normalize(gbufferModelView[2].xyz); + sunVec = GetSunVector(); + + midCoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texMinMidCoord = texCoord - midCoord; + signMidCoordPos = sign(texMinMidCoord); + absMidCoordPos = abs(texMinMidCoord); + + mat = int(mc_Entity.x + 0.5); + + #ifdef WAVING_ANYTHING_TERRAIN + vec4 position = gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex; + + DoWave(position.xyz, mat); + + #ifdef FLICKERING_FIX + //position.y += max0(0.002 - abs(mat - 10256.0)); // Iron Bars + #endif + + gl_Position = gl_ProjectionMatrix * gbufferModelView * position; + #else + gl_Position = ftransform(); + + #ifndef WAVING_LAVA + // G8FL735 Fixes Optifine-Iris parity. Optifine has 0.9 gl_Color.rgb on a lot of versions + glColorRaw.rgb = min(glColorRaw.rgb, vec3(0.9)); + #endif + + #ifdef FLICKERING_FIX + //if (mat == 10256) gl_Position.z -= 0.00001; // Iron Bars + #endif + #endif + + #ifdef TAA + gl_Position.xy = TAAJitter(gl_Position.xy, gl_Position.w); + #endif + + #if RAIN_PUDDLES >= 1 || defined GENERATED_NORMALS || defined CUSTOM_PBR + binormal = normalize(gl_NormalMatrix * cross(at_tangent.xyz, gl_Normal.xyz) * at_tangent.w); + tangent = normalize(gl_NormalMatrix * at_tangent.xyz); + #endif + + #ifdef POM + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); + + viewVector = tbnMatrix * (gl_ModelViewMatrix * gl_Vertex).xyz; + + vTexCoordAM.zw = abs(texMinMidCoord) * 2; + vTexCoordAM.xy = min(texCoord, midCoord - texMinMidCoord); + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_textured.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_textured.glsl new file mode 100644 index 0000000..1bae756 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_textured.glsl @@ -0,0 +1,273 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +in vec2 texCoord; +in vec2 lmCoord; + +flat in vec3 upVec, sunVec; +in vec3 normal; + +flat in vec4 glColor; + +#ifdef CLOUD_SHADOWS + flat in vec3 eastVec; + + #if SUN_ANGLE != 0 + flat in vec3 northVec; + #endif +#endif + +//Uniforms// +uniform int isEyeInWater; +uniform int frameCounter; + +uniform float far; +uniform float viewWidth; +uniform float viewHeight; +uniform float nightVision; + +uniform float blindness; +uniform float darknessFactor; + +uniform ivec2 atlasSize; + +uniform vec3 skyColor; +uniform vec3 cameraPosition; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform sampler2D tex; + + +#ifdef VL_CLOUDS_ACTIVE + uniform sampler2D gaux1; +#endif + +//Pipeline Constants// + +//Common Variables// +float NdotU = dot(normal, upVec); +float NdotUmax0 = max(NdotU, 0.0); +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; +float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; +float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; +float shadowTime = shadowTimeVar2 * shadowTimeVar2; + +#ifdef OVERWORLD + vec3 lightVec = sunVec * ((timeAngle < 0.5325 || timeAngle > 0.9675) ? 1.0 : -1.0); +#else + vec3 lightVec = sunVec; +#endif + +//Common Functions// + +//Includes// +#include "/spookylib/util/spaceConversion.glsl" +#include "/spookylib/lighting/mainLighting.glsl" +#include "/spookylib/util/dither.glsl" + +#if MC_VERSION >= 11500 + #include "/spookylib/atmospherics/fog/mainFog.glsl" +#endif + +#include "/spookylib/colors/colorMultipliers.glsl" + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + vec4 color = texture2D(tex, texCoord); + vec4 colorP = color; + color *= glColor; + + vec3 screenPos = vec3(gl_FragCoord.xy / vec2(viewWidth, viewHeight), gl_FragCoord.z); + vec3 viewPos = ScreenToView(screenPos); + float lViewPos = length(viewPos); + vec3 playerPos = ViewToPlayer(viewPos); + + float dither = Bayer64(gl_FragCoord.xy); + #ifdef TAA + dither = fract(dither + 1.61803398875 * mod(float(frameCounter), 3600.0)); + #endif + + atmColorMult = GetAtmColorMult(); + + #ifdef REDUCE_CLOSE_PARTICLES + if (lViewPos - dither - 1.0 < 0.0) discard; + #endif + + #ifdef VL_CLOUDS_ACTIVE + float cloudLinearDepth = texelFetch(gaux1, texelCoord, 0).r; + + if (cloudLinearDepth > 0.0) // Because Iris changes the pipeline position of opaque particles + if (pow2(cloudLinearDepth + OSIEBCA * dither) * far < min(lViewPos, far)) discard; + #endif + + float emission = 0.0, materialMask = OSIEBCA * 254.0; // No SSAO, No TAA + vec2 lmCoordM = lmCoord; + vec3 shadowMult = vec3(1.0); + #ifdef IPBR + if (atlasSize.x < 900.0) { // We don't want to detect particles from the block atlas + if (color.b > 1.15 * (color.r + color.g) && color.g > color.r * 1.25 && color.g < 0.425 && color.b > 0.75) { // Water Particle + color.rgb = sqrt3(color.rgb) * 0.45; + if (cameraPosition.y > maximumCloudsHeight) discard; + #ifdef OVERWORLD + } else if (color.b > 0.7 && color.r < 0.28 && color.g < 0.425 && color.g > color.r * 1.4){ // physics mod rain + if (color.a < 0.1 || isEyeInWater == 3) discard; + if (cameraPosition.y > maximumCloudsHeight) discard; + color.a *= rainTexOpacity; + color.rgb = sqrt2(color.rgb) * (blocklightCol * 2.0 * lmCoord.x + ambientColor * lmCoord.y * (0.7 + 0.35 * sunFactor)); + } else if (color.rgb == vec3(1.0) && color.a < 0.765 && color.a > 0.605) { // physics mod snow (default snow opacity only) + if (color.a < 0.1 || isEyeInWater == 3) discard; + if (cameraPosition.y > maximumCloudsHeight) discard; + color.a *= snowTexOpacity; + color.rgb = sqrt2(color.rgb) * (blocklightCol * 2.0 * lmCoord.x + lmCoord.y * (0.7 + 0.35 * sunFactor) + ambientColor * 0.2); + #endif + } else if (color.r == color.g && color.r - 0.5 * color.b < 0.06) { // Underwater Particle + if (isEyeInWater == 1) { + color.rgb = sqrt2(color.rgb) * 0.35; + if (fract(playerPos.y + cameraPosition.y) > 0.25) discard; + } + } else if (color.a < 0.99 && dot(color.rgb, color.rgb) < 1.0) { // Campfire Smoke + color.a *= 0.5; + materialMask = 0.0; + } else if (max(abs(colorP.r - colorP.b), abs(colorP.b - colorP.g)) < 0.001) { // Grayscale Particles + float dotColor = dot(color.rgb, color.rgb); + if (dotColor > 0.25 && color.g < 0.5 && (color.b > color.r * 1.1 && color.r > 0.3 || color.r > (color.g + color.b) * 3.0)) { + // Ender Particle, Crying Obsidian Particle, Redstone Particle + emission = clamp(color.r * 8.0, 1.6, 5.0); + color.rgb = pow1_5(color.rgb); + lmCoordM = vec2(0.0); + } else if (color.r > 0.83 && color.g > 0.23 && color.b < 0.4) { + // Lava Particles + emission = 2.0; + color.b *= 0.5; + color.r *= 1.2; + } + } + //color.rgb = vec3(fract(float(frameCounter) * 0.01), fract(float(frameCounter) * 0.015), fract(float(frameCounter) * 0.02)); + } + bool noSmoothLighting = false; + #else + if (atlasSize.x < 900.0){ + if (color.b > 1.15 * (color.r + color.g) && color.g > color.r * 1.25 && color.g < 0.425 && color.b > 0.75) { // Water Particle + if (cameraPosition.y > maximumCloudsHeight) discard; + } + if (color.b > 0.7 && color.r < 0.28 && color.g < 0.425 && color.g > color.r * 1.4){ // physics mod rain + if (cameraPosition.y > maximumCloudsHeight) discard; + if (color.a < 0.1 || isEyeInWater == 3) discard; + color.a *= rainTexOpacity; + color.rgb = sqrt2(color.rgb) * (blocklightCol * 2.0 * lmCoord.x + ambientColor * lmCoord.y * (0.7 + 0.35 * sunFactor)); + } else if (color.rgb == vec3(1.0) && color.a < 0.765 && color.a > 0.605) { // physics mod snow (default snow opacity only) + if (cameraPosition.y > maximumCloudsHeight) discard; + if (color.a < 0.1 || isEyeInWater == 3) discard; + color.a *= snowTexOpacity; + color.rgb = sqrt2(color.rgb) * (blocklightCol * 2.0 * lmCoord.x + lmCoord.y * (0.7 + 0.35 * sunFactor) + ambientColor * 0.2); + } + } + bool noSmoothLighting = true; + #endif + + #if BLOOD_MOON > 0 + ambientColor *= mix(vec3(1.0), vec3(1.0, 0.0, 0.0) * 3.0, getBloodMoon(moonPhase, sunVisibility)); + #endif + + DoLighting(color, shadowMult, playerPos, viewPos, lViewPos, normal, lmCoordM, + noSmoothLighting, false, true, false, + 0, 0.0, 1.0, emission); + + #if MC_VERSION >= 11500 + vec3 nViewPos = normalize(viewPos); + + float VdotU = dot(nViewPos, upVec); + float VdotS = dot(nViewPos, sunVec); + float sky = 0.0; + + DoFog(color.rgb, sky, lViewPos, playerPos, VdotU, VdotS, dither); + #endif + + vec3 translucentMult = mix(vec3(0.666), color.rgb * (1.0 - pow2(pow2(color.a))), color.a); + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:013 */ + gl_FragData[0] = color; + gl_FragData[1] = vec4(0.0, materialMask, 0.0, 1.0); + gl_FragData[2] = vec4(1.0 - translucentMult, 1.0); +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +out vec2 texCoord; +out vec2 lmCoord; + +flat out vec3 upVec, sunVec; +out vec3 normal; + +flat out vec4 glColor; + +#ifdef CLOUD_SHADOWS + flat out vec3 eastVec; + + #if SUN_ANGLE != 0 + flat out vec3 northVec; + #endif +#endif + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + gl_Position = ftransform(); + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + lmCoord = GetLightMapCoordinates(); + + glColor = gl_Color; + + normal = normalize(gl_NormalMatrix * gl_Normal); + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); + + #ifdef FLICKERING_FIX + gl_Position.z -= 0.000002; + #endif + + #ifdef CLOUD_SHADOWS + eastVec = normalize(gbufferModelView[0].xyz); + + #if SUN_ANGLE != 0 + northVec = normalize(gbufferModelView[2].xyz); + #endif + #endif +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_water.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_water.glsl new file mode 100644 index 0000000..fb96201 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_water.glsl @@ -0,0 +1,478 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +flat in int mat; + +in vec2 texCoord; +in vec2 lmCoord; + +flat in vec3 upVec, sunVec, northVec, eastVec; +in vec3 normal; +in vec3 viewVector; + +in vec4 glColor; + +#if WATER_STYLE >= 2 || RAIN_PUDDLES >= 1 && WATER_STYLE == 1 && WATER_QUALITY >= 2 || defined GENERATED_NORMALS || defined CUSTOM_PBR + flat in vec3 binormal, tangent; +#endif + +#if WATER_STYLE >= 2 || defined FANCY_NETHERPORTAL || defined GENERATED_NORMALS || defined POM + in vec2 signMidCoordPos; + flat in vec2 absMidCoordPos; +#endif + +#ifdef POM + in vec4 vTexCoordAM; +#endif + +//Uniforms// +uniform int isEyeInWater; +uniform int frameCounter; + +uniform float near; +uniform float far; +uniform float nightVision; +uniform float blindness; +uniform float darknessFactor; + + +uniform vec3 skyColor; +uniform vec3 cameraPosition; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; +uniform float viewWidth; +uniform float viewHeight; +uniform float aspectRatio; + +uniform sampler2D tex; + + +#if WATER_STYLE >= 2 + uniform sampler2D gaux4; +#endif + +#ifdef VL_CLOUDS_ACTIVE + uniform sampler2D gaux1; +#endif + +#if WATER_QUALITY >= 2 || WATER_REFLECT_QUALITY >= 1 + uniform sampler2D depthtex1; +#endif + +#if WATER_REFLECT_QUALITY >= 1 || defined FANCY_NETHERPORTAL + uniform mat4 gbufferProjection; +#endif + +#if WATER_REFLECT_QUALITY >= 1 + uniform sampler2D gaux2; +#endif + +#if RAIN_PUDDLES >= 1 + #if RAIN_PUDDLES < 3 + uniform float inRainy; + #else + float inRainy = 1.0; + #endif +#endif + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || defined POM || WATER_STYLE >= 2 + uniform ivec2 atlasSize; +#endif + +#ifdef CUSTOM_PBR + uniform sampler2D normals; + uniform sampler2D specular; +#endif + +//Pipeline Constants// + +//Common Variables// +float NdotU = dot(normal, upVec); +float NdotUmax0 = max(NdotU, 0.0); +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; +float shadowTimeVar1 = abs(sunVisibility - 0.5) * 2.0; +float shadowTimeVar2 = shadowTimeVar1 * shadowTimeVar1; +float shadowTime = shadowTimeVar2 * shadowTimeVar2; + +#ifdef OVERWORLD + vec3 lightVec = sunVec * ((timeAngle < 0.5325 || timeAngle > 0.9675) ? 1.0 : -1.0); +#else + vec3 lightVec = sunVec; +#endif + +#if WATER_STYLE >= 2 || RAIN_PUDDLES >= 1 && WATER_STYLE == 1 && WATER_QUALITY >= 2 || defined GENERATED_NORMALS || defined CUSTOM_PBR + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); +#endif + +//Common Functions// +float GetLinearDepth(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); +} + +//Includes// +#include "/spookylib/util/dither.glsl" +#include "/spookylib/util/spaceConversion.glsl" +#include "/spookylib/lighting/mainLighting.glsl" +#include "/spookylib/atmospherics/fog/mainFog.glsl" + +#ifdef OVERWORLD + #include "/spookylib/atmospherics/sky.glsl" +#endif + +#if WATER_REFLECT_QUALITY >= 2 + #include "/spookylib/materials/materialMethods/reflections.glsl" +#endif + +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +#if defined GENERATED_NORMALS || defined COATED_TEXTURES || WATER_STYLE >= 2 + #include "/spookylib/util/miplevel.glsl" +#endif + +#ifdef GENERATED_NORMALS + #include "/spookylib/materials/materialMethods/generatedNormals.glsl" +#endif + +#ifdef CUSTOM_PBR + #include "/spookylib/materials/materialHandling/customMaterials.glsl" +#endif + +#include "/spookylib/colors/colorMultipliers.glsl" + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + vec4 colorP = texture2D(tex, texCoord); + vec4 color = colorP * vec4(glColor.rgb, 1.0); + + vec2 screenCoord = gl_FragCoord.xy / vec2(viewWidth, viewHeight); + vec3 screenPos = vec3(screenCoord, gl_FragCoord.z); + #ifdef TAA + vec3 viewPos = ScreenToView(vec3(TAAJitter(screenPos.xy, -0.5), screenPos.z)); + #else + vec3 viewPos = ScreenToView(screenPos); + #endif + float lViewPos = length(viewPos); + + float dither = Bayer64(gl_FragCoord.xy); + #ifdef TAA + dither = fract(dither + 1.61803398875 * mod(float(frameCounter), 3600.0)); + #endif + + #ifdef LIGHT_COLOR_MULTS + lightColorMult = GetLightColorMult(); + #endif + atmColorMult = GetAtmColorMult(); + + #ifdef VL_CLOUDS_ACTIVE + float cloudLinearDepth = texelFetch(gaux1, texelCoord, 0).r; + + if (pow2(cloudLinearDepth + OSIEBCA * dither) * far < min(lViewPos, far)) discard; + #endif + + #if WATER_QUALITY >= 3 + float materialMask = 0.0; + #endif + + vec3 nViewPos = normalize(viewPos); + vec3 playerPos = ViewToPlayer(viewPos); + float VdotU = dot(nViewPos, upVec); + float VdotS = dot(nViewPos, sunVec); + float VdotN = dot(nViewPos, normal); + + // Materials + vec4 translucentMult = vec4(1.0); + bool noSmoothLighting = false, noDirectionalShading = false, translucentMultCalculated = false; + #ifdef GENERATED_NORMALS + bool noGeneratedNormals = false; + #endif + int subsurfaceMode = 0; + float smoothnessG = 0.0, highlightMult = 1.0, reflectMult = 0.0, emission = 0.0; + vec2 lmCoordM = lmCoord; + vec3 normalM = VdotN > 0.0 ? -normal : normal; // Inverted Iris Water Normal Workaround + vec3 geoNormal = normalM; + vec3 shadowMult = vec3(1.0); + float fresnel = clamp(1.0 + dot(normalM, nViewPos), 0.0, 1.0); + #ifdef IPBR + #include "/spookylib/materials/materialHandling/translucentMaterials.glsl" + + #ifdef GENERATED_NORMALS + if (!noGeneratedNormals) GenerateNormals(normalM, colorP.rgb * colorP.a * 1.5); + #endif + #else + #ifdef CUSTOM_PBR + float smoothnessD, materialMaskPh; + GetCustomMaterials(color, normalM, lmCoordM, NdotU, shadowMult, smoothnessG, smoothnessD, highlightMult, emission, materialMaskPh, viewPos, lViewPos); + reflectMult = smoothnessD; + #endif + + if (mat == 31000) { // Water + #include "/spookylib/materials/specificMaterials/translucents/water.glsl" + } else if (mat == 30020) { // Nether Portal + #ifdef FANCY_NETHERPORTAL + #include "/spookylib/materials/specificMaterials/translucents/netherPortal.glsl" + #endif + } + #endif + + // Blending + if (!translucentMultCalculated) + translucentMult = vec4(mix(vec3(0.666), color.rgb * (1.0 - pow2(pow2(color.a))), color.a), 1.0); + + translucentMult.rgb = mix(translucentMult.rgb, vec3(1.0), min1(pow2(pow2(lViewPos / far)))); + + #if BLOOD_MOON > 0 + ambientColor *= mix(vec3(1.0), vec3(1.0, 0.0, 0.0) * 3.0, getBloodMoon(moonPhase, sunVisibility)); + #endif + + // Lighting + DoLighting(color, shadowMult, playerPos, viewPos, lViewPos, normalM, lmCoordM, + noSmoothLighting, noDirectionalShading, false, false, + subsurfaceMode, smoothnessG, highlightMult, emission); + + // Reflections + #if WATER_REFLECT_QUALITY > 0 + #ifdef LIGHT_COLOR_MULTS + highlightColor *= lightColorMult; + #endif + #ifdef MOON_PHASE_INF_REFLECTION + highlightColor *= pow2(moonPhaseInfluence); + #endif + + highlightColor *= 0.3; + + float fresnelM = (pow2(pow2(fresnel)) * 0.85 + 0.15) * reflectMult; + + float skyLightFactor = pow2(max(lmCoordM.y - 0.7, 0.0) * 3.33333); + + #if WATER_REFLECT_QUALITY >= 2 + #if defined REALTIME_SHADOWS && WATER_QUALITY >= 2 + skyLightFactor = max(skyLightFactor, min1(dot(shadowMult, shadowMult))); + #endif + + vec4 reflection = GetReflection(normalM, viewPos.xyz, nViewPos, playerPos, lViewPos, -1.0, + depthtex1, dither, skyLightFactor, fresnel, + smoothnessG, geoNormal, color.rgb, shadowMult, highlightMult); + + color.rgb = mix(color.rgb, reflection.rgb, fresnelM); + #elif WATER_REFLECT_QUALITY == 1 + #ifdef OVERWORLD + vec4 reflection = vec4(0.0); + + vec3 normalMR = normalM; + #ifdef GENERATED_NORMALS + normalMR = mix(geoNormal, normalM, 0.05); + #endif + vec3 nViewPosR = reflect(nViewPos, normalMR); + float RVdotU = dot(normalize(nViewPosR), upVec); + float RVdotS = dot(normalize(nViewPosR), sunVec); + + vec4 clipPosR = gbufferProjection * vec4(nViewPosR + 0.013 * viewPos, 1.0); + vec3 screenPosR = clipPosR.xyz / clipPosR.w * 0.5 + 0.5; + + vec2 rEdge = vec2(0.6, 0.53); + vec2 screenPosRM = abs(screenPosR.xy - 0.5); + + if (screenPosRM.x < rEdge.x && screenPosRM.y < rEdge.y) { + vec2 edgeFactor = pow2(pow2(pow2(screenPosRM / rEdge))); + screenPosR.y += (dither - 0.5) * (0.03 * (edgeFactor.x + edgeFactor.y) + 0.004); + + screenPosR.z = texture2D(depthtex1, screenPosR.xy).x; + vec3 viewPosR = ScreenToView(screenPosR); + if (lViewPos <= 2.0 + length(viewPosR)) { + reflection = texture2D(gaux2, screenPosR.xy); + reflection.rgb = pow2(reflection.rgb + 1.0); + } + + edgeFactor.x = pow2(edgeFactor.x); + edgeFactor = 1.0 - edgeFactor; + reflection.a *= edgeFactor.x * edgeFactor.y; + } + + reflection.a *= reflection.a; + reflection.a *= clamp01((dot(nViewPos, nViewPosR) - 0.45) * 10.0); // Fixes perpendicular ref + + if (reflection.a < 1.0) { + vec3 skyReflection = GetLowQualitySky(RVdotU, RVdotS, dither, true, true); + skyReflection = mix(color.rgb * 0.5, skyReflection, skyLightFactor); + + skyReflection *= atmColorMult; + + reflection.rgb = mix(skyReflection, reflection.rgb, reflection.a); + } + + color.rgb = mix(color.rgb, reflection.rgb, fresnelM); + #endif + #endif + #endif + //// + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + float sky = 0.0; + DoFog(color.rgb, sky, lViewPos, playerPos, VdotU, VdotS, dither); + color.a *= 1.0 - sky; + + #ifndef LIGHT_COLORING + /* DRAWBUFFERS:03 */ + #else + /* DRAWBUFFERS:08 */ + #endif + gl_FragData[0] = color; + gl_FragData[1] = vec4(1.0 - translucentMult.rgb, translucentMult.a); + + #if WATER_QUALITY >= 3 + #ifndef LIGHT_COLORING + /* DRAWBUFFERS:031 */ + #else + /* DRAWBUFFERS:081 */ + #endif + gl_FragData[2] = vec4(0.0, materialMask, 0.0, 1.0); + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +flat out int mat; + +out vec2 texCoord; +out vec2 lmCoord; + +flat out vec3 upVec, sunVec, northVec, eastVec; +out vec3 normal; +out vec3 viewVector; + +out vec4 glColor; + +#if WATER_STYLE >= 2 || RAIN_PUDDLES >= 1 && WATER_STYLE == 1 && WATER_QUALITY >= 2 || defined GENERATED_NORMALS || defined CUSTOM_PBR + flat out vec3 binormal, tangent; +#endif + +#if WATER_STYLE >= 2 || defined FANCY_NETHERPORTAL || defined GENERATED_NORMALS || defined POM + out vec2 signMidCoordPos; + flat out vec2 absMidCoordPos; +#endif + +#ifdef POM + out vec4 vTexCoordAM; +#endif + +//Uniforms// +#ifdef TAA + uniform float viewWidth, viewHeight; +#endif + +#ifdef WAVING_WATER_VERTEX + + + uniform vec3 cameraPosition; + + uniform mat4 gbufferModelViewInverse; +#endif + +//Attributes// +attribute vec4 mc_Entity; +attribute vec4 mc_midTexCoord; +attribute vec4 at_tangent; + +//Common Variables// + +//Common Functions// + +//Includes// +#ifdef TAA + #include "/spookylib/util/jitter.glsl" +#endif + +#ifdef WAVING_WATER_VERTEX + #include "/spookylib/materials/materialMethods/wavingBlocks.glsl" +#endif + +//spookyprogram// +void main() { + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + lmCoord = GetLightMapCoordinates(); + + glColor = gl_Color; + + mat = int(mc_Entity.x + 0.5); + + #ifdef WAVING_WATER_VERTEX + vec4 position = gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex; + + DoWave(position.xyz, mat); + + gl_Position = gl_ProjectionMatrix * gbufferModelView * position; + #else + gl_Position = ftransform(); + #endif + + #ifdef TAA + gl_Position.xy = TAAJitter(gl_Position.xy, gl_Position.w); + #endif + + normal = normalize(gl_NormalMatrix * gl_Normal); + upVec = normalize(gbufferModelView[1].xyz); + eastVec = normalize(gbufferModelView[0].xyz); + northVec = normalize(gbufferModelView[2].xyz); + sunVec = GetSunVector(); + + #if WATER_STYLE >= 2 || RAIN_PUDDLES >= 1 && WATER_STYLE == 1 && WATER_QUALITY >= 2 || defined GENERATED_NORMALS || defined CUSTOM_PBR + binormal = normalize(gl_NormalMatrix * cross(at_tangent.xyz, gl_Normal.xyz) * at_tangent.w); + tangent = normalize(gl_NormalMatrix * at_tangent.xyz); + #else + vec3 binormal = normalize(gl_NormalMatrix * cross(at_tangent.xyz, gl_Normal.xyz) * at_tangent.w); + vec3 tangent = normalize(gl_NormalMatrix * at_tangent.xyz); + #endif + + mat3 tbnMatrix = mat3( + tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z + ); + + viewVector = tbnMatrix * (gl_ModelViewMatrix * gl_Vertex).xyz; + + #if WATER_STYLE >= 2 || defined FANCY_NETHERPORTAL || defined GENERATED_NORMALS || defined POM + vec2 midCoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texMinMidCoord = texCoord - midCoord; + signMidCoordPos = sign(texMinMidCoord); + absMidCoordPos = abs(texMinMidCoord); + + #ifdef POM + vTexCoordAM.zw = abs(texMinMidCoord) * 2; + vTexCoordAM.xy = min(texCoord, midCoord - texMinMidCoord); + #endif + #endif + + gl_Position.z -= 0.0001; +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_weather.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_weather.glsl new file mode 100644 index 0000000..e137a91 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/gbuffers_weather.glsl @@ -0,0 +1,110 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +flat in vec2 lmCoord; +in vec2 texCoord; + +flat in vec3 upVec, sunVec; + +flat in vec4 glColor; + +//Uniforms// +uniform int isEyeInWater; + +uniform vec3 skyColor; + +uniform sampler2D tex; + +uniform vec3 cameraPosition; + +//Pipeline Constants// + +//Common Variables// +float SdotU = dot(sunVec, upVec); +float sunFactor = SdotU < 0.0 ? clamp(SdotU + 0.375, 0.0, 0.75) / 0.75 : clamp(SdotU + 0.03125, 0.0, 0.0625) / 0.0625; +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; +float sunVisibility2 = sunVisibility * sunVisibility; + +//Common Functions// + +//Includes// +#include "/spookylib/colors/lightAndAmbientColors.glsl" + +#ifdef COLOR_CODED_PROGRAMS + #include "/spookylib/misc/colorCodedPrograms.glsl" +#endif + +//spookyprogram// +void main() { + vec4 color = texture2D(tex, texCoord); + color *= glColor; + + if (color.a < 0.1 || isEyeInWater == 3) discard; + + if (cameraPosition.y > maximumCloudsHeight) discard; + + if (color.r + color.g < 1.5) color.a *= rainTexOpacity; + else color.a *= snowTexOpacity; + + color.rgb = sqrt3(color.rgb) * (blocklightCol * 2.0 * lmCoord.x + (ambientColor + 0.2 * lightColor) * lmCoord.y * (0.6 + 0.3 * sunFactor)); + + #ifdef COLOR_CODED_PROGRAMS + ColorCodeProgram(color); + #endif + + /* DRAWBUFFERS:0 */ + gl_FragData[0] = color; +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +flat out vec2 lmCoord; +out vec2 texCoord; + +flat out vec3 upVec, sunVec; + +flat out vec4 glColor; + +//Uniforms// + + +uniform mat4 gbufferModelViewInverse; + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + vec4 position = gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex; + glColor = gl_Color; + + #ifdef WAVING_RAIN + position.xz += (0.4 * position.y + 0.2) * vec2(sin(frameTimeCounter * 0.3) + 0.5, sin(frameTimeCounter * 0.5) * 0.5); + position.xz *= 1.0 - 0.08 * position.y; + #endif + + gl_Position = gl_ProjectionMatrix * gbufferModelView * position; + + texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + lmCoord = GetLightMapCoordinates(); + + upVec = normalize(gbufferModelView[1].xyz); + sunVec = GetSunVector(); +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/shadow.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/shadow.glsl new file mode 100644 index 0000000..41d87fa --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/shadow.glsl @@ -0,0 +1,274 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +flat in int mat; + +in vec2 texCoord; + +flat in vec3 sunVec, upVec; + +in vec4 position; +flat in vec4 glColor; + +//Uniforms// +uniform int isEyeInWater; + +uniform vec3 cameraPosition; + +uniform sampler2D tex; + + +#if WATER_CAUSTIC_STYLE >= 3 + + + uniform sampler2D gaux4; +#endif + +//Pipeline Constants// + +//Common Variables// +float SdotU = dot(sunVec, upVec); +float sunVisibility = clamp(SdotU + 0.0625, 0.0, 0.125) / 0.125; + +//Common Functions// +void DoNaturalShadowCalculation(inout vec4 color1, inout vec4 color2) { + color1.rgb *= glColor.rgb; + color1.rgb = mix(vec3(1.0), color1.rgb, pow(color1.a, (1.0 - color1.a) * 0.5) * 1.05); + color1.rgb *= 1.0 - pow(color1.a, 64.0); + color1.rgb *= 0.2; // Natural Strength + + color2.rgb = normalize(color1.rgb) * 0.5; +} + +//Includes// + +//spookyprogram// +void main() { + vec4 color1 = texture2DLod(tex, texCoord, 0); // Shadow Color + + #if SHADOW_QUALITY >= 1 + vec4 color2 = color1; // Light Shaft Color + + color2.rgb *= 0.25; // Natural Strength + + #if defined LIGHTSHAFTS_ACTIVE && LIGHTSHAFT_BEHAVIOUR == 1 && defined OVERWORLD + float positionYM = position.y; + #endif + + if (mat < 31008) { + if (mat < 31000) { + DoNaturalShadowCalculation(color1, color2); + } else { + if (mat == 31000) { // Water + vec3 worldPos = position.xyz + cameraPosition; + + #if defined LIGHTSHAFTS_ACTIVE && LIGHTSHAFT_BEHAVIOUR == 1 && defined OVERWORLD + // For scene-aware light shafts to be more prone to get extreme near water + positionYM += 3.5; + #endif + + // Water Caustics + #if WATER_CAUSTIC_STYLE < 3 + #if MC_VERSION >= 11300 + float wcl = GetLuminance(color1.rgb); + color1.rgb = color1.rgb * pow2(wcl) * 1.2; + #else + color1.rgb = mix(color1.rgb, vec3(GetLuminance(color1.rgb)), 0.88); + color1.rgb = pow2(color1.rgb) * vec3(2.5, 3.0, 3.0) * 0.96; + #endif + #else + #define WATER_SPEED_MULT_M WATER_SPEED_MULT * 0.035 + vec2 causticWind = vec2(frameTimeCounter * WATER_SPEED_MULT_M, 0.0); + vec2 cPos1 = worldPos.xz * 0.10 - causticWind; + vec2 cPos2 = worldPos.xz * 0.05 + causticWind; + + float cMult = 14.0; + float offset = 0.001; + + float caustic = 0.0; + caustic += dot(texture2D(gaux4, cPos1 + vec2(offset, 0.0)).rg, vec2(cMult)) + - dot(texture2D(gaux4, cPos1 - vec2(offset, 0.0)).rg, vec2(cMult)); + caustic += dot(texture2D(gaux4, cPos2 + vec2(0.0, offset)).rg, vec2(cMult)) + - dot(texture2D(gaux4, cPos2 - vec2(0.0, offset)).rg, vec2(cMult)); + color1.rgb = vec3(max0(min1(caustic * 0.8 + 0.35)) * 0.65 + 0.35); + + #if MC_VERSION < 11300 + color1.rgb *= vec3(0.3, 0.45, 0.9); + #endif + #endif + + #if MC_VERSION >= 11300 + #if WATERCOLOR_MODE >= 2 + color1.rgb *= glColor.rgb; + #else + color1.rgb *= vec3(0.3, 0.45, 0.9); + #endif + #endif + color1.rgb *= vec3(0.6, 0.8, 1.1); + //// + + // Underwater Light Shafts + vec3 worldPosM = worldPos; + + #if WATER_FOG_MULT > 100 + #define WATER_FOG_MULT_M WATER_FOG_MULT * 0.01; + worldPosM *= WATER_FOG_MULT_M; + #endif + + vec2 waterWind = vec2(syncedTime * 0.01, 0.0); + float waterNoise = texture2D(noisetex, worldPosM.xz * 0.012 - waterWind).g; + waterNoise += texture2D(noisetex, worldPosM.xz * 0.05 + waterWind).g; + + float factor = max(2.5 - 0.025 * length(position.xz), 0.8333) * 1.3; + waterNoise = pow(waterNoise * 0.5, factor) * factor * 1.3; + + #if MC_VERSION >= 11300 && WATERCOLOR_MODE >= 2 + color2.rgb = normalize(sqrt1(glColor.rgb)) * vec3(0.24, 0.22, 0.26); + #else + color2.rgb = vec3(0.08, 0.12, 0.195); + #endif + color2.rgb *= waterNoise * (1.0 + sunVisibility - rainFactor); + //// + + #ifdef UNDERWATERCOLOR_CHANGED + color1.rgb *= vec3(UNDERWATERCOLOR_RM, UNDERWATERCOLOR_GM, UNDERWATERCOLOR_BM); + color2.rgb *= vec3(UNDERWATERCOLOR_RM, UNDERWATERCOLOR_GM, UNDERWATERCOLOR_BM); + #endif + } else /*if (mat == 31004)*/ { // Ice + color1.rgb *= color1.rgb; + color1.rgb *= color1.rgb; + color1.rgb = mix(vec3(1.0), color1.rgb, pow(color1.a, (1.0 - color1.a) * 0.5) * 1.05); + color1.rgb *= 1.0 - pow(color1.a, 64.0); + color1.rgb *= 0.28; + + color2.rgb = normalize(pow(color1.rgb, vec3(0.25))) * 0.5; + } + } + } else { + if (mat < 31020) { // Glass, Glass Pane, Beacon (31008, 31012, 31016) + if (color1.a > 0.5) color1 = vec4(0.0, 0.0, 0.0, 1.0); + else color1 = vec4(vec3(0.2 * (1.0 - GLASS_OPACITY)), 1.0); + color2.rgb = vec3(0.3); + } else { + DoNaturalShadowCalculation(color1, color2); + } + } + #endif + + int seed = worldDay / 2; // Thanks to Bálint + int currTime = (worldDay % 2) * 24000 + worldTime; // Effect happens every 2 minecraft days + float randomTime = 24000 * hash1(worldDay * 5); // Effect happens randomly throughout the day + int timeWhenItHappens = (int(hash1(seed)) % (2 * 24000)) + int(randomTime); + if (currTime > timeWhenItHappens && currTime < timeWhenItHappens + 100) { // 100 in ticks - 5s, how long the effect will be on, aka leaves are gone + if (mat == 10008) discard; // disable leaves + } + + gl_FragData[0] = color1; // Shadow Color + + #if SHADOW_QUALITY >= 1 + #if defined LIGHTSHAFTS_ACTIVE && LIGHTSHAFT_BEHAVIOUR == 1 && defined OVERWORLD + color2.a = 0.25 + max0(positionYM * 0.05); // consistencyMEJHRI7DG + #endif + + gl_FragData[1] = color2; // Light Shaft Color + #endif +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +flat out int mat; + +out vec2 texCoord; + +flat out vec3 sunVec, upVec; + +out vec4 position; +flat out vec4 glColor; + +//Uniforms// +uniform mat4 shadowProjection, shadowProjectionInverse; +uniform mat4 shadowModelView, shadowModelViewInverse; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; + +#if defined WAVING_ANYTHING_TERRAIN || defined WAVING_WATER_VERTEX + + + uniform vec3 cameraPosition; +#endif + +//Attributes// +attribute vec4 mc_Entity; + +#if defined PERPENDICULAR_TWEAKS || defined WAVING_ANYTHING_TERRAIN || defined WAVING_WATER_VERTEX + attribute vec4 mc_midTexCoord; +#endif + +//Common Variables// +#if (defined WAVING_ANYTHING_TERRAIN || defined WAVING_WATER_VERTEX) && defined NO_WAVING_INDOORS + vec2 lmCoord = vec2(0.0); +#endif + +//Common Functions// + +//Includes// +#include "/spookylib/util/spaceConversion.glsl" + +#if defined WAVING_ANYTHING_TERRAIN || defined WAVING_WATER_VERTEX + #include "/spookylib/materials/materialMethods/wavingBlocks.glsl" +#endif + +//spookyprogram// +void main() { + texCoord = gl_MultiTexCoord0.xy; + glColor = gl_Color; + + sunVec = GetSunVector(); + upVec = normalize(gbufferModelView[1].xyz); + + mat = int(mc_Entity.x + 0.5); + + position = shadowModelViewInverse * shadowProjectionInverse * ftransform(); + + #if defined WAVING_ANYTHING_TERRAIN || defined WAVING_WATER_VERTEX + #ifdef NO_WAVING_INDOORS + lmCoord = GetLightMapCoordinates(); + #endif + + DoWave(position.xyz, mat); + #endif + + #ifdef PERPENDICULAR_TWEAKS + if (mat == 10003 || mat == 10004 || mat == 10016) { // Foliage + vec2 midCoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texMinMidCoord = texCoord - midCoord; + if (texMinMidCoord.y < 0.0) { + vec3 normal = gl_NormalMatrix * gl_Normal; + position.xyz += normal * 0.35; + } + } + #endif + + if (mat == 31000) { // Water + position.y += 0.015 * max0(length(position.xyz) - 50.0); + } + + gl_Position = shadowProjection * shadowModelView * position; + + float lVertexPos = sqrt(gl_Position.x * gl_Position.x + gl_Position.y * gl_Position.y); + float distortFactor = lVertexPos * shadowMapBias + (1.0 - shadowMapBias); + gl_Position.xy *= 1.0 / distortFactor; + gl_Position.z = gl_Position.z * 0.2; +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/template.glsl b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/template.glsl new file mode 100644 index 0000000..5afa52a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/spookyprogram/template.glsl @@ -0,0 +1,46 @@ +//////////////////////////////////////// +// Complementary Reimagined by EminGT // +//////////////////////////////////////// + +//Common// +#include "/spookylib/common.glsl" + +//////////Fragment Shader//////////Fragment Shader//////////Fragment Shader////////// +#ifdef FRAGMENT_SHADER + +//Uniforms// + +//Pipeline Constants// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + +} + +#endif + +//////////Vertex Shader//////////Vertex Shader//////////Vertex Shader////////// +#ifdef VERTEX_SHADER + +//Uniforms// + +//Attributes// + +//Common Variables// + +//Common Functions// + +//Includes// + +//spookyprogram// +void main() { + +} + +#endif diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite.fsh new file mode 100644 index 0000000..da80567 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define COMPOSITE + +#include "/spookyprogram/composite.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite.vsh new file mode 100644 index 0000000..16a551a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define COMPOSITE + +#include "/spookyprogram/composite.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite2.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite2.fsh new file mode 100644 index 0000000..66c1bf6 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite2.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define COMPOSITE2 + +#include "/spookyprogram/composite2.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite2.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite2.vsh new file mode 100644 index 0000000..92b8737 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite2.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define COMPOSITE2 + +#include "/spookyprogram/composite2.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite3.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite3.fsh new file mode 100644 index 0000000..da382fd --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite3.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define COMPOSITE3 + +#include "/spookyprogram/composite3.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite3.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite3.vsh new file mode 100644 index 0000000..abc6fc0 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite3.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define COMPOSITE3 + +#include "/spookyprogram/composite3.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite4.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite4.fsh new file mode 100644 index 0000000..2db4cd5 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite4.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define COMPOSITE4 + +#include "/spookyprogram/composite4.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite4.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite4.vsh new file mode 100644 index 0000000..121be7e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite4.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define COMPOSITE4 + +#include "/spookyprogram/composite4.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite5.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite5.fsh new file mode 100644 index 0000000..3378dd4 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite5.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define COMPOSITE5 + +#include "/spookyprogram/composite5.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite5.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite5.vsh new file mode 100644 index 0000000..7f7836e --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite5.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define COMPOSITE5 + +#include "/spookyprogram/composite5.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite6.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite6.fsh new file mode 100644 index 0000000..08c9ac7 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite6.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define COMPOSITE6 + +#include "/spookyprogram/composite6.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite6.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite6.vsh new file mode 100644 index 0000000..497b1b7 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite6.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define COMPOSITE6 + +#include "/spookyprogram/composite6.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite7.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite7.fsh new file mode 100644 index 0000000..3fe191a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite7.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define COMPOSITE7 + +#include "/spookyprogram/composite7.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite7.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite7.vsh new file mode 100644 index 0000000..1d39fd0 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/composite7.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define COMPOSITE7 + +#include "/spookyprogram/composite7.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/deferred1.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/deferred1.fsh new file mode 100644 index 0000000..d1f243c --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/deferred1.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define DEFERRED1 + +#include "/spookyprogram/deferred1.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/deferred1.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/deferred1.vsh new file mode 100644 index 0000000..ad57eb3 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/deferred1.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define DEFERRED1 + +#include "/spookyprogram/deferred1.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/final.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/final.fsh new file mode 100644 index 0000000..1d3f0cb --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/final.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define FINAL + +#include "/spookyprogram/final.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/final.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/final.vsh new file mode 100644 index 0000000..d27eb6a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/final.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define FINAL + +#include "/spookyprogram/final.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_armor_glint.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_armor_glint.fsh new file mode 100644 index 0000000..64b8278 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_armor_glint.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_ARMOR_GLINT + +#include "/spookyprogram/gbuffers_armor_glint.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_armor_glint.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_armor_glint.vsh new file mode 100644 index 0000000..68ac3d5 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_armor_glint.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_ARMOR_GLINT + +#include "/spookyprogram/gbuffers_armor_glint.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_basic.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_basic.fsh new file mode 100644 index 0000000..40983c9 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_basic.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_BASIC + +#include "/spookyprogram/gbuffers_basic.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_basic.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_basic.vsh new file mode 100644 index 0000000..4d0d407 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_basic.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_BASIC + +#include "/spookyprogram/gbuffers_basic.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_beaconbeam.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_beaconbeam.fsh new file mode 100644 index 0000000..0ce8c7f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_beaconbeam.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_BEACONBEAM + +#include "/spookyprogram/gbuffers_beaconbeam.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_beaconbeam.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_beaconbeam.vsh new file mode 100644 index 0000000..c95ba31 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_beaconbeam.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_BEACONBEAM + +#include "/spookyprogram/gbuffers_beaconbeam.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_block.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_block.fsh new file mode 100644 index 0000000..93bf7bc --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_block.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_BLOCK + +#include "/spookyprogram/gbuffers_block.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_block.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_block.vsh new file mode 100644 index 0000000..ddbef17 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_block.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_BLOCK + +#include "/spookyprogram/gbuffers_block.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_clouds.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_clouds.fsh new file mode 100644 index 0000000..6f576fd --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_clouds.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_CLOUDS + +#include "/spookyprogram/gbuffers_clouds.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_clouds.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_clouds.vsh new file mode 100644 index 0000000..33d08ee --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_clouds.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_CLOUDS + +#include "/spookyprogram/gbuffers_clouds.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_damagedblock.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_damagedblock.fsh new file mode 100644 index 0000000..754cc01 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_damagedblock.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_DAMAGEDBLOCK + +#include "/spookyprogram/gbuffers_damagedblock.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_damagedblock.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_damagedblock.vsh new file mode 100644 index 0000000..61c4631 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_damagedblock.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_DAMAGEDBLOCK + +#include "/spookyprogram/gbuffers_damagedblock.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities.fsh new file mode 100644 index 0000000..04da4ec --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_ENTITIES + +#include "/spookyprogram/gbuffers_entities.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities.vsh new file mode 100644 index 0000000..725ff7a --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_ENTITIES + +#include "/spookyprogram/gbuffers_entities.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities_glowing.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities_glowing.fsh new file mode 100644 index 0000000..da7d504 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities_glowing.fsh @@ -0,0 +1,8 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_ENTITIES +#define GBUFFERS_ENTITIES_GLOWING + +#include "/spookyprogram/gbuffers_entities.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities_glowing.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities_glowing.vsh new file mode 100644 index 0000000..6264ae4 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_entities_glowing.vsh @@ -0,0 +1,8 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_ENTITIES +#define GBUFFERS_ENTITIES_GLOWING + +#include "/spookyprogram/gbuffers_entities.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_hand.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_hand.fsh new file mode 100644 index 0000000..824f460 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_hand.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_HAND + +#include "/spookyprogram/gbuffers_hand.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_hand.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_hand.vsh new file mode 100644 index 0000000..4116ac9 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_hand.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_HAND + +#include "/spookyprogram/gbuffers_hand.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_line.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_line.fsh new file mode 100644 index 0000000..d0e6566 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_line.fsh @@ -0,0 +1,8 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_BASIC +#define GBUFFERS_LINE + +#include "/spookyprogram/gbuffers_basic.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_line.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_line.vsh new file mode 100644 index 0000000..24a9394 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_line.vsh @@ -0,0 +1,8 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_BASIC +#define GBUFFERS_LINE + +#include "/spookyprogram/gbuffers_basic.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skybasic.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skybasic.fsh new file mode 100644 index 0000000..453fa82 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skybasic.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_SKYBASIC + +#include "/spookyprogram/gbuffers_skybasic.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skybasic.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skybasic.vsh new file mode 100644 index 0000000..38f313c --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skybasic.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_SKYBASIC + +#include "/spookyprogram/gbuffers_skybasic.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skytextured.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skytextured.fsh new file mode 100644 index 0000000..5544aa6 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skytextured.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_SKYTEXTURED + +#include "/spookyprogram/gbuffers_skytextured.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skytextured.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skytextured.vsh new file mode 100644 index 0000000..e2765db --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_skytextured.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_SKYTEXTURED + +#include "/spookyprogram/gbuffers_skytextured.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_spidereyes.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_spidereyes.fsh new file mode 100644 index 0000000..e89eec0 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_spidereyes.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_SPIDEREYES + +#include "/spookyprogram/gbuffers_spidereyes.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_spidereyes.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_spidereyes.vsh new file mode 100644 index 0000000..0f981eb --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_spidereyes.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_SPIDEREYES + +#include "/spookyprogram/gbuffers_spidereyes.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_terrain.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_terrain.fsh new file mode 100644 index 0000000..d762c49 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_terrain.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_TERRAIN + +#include "/spookyprogram/gbuffers_terrain.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_terrain.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_terrain.vsh new file mode 100644 index 0000000..d53e7ed --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_terrain.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_TERRAIN + +#include "/spookyprogram/gbuffers_terrain.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_textured.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_textured.fsh new file mode 100644 index 0000000..c2666d9 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_textured.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_TEXTURED + +#include "/spookyprogram/gbuffers_textured.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_textured.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_textured.vsh new file mode 100644 index 0000000..638d659 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_textured.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_TEXTURED + +#include "/spookyprogram/gbuffers_textured.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_water.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_water.fsh new file mode 100644 index 0000000..81da80f --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_water.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_WATER + +#include "/spookyprogram/gbuffers_water.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_water.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_water.vsh new file mode 100644 index 0000000..e091a81 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_water.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_WATER + +#include "/spookyprogram/gbuffers_water.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_weather.fsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_weather.fsh new file mode 100644 index 0000000..2d128e8 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_weather.fsh @@ -0,0 +1,7 @@ +#version 130 + +#define FRAGMENT_SHADER +#define NETHER +#define GBUFFERS_WEATHER + +#include "/spookyprogram/gbuffers_weather.glsl" \ No newline at end of file diff --git a/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_weather.vsh b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_weather.vsh new file mode 100644 index 0000000..02a8607 --- /dev/null +++ b/1.20.1-FearFactoryTest/minecraft/shaderpacks/ComplementaryUnbound_r5.5.1test/shaders/worldflesh/gbuffers_weather.vsh @@ -0,0 +1,7 @@ +#version 130 + +#define VERTEX_SHADER +#define NETHER +#define GBUFFERS_WEATHER + +#include "/spookyprogram/gbuffers_weather.glsl" \ No newline at end of file